-{ pkgs, lib, hostName, ... }:
+{ pkgs, lib, config, hostName, ... }:
with builtins;
{
- # Take regular snapshots, and prune old ones
+ systemd.services.sanoid.serviceConfig.SupplementaryGroups = [
+ config.users.groups."disk".name
+ ];
services.sanoid = {
enable = true;
extraArgs = [ "--verbose" ];
daily = 7;
monthly = 0;
yearly = 0;
- recursive = "zfs";
+ recursive = true;
};
- "off2/julm/backup/oignon" = {
+ "${hostName}/root/nix" = {
autosnap = false;
- autoprune = true;
+ };
+ "${hostName}/root/var/cache" = {
+ autosnap = false;
+ };
+ "${hostName}/root/var/log" = {
+ autosnap = false;
+ };
+ "${hostName}/root/home/julm/.cache" = {
+ autosnap = false;
+ };
+ "${hostName}/root/home/julm/.local" = {
hourly = 0;
- daily = 7;
+ daily = 1;
+ };
+ "${hostName}/root/home/julm/.mozilla" = {
+ hourly = 0;
+ daily = 1;
+ };
+ "off2/julm/backup/${hostName}" = {
+ autosnap = false;
+ autoprune = true;
+ hourly = 12;
+ daily = 14;
monthly = 3;
yearly = 0;
- recursive = "zfs";
};
};
};
+
programs.bash.interactiveShellInit = ''
backup-pumpkin () {
+ local -
+ set -x
+ dst=
+ if ! zpool list off2
+ then dst=aubergine.sp:
+ fi
sudo syncoid --sshkey ~julm/.ssh/id_ed25519 \
--create-bookmark --no-sync-snap --no-privilege-elevation \
- --sendoptions=Rw --recvoptions=u \
+ --preserve-properties --preserve-recordsize \
+ --recursive --sendoptions=w --recvoptions=u \
--exclude pumpkin/root/nix \
+ --exclude pumpkin/root/var/cache \
+ --exclude pumpkin/root/var/log \
+ --exclude pumpkin/root/home/julm/.cache \
pumpkin/root \
- aubergine.sp:off2/julm/backup/pumpkin
+ ''${dst}off2/julm/backup/pumpkin
+ zfs-fix-bookmarks pumpkin 2>/dev/null
}
mount-zfs-backup () {
(