Download Fedora image and write it to the USB drive:
flatpak install flathub io.gitlab.adhami3310.ImpressionCopy .ssh and .local/share/gnupg into Документы/.Private.
Clean node_modules:
rm -R ~/Dev/*/node_modules ~/Dev/*/*/node_modules ~/Dev/*/coverage ~/Dev/susedko/fedora-coreos.isoCopy these files to external SDD:
Dev/Vídeos/*Документы/.Private/
- Boot to BIOS and set supervisor password.
- Set Game Optimized iGPU.
- Temporary enable USB boot.
Start installer:
- Select English language.
- Use entire disk mode with encryption.
Reboot to USB drive again. Mount laptop SSD.
Open etc/fstab.
Add noatime,nodiratime to root & home partitions.
Move /tmp and /var/tmp to RAM:
vartmp /var/tmp tmpfs defaults,noatime,nodiratime 0 0
vartmp /tmp tmpfs defaults,noatime,nodiratime 0 0
Reboot to BIOS. Block boot from USB.
Reboot to system. Set Russian language, name to Andrey Sitnik and login ai.
Set laptop name:
sudo hostnamectl set-hostname savoiaReboot.
Copy Dev/ and Документы/.Private/ from external SDD and open Install.md locally.
Reduce swap usage by creating /etc/sysctl.d/99-swappiness.conf with:
vm.swappiness = 10
Fix booting video glitch:
sudo grubby --update-kernel=ALL --args="plymouth.use-simpledrm=0"Enable Rendimiento, disable Ahorro de energía automático,
Suspender automaticámente in Energía settings.
Set KEYMAP=us and XKBLAYOUT=us in /etc/vconsole.conf.
Remove unnecessary packages:
sudo dnf remove cheese rhythmbox gnome-boxesd orca gnome-contacts gnome-getting-started-docs nautilus-sendto gnome-shell-extension-* libreoffice-* gnome-characters gnome-maps gnome-photos simple-scan virtualbox-guest-additions gedit gnome-boxes gnome-tour gnome-connections mediawriter eog gnome-system-monitor baobab gnome-log gnome-calculator gnome-weather gnome-text-editor gnome-font-viewer gnome-clocks gnome-calendar evince totem ffmpeg-free snapshot intel-media-driver cups-browsed anaconda malcontent-control loupeRun Software Center, disable Fedora Flatpak and enable Flathub and Chrome.
Add RPM Fusion:
sudo dnf install --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpmUpdate system via Software Center.
Install software:
sudo dnf swap ffmpeg-free ffmpeg --allowerasing
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
sudo dnf copr enable atim/starship
sudo dnf copr enable dusansimic/themes
sudo dnf copr enable hyperreal/better_fonts
sudo dnf install xclip micro fuse-encfs zenity borgbackup openssl ffmpegthumbnailer nss-tools mosquitto ydotool amrnb amrwb faac faad2 flac gstreamer1-libav gstreamer1-plugins-bad-freeworld gstreamer-ffmpeg gstreamer-plugins-bad-nonfree gstreamer-plugins-espeak gstreamer-plugins-ugly lame libdca libmad libmatroska x264 x265 xvidcore gstreamer1-plugins-bad-free gstreamer1-plugins-base gstreamer1-plugins-good gstreamer-plugins-bad gstreamer1-plugins-ugly-free mpv ffmpeg xorg-x11-drv-intel intel-media-driver webp-pixbuf-loader heif-pixbuf-loader avif-pixbuf-loader libheif-freeworld ffmpeg-libs libva libva-utils gstreamer1-vaapi mozilla-openh264 libheif-tools unrar p7zip p7zip-plugins speech-dispatcher speech-dispatcher-utils google-chrome-stable nodejs podman git tig ripgrep xkill bat make difftastic nextcloud-client zsh util-linux-user starship sqlite morewaita-icon-theme nethogs fuse-sshfs logiops libgda libgda-sqlite playerctl cabextract xorg-x11-font-utils tesseract tesseract-devel
sudo rpm -ivh --nodigest --nofiledigest https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpmSet Flatpak languages:
flatpak config languages --set "es;en;ru"
sudo flatpak updateInstall applications from Flatpak:
flatpak install flathub de.haeckerfelix.Fragments org.telegram.desktop org.nickvision.tubeconverter org.gnome.Loupe com.mattjakeman.ExtensionManager io.gitlab.adhami3310.Converter net.nokyan.Resources org.gnome.Calculator org.gnome.Logs org.gnome.Weather org.gnome.clocks org.gnome.Calendar org.gnome.Epiphany org.inkscape.Inkscape org.gnome.gitlab.YaLTeR.VideoTrimmer org.gnome.World.Iotas app.devsuite.Ptyxis hu.irl.cameractrls org.gnome.Snapshot org.gnome.Papers org.gimp.GIMP dev.zed.Zed be.alexandervanhee.gradia com.github.PintaProject.Pinta com.yubico.yubioath org.gnome.font-viewerInstall Zoom.
Remove default GNOME console.
Set Ctrl + C and Ctrl + V for copy/paste in new terminal settings.
Fix unnecessary folder creation in Zoom:
flatpak override --user us.zoom.Zoom --nofilesystem=~/Documents/Zoom
mkdir -p ~/.local/share/flatpak/exports/share/applications/
cp /var/lib/flatpak/exports/share/applications/us.zoom.Zoom.desktop ~/.local/share/flatpak/exports/share/applications/Replace Exec to /home/ai/Dev/environment/bin/zoom @@u %U @@ in ~/.local/share/flatpak/exports/share/applications/us.zoom.Zoom.desktop.
Add Autostart and fingers to user settings.
Disable Software auto-update and notifications.
Set color profile
in Color settings.
Install micro and its plugins:
micro -plugin install editorconfig
sudo dnf remove nanoDisable waking up by mouse by creating /etc/udev/rules.d/logitech-bolt.rules:
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c548", ATTR{power/wakeup}="disabled"Disable file system scanning:
dconf write /org/freedesktop/tracker/miner/files/crawling-interval -2Copy .ssh and .local/share/gnupg:
~/Dev/environment/bin/privateChange permissions:
chmod 744 ~/.ssh
chmod 700 ~/.local/share/gnupg/
chmod 644 ~/.ssh/* ~/.local/share/gnupg/*
chmod 700 ~/.local/share/gnupg/private-keys-v1.d
chmod 600 ~/.ssh/id_* ~/.local/share/gnupg/private-keys-v1.d/*Copy configs:
~/Dev/environment/bin/copy-env systemSet mouse buttons config at /etc/logid.cfg:
devices: ({
name: "MX Master 3S";
smartshift: { on: false; }
hiresscroll: { hires: false; invert: false; target: false; };
buttons: (
{
cid: 0x53; # Back
action = {
type: "Keypress";
keys: ["KEY_LEFTCTRL", "KEY_V"];
};
},
{
cid: 0x56; # Forward
action = {
type: "Keypress";
keys: ["KEY_LEFTCTRL", "KEY_C"];
};
}
);
});
Add -c /etc/logid.cfg to Exec field of /usr/lib/systemd/system/logid.service.
Enable mouse extensions:
sudo systemctl enable --now logidInstall custom universal keyboard layouts:
mkdir -p ~/.config/xkb/symbols/ ~/.config/xkb/rules/
wget -O ~/.config/xkb/symbols/universal_en https://raw.githubusercontent.com/ai/universal-layout/main/universal_en.xkb
wget -O ~/.config/xkb/symbols/universal_ru https://raw.githubusercontent.com/ai/universal-layout/main/universal_ru.xkb
wget -O ~/.config/xkb/rules/evdev.xml https://raw.githubusercontent.com/ai/universal-layout/main/evdev.xmlSet keyboard settings:
dconf write /org/gnome/desktop/input-sources/xkb-options "['grp_led:caps', 'lv3:ralt_switch', 'grp:shift_caps_switch']"Install eza:
curl -sL https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
chmod +x eza
mkdir -p ~/.local/bin/
mv eza ~/.local/binInstall atuin:
curl -sL https://github.com/atuinsh/atuin/releases/download/v18.6.1/atuin-x86_64-unknown-linux-gnu.tar.gz | tar xz --strip-components=1 atuin-x86_64-unknown-linux-gnu/atuin
mv atuin ~/.local/binInstall zsh:
mkdir -p ~/.local/share/history
chmod 700 ~/.local/share/history
git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.local/lib/zsh/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.local/lib/zsh/zsh-autosuggestions
git clone https://github.com/jimhester/per-directory-history ~/.local/lib/zsh/per-directory-history
chsh -s /bin/zshCreate /root/.zshrc:
eval "$(starship init zsh)"Reboot.
Select Russian Universal and English/Spanish/Catalan Universal layouts.
rm ~/.bash*Open backup and copy files from it.
mkdir ~/backup
borg mount "ai@susedko.local:/var/mnt/vault/ai/backup" ~/backupCopy files.
borg umount ~/backup
rmdir ~/backupStart copying Vídeos/* from SDD.
Move Claude Code:
mkdir -p ~/.config/environment.d/
mkdir -p ~/.local/share/claude
echo "GNUPGHOME=$HOME/.local/share/gnupg" >> ~/.config/environment.d/90-clean-home.conf
echo "NODE_COMPILE_CACHE=$HOME/.cache/node" >> ~/.config/environment.d/90-clean-home.conf
echo "NPM_CONFIG_USERCONFIG=$HOME/.config/npmrc" >> ~/.config/environment.d/90-clean-home.conf
echo "CLAUDE_CONFIG_DIR=$HOME/.local/share/claude" >> ~/.config/environment.d/90-clean-home.confSign-in into accounts in Zed.
Install Zed plugins: ini, dockerfile, toml, svelte, make, adwaita, material icon theme, codebook, sql, nginx, git-firefly, pug, xml, po, env, stylelint, oxc.
Open Iotas app, log-in into Nextcloud account.
Open Clock and add Vladivostok, Moscow, Lisbon, and San Francisco.
Run Weather app and set current location.
Install Lilex.
mkdir -p ~/.local/share/fonts
# Copy variable fonts
fc-cache -f -v
gsettings set org.gnome.desktop.interface monospace-font-name "Lilex 12"Open settings:
- Appearance: use standard GNOME wallpaper.
- Notifications: disable Notifications on lock screen.
- Search: keep only Calculator and Settings.
- Multitask: disable Active corners.
- Online accounts: add Google.
- Power: enable Show percentage and disable screen lock.
- Mouse: mouse speed to 75%, touchpad speed to 90%.
- Date and time: enable seconds and week day on top panel.
- Privacy → disable File History.
Boost volume over 100%:
gsettings set org.gnome.desktop.sound allow-volume-above-100-percent trueLogin to NextCloud client to sync.sitnik.es.
Nautilus:
- Enable Sort folders before files.
- Enable Single click to open items.
- Enable preview, search, file numbers for remote folders.
Disable GNOME extension version check:
gsettings set org.gnome.shell disable-extension-version-validation trueDownload the latest framework_tool, extract and copy to the system:
sudo cp ~/Descargas/framework_tool /usr/local/binInstall tool for clipboard manager:
mkdir -p ~/.local/share/copyous@boerdereinar.dev/
curl https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/es/highlight.min.js > ~/.local/share/copyous@boerdereinar.dev/highlight.min.jsInstall extensions from GNOME.md.
Restore settings file from backup:
~/Dev/environment/bin/restore-gnome-extensionsClean up applications list.
Add Iceland NordVPN.
Disable disk name in password prompt.
Create empty file template:
mkdir ~/.local/share/desktop
mkdir ~/.local/share/templates
touch ~/.local/share/templates/Пустой\ файлFix folders at ~/.config/user-dirs.dirs:
XDG_DESKTOP_DIR="$HOME/.local/share/desktop"
XDG_DOWNLOAD_DIR="$HOME/Загрузки"
XDG_TEMPLATES_DIR="$HOME/.local/share/templates"
XDG_PUBLICSHARE_DIR="$HOME/.local/share/desktop"
XDG_DOCUMENTS_DIR="$HOME/Документы"
XDG_MUSIC_DIR="$HOME"
XDG_PICTURES_DIR="$HOME"
XDG_VIDEOS_DIR="$HOME/Видео"Clean bookmarks:
echo "" > ~/.config/gtk-3.0/bookmarksRemove unnecessary folders:
mkdir "Снимки экрана"Connect to server in Files by sftp://ai@susedko.local/ and add vault to Favorites places. Add Загрузки and Снимки экрана to Favorites places.
Left only Telegram, Firefox, Nautilus, Terminal, Iotas, System Update, and Backup in the dock.
Add icon theme:
gsettings set org.gnome.desktop.interface icon-theme 'MoreWaita'Set icons:
/usr/share/icons/MoreWaita/scalable/places/folder-code.svgfor~/Dev/./usr/share/icons/Adwaita/scalable/places/folder-pictures.svgfor~/Capturas de pantalla/.
Add server’s certificate to the system:
mkdir -p ~/.pki/nssdb
certutil -N -d sql:$HOME/.pki/nssdb --empty-password
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n sitnik -i ~/Dev/susedko/sitniks.crt
sudo cp ~/Dev/susedko/sitniks.crt /etc/pki/ca-trust/source/anchors/sitniks.pem
sudo update-ca-trustAdd service to ~/.config/systemd/user/force-lock.service:
[Unit]
Description=Force Lock
[Service]
ExecStart=/home/ai/Dev/environment/bin/force-lock
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=default.targetAdd service to ~/.config/systemd/user/susedko-listener.service:
[Unit]
Description=Susedko Listener
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/home/ai/Dev/environment/bin/susedko-listener
Restart=on-failure
RestartSec=30s
StartLimitBurst=5
[Install]
WantedBy=default.targetAdd service to /etc/systemd/system/ydotoold.service:
[Unit]
Description=ydotool Daemon
[Service]
ExecStart=ydotoold --socket-path="/run/.ydotool_socket" --socket-own="1000:1000"
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=default.targetEnable services:
sudo systemctl enable ydotoold.service
sudo systemctl start ydotoold.service
systemctl --user enable susedko-listener.service force-lock.service
systemctl --user start susedko-listener.service force-lock.serviceInstall Node.js, TypeScript, and Dev Containers.
npm config set cache "$HOME/.cache/npm"
mkdir -p ~/.local/lib/node/
tee -a ~/.local/lib/node/package.json << EOM
{
"dependencies": {
"@devcontainers/cli": ">=0.80.1"
}
}
EOM
cd ~/.local/lib/node && npm install && cd
mkdir -p ~/.local/share/multiocular
mkdir -p ~/.local/share/history
chmod 700 ~/.local/share/history
podman volume create shell-history
podman volume create pnpm-store
~/Dev/environment/bin/build-devcontainer
cd ~/Dev/nanostores
devup
# Find container ID
podman exec -it --user root $container_id zsh
mkdir /home/ai/.local/share/pnpm/store/v10
chown ai:ai /home/ai/.local/share/pnpm/store/v10
chown ai:ai /home/ai/.local/share/history/histfileFix Dev Container with Podman in Zed:
sudo ln -s $(which podman) /usr/local/bin/dockerInstall Keybase:
sudo dnf install https://prerelease.keybase.io/keybase_amd64.rpm
run_keybaseDisable autostart in Keybase settings and revoke old laptop.
Prepare ngrams:
mkdir -p ~/.local/share/ngrams
cd ~/.local/share/ngrams
wget https://languagetool.org/download/ngram-data/ngrams-en-20150817.zip
wget https://languagetool.org/download/ngram-data/ngrams-es-20150915.zip
wget https://languagetool.org/download/ngram-data/untested/ngram-ru-20150914.zip
unzip ngrams-en-20150817.zip
unzip ngrams-es-20150915.zip
unzip ngram-ru-20150914.zip
rm ngram*.zipmkdir -p ~/.config/systemd/user/Create service unit ~/.config/systemd/user/languagetool.service:
[Unit]
Description=LanguageTool Server
[Service]
ExecStart=podman run --rm --replace --name languagetool \
-p 8081:8010 \
-e langtool_languageModel=/ngrams \
-e Java_Xms=512m -e Java_Xmx=2g \
-v /home/ai/.local/share/fasttext:/fasttext:Z \
-v /home/ai/.local/share/ngrams:/ngrams:Z \
docker.io/erikvl87/languagetool:latest
[Install]
WantedBy=default.targetInstall LanguageTool:
~/Dev/environment/bin/update-languagetoolEnable service.
systemctl --user daemon-reload
systemctl --user enable --now languagetool.service
systemctl --user start --now languagetool.service