nixos/global/fs/zfs/replication.nix
2025-01-13 11:52:09 +08:00

42 lines
897 B
Nix

{
pkgs,
lib,
config,
...
}:
with lib;
let
cfg = config.global.fs.zfs.replication;
in
mkIf cfg.enable {
services.syncoid = {
enable = mkDefault true;
interval = mkDefault "daily";
sshKey = mkDefault "/var/lib/syncoid/.ssh/id_ed25519";
commonArgs = [
"--recursive"
"--mbuffer-size=128M"
"--delete-target-snapshots"
"--sshport=${toString cfg.port}"
];
localSourceAllow = mkOptionDefault [ "mount" ];
commands =
(lists.foldr (
name: commands:
commands
// {
"${config.global.fs.store}/${name}" = {
inherit (cfg) sendOptions;
target = "${cfg.remote}/${name}";
};
}
) { })
cfg.datasets;
};
users.users.syncoid.uid = 82;
users.groups.syncoid.gid = 82;
environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/syncoid" ];
}