Copy .ssh and .local/share/gnupg to Private.
Download Fedora image and write it to the USB drive:
sudo ~/Projects/env/prepare-install-drive PATH_TO.iso /dev/sdXCopy these Vídeos/* to server and backup machine:
~/Projects/env/bin/backup- 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 Projects/ 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
Enable Performance, disable Automatic waiting saving in Power settings.
Add 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 loupe cockpit-bridge cockpit-system cockpit-storaged cockpit-ws cockpit-ws-selinuxRun Software Center, enable Flathub and Chrome.
Add RPM Fusion (for codecs):
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.rpm
flatpak remote-delete fedoraUpdate system via Software Center.
Install software:
sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
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 zed podman-compose sgdisk tesseract-langpack-rus zbar
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 be.alexandervanhee.gradia com.github.PintaProject.Pinta com.yubico.yubioath org.gnome.font-viewerRemove default GNOME console.
Set Ctrl + C and Ctrl + V for copy/paste in new terminal settings.
Add Autologin and fingers to user settings.
Speed-up boot:
sudo systemctl disable NetworkManager-wait-online.serviceDisable Software auto-update and notifications.
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", ATTR{power/wakeup}="disabled"Disable file system scanning:
dconf write /org/freedesktop/tracker/miner/files/crawling-interval -2Copy .ssh and .local/share/gnupg:
~/Projects/env/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:
~/Projects/env/bin/copy-env systemSet mouse buttons config at /etc/logid.cfg:
devices: ({
name: "MX Master 4";
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"];
};
},
{
cid: 0x1a0; # Thumb button
action: {
type: "Keypress";
keys: ["KEY_LEFTMETA"];
};
}
);
});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 English/Spanish/Catalan Universal (first) and Russian 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.
Set color profile
in Color settings.
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-pastel, material icon theme, codebook, sql, nginx, git-firefly, pug, xml, po, env, oxc.
Login to NextCloud client to sync.sitnik.es.
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 & Hot corner.
- Online accounts: add Google.
- Power: enable Show percentage.
- 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 trueNautilus:
- 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 ~/Загрузки/framework_tool /usr/local/bin
sudo chmod a+x /usr/local/bin/framework_toolInstall 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:
~/Projects/env/bin/restore-gnome-extensionsDisable 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~/Projects/./usr/share/icons/Adwaita/scalable/places/folder-pictures.svgfor~/Загрузки/Снимки экрана/.
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 ~/Projects/susedko/sitniks.crt
sudo cp ~/Projects/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/Projects/env/bin/force-lock
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=default.targetAdd service to ~/.config/systemd/user/domovoy-listener.service:
[Unit]
Description=Domovoy Listener
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/home/ai/Projects/env/bin/domovoy-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 domovoy-listener.service force-lock.service
systemctl --user start domovoy-listener.service force-lock.serviceInstall Zoom.
Install 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/zed_server
mkdir -p ~/.local/share/multiocular
mkdir -p ~/.local/share/history
chmod 700 ~/.local/share/historyFix Dev Container with Podman in Zed:
sudo ln -s $(which podman) /usr/local/bin/dockerCreate ~/.config/containers/containers.conf:
[containers]
userns = "keep-id"
label = falseInstall 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*.zipCreate 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/ngrams:/ngrams:Z \
docker.io/erikvl87/languagetool:latest
[Install]
WantedBy=default.targetEnable service.
systemctl --user daemon-reload
systemctl --user enable --now languagetool.service
systemctl --user start --now languagetool.service