feat: refactored impermanence to be enableable for users on a system

This commit is contained in:
Leyla Becker 2025-10-13 09:36:48 -05:00
parent 337f03b4e7
commit 6d5a07e08f
31 changed files with 61 additions and 56 deletions

View file

@ -0,0 +1,31 @@
{
config,
lib,
osConfig,
...
}: let
cfg = config.impermanence;
in {
options.impermanence = {
enable = lib.mkEnableOption "impermanence for home directory";
};
config = lib.mkMerge [
(lib.mkIf config.impermanence.enable {
assertions = [
{
assertion = osConfig.impermanence.enable;
message = "impermanence can not be enabled for a user when it is not enabled for a configuration";
}
];
})
(lib.mkIf osConfig.host.impermanence.enable {
# If impermanence is not enabled for this user but system impermanence is enabled,
# persist the entire home directory as fallback
home.persistence."/persist/home/${config.home.username}" = lib.mkIf (!cfg.enable) {
directories = ["."];
allowOther = true;
};
})
];
}