10   inherit (config.users) users;
 
  13     lib.mapAttrs (_n: v: lib.recursiveUpdate v conf) {
 
  16           targetHost = "aubergine.local";
 
  19           target = "backup@${targetHost}:off2/julm/backup/pumpkin";
 
  25             "--no-privilege-elevation"
 
  26             "--preserve-properties"
 
  27             "--preserve-recordsize"
 
  34             "pumpkin/root/var/cache"
 
  36             "pumpkin/root/var/log"
 
  38             "pumpkin/root/home/julm/.cache"
 
  40             "pumpkin/root/home/julm/games"
 
  42             "pumpkin/root/home/julm/Downloads"
 
  44             "${pkgs.writeText "ssh-config" ''
 
  46                 Ciphers aes128-gcm@openssh.com
 
  48                 StrictHostKeyChecking yes
 
  49                 UserKnownHostsFile ${pkgs.writeText "known_hosts" ''
 
  50                   ${targetHost} ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/cT/L3dF7uoR3s7NB59NiKjuk35I6x+7MK5zhwOy6k
 
  58   networking.nftables.ruleset = lib.mkAfter ''
 
  61         skuid @nixos_syncoid_uids \
 
  64           comment "syncoid: SSH"
 
  68   systemd.tmpfiles.rules = [
 
  69     "z /dev/zfs 0660 - ${config.users.groups."disk".name}  -"
 
  71   # ExplanationNote: give access to /var/run/avahi-daemon/socket
 
  72   # Using /var/run is not working due to RootDirectoryStartOnly=true
 
  73   systemd.services.syncoid-pumpkin-root.serviceConfig.BindReadOnlyPaths = [ "/var/run" ];
 
  74   systemd.services.syncoid-pumpkin-root.serviceConfig.RootDirectoryStartOnly = lib.mkForce false;
 
  75   systemd.services.syncoid-pumpkin-root.serviceConfig.ExecStartPost =
 
  76     pkgs.writeShellScript "zfs-fix-bookmarks" ''
 
  78       for s in $(zfs list -Hrpt snapshot -o name pumpkin); do
 
  79         zfs bookmark "$s" "''${s//@/#}" || true
 
  84     interval = "*-*-* *:05:00";
 
  86     sshKey = "ssh.key:${syncoid/ssh.key.cred}";
 
  91       #"--no-privilege-elevation"
 
  93       #"--preserve-recordsize"
 
  94       #"--preserve-properties"
 
  97       serviceConfig.Group = config.users.groups."disk".name;
 
  99     commands = { } // pumpkin2off2 { };
 
 101   programs.bash.interactiveShellInit = ''
 
 107         then dst=aubergine.sp:
 
 109       sudo syncoid --sshkey ~julm/.ssh/id_ed25519 \
 
 110         --create-bookmark --no-sync-snap --no-privilege-elevation \
 
 111         --preserve-properties --preserve-recordsize \
 
 112         --recursive --sendoptions=w --recvoptions=u \
 
 113         --exclude pumpkin/root/nix \
 
 114         --exclude pumpkin/root/var/cache \
 
 115         --exclude pumpkin/root/var/log \
 
 116         --exclude pumpkin/root/home/julm/.cache \
 
 117         --exclude pumpkin/root/home/julm/games \
 
 118         --exclude pumpkin/root/home/julm/Downloads \
 
 120         ''${dst}off2/julm/backup/pumpkin
 
 121       zfs-fix-bookmarks pumpkin 2>/dev/null