wip snapshots
This commit is contained in:
parent
26747bd639
commit
46e2d86918
@ -10,6 +10,16 @@ in {
|
|||||||
stateVersion = "23.05";
|
stateVersion = "23.05";
|
||||||
timeZone = "UTC";
|
timeZone = "UTC";
|
||||||
stubPasswords = true;
|
stubPasswords = true;
|
||||||
|
|
||||||
|
base.snapshot = {
|
||||||
|
enable = true;
|
||||||
|
pools = {
|
||||||
|
var_lib = {
|
||||||
|
mountpoint = "/var/lib";
|
||||||
|
zfs_name = "rpool/nixos/var/lib";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
./sshd
|
./sshd
|
||||||
./initrd
|
./initrd
|
||||||
|
./snapshot
|
||||||
];
|
];
|
||||||
|
|
||||||
options.mj = {
|
options.mj = {
|
||||||
@ -51,11 +52,17 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
users = let
|
users = let
|
||||||
withPasswordFile = file: attrs: (if config.mj.stubPasswords then {
|
withPasswordFile = file: attrs:
|
||||||
|
(
|
||||||
|
if config.mj.stubPasswords
|
||||||
|
then {
|
||||||
initialPassword = "live";
|
initialPassword = "live";
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
passwordFile = file;
|
passwordFile = file;
|
||||||
}) // attrs;
|
}
|
||||||
|
)
|
||||||
|
// attrs;
|
||||||
in {
|
in {
|
||||||
mutableUsers = false;
|
mutableUsers = false;
|
||||||
|
|
||||||
|
46
modules/base/snapshot/default.nix
Normal file
46
modules/base/snapshot/default.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
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"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user