config/modules/base/snapshot/default.nix
2023-07-18 12:31:48 +03:00

47 lines
996 B
Nix

{
config,
lib,
myData,
...
}:
with lib; {
options.mj.base.snapshot = {
enable = mkEnableOption "Enable zfs snapshots";
pools = mkOption {
default = {};
type = with types;
attrsOf (submodule (
{...}: {
options = {
mountpoint = mkOption {type = str;};
zfs_name = mkOption {type = str;};
#paths = mkOption { type = listOf str; };
#backup_at = mkOption { type = str; };
};
}
));
};
};
config = with config.mj.base.snapshot;
mkIf enable {
sanoid = {
enable = true;
templates.prod = {
hourly = 24;
daily = 7;
autosnap = true;
autoprune = true;
};
datasets =
lib.mapAttrs' (name: value: {
name = value.zfs_name;
value = {use_template = ["prod"];};
})
pools;
extraArgs = ["--verbose"];
};
};
}