10 inherit (config.users) users;
11 backupTarget = "off4";
14 lib.mapAttrs (_n: v: lib.recursiveUpdate v conf) {
17 targetHost = "aubergine.local";
20 target = "backup@${targetHost}:${backupTarget}/julm/backup/${hostName}";
26 "--no-privilege-elevation"
27 "--preserve-properties"
28 "--preserve-recordsize"
33 "${hostName}/root/nix"
35 "${hostName}/root/var/cache"
37 "${hostName}/root/var/log"
39 "${hostName}/root/home/julm/.cache"
41 "${hostName}/root/home/julm/Downloads"
43 "${pkgs.writeText "ssh-config" ''
45 Ciphers aes128-gcm@openssh.com
47 StrictHostKeyChecking yes
48 UserKnownHostsFile ${pkgs.writeText "known_hosts" ''
49 ${targetHost} ${lib.readFile ../aubergine/ssh/host.key.pub}
57 networking.nftables.ruleset = lib.mkAfter ''
60 skuid @nixos_syncoid_uids \
63 comment "syncoid: SSH"
67 systemd.tmpfiles.rules = [
68 "z /dev/zfs 0660 - ${config.users.groups."disk".name} -"
70 # ExplanationNote: give access to /var/run/avahi-daemon/socket
71 # Using /var/run is not working due to RootDirectoryStartOnly=true
72 systemd.services."syncoid-${hostName}-root".serviceConfig = {
73 BindReadOnlyPaths = [ "/var/run" ];
74 RootDirectoryStartOnly = lib.mkForce false;
75 ExecStartPost = pkgs.writeShellScript "zfs-fix-bookmarks" ''
77 for s in $(zfs list -Hrpt snapshot -o name ${hostName}/root); do
78 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 = { } // backupConf { };
101 programs.bash.interactiveShellInit = ''
106 if ! zpool list ${backupTarget}
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 ${hostName}/root/nix \
114 --exclude ${hostName}/root/var/cache \
115 --exclude ${hostName}/root/var/log \
116 --exclude ${hostName}/root/home/julm/.cache \
117 --exclude ${hostName}/root/home/julm/Downloads \
119 ''${dst}${backupTarget}/julm/backup/${hostName}
120 zfs-fix-bookmarks ${hostName}/root 2>/dev/null