From cf345521e8bc68724e1243fc04216059339dab9d Mon Sep 17 00:00:00 2001 From: Jan-Bulthuis Date: Tue, 23 Dec 2025 12:14:46 +0100 Subject: [PATCH] feat: Impermanence move to bind mounts for user impermanence --- modules/home/utilities/impermanence.nix | 21 ++++++++--------- modules/nixos/impermanence.nix | 31 +++++++++++++++++++++---- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/modules/home/utilities/impermanence.nix b/modules/home/utilities/impermanence.nix index 336549a..1c20fec 100644 --- a/modules/home/utilities/impermanence.nix +++ b/modules/home/utilities/impermanence.nix @@ -2,11 +2,11 @@ with lib; let - cfg = config.modules.impermanence; + # cfg = config.modules.impermanence; in { options.modules.impermanence = { - enable = mkEnableOption "Impermanence"; + # enable = mkEnableOption "Impermanence"; directories = mkOption { type = types.listOf types.str; default = [ ]; @@ -23,13 +23,12 @@ in }; }; - config = mkIf cfg.enable { - home.persistence."/persist/home/${config.home.username}" = { - enable = true; - hideMounts = true; - allowOther = true; - directories = cfg.directories; - files = cfg.files; - }; - }; + # config = mkIf cfg.enable { + # home.persistence."/persist/home/${config.home.username}" = { + # enable = true; + # allowOther = true; + # directories = cfg.directories; + # files = cfg.files; + # }; + # }; } diff --git a/modules/nixos/impermanence.nix b/modules/nixos/impermanence.nix index edc4b56..b181bb8 100644 --- a/modules/nixos/impermanence.nix +++ b/modules/nixos/impermanence.nix @@ -50,11 +50,32 @@ in # For testing purposes with VM virtualisation.vmVariantWithDisko.virtualisation.fileSystems."/persist".neededForBoot = true; - environment.persistence."/persist/system" = { - enable = true; - hideMounts = true; - directories = cfg.directories; - files = cfg.files; + environment.persistence = { + "/persist/system" = { + enable = true; + hideMounts = true; + directories = cfg.directories; + files = cfg.files; + }; + "/persist/home" = { + enable = true; + hideMounts = true; + users = ( + lib.mapAttrs' ( + name: value: + let + user = name; + homeDir = "/home/${user}"; + impConfig = value.modules.impermanence; + in + lib.nameValuePair user { + home = homeDir; + directories = impConfig.directories; + files = impConfig.files; + } + ) config.home-manager.users + ); + }; }; }; }