10 inherit (config.users) users;
11 pumpkinBackupDataset = "off4";
14 lib.mapAttrs (_n: v: lib.recursiveUpdate v conf) {
17 targetHost = "aubergine.local";
20 target = "backup@${targetHost}:${pumpkinBackupDataset}/julm/backup/pumpkin";
26 "--no-privilege-elevation"
27 "--preserve-properties"
28 "--preserve-recordsize"
35 "pumpkin/root/var/cache"
37 "pumpkin/root/var/log"
39 "pumpkin/root/home/julm/.cache"
41 "pumpkin/root/home/julm/games"
43 "pumpkin/root/home/julm/Downloads"
45 "${pkgs.writeText "ssh-config" ''
47 Ciphers aes128-gcm@openssh.com
49 StrictHostKeyChecking yes
50 UserKnownHostsFile ${pkgs.writeText "known_hosts" ''
51 ${targetHost} ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/cT/L3dF7uoR3s7NB59NiKjuk35I6x+7MK5zhwOy6k
59 networking.nftables.ruleset = lib.mkAfter ''
62 skuid @nixos_syncoid_uids \
65 comment "syncoid: SSH"
69 systemd.tmpfiles.rules = [
70 "z /dev/zfs 0660 - ${config.users.groups."disk".name} -"
72 # ExplanationNote: give access to /var/run/avahi-daemon/socket
73 # Using /var/run is not working due to RootDirectoryStartOnly=true
74 systemd.services.syncoid-pumpkin-root.serviceConfig.BindReadOnlyPaths = [ "/var/run" ];
75 systemd.services.syncoid-pumpkin-root.serviceConfig.RootDirectoryStartOnly = lib.mkForce false;
76 systemd.services.syncoid-pumpkin-root.serviceConfig.ExecStartPost =
77 pkgs.writeShellScript "zfs-fix-bookmarks" ''
79 for s in $(zfs list -Hrpt snapshot -o name pumpkin); do
80 zfs bookmark "$s" "''${s//@/#}" || true
85 interval = "*-*-* *:05:00";
87 sshKey = "ssh.key:${syncoid/ssh.key.cred}";
92 #"--no-privilege-elevation"
94 #"--preserve-recordsize"
95 #"--preserve-properties"
98 serviceConfig.Group = config.users.groups."disk".name;
100 commands = { } // pumpkin2off { };
102 programs.bash.interactiveShellInit = ''
107 if ! zpool list ${pumpkinBackupDataset}
108 then dst=aubergine.sp:
110 sudo syncoid --sshkey ~julm/.ssh/id_ed25519 \
111 --create-bookmark --no-sync-snap --no-privilege-elevation \
112 --preserve-properties --preserve-recordsize \
113 --recursive --sendoptions=w --recvoptions=u \
114 --exclude pumpkin/root/nix \
115 --exclude pumpkin/root/var/cache \
116 --exclude pumpkin/root/var/log \
117 --exclude pumpkin/root/home/julm/.cache \
118 --exclude pumpkin/root/home/julm/games \
119 --exclude pumpkin/root/home/julm/Downloads \
121 ''${dst}${pumpkinBackupDataset}/julm/backup/pumpkin
122 zfs-fix-bookmarks pumpkin 2>/dev/null