{ options, config, osConfig, lib, namespace, inputs, host, ... }: with lib; with lib.${namespace}; let cfg = config.${namespace}.impermanence // { inherit (osConfig.${namespace}.system.impermanence.home) enable location secure; }; in { imports = [ inputs.impermanence.nixosModules.home-manager.impermanence ]; options.${namespace}.impermanence = with types; { skeleton = mkOption { type = bool; default = true; }; enable = mkOption { type = uniq bool; }; location = mkOption { type = uniq str; }; secure.location = mkOption { type = uniq str; }; }; config = { ${namespace}.impermanence = { inherit (cfg) enable location secure; }; home.persistence.${cfg.location} = { enable = cfg.enable; allowOther = true; directories = mkIf cfg.skeleton [ "Downloads" "Documents" "Pictures" "Videos" "Music" "Games" "Persist" ]; }; home.persistence.${cfg.secure.location} = { enable = cfg.enable; allowOther = false; }; }; }