dot

vizie's NixOS desktop: Hyprland, CachyOS kernel and gaming tweaks

0d0abb6

Fresh start: restore only what's listed; drop unused apps

By Gustaf Granström

restore-filter lists what comes back from the backup after the install; the
rest stays on the backup drive. Bolt, Lutris, Prism Launcher, Parsec, Heroic,
system Wine and winetricks, GOverlay, Meld, KDE Partition Manager, Node.js and
Go are no longer installed. Flatpak stays, with Flathub added, for apps only
published there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

8 files changed +114 −35

modifiedMIGRATION.md
@@ -108,8 +108,10 @@
108108 nixos-install --system "$sys" --no-channel-copy
109109 # It asks for a root password at the end.
110110
111-# Your home folder back, owned by you (uid 1000, group users).
112-rsync -aHAX --info=progress2 --chown=1000:100 /backup/vizie/ /mnt/home/vizie/
111+# What you chose to keep of your home folder (restore-filter), owned by you
112+# (uid 1000, group users). The rest stays on the backup drive.
113+rsync -aHAX --info=progress2 --chown=1000:100 \
114+ --filter='merge /backup/vizie/git/dot/restore-filter' /backup/vizie/ /mnt/home/vizie/
113115 nixos-enter --root /mnt -c 'passwd vizie'
114116 reboot
115117 ```
@@ -122,11 +124,11 @@
122124 ## 3. First boot
123125
124126 - The login screen is the same gtkgreet over the blurred wallpaper.
125-- Home Manager replaces the old symlinks in `~/.config` (pointing into
126- `~/git/dotfiles`) with its own. The old ones are kept beside them with a
127- `.pre-nixos` suffix, so nothing is overwritten.
128-- Bolt installs from Flathub in the background on the first boot with network
129- (`systemctl status flatpak-bolt`).
127+- Only what `restore-filter` lists came back: app data and logins, SSH keys,
128+ shell history, `~/git/dot`, Steam's settings and saves. Everything else
129+ (Downloads, the other repos, CachyOS leftovers) is on the backup drive under
130+ `vizie/`: `sudo mount -o ro /dev/disk/by-label/backup /mnt` to copy something
131+ back.
130132 - "Command not found" suggestions need nix-index's database once:
131133 `nix-index` (takes a few minutes).
132134 - Check the background programs: `systemctl --user list-units --type=service`.
@@ -186,11 +188,13 @@
186188 sudo umount /mnt
187189 ```
188190
189-- **OSRS**: Bolt installs itself again (see First boot); its data in
190- `~/.var/app/com.adamcake.Bolt` came back with your home folder, so you
191- stay signed in.
191+- **OSRS**: install the official Old School RuneScape launcher. Bolt is gone,
192+ and so is its data.
192193
193194 ## 6. Once you're happy
194195
195-The backup on `sda` stays until you need the drive for something else. NixOS
196+The backup on `sda` stays until you need the drive for something else. It is
197+the only copy of what wasn't restored, including the repos that exist only
198+here (`skate3`, `skate-game`, `he60`, `move`, and `Left4Resi`'s uncommitted
199+changes), so copy out anything you want before reusing the drive. NixOS
196200 doesn't mount it; `sudo mount /dev/disk/by-label/backup /mnt` gets you into it.
modifiedREADME.md
@@ -21,7 +21,7 @@
2121 nvidia.nix RTX 3080 Ti, open kernel module
2222 desktop.nix Hyprland, uwsm, greetd, audio, Bluetooth, fonts
2323 gaming.nix Steam, proton-cachyos, gamemode, gamescope, ...
24- apps.nix desktop apps, Claude Cowork, OpenDeck udev, Bolt
24+ apps.nix desktop apps, Claude Cowork, OpenDeck udev, Flatpak
2525 vm.nix the test VM
2626 modules/home/
2727 files.nix links config/ into ~/.config (was symlink.sh)
@@ -51,8 +51,7 @@
5151 `dot.liveConfig = false` to have them copied into the Nix store instead.) If the
5252 checkout is not at `~/git/dot`, set `dot.repoPath`.
5353
54-Configs that programs write themselves (btop, micro, MangoHud/vkBasalt/vkSumi
55-from GOverlay, `mimeapps.list`) are copied in only when missing and then left to
54+Configs that programs write themselves (btop, micro, MangoHud/vkBasalt/vkSumi, `mimeapps.list`) are copied in only when missing and then left to
5655 the program.
5756
5857 **Signal theme.** `config/signal/theme.css` is built into the Signal package
@@ -15,8 +15,8 @@
1515 useGlobalPkgs = true;
1616 useUserPackages = true;
1717 extraSpecialArgs = { inherit inputs; };
18- # The first switch finds the old symlinks into ~/git/dotfiles where Home
19- # Manager wants its own; they are moved aside with this suffix, not deleted.
18+ # A file already in the way of one Home Manager wants to place is moved
19+ # aside with this suffix rather than overwritten.
2020 backupFileExtension = "pre-nixos";
2121 users.vizie = import ../../modules/home;
2222 };
@@ -18,7 +18,7 @@
1818 else
1919 ../../config + "/${rel}";
2020
21- # Configs the programs write themselves (GOverlay, btop, micro, apps that
21+ # Configs the programs write themselves (MangoHud, btop, micro, apps that
2222 # register URL handlers): copied in only when missing, and never overwritten,
2323 # so changes made in the app stick. Your existing files in /home win.
2424 seeds = {
@@ -24,8 +24,5 @@
2424 inputs.imsh-clients.packages.${pkgs.stdenv.hostPlatform.system}.default
2525 # Philly, the file browser (also the handler for folders, in mimeapps.list).
2626 inputs.philly.packages.${pkgs.stdenv.hostPlatform.system}.default
27-
28- nodejs
29- go
3027 ];
3128 }
@@ -14,8 +14,6 @@
1414 kdePackages.kio-extras
1515 kdePackages.ffmpegthumbs
1616 cosmic-files
17- kdePackages.partitionmanager
18- meld
1917 mpv
2018 vlc
2119 pavucontrol
@@ -43,12 +41,11 @@
4341
4442 # --- Flatpak --------------------------------------------------------------------
4543
46- # Bolt (RuneScape launcher) was a system Flatpak on CachyOS. System Flatpaks
47- # live outside /home, so it is installed again here the first time the system
48- # boots with a network; its data in ~/.var/app/com.adamcake.Bolt is kept.
44+ # Flatpak with Flathub, for apps that are only published there. Nothing is
45+ # installed from it by default.
4946 services.flatpak.enable = true;
50- systemd.services.flatpak-bolt = {
51- description = "Install Bolt from Flathub";
47+ systemd.services.flathub-remote = {
48+ description = "Add the Flathub Flatpak remote";
5249 wantedBy = [ "multi-user.target" ];
5350 wants = [ "network-online.target" ];
5451 after = [ "network-online.target" ];
@@ -60,7 +57,6 @@
6057 };
6158 script = ''
6259 flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
63- flatpak info com.adamcake.Bolt >/dev/null 2>&1 || flatpak install --noninteractive flathub com.adamcake.Bolt
6460 '';
6561 };
6662 }
@@ -27,18 +27,11 @@
2727
2828 environment.systemPackages = with pkgs; [
2929 mangohud
30- goverlay
3130 vkbasalt
3231 umu-launcher
33- winetricks
34- wineWow64Packages.staging
35- lutris
36- heroic
3732 faugus-launcher
3833 protonplus
39- prismlauncher
4034 wowup-cf
41- parsec-bin
4235 vulkan-tools
4336 mesa-demos
4437 ];
@@ -1,0 +1,90 @@
1+# rsync filter for restoring the home folder from the backup drive after the
2+# install (MIGRATION.md, section 2). Only what is listed here comes back: the
3+# move to NixOS is a fresh start. Everything else stays on the backup drive,
4+# to copy back by hand if you miss it. The first matching line wins.
5+
6+# --- Caches inside the apps' folders: the apps rebuild them ----------------------
7+- /.config/*/Cache/
8+- /.config/*/Code Cache/
9+- /.config/*/GPUCache/
10+- /.config/*/GPUPersistentCache/
11+- /.config/*/DawnGraphiteCache/
12+- /.config/*/DawnWebGPUCache/
13+- /.config/*/Crashpad/
14+- /.config/*/logs/
15+- /.config/*/Singleton*
16+- /.config/*/.org.chromium.Chromium.*
17+- /.config/*/*.tmp-*
18+- /.config/Claude/fcache/
19+- /.config/Claude/sentry/
20+
21+# --- Home folder ------------------------------------------------------------------
22+- /.ssh/known_hosts.old
23++ /.ssh/***
24++ /.zsh_history
25++ /.claude/***
26++ /.claude.json
27+# RuneLite's settings and profiles (the official launcher starts RuneLite too).
28+- /.runelite/cache/
29+- /.runelite/jagexcache/
30+- /.runelite/logs/
31++ /.runelite/***
32++ /benchmarks/***
33++ /update-macrotally.sh
34++ /watch_20260628-022622
35++ /Pictures/
36++ /Pictures/Screenshots/***
37+
38+# Only this repo; the others are on GitHub or stay on the backup drive.
39++ /git/
40++ /git/dot/***
41+
42+# --- ~/.config: app data, logins and settings -------------------------------------
43++ /.config/
44++ /.config/mozilla/***
45++ /.config/Signal/***
46++ /.config/discord/***
47++ /.config/Bitwarden/***
48++ /.config/WowUpCf/***
49++ /.config/ow-electron/***
50++ /.config/opendeck/***
51++ /.config/Claude/***
52++ /.config/faugus-launcher/***
53++ /.config/philly/***
54+# The imsh upload key, the GitHub CLI login, rclone remotes.
55++ /.config/keys/***
56++ /.config/gh/***
57++ /.config/rclone/***
58+# Settings the programs write themselves (Home Manager adds them when missing).
59++ /.config/btop/***
60++ /.config/micro/***
61++ /.config/MangoHud/***
62++ /.config/vkBasalt/***
63++ /.config/vkSumi/***
64++ /.config/qalculate/***
65++ /.config/pavucontrol.ini
66++ /.config/mimeapps.list
67++ /.config/user-dirs.dirs
68+
69+# --- ~/.local -------------------------------------------------------------------
70++ /.local/
71++ /.local/share/
72+# Steam: settings, login, Proton-CachyOS Latest (WoW's runner) and game saves.
73+- /.local/share/Steam/compatibilitytools.d/GE-Proton*/
74+- /.local/share/Steam/compatibilitytools.d/Proton-CachyOS Wineland*/
75+- /.local/share/Steam/steamapps/compatdata/3354750/
76++ /.local/share/Steam/***
77++ /.local/share/faugus-launcher/***
78++ /.local/share/opendeck/***
79++ /.local/share/dev.philly.desktop/***
80++ /.local/share/nvim/***
81++ /.local/share/qalculate/***
82++ /.local/state/
83++ /.local/state/faugus-launcher/***
84++ /.local/state/nvim/***
85++ /.local/state/philly/***
86++ /.local/state/philly-dev/***
87++ /.local/state/wireplumber/***
88+
89+# --- Everything else stays behind -----------------------------------------------
90+- *