flake/modules/nixos/system/impermanence.nix
2025-10-21 15:22:48 +03:00

43 lines
No EOL
1.1 KiB
Nix

# impermanence
{lib, inputs, config, ...}:
let
# Filter out 'root' from the users list since it's a special system user
regularUsers = builtins.filter (u: u != "root") config.osbmModules.users;
# Generate user persistence configuration
userPersistence = lib.genAttrs regularUsers (username: {
directories = [
"Documents"
{ directory = ".gnupg"; mode = "0700"; }
{ directory = ".ssh"; mode = "0700"; }
".local/share/direnv"
];
# files = [
# ".screenrc"
# ];
});
in
{
imports = [
inputs.impermanence.nixosModules.impermanence
];
config = lib.mkMerge [
# Enable impermanence root if configured
(lib.mkIf (config.osbmModules.hardware.disko.zfs.root.impermanenceRoot) {
environment.persistence."/persist" = {
hideMounts = true;
directories = [
"/var/log"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
"/etc/NetworkManager/system-connections"
];
# files = [ # the fuck is this file
# "/etc/machine-id"
# ];
users = userPersistence;
};
})
];
}