diff --git a/hosts/common/system/configs/impermanence/default.nix b/hosts/common/system/configs/impermanence/default.nix index f24f7d0..c870d34 100644 --- a/hosts/common/system/configs/impermanence/default.nix +++ b/hosts/common/system/configs/impermanence/default.nix @@ -28,7 +28,10 @@ }; }; - fileSystems."/persist".neededForBoot = true; + fileSystems = { + "/persist".neededForBoot = true; + "/cache".neededForBoot = true; + }; environment.persistence."/persist" = { hideMounts = true; diff --git a/hosts/common/user/configs/console/android/default.nix b/hosts/common/user/configs/console/android/default.nix index 82a40f5..9ae35ec 100644 --- a/hosts/common/user/configs/console/android/default.nix +++ b/hosts/common/user/configs/console/android/default.nix @@ -3,7 +3,6 @@ }: { config, pkgs, ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { @@ -20,11 +19,10 @@ in users.users.${username}.extraGroups = [ "adbusers" ]; - home-manager.users.${username}.home = { - sessionVariables.ANDROID_USER_HOME = "${hmConfig.xdg.dataHome}/android"; - persistence."/persist${userConfig.home}".files = [ - "${hmConfig.xdg.dataHome}/android/adbkey" - "${hmConfig.xdg.dataHome}/android/adbkey.pub" - ]; - }; + environment.persistence."/persist".users.${username}.files = [ + "${hmConfig.xdg.relativeDataHome}/android/adbkey" + "${hmConfig.xdg.relativeDataHome}/android/adbkey.pub" + ]; + + home-manager.users.${username}.home.sessionVariables.ANDROID_USER_HOME = "${hmConfig.xdg.dataHome}/android"; } diff --git a/hosts/common/user/configs/console/docker/default.nix b/hosts/common/user/configs/console/docker/default.nix index 6787a1b..429fa1e 100644 --- a/hosts/common/user/configs/console/docker/default.nix +++ b/hosts/common/user/configs/console/docker/default.nix @@ -26,9 +26,6 @@ }; }; - # This is not set though home-manager because we need to hide the mount - # otherwise docker complains with the following error: - # dockerd-rootless: failed to start daemon: error initializing graphdriver: prerequisites for driver not satisfied (wrong filesystem?): btrfs environment.persistence."/persist".users.${username}.directories = [ ".local/share/docker" ]; home-manager.users.${username}.home.packages = with pkgs; [ docker-compose ]; diff --git a/hosts/common/user/configs/console/impermanence/default.nix b/hosts/common/user/configs/console/impermanence/default.nix deleted file mode 100644 index ce9fbaa..0000000 --- a/hosts/common/user/configs/console/impermanence/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - username ? throw "username argument is required", -}: -{ - config, - inputs, - lib, - ... -}: -let - userConfig = config.users.users.${username}; -in -{ - programs.fuse.userAllowOther = true; - - systemd.tmpfiles.rules = ([ - "d /persist/home 0755 root root -" - "d /cache/home 0755 root root -" - "d /persist${userConfig.home} 0700 ${username} users -" - "d /cache${userConfig.home} 0700 ${username} users -" - ]); - - home-manager.users.${username} = { - imports = [ inputs.impermanence.nixosModules.home-manager.impermanence ]; - - home.persistence = { - "/persist${userConfig.home}".allowOther = true; - "/cache${userConfig.home}".allowOther = true; - }; - }; -} diff --git a/hosts/common/user/configs/console/sops/default.nix b/hosts/common/user/configs/console/sops/default.nix index d7fb029..e07ad7c 100644 --- a/hosts/common/user/configs/console/sops/default.nix +++ b/hosts/common/user/configs/console/sops/default.nix @@ -12,14 +12,12 @@ let sopsKeyPath = ".config/sops-nix/key.txt"; in { + environment.persistence."/persist".users.${username}.files = [ sopsKeyPath ]; + home-manager.users.${username} = { imports = [ inputs.sops-nix.homeManagerModules.sops ]; sops.age.keyFile = "${userConfig.home}/${sopsKeyPath}"; - - home = { - persistence."/persist${userConfig.home}".files = [ sopsKeyPath ]; - sessionVariables.SOPS_AGE_KEY_FILE = "${userConfig.home}/${sopsKeyPath}"; - }; + home.sessionVariables.SOPS_AGE_KEY_FILE = "${userConfig.home}/${sopsKeyPath}"; }; } diff --git a/hosts/common/user/configs/console/syncthing/default.nix b/hosts/common/user/configs/console/syncthing/default.nix index 3144a00..3fb7166 100644 --- a/hosts/common/user/configs/console/syncthing/default.nix +++ b/hosts/common/user/configs/console/syncthing/default.nix @@ -1,17 +1,7 @@ { username ? throw "username argument is required", }: -{ - config, - inputs, - lib, - pkgs, - ... -}: -let - userConfig = config.users.users.${username}; - hmConfig = config.home-manager.users.${username}; -in +{ config, ... }: { networking.firewall = { allowedTCPPorts = [ 22000 ]; @@ -50,25 +40,6 @@ in }; }; - systemd.user.services.syncthing.Unit.After = - let - inherit (pkgs.callPackage "${inputs.impermanence}/lib.nix" { }) mkServiceName parentsOf; - removeHomePrefix = - path: lib.strings.removePrefix "~/" (lib.strings.removePrefix "${userConfig.home}/" path); - syncthingFolders = builtins.map (folder: removeHomePrefix folder.path) ( - builtins.attrValues hmConfig.services.syncthing.settings.folders - ); - in - lib.lists.flatten ( - builtins.map ( - persistence: - builtins.map (folder: "${mkServiceName persistence.persistentStoragePath folder}.service") ( - builtins.filter (folder: builtins.elem folder persistence.directories) ( - lib.lists.unique (lib.lists.flatten (builtins.map parentsOf syncthingFolders)) - ) - ) - ) (builtins.attrValues hmConfig.home.persistence) - ) - ++ [ "sops-nix.service" ]; + systemd.user.services.syncthing.Unit.After = [ "sops-nix.service" ]; }; } diff --git a/hosts/common/user/configs/console/xdg/default.nix b/hosts/common/user/configs/console/xdg/default.nix index f21ea11..9ab79e5 100644 --- a/hosts/common/user/configs/console/xdg/default.nix +++ b/hosts/common/user/configs/console/xdg/default.nix @@ -1,17 +1,24 @@ { username ? throw "username argument is required", }: -{ - config, - lib, - pkgs, - ... -}: +{ config, pkgs, ... }: let userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { + environment.persistence."/persist".users.${username}.directories = with hmConfig.xdg.userDirs; [ + relativeDesktop + relativeDocuments + relativeDownload + relativeMusic + relativePictures + relativeTemplates + relativeVideos + "VMs" + "git" + ]; + home-manager.users.${username} = { imports = [ ./options.nix ]; @@ -33,19 +40,6 @@ in }; }; - home = { - packages = with pkgs; [ xdg-utils ]; - persistence."/persist${userConfig.home}".directories = with hmConfig.xdg.userDirs; [ - relativeDesktop - relativeDocuments - relativeDownload - relativeMusic - relativePictures - relativeTemplates - relativeVideos - "VMs" - "git" - ]; - }; + home.packages = with pkgs; [ xdg-utils ]; }; } diff --git a/hosts/common/user/configs/console/zsh/default.nix b/hosts/common/user/configs/console/zsh/default.nix index 8fc96f6..0d3e699 100644 --- a/hosts/common/user/configs/console/zsh/default.nix +++ b/hosts/common/user/configs/console/zsh/default.nix @@ -3,11 +3,13 @@ }: { config, ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { - environment.sessionVariables.ZDOTDIR = "$HOME/.config/zsh"; + environment = { + sessionVariables.ZDOTDIR = "$HOME/.config/zsh"; + persistence."/persist".users.${username}.directories = [ "${hmConfig.xdg.relativeDataHome}/zsh" ]; + }; home-manager.users.${username} = { programs.zsh = { @@ -23,9 +25,6 @@ in syntaxHighlighting.enable = true; }; - home = { - file.".zshenv".enable = false; - persistence."/persist${userConfig.home}".directories = [ "${hmConfig.xdg.relativeDataHome}/zsh" ]; - }; + home.file.".zshenv".enable = false; }; } diff --git a/hosts/common/user/configs/gui/chromium/default.nix b/hosts/common/user/configs/gui/chromium/default.nix index 293158d..e7e476d 100644 --- a/hosts/common/user/configs/gui/chromium/default.nix +++ b/hosts/common/user/configs/gui/chromium/default.nix @@ -1,15 +1,7 @@ { username ? throw "username argument is required", }: -{ - config, - lib, - pkgs, - ... -}: -let - userConfig = config.users.users.${username}; -in +{ ... }: { programs.chromium = { enable = true; @@ -26,6 +18,11 @@ in }; }; + environment.persistence = { + "/persist".users.${username}.directories = [ ".config/chromium" ]; + "/cache".users.${username}.directories = [ ".cache/chromium" ]; + }; + home-manager.users.${username} = { programs.chromium = { enable = true; @@ -42,10 +39,5 @@ in "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine ]; }; - - home.persistence = { - "/persist${userConfig.home}".directories = [ ".config/chromium" ]; - "/cache${userConfig.home}".directories = [ ".cache/chromium" ]; - }; }; } diff --git a/hosts/common/user/configs/gui/cliphist/default.nix b/hosts/common/user/configs/gui/cliphist/default.nix index ad04973..02ba7ee 100644 --- a/hosts/common/user/configs/gui/cliphist/default.nix +++ b/hosts/common/user/configs/gui/cliphist/default.nix @@ -8,20 +8,18 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { + environment.persistence."/cache".users.${username}.directories = [ + "${hmConfig.xdg.relativeCacheHome}/cliphist" + ]; + home-manager.users.${username} = { - home = { - packages = with pkgs; [ - wl-clipboard - cliphist - ]; - persistence."/cache${userConfig.home}".directories = [ - "${hmConfig.xdg.relativeCacheHome}/cliphist" - ]; - }; + home.packages = with pkgs; [ + wl-clipboard + cliphist + ]; systemd.user.services = { cliphist = { diff --git a/hosts/common/user/configs/gui/firefox/default.nix b/hosts/common/user/configs/gui/firefox/default.nix index f55988a..247d2c7 100644 --- a/hosts/common/user/configs/gui/firefox/default.nix +++ b/hosts/common/user/configs/gui/firefox/default.nix @@ -7,10 +7,12 @@ pkgs, ... }: -let - userConfig = config.users.users.${username}; -in { + environment.persistence = { + "/persist".users.${username}.directories = [ ".mozilla" ]; + "/cache".users.${username}.directories = [ ".cache/mozilla" ]; + }; + home-manager.users.${username} = { programs.firefox = { enable = true; @@ -99,10 +101,5 @@ in home.sessionVariables.DEFAULT_BROWSER = lib.meta.getExe pkgs.firefox; wayland.windowManager.hyprland.settings.bind = [ "$mod, b, exec, ${lib.meta.getExe pkgs.firefox}" ]; - - home.persistence = { - "/persist${userConfig.home}".directories = [ ".mozilla" ]; - "/cache${userConfig.home}".directories = [ ".cache/mozilla" ]; - }; }; } diff --git a/hosts/common/user/configs/gui/kitty/default.nix b/hosts/common/user/configs/gui/kitty/default.nix index abb684b..a40c230 100644 --- a/hosts/common/user/configs/gui/kitty/default.nix +++ b/hosts/common/user/configs/gui/kitty/default.nix @@ -8,10 +8,13 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { + environment.persistence."/cache".users.${username}.directories = [ + "${hmConfig.xdg.relativeCacheHome}/kitty" + ]; + home-manager.users.${username} = { programs.kitty = { enable = true; @@ -41,9 +44,5 @@ in ) } &"; }; - - home.persistence."/cache${userConfig.home}".directories = [ - "${hmConfig.xdg.relativeCacheHome}/kitty" - ]; }; } diff --git a/hosts/common/user/configs/gui/obsidian/default.nix b/hosts/common/user/configs/gui/obsidian/default.nix index bb3fb97..7591e5c 100644 --- a/hosts/common/user/configs/gui/obsidian/default.nix +++ b/hosts/common/user/configs/gui/obsidian/default.nix @@ -8,10 +8,13 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { + environment.persistence."/cache".users.${username}.directories = [ + "${hmConfig.xdg.relativeConfigHome}/obsidian" + ]; + home-manager.users.${username} = { imports = [ ./options.nix ]; @@ -712,7 +715,5 @@ in sops.secrets."google/geocoding" = { }; wayland.windowManager.hyprland.settings.bind = [ "$mod, o, exec, ${pkgs.obsidian}/bin/obsidian" ]; - - home.persistence."/cache${userConfig.home}".directories = [ ".config/obsidian" ]; }; } diff --git a/hosts/common/user/configs/gui/qalculate/default.nix b/hosts/common/user/configs/gui/qalculate/default.nix index c245a99..1da6086 100644 --- a/hosts/common/user/configs/gui/qalculate/default.nix +++ b/hosts/common/user/configs/gui/qalculate/default.nix @@ -8,7 +8,6 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { @@ -20,13 +19,12 @@ in }) ]; + environment.persistence."/cache".users.${username}.files = [ + "${hmConfig.xdg.relativeConfigHome}/qalculate/qalculate-gtk.history" + ]; + home-manager.users.${username} = { - home = { - packages = with pkgs; [ qalculate-gtk ]; - persistence."/cache${userConfig.home}".files = [ - "${hmConfig.xdg.relativeConfigHome}/qalculate/qalculate-gtk.history" - ]; - }; + home.packages = with pkgs; [ qalculate-gtk ]; xdg.configFile."qalculate/qalculate-gtk.cfg".source = (pkgs.formats.ini { }).generate "qalculate-gtk.cfg" diff --git a/hosts/common/user/configs/gui/rofi/default.nix b/hosts/common/user/configs/gui/rofi/default.nix index 869520f..3f9c1ee 100644 --- a/hosts/common/user/configs/gui/rofi/default.nix +++ b/hosts/common/user/configs/gui/rofi/default.nix @@ -8,10 +8,13 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { + environment.persistence."/cache".users.${username}.directories = [ + "${hmConfig.xdg.relativeCacheHome}/rofi" + ]; + home-manager.users.${username} = { programs.rofi = { enable = true; @@ -19,10 +22,6 @@ in font = builtins.head hmConfig.theme.font.monospace.names; }; - home.persistence."/cache${userConfig.home}".directories = [ - "${hmConfig.xdg.relativeCacheHome}/rofi" - ]; - wayland.windowManager.hyprland.settings.bind = [ "$mod, r, exec, ${lib.meta.getExe pkgs.rofi-wayland} -cache-dir ${hmConfig.xdg.cacheHome}/rofi -show drun" ]; diff --git a/hosts/common/user/configs/gui/spicetify/default.nix b/hosts/common/user/configs/gui/spicetify/default.nix index 125392e..f9efee5 100644 --- a/hosts/common/user/configs/gui/spicetify/default.nix +++ b/hosts/common/user/configs/gui/spicetify/default.nix @@ -8,7 +8,6 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { @@ -17,6 +16,11 @@ in allowedUDPPorts = [ 5353 ]; }; + environment.persistence = { + "/persist".users.${username}.directories = [ "${hmConfig.xdg.relativeConfigHome}/spotify" ]; + "/cache".users.${username}.directories = [ "${hmConfig.xdg.relativeCacheHome}/spotify" ]; + }; + home-manager.users.${username} = { imports = [ inputs.spicetify-nix.homeManagerModules.default ]; @@ -57,10 +61,5 @@ in }; theme.templates."${hmConfig.xdg.configHome}/spotify/colors.css".source = ./colors.css; - - home.persistence = { - "/persist${userConfig.home}".directories = [ "${hmConfig.xdg.relativeConfigHome}/spotify" ]; - "/cache${userConfig.home}".directories = [ "${hmConfig.xdg.relativeCacheHome}/spotify" ]; - }; }; } diff --git a/hosts/common/user/configs/gui/swww/default.nix b/hosts/common/user/configs/gui/swww/default.nix index bbf2d58..cda4c74 100644 --- a/hosts/common/user/configs/gui/swww/default.nix +++ b/hosts/common/user/configs/gui/swww/default.nix @@ -8,7 +8,6 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; themeSwww = lib.meta.getExe ( pkgs.writeShellApplication { @@ -22,11 +21,12 @@ let ); in { + environment.persistence."/cache".users.${username}.directories = [ + "${hmConfig.xdg.relativeCacheHome}/swww" + ]; + home-manager.users.${username} = { - home = { - packages = with pkgs; [ swww ]; - persistence."/cache${userConfig.home}".directories = [ "${hmConfig.xdg.relativeCacheHome}/swww" ]; - }; + home.packages = with pkgs; [ swww ]; systemd.user.services.swww = { Unit = { diff --git a/hosts/common/user/configs/gui/theme/default.nix b/hosts/common/user/configs/gui/theme/default.nix index 2627bc2..0eb8fbf 100644 --- a/hosts/common/user/configs/gui/theme/default.nix +++ b/hosts/common/user/configs/gui/theme/default.nix @@ -9,11 +9,14 @@ ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; themeBin = lib.meta.getExe hmConfig.theme.pkg; in { + environment.persistence."/persist".users.${username}.directories = [ + "${hmConfig.xdg.relativeConfigHome}/theme" + ]; + home-manager.users.${username} = { imports = [ ./options.nix ]; @@ -23,9 +26,5 @@ in "Ctrl_Alt, r, exec, ${themeBin}" "Ctrl_Alt, t, exec, ${themeBin} toggle" ]; - - home.persistence."/persist${userConfig.home}".directories = [ - "${hmConfig.xdg.relativeConfigHome}/theme" - ]; }; } diff --git a/hosts/common/user/configs/gui/vscode/default.nix b/hosts/common/user/configs/gui/vscode/default.nix index 80df15d..f77608e 100644 --- a/hosts/common/user/configs/gui/vscode/default.nix +++ b/hosts/common/user/configs/gui/vscode/default.nix @@ -3,16 +3,32 @@ }: { config, - inputs, lib, pkgs, ... }: let - userConfig = config.users.users.${username}; hmConfig = config.home-manager.users.${username}; in { + environment.persistence = { + "/persist".users.${username}.directories = [ ".config/Code" ]; + # Bastard: https://github.com/microsoft/vscode/issues/3884 + "/cache".users.${username}.directories = [ + ".config/Code/Cache" + ".config/Code/CachedConfigurations" + ".config/Code/CachedData" + ".config/Code/CachedExtensionVSIXs" + ".config/Code/CachedExtensions" + ".config/Code/CachedProfilesData" + ".config/Code/Code Cache" + ".config/Code/DawnCache" + ".config/Code/GPUCache" + ".config/Code/Service Worker/CacheStorage" + ".config/Code/Service Worker/ScriptCache" + ]; + }; + home-manager.users.${username} = { programs.vscode = { enable = true; @@ -81,23 +97,5 @@ in }; imports = [ ./langs/nix.nix ]; - - home.persistence = { - "/persist${userConfig.home}".directories = [ ".config/Code" ]; - # Bastard: https://github.com/microsoft/vscode/issues/3884 - "/cache${userConfig.home}".directories = [ - ".config/Code/Cache" - ".config/Code/CachedConfigurations" - ".config/Code/CachedData" - ".config/Code/CachedExtensionVSIXs" - ".config/Code/CachedExtensions" - ".config/Code/CachedProfilesData" - ".config/Code/Code Cache" - ".config/Code/DawnCache" - ".config/Code/GPUCache" - ".config/Code/Service Worker/CacheStorage" - ".config/Code/Service Worker/ScriptCache" - ]; - }; }; } diff --git a/hosts/eirene/nick.nix b/hosts/eirene/nick.nix index 4f6d28c..e0ea5cc 100644 --- a/hosts/eirene/nick.nix +++ b/hosts/eirene/nick.nix @@ -17,7 +17,6 @@ in (import ../common/user/configs/console/gpg-agent { inherit username; }) (import ../common/user/configs/console/home-manager { inherit username; }) (import ../common/user/configs/console/imagemagick { inherit username; }) - (import ../common/user/configs/console/impermanence { inherit username; }) (import ../common/user/configs/console/neovim { inherit username; }) (import ../common/user/configs/console/nixpkgs { inherit username; }) (import ../common/user/configs/console/pipewire { inherit username; })