diff --git a/hosts/common/configs/system/backup/backup.sh b/hosts/common/configs/system/backup/backup.sh index 17f6c6f..4a7c3c8 100644 --- a/hosts/common/configs/system/backup/backup.sh +++ b/hosts/common/configs/system/backup/backup.sh @@ -11,7 +11,7 @@ usage() { } cleanup() { - if [ -d "/persist.bak" ]; then btrfs -q subvolume delete "/persist.bak"; fi + if [ -d "/persist/user.bak" ]; then btrfs -q subvolume delete "/persist/user.bak"; fi if [ -n "$backup_location" ]; then rm -f "$backup_location.tmp"; fi if [ -n "$mount_location" ]; then @@ -56,11 +56,11 @@ fi backup_location="$backup_location/$(hostname)-$(date +%Y-%m-%d-%H-%M-%S).btrfs.gz" -echo "Creating /persist snapshot..." -btrfs -q subvolume snapshot -r "/persist" "/persist.bak" +echo "Creating /persist/user snapshot..." +btrfs -q subvolume snapshot -r "/persist/user" "/persist/user.bak" echo "Creating backup at $backup_location..." -btrfs -q send "/persist.bak" | gzip > "$backup_location.tmp" +btrfs -q send "/persist/user.bak" | gzip > "$backup_location.tmp" mv "$backup_location.tmp" "$backup_location" diff --git a/hosts/common/configs/system/bluetooth/default.nix b/hosts/common/configs/system/bluetooth/default.nix index 362ec5f..3b43cb0 100644 --- a/hosts/common/configs/system/bluetooth/default.nix +++ b/hosts/common/configs/system/bluetooth/default.nix @@ -8,10 +8,10 @@ }; }; - environment.persistence."/persist"."/var/lib/bluetooth" = { }; + environment.persistence."/persist/state"."/var/lib/bluetooth" = { }; systemd.services.bluetooth.after = [ - config.environment.persistence."/persist"."/var/lib/bluetooth".mount + config.environment.persistence."/persist/state"."/var/lib/bluetooth".mount ]; home-manager.sharedModules = [ { services.mpris-proxy.enable = config.services.pipewire.enable; } ]; diff --git a/hosts/common/configs/system/docker/default.nix b/hosts/common/configs/system/docker/default.nix index acaede0..dfd8fb2 100644 --- a/hosts/common/configs/system/docker/default.nix +++ b/hosts/common/configs/system/docker/default.nix @@ -18,12 +18,12 @@ }; environment = { - persistence."/persist"."/var/lib/docker" = { }; + persistence."/persist/state"."/var/lib/docker" = { }; systemPackages = with pkgs; [ docker-compose ]; }; systemd = { - services.docker.after = [ config.environment.persistence."/persist"."/var/lib/docker".mount ]; - sockets.docker.after = [ config.environment.persistence."/persist"."/var/lib/docker".mount ]; + services.docker.after = [ config.environment.persistence."/persist/state"."/var/lib/docker".mount ]; + sockets.docker.after = [ config.environment.persistence."/persist/state"."/var/lib/docker".mount ]; }; } diff --git a/hosts/common/configs/system/impermanence/default.nix b/hosts/common/configs/system/impermanence/default.nix index df37792..f55a139 100644 --- a/hosts/common/configs/system/impermanence/default.nix +++ b/hosts/common/configs/system/impermanence/default.nix @@ -38,11 +38,13 @@ ln -s ${config.sops.secrets."machineId".path} $out ''; - persistence."/persist" = { - "/etc/nixos" = { }; - "/var/lib/nixos" = { }; - "/var/lib/systemd" = { }; - "/var/log" = { }; + persistence = { + "/persist/user"."/etc/nixos" = { }; + "/persist/state" = { + "/var/lib/nixos" = { }; + "/var/lib/systemd" = { }; + "/var/log" = { }; + }; }; }; } diff --git a/hosts/common/configs/system/libvirt/default.nix b/hosts/common/configs/system/libvirt/default.nix index aeb260b..e37e6e1 100644 --- a/hosts/common/configs/system/libvirt/default.nix +++ b/hosts/common/configs/system/libvirt/default.nix @@ -41,7 +41,7 @@ "ovmf/edk2-i386-vars.fd".source = "${config.virtualisation.libvirtd.qemu.package}/share/qemu/edk2-i386-vars.fd"; }; - persistence."/persist"."/var/lib/libvirt" = { }; + persistence."/persist/state"."/var/lib/libvirt" = { }; }; programs.virt-manager.enable = true; diff --git a/hosts/common/configs/system/networkmanager/default.nix b/hosts/common/configs/system/networkmanager/default.nix index 2e5b3cb..fcd9c8d 100644 --- a/hosts/common/configs/system/networkmanager/default.nix +++ b/hosts/common/configs/system/networkmanager/default.nix @@ -2,9 +2,9 @@ { networking.networkmanager.enable = true; - environment.persistence."/persist"."/etc/NetworkManager/system-connections" = { }; + environment.persistence."/persist/state"."/etc/NetworkManager/system-connections" = { }; systemd.services.NetworkManager.after = [ - config.environment.persistence."/persist"."/etc/NetworkManager/system-connections".mount + config.environment.persistence."/persist/state"."/etc/NetworkManager/system-connections".mount ]; } diff --git a/hosts/common/configs/system/nix-install/install.sh b/hosts/common/configs/system/nix-install/install.sh index 7ab4e91..01e3d09 100644 --- a/hosts/common/configs/system/nix-install/install.sh +++ b/hosts/common/configs/system/nix-install/install.sh @@ -63,8 +63,8 @@ prepare_disk() { } copy_keys() { - mkdir -p "$root/persist/etc/ssh" - cp -f "$flake/hosts/$host/secrets/ssh_host_ed25519_key" "$root/persist/etc/ssh/ssh_host_ed25519_key" + mkdir -p "$root/persist/state/etc/ssh" + cp -f "$flake/hosts/$host/secrets/ssh_host_ed25519_key" "$root/persist/state/etc/ssh/ssh_host_ed25519_key" for path in "$flake/hosts/$host/users"/*; do if [[ -z "$key" ]]; then @@ -73,8 +73,8 @@ copy_keys() { local user user=$(basename "$path") - mkdir -p "$root/persist/home/$user/.config/sops-nix" - cp -f "$flake/secrets/$key/key.txt" "$root/persist/home/$user/.config/sops-nix/key.txt" + mkdir -p "$root/persist/state/home/$user/.config/sops-nix" + cp -f "$flake/secrets/$key/key.txt" "$root/persist/state/home/$user/.config/sops-nix/key.txt" done } @@ -82,7 +82,7 @@ set_permissions() { for path in "$flake/hosts/$host/users"/*; do local user user=$(basename "$path") - chown -R "$(cat "$flake/hosts/$host/users/$user/uid"):100" "$root/persist/home/$user" + chown -R "$(cat "$flake/hosts/$host/users/$user/uid"):100" "$root/persist/*/home/$user" done } @@ -92,8 +92,9 @@ install() { copy_config() { echo "Copying configuration..." - rm -rf "$root/persist/etc/nixos" - cp -r "$flake" "$root/persist/etc/nixos" + mkdir -p "$root/persist/user/etc/nixos" + rm -rf "$root/persist/user/etc/nixos" + cp -r "$flake" "$root/persist/user/etc/nixos" } finish() { diff --git a/hosts/common/configs/system/podman/default.nix b/hosts/common/configs/system/podman/default.nix index 57fe5f2..91a3daf 100644 --- a/hosts/common/configs/system/podman/default.nix +++ b/hosts/common/configs/system/podman/default.nix @@ -14,7 +14,7 @@ }; environment = { - persistence."/persist"."/var/lib/containers" = { }; + persistence."/persist/state"."/var/lib/containers" = { }; systemPackages = with pkgs; [ podman-compose diff --git a/hosts/common/configs/system/printing/default.nix b/hosts/common/configs/system/printing/default.nix index 05cb4fc..118157c 100644 --- a/hosts/common/configs/system/printing/default.nix +++ b/hosts/common/configs/system/printing/default.nix @@ -18,19 +18,19 @@ }; }; - environment.persistence."/persist" = { + environment.persistence."/persist/state" = { "/var/lib/cups/ppd" = { }; "/var/lib/cups/printers.conf" = { }; }; systemd = { services.cups.after = [ - config.environment.persistence."/persist"."/var/lib/cups/ppd".mount - config.environment.persistence."/persist"."/var/lib/cups/printers.conf".mount + config.environment.persistence."/persist/state"."/var/lib/cups/ppd".mount + config.environment.persistence."/persist/state"."/var/lib/cups/printers.conf".mount ]; sockets.cups.after = [ - config.environment.persistence."/persist"."/var/lib/cups/ppd".mount - config.environment.persistence."/persist"."/var/lib/cups/printers.conf".mount + config.environment.persistence."/persist/state"."/var/lib/cups/ppd".mount + config.environment.persistence."/persist/state"."/var/lib/cups/printers.conf".mount ]; }; } diff --git a/hosts/common/configs/system/sops/default.nix b/hosts/common/configs/system/sops/default.nix index 2d57fe8..72af56a 100644 --- a/hosts/common/configs/system/sops/default.nix +++ b/hosts/common/configs/system/sops/default.nix @@ -8,7 +8,7 @@ imports = [ inputs.sops-nix.nixosModules.sops ]; environment = { - persistence."/persist"."/etc/ssh/ssh_host_ed25519_key" = { }; + persistence."/persist/state"."/etc/ssh/ssh_host_ed25519_key" = { }; systemPackages = with pkgs; [ sops @@ -22,7 +22,9 @@ age = { generateKey = true; - sshKeyPaths = [ config.environment.persistence."/persist"."/etc/ssh/ssh_host_ed25519_key".source ]; + sshKeyPaths = [ + config.environment.persistence."/persist/state"."/etc/ssh/ssh_host_ed25519_key".source + ]; keyFile = "/var/lib/sops-nix/key.txt"; }; }; diff --git a/hosts/common/configs/system/sshd/default.nix b/hosts/common/configs/system/sshd/default.nix index fb3b584..c3b29cb 100644 --- a/hosts/common/configs/system/sshd/default.nix +++ b/hosts/common/configs/system/sshd/default.nix @@ -2,7 +2,7 @@ { environment = { enableAllTerminfo = true; - persistence."/persist"."/var/lib/fail2ban" = { }; + persistence."/persist/state"."/var/lib/fail2ban" = { }; }; services = { diff --git a/hosts/common/configs/system/zsh/default.nix b/hosts/common/configs/system/zsh/default.nix index f08dc5b..9a1fac1 100644 --- a/hosts/common/configs/system/zsh/default.nix +++ b/hosts/common/configs/system/zsh/default.nix @@ -6,7 +6,7 @@ }; environment = { - persistence."/persist"."/var/lib/zsh" = { }; + persistence."/persist/state"."/var/lib/zsh" = { }; pathsToLink = [ "/share/zsh" ]; }; diff --git a/hosts/common/configs/user/console/android/default.nix b/hosts/common/configs/user/console/android/default.nix index 49b1b79..4b26c50 100644 --- a/hosts/common/configs/user/console/android/default.nix +++ b/hosts/common/configs/user/console/android/default.nix @@ -17,7 +17,7 @@ users.users.${user}.extraGroups = [ "adbusers" ]; - environment.persistence."/persist" = { + environment.persistence."/persist/state" = { "${home}/.local/share/android/adbkey" = { }; "${home}/.local/share/android/adbkey.pub" = { }; }; diff --git a/hosts/common/configs/user/console/btop/default.nix b/hosts/common/configs/user/console/btop/default.nix index cd97b19..43fc3fe 100644 --- a/hosts/common/configs/user/console/btop/default.nix +++ b/hosts/common/configs/user/console/btop/default.nix @@ -14,7 +14,7 @@ update_ms = 1000; proc_tree = true; cpu_single_graph = true; - disks_filter = "/ /nix /persist /cache"; + disks_filter = "/ /nix /persist"; }; }; } diff --git a/hosts/common/configs/user/console/docker/default.nix b/hosts/common/configs/user/console/docker/default.nix index e65eaeb..03f66ff 100644 --- a/hosts/common/configs/user/console/docker/default.nix +++ b/hosts/common/configs/user/console/docker/default.nix @@ -37,14 +37,14 @@ lib.mkMerge [ }; } (lib.mkIf rootless { - environment.persistence."/persist"."${home}/.local/share/docker" = { }; + environment.persistence."/persist/state"."${home}/.local/share/docker" = { }; systemd.user = { services.docker.after = [ - config.environment.persistence."/persist"."${home}/.local/share/docker".mount + config.environment.persistence."/persist/state"."${home}/.local/share/docker".mount ]; sockets.docker.after = [ - config.environment.persistence."/persist"."${home}/.local/share/docker".mount + config.environment.persistence."/persist/state"."${home}/.local/share/docker".mount ]; }; }) diff --git a/hosts/common/configs/user/console/kubernetes/default.nix b/hosts/common/configs/user/console/kubernetes/default.nix index e543ba7..5fa2a71 100644 --- a/hosts/common/configs/user/console/kubernetes/default.nix +++ b/hosts/common/configs/user/console/kubernetes/default.nix @@ -10,8 +10,8 @@ }: { environment.persistence = { - "/persist"."${home}/.kube" = { }; - "/cache"."${home}/.kube/cache" = { }; + "/persist/user"."${home}/.kube" = { }; + "/persist/cache"."${home}/.kube/cache" = { }; }; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/console/nix-direnv/default.nix b/hosts/common/configs/user/console/nix-direnv/default.nix index 7fc56e5..6bd294a 100644 --- a/hosts/common/configs/user/console/nix-direnv/default.nix +++ b/hosts/common/configs/user/console/nix-direnv/default.nix @@ -115,7 +115,7 @@ }; environment.persistence = { - "/persist"."${home}/.local/share/direnv/allow" = { }; - "/cache"."${home}/.cache/direnv" = { }; + "/persist/state"."${home}/.local/share/direnv/allow" = { }; + "/persist/cache"."${home}/.cache/direnv" = { }; }; } diff --git a/hosts/common/configs/user/console/nix/default.nix b/hosts/common/configs/user/console/nix/default.nix index bc67511..76650da 100644 --- a/hosts/common/configs/user/console/nix/default.nix +++ b/hosts/common/configs/user/console/nix/default.nix @@ -4,7 +4,7 @@ }: { pkgs, ... }: { - environment.persistence."/cache"."${home}/.cache/nix" = { }; + environment.persistence."/persist/cache"."${home}/.cache/nix" = { }; home-manager.users.${user} = { home.packages = with pkgs; [ nurl ]; diff --git a/hosts/common/configs/user/console/pipewire/default.nix b/hosts/common/configs/user/console/pipewire/default.nix index 9af68d1..154439f 100644 --- a/hosts/common/configs/user/console/pipewire/default.nix +++ b/hosts/common/configs/user/console/pipewire/default.nix @@ -4,10 +4,10 @@ }: { config, pkgs, ... }: { - environment.persistence."/persist"."${home}/.local/state/wireplumber" = { }; + environment.persistence."/persist/state"."${home}/.local/state/wireplumber" = { }; systemd.user.services.wireplumber.after = [ - config.environment.persistence."/persist"."${home}/.local/state/wireplumber".mount + config.environment.persistence."/persist/state"."${home}/.local/state/wireplumber".mount ]; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/console/podman/default.nix b/hosts/common/configs/user/console/podman/default.nix index 690ceb2..3a77930 100644 --- a/hosts/common/configs/user/console/podman/default.nix +++ b/hosts/common/configs/user/console/podman/default.nix @@ -9,7 +9,7 @@ ... }: { - environment.persistence."/persist"."${home}/.local/share/containers" = { }; + environment.persistence."/persist/state"."${home}/.local/share/containers" = { }; home-manager.users.${user} = { imports = [ inputs.quadlet-nix.homeManagerModules.quadlet ]; diff --git a/hosts/common/configs/user/console/ranger/default.nix b/hosts/common/configs/user/console/ranger/default.nix index 8a10095..9858cae 100644 --- a/hosts/common/configs/user/console/ranger/default.nix +++ b/hosts/common/configs/user/console/ranger/default.nix @@ -4,7 +4,7 @@ }: { ... }: { - environment.persistence."/cache"."${home}/.cache/ranger" = { }; + environment.persistence."/persist/cache"."${home}/.cache/ranger" = { }; home-manager.users.${user}.programs = { ranger = { diff --git a/hosts/common/configs/user/console/sops/default.nix b/hosts/common/configs/user/console/sops/default.nix index 5023dc2..93b1687 100644 --- a/hosts/common/configs/user/console/sops/default.nix +++ b/hosts/common/configs/user/console/sops/default.nix @@ -4,14 +4,14 @@ }: { config, inputs, ... }: { - environment.persistence."/persist"."${home}/.config/sops-nix/key.txt" = { }; + environment.persistence."/persist/state"."${home}/.config/sops-nix/key.txt" = { }; home-manager.users.${user} = { imports = [ inputs.sops-nix.homeManagerModules.sops ]; sops.age.keyFile = - config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source; + config.environment.persistence."/persist/state"."${home}/.config/sops-nix/key.txt".source; home.sessionVariables.SOPS_AGE_KEY_FILE = - config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source; + config.environment.persistence."/persist/state"."${home}/.config/sops-nix/key.txt".source; }; } diff --git a/hosts/common/configs/user/console/xdg/default.nix b/hosts/common/configs/user/console/xdg/default.nix index 8a05863..4c861ca 100644 --- a/hosts/common/configs/user/console/xdg/default.nix +++ b/hosts/common/configs/user/console/xdg/default.nix @@ -4,7 +4,7 @@ }: { config, pkgs, ... }: { - environment.persistence."/persist" = { + environment.persistence."/persist/user" = { "${home}/Desktop" = { }; "${home}/Documents" = { }; "${home}/Downloads" = { }; diff --git a/hosts/common/configs/user/console/zsh/default.nix b/hosts/common/configs/user/console/zsh/default.nix index 91a05b1..2cb004e 100644 --- a/hosts/common/configs/user/console/zsh/default.nix +++ b/hosts/common/configs/user/console/zsh/default.nix @@ -5,7 +5,7 @@ { config, pkgs, ... }: { environment = { - persistence."/persist"."${home}/.local/share/zsh" = { }; + persistence."/persist/state"."${home}/.local/share/zsh" = { }; # If we set this under home-manager.users.${user}.home.sessionVariables, # it runs too late in the init process and zsh fails. sessionVariables.ZDOTDIR = "$HOME/.config/zsh"; diff --git a/hosts/common/configs/user/gui/chromium/default.nix b/hosts/common/configs/user/gui/chromium/default.nix index 91a637e..132984b 100644 --- a/hosts/common/configs/user/gui/chromium/default.nix +++ b/hosts/common/configs/user/gui/chromium/default.nix @@ -20,8 +20,8 @@ }; environment.persistence = { - "/persist"."${home}/.config/chromium" = { }; - "/cache"."${home}/.cache/chromium" = { }; + "/persist/state"."${home}/.config/chromium" = { }; + "/persist/cache"."${home}/.cache/chromium" = { }; }; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/cliphist/default.nix b/hosts/common/configs/user/gui/cliphist/default.nix index 7a7d54f..3af8340 100644 --- a/hosts/common/configs/user/gui/cliphist/default.nix +++ b/hosts/common/configs/user/gui/cliphist/default.nix @@ -12,7 +12,7 @@ let hmConfig = config.home-manager.users.${user}; in { - environment.persistence."/cache"."${home}/.cache/cliphist" = { }; + environment.persistence."/persist/cache"."${home}/.cache/cliphist" = { }; home-manager.users.${user} = { home.packages = with pkgs; [ cliphist ]; @@ -24,7 +24,7 @@ in BindsTo = [ "graphical-session.target" ]; After = [ "graphical-session.target" - config.environment.persistence."/cache"."${home}/.cache/cliphist".mount + config.environment.persistence."/persist/cache"."${home}/.cache/cliphist".mount ]; }; @@ -48,7 +48,7 @@ in BindsTo = [ "graphical-session.target" ]; After = [ "graphical-session.target" - config.environment.persistence."/cache"."${home}/.cache/cliphist".mount + config.environment.persistence."/persist/cache"."${home}/.cache/cliphist".mount ]; }; diff --git a/hosts/common/configs/user/gui/darktable/default.nix b/hosts/common/configs/user/gui/darktable/default.nix index b5d8457..5ea11a7 100644 --- a/hosts/common/configs/user/gui/darktable/default.nix +++ b/hosts/common/configs/user/gui/darktable/default.nix @@ -23,11 +23,11 @@ in ]; environment.persistence = { - "/persist" = { + "/persist/state" = { "${home}/.config/darktable/data.db" = { }; "${home}/.config/darktable/library.db" = { }; }; - "/cache"."${home}/.cache/darktable" = { }; + "/persist/cache"."${home}/.cache/darktable" = { }; }; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/discord/default.nix b/hosts/common/configs/user/gui/discord/default.nix index 45d0b82..0269221 100644 --- a/hosts/common/configs/user/gui/discord/default.nix +++ b/hosts/common/configs/user/gui/discord/default.nix @@ -4,7 +4,7 @@ }: { lib, pkgs, ... }: { - environment.persistence."/persist"."${home}/.config/vesktop" = { }; + environment.persistence."/persist/state"."${home}/.config/vesktop" = { }; home-manager.users.${user} = { home.packages = with pkgs; [ vesktop ]; diff --git a/hosts/common/configs/user/gui/firefox/default.nix b/hosts/common/configs/user/gui/firefox/default.nix index 6a243a8..5306da5 100644 --- a/hosts/common/configs/user/gui/firefox/default.nix +++ b/hosts/common/configs/user/gui/firefox/default.nix @@ -13,8 +13,8 @@ let in { environment.persistence = { - "/persist"."${home}/.mozilla" = { }; - "/cache"."${home}/.cache/mozilla" = { }; + "/persist/state"."${home}/.mozilla" = { }; + "/persist/cache"."${home}/.cache/mozilla" = { }; }; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/kitty/default.nix b/hosts/common/configs/user/gui/kitty/default.nix index 436f10e..4b71b9d 100644 --- a/hosts/common/configs/user/gui/kitty/default.nix +++ b/hosts/common/configs/user/gui/kitty/default.nix @@ -12,7 +12,7 @@ let hmConfig = config.home-manager.users.${user}; in { - environment.persistence."/cache"."${home}/.cache/kitty" = { }; + environment.persistence."/persist/cache"."${home}/.cache/kitty" = { }; home-manager.users.${user} = { programs.kitty = { diff --git a/hosts/common/configs/user/gui/libreoffice/default.nix b/hosts/common/configs/user/gui/libreoffice/default.nix index b80f5be..65e5207 100644 --- a/hosts/common/configs/user/gui/libreoffice/default.nix +++ b/hosts/common/configs/user/gui/libreoffice/default.nix @@ -10,8 +10,8 @@ }: { environment.persistence = { - "/persist"."${home}/.config/libreoffice/4/user" = { }; - "/cache"."${home}/.config/libreoffice/4/cache" = { }; + "/persist/state"."${home}/.config/libreoffice/4/user" = { }; + "/persist/cache"."${home}/.config/libreoffice/4/cache" = { }; }; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/obs/default.nix b/hosts/common/configs/user/gui/obs/default.nix index 4de1c37..5edc1a3 100644 --- a/hosts/common/configs/user/gui/obs/default.nix +++ b/hosts/common/configs/user/gui/obs/default.nix @@ -13,7 +13,7 @@ }; environment.persistence = { - "/persist"."${home}/.config/obs-studio" = { }; + "/persist/state"."${home}/.config/obs-studio" = { }; }; home-manager.users.${user}.programs.obs-studio.enable = true; diff --git a/hosts/common/configs/user/gui/obsidian/default.nix b/hosts/common/configs/user/gui/obsidian/default.nix index 1f64c3c..c13b112 100644 --- a/hosts/common/configs/user/gui/obsidian/default.nix +++ b/hosts/common/configs/user/gui/obsidian/default.nix @@ -15,7 +15,7 @@ let hmConfig = config.home-manager.users.${user}; in { - environment.persistence."/cache"."${home}/.config/obsidian" = { }; + environment.persistence."/persist/cache"."${home}/.config/obsidian" = { }; home-manager.users.${user} = { programs.obsidian = { @@ -605,9 +605,9 @@ in theme.template = lib.attrsets.mapAttrs' ( _: vault: - lib.attrsets.nameValuePair - "${vault.target}/.obsidian/plugins/obsidian-style-settings/data.json" - { source = ./theme.json; } + lib.attrsets.nameValuePair "${vault.target}/.obsidian/plugins/obsidian-style-settings/data.json" { + source = ./theme.json; + } ) hmConfig.programs.obsidian.vaults; sops.secrets."google/geocoding".sopsFile = ../../../../../../secrets/personal/secrets.yaml; diff --git a/hosts/common/configs/user/gui/qalculate/default.nix b/hosts/common/configs/user/gui/qalculate/default.nix index ca4bbb8..151e14f 100644 --- a/hosts/common/configs/user/gui/qalculate/default.nix +++ b/hosts/common/configs/user/gui/qalculate/default.nix @@ -9,7 +9,7 @@ ... }: { - environment.persistence."/cache"."${home}/.config/qalculate/qalculate-gtk.history" = { }; + environment.persistence."/persist/cache"."${home}/.config/qalculate/qalculate-gtk.history" = { }; home-manager.users.${user} = { home.packages = with pkgs; [ qalculate-gtk ]; diff --git a/hosts/common/configs/user/gui/rofi/default.nix b/hosts/common/configs/user/gui/rofi/default.nix index b9abd48..91d3798 100644 --- a/hosts/common/configs/user/gui/rofi/default.nix +++ b/hosts/common/configs/user/gui/rofi/default.nix @@ -12,7 +12,7 @@ let hmConfig = config.home-manager.users.${user}; in { - environment.persistence."/cache"."${home}/.cache/rofi" = { }; + environment.persistence."/persist/cache"."${home}/.cache/rofi" = { }; home-manager.users.${user} = { programs.rofi = { diff --git a/hosts/common/configs/user/gui/spicetify/default.nix b/hosts/common/configs/user/gui/spicetify/default.nix index e66623c..12e1ab9 100644 --- a/hosts/common/configs/user/gui/spicetify/default.nix +++ b/hosts/common/configs/user/gui/spicetify/default.nix @@ -28,8 +28,8 @@ in }; environment.persistence = { - "/persist"."${home}/.config/spotify" = { }; - "/cache"."${home}/.cache/spotify" = { }; + "/persist/state"."${home}/.config/spotify" = { }; + "/persist/cache"."${home}/.cache/spotify" = { }; }; home-manager.users.${user} = { diff --git a/hosts/common/configs/user/gui/steam/default.nix b/hosts/common/configs/user/gui/steam/default.nix index f2ba4be..f55a104 100644 --- a/hosts/common/configs/user/gui/steam/default.nix +++ b/hosts/common/configs/user/gui/steam/default.nix @@ -9,7 +9,7 @@ ... }: { - environment.persistence."/persist" = { + environment.persistence."/persist/state" = { "${home}/.steam" = { }; "${home}/.local/share/Steam" = { }; }; @@ -49,8 +49,8 @@ Unit = { Description = "Sync Steam games with Games directory"; After = [ - config.environment.persistence."/persist"."${home}/.local/share/Steam".mount - config.environment.persistence."/persist"."${home}/Games".mount + config.environment.persistence."/persist/state"."${home}/.local/share/Steam".mount + config.environment.persistence."/persist/user"."${home}/Games".mount ]; DefaultDependencies = false; }; @@ -67,8 +67,8 @@ Unit = { Description = "Monitor Steam games directory for changes"; After = [ - config.environment.persistence."/persist"."${home}/.local/share/Steam".mount - config.environment.persistence."/persist"."${home}/Games".mount + config.environment.persistence."/persist/state"."${home}/.local/share/Steam".mount + config.environment.persistence."/persist/user"."${home}/Games".mount ]; }; diff --git a/hosts/common/configs/user/gui/swww/default.nix b/hosts/common/configs/user/gui/swww/default.nix index bd2fc06..8ad7c92 100644 --- a/hosts/common/configs/user/gui/swww/default.nix +++ b/hosts/common/configs/user/gui/swww/default.nix @@ -26,7 +26,7 @@ let ); in { - environment.persistence."/cache"."${home}/.cache/swww" = { }; + environment.persistence."/persist/cache"."${home}/.cache/swww" = { }; home-manager.users.${user} = { home.packages = with pkgs; [ swww ]; @@ -37,7 +37,7 @@ in BindsTo = [ "graphical-session.target" ]; After = [ "graphical-session.target" - config.environment.persistence."/cache"."${home}/.cache/swww".mount + config.environment.persistence."/persist/cache"."${home}/.cache/swww".mount ]; }; diff --git a/hosts/common/configs/user/gui/theme/default.nix b/hosts/common/configs/user/gui/theme/default.nix index 490a2dc..e84e9c2 100644 --- a/hosts/common/configs/user/gui/theme/default.nix +++ b/hosts/common/configs/user/gui/theme/default.nix @@ -14,7 +14,7 @@ let themeBin = lib.meta.getExe hmConfig.theme.pkg; in { - environment.persistence."/persist"."${home}/.config/theme" = { }; + environment.persistence."/persist/state"."${home}/.config/theme" = { }; home-manager.users.${user} = { imports = [ (import ./options.nix { inherit user home; }) ]; diff --git a/hosts/common/configs/user/gui/vscode/default.nix b/hosts/common/configs/user/gui/vscode/default.nix index 5743fea..47021ed 100644 --- a/hosts/common/configs/user/gui/vscode/default.nix +++ b/hosts/common/configs/user/gui/vscode/default.nix @@ -12,9 +12,9 @@ let hmConfig = config.home-manager.users.${user}; in { - # Bastard: https://github.com/microsoft/vscode/issues/3884 + # FIXME: https://github.com/microsoft/vscode/issues/3884 # Also for Discord, but those guys are even bigger bastards. - environment.persistence."/persist"."${home}/.config/Code" = { }; + environment.persistence."/persist/state"."${home}/.config/Code" = { }; home-manager.users.${user} = { imports = [ ./options.nix ]; diff --git a/hosts/eirene/format.nix b/hosts/eirene/format.nix index 2ec6e0c..ee7e118 100644 --- a/hosts/eirene/format.nix +++ b/hosts/eirene/format.nix @@ -59,12 +59,20 @@ mountpoint = "/persist"; inherit mountOptions; }; - "@nix" = { - mountpoint = "/nix"; + "@persist/user" = { + mountpoint = "/persist/user"; inherit mountOptions; }; - "@cache" = { - mountpoint = "/cache"; + "@persist/state" = { + mountpoint = "/persist/state"; + inherit mountOptions; + }; + "@persist/cache" = { + mountpoint = "/persist/cache"; + inherit mountOptions; + }; + "@nix" = { + mountpoint = "/nix"; inherit mountOptions; }; }; diff --git a/hosts/elara/format.nix b/hosts/elara/format.nix index fc9d5fa..e63647c 100644 --- a/hosts/elara/format.nix +++ b/hosts/elara/format.nix @@ -59,12 +59,20 @@ mountpoint = "/persist"; inherit mountOptions; }; - "@nix" = { - mountpoint = "/nix"; + "@persist/user" = { + mountpoint = "/persist/user"; inherit mountOptions; }; - "@cache" = { - mountpoint = "/cache"; + "@persist/state" = { + mountpoint = "/persist/state"; + inherit mountOptions; + }; + "@persist/cache" = { + mountpoint = "/persist/cache"; + inherit mountOptions; + }; + "@nix" = { + mountpoint = "/nix"; inherit mountOptions; }; }; diff --git a/hosts/elara/users/nikara/configs/console/go/default.nix b/hosts/elara/users/nikara/configs/console/go/default.nix index 82c9a85..c5668d9 100644 --- a/hosts/elara/users/nikara/configs/console/go/default.nix +++ b/hosts/elara/users/nikara/configs/console/go/default.nix @@ -4,7 +4,7 @@ }: { pkgs, ... }: { - environment.persistence."/cache"."${home}/.local/share/go" = { }; + environment.persistence."/persist/cache"."${home}/.local/share/go" = { }; home-manager.users.${user} = { programs.go = { diff --git a/hosts/elara/users/nikara/configs/console/gradle/default.nix b/hosts/elara/users/nikara/configs/console/gradle/default.nix index 848f2d1..44f6549 100644 --- a/hosts/elara/users/nikara/configs/console/gradle/default.nix +++ b/hosts/elara/users/nikara/configs/console/gradle/default.nix @@ -7,7 +7,7 @@ let hmConfig = config.home-manager.users.${user}; in { - environment.persistence."/cache"."${home}/.local/share/gradle" = { }; + environment.persistence."/persist/cache"."${home}/.local/share/gradle" = { }; home-manager.users.${user} = { programs.gradle = { diff --git a/hosts/himalia/format.nix b/hosts/himalia/format.nix index b4fbb7e..1d6efcc 100644 --- a/hosts/himalia/format.nix +++ b/hosts/himalia/format.nix @@ -43,32 +43,39 @@ content = { type = "btrfs"; extraArgs = [ "-f" ]; - subvolumes = { - "@" = { - mountpoint = "/"; - }; - "@persist" = { - mountpoint = "/persist"; + subvolumes = + let mountOptions = [ - "compress=zstd" + "compress=zstd:1" "noatime" ]; + in + { + "@" = { + mountpoint = "/"; + inherit mountOptions; + }; + "@persist" = { + mountpoint = "/persist"; + inherit mountOptions; + }; + "@persist/user" = { + mountpoint = "/persist/user"; + inherit mountOptions; + }; + "@persist/state" = { + mountpoint = "/persist/state"; + inherit mountOptions; + }; + "@persist/cache" = { + mountpoint = "/persist/cache"; + inherit mountOptions; + }; + "@nix" = { + mountpoint = "/nix"; + inherit mountOptions; + }; }; - "@nix" = { - mountpoint = "/nix"; - mountOptions = [ - "compress=zstd" - "noatime" - ]; - }; - "@cache" = { - mountpoint = "/cache"; - mountOptions = [ - "compress=zstd" - "noatime" - ]; - }; - }; }; }; }; diff --git a/hosts/himalia/hardware/default.nix b/hosts/himalia/hardware/default.nix index bc731dc..f391816 100644 --- a/hosts/himalia/hardware/default.nix +++ b/hosts/himalia/hardware/default.nix @@ -91,7 +91,7 @@ }; }; - environment.persistence."/persist"."/etc/asusd/aura_19b6.ron" = { }; + environment.persistence."/persist/state"."/etc/asusd/aura_19b6.ron" = { }; programs.gamescope.env = { __NV_PRIME_RENDER_OFFLOAD = "1"; diff --git a/hosts/installer/format.nix b/hosts/installer/format.nix index f369b5a..0210164 100644 --- a/hosts/installer/format.nix +++ b/hosts/installer/format.nix @@ -51,12 +51,20 @@ mountpoint = "/persist"; inherit mountOptions; }; - "@nix" = { - mountpoint = "/nix"; + "@persist/user" = { + mountpoint = "/persist/user"; inherit mountOptions; }; - "@cache" = { - mountpoint = "/cache"; + "@persist/state" = { + mountpoint = "/persist/state"; + inherit mountOptions; + }; + "@persist/cache" = { + mountpoint = "/persist/cache"; + inherit mountOptions; + }; + "@nix" = { + mountpoint = "/nix"; inherit mountOptions; }; }; diff --git a/lib/scripts/add-host.sh b/lib/scripts/add-host.sh index c2bbc2a..d761533 100755 --- a/lib/scripts/add-host.sh +++ b/lib/scripts/add-host.sh @@ -74,7 +74,7 @@ cat <<'EOF' > "./hosts/$host/format.nix" { disko.devices = { disk.main = { - device = ""; # Set this to the device you want to install to + device = ""; # TODO: Set this to the device you want to install to type = "disk"; content = { type = "gpt"; @@ -95,6 +95,14 @@ cat <<'EOF' > "./hosts/$host/format.nix" mountOptions = [ "umask=0077" ]; }; }; + swap = { + name = "swap"; + size = ""; # TODO: Set this to the swap size you want + content = { + type = "swap"; + resumeDevice = true; + }; + }; root = { name = "root"; size = "100%"; @@ -108,32 +116,39 @@ cat <<'EOF' > "./hosts/$host/format.nix" content = { type = "btrfs"; extraArgs = [ "-f" ]; - subvolumes = { - "@" = { - mountpoint = "/"; - }; - "@persist" = { - mountpoint = "/persist"; + subvolumes = + let mountOptions = [ - "compress=zstd" + "compress=zstd:1" "noatime" ]; + in + { + "@" = { + mountpoint = "/"; + inherit mountOptions; + }; + "@persist" = { + mountpoint = "/persist"; + inherit mountOptions; + }; + "@persist/user" = { + mountpoint = "/persist/user"; + inherit mountOptions; + }; + "@persist/state" = { + mountpoint = "/persist/state"; + inherit mountOptions; + }; + "@persist/cache" = { + mountpoint = "/persist/cache"; + inherit mountOptions; + }; + "@nix" = { + mountpoint = "/nix"; + inherit mountOptions; + }; }; - "@nix" = { - mountpoint = "/nix"; - mountOptions = [ - "compress=zstd" - "noatime" - ]; - }; - "@cache" = { - mountpoint = "/cache"; - mountOptions = [ - "compress=zstd" - "noatime" - ]; - }; - }; }; }; };