{ 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" ]; }