flake/modules/nixos/system/impermanence.nix
2025-10-21 16:21:12 +03:00

54 lines
1.2 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;
};
})
];
}