direnv: add to essential
[julm/julm-nix.git] / hosts / patate / backup.nix
index bced97af0e16a20dfe0a3163b5abd1bc3bd0ce93..9a989c1d8558f8fca62ec42d1a2c1dc687a395cd 100644 (file)
@@ -1,53 +1,57 @@
-{ pkgs, lib, config, hostName, ... }:
+{ pkgs, hostName, ... }:
 with builtins;
 {
-imports = [
-  backup/zfs-backup.nix
-  backup/rsync-backup.nix
-];
-# Take regular snapshots, and prune old ones
-services.sanoid = {
-  enable = true;
-  extraArgs = [ "--verbose" ];
-  datasets = {
-    "${hostName}/home" = {
-      autosnap = true;
-      autoprune = true;
-      hourly = 24;
-      daily = 3;
-      monthly = 0;
-      yearly = 0;
-      recursive = true;
-    };
-    "${hostName}/home/Documents" = {
-      autosnap = true;
-      autoprune = true;
-      hourly = 24;
-      daily = 31;
-      monthly = 0;
-      yearly = 0;
-      recursive = true;
-    };
-    "${hostName}/home/Downloads" = {
-      autosnap = false;
-      autoprune = false;
-    };
-    "${hostName}/home/Videos" = {
-      autosnap = false;
-      autoprune = false;
+  imports = [
+    backup/zfs-backup.nix
+    backup/rsync-backup.nix
+  ];
+  # Take regular snapshots, and prune old ones
+  services.sanoid = {
+    enable = true;
+    extraArgs = [ "--verbose" ];
+    datasets = {
+      "${hostName}/home" = {
+        autosnap = true;
+        autoprune = true;
+        hourly = 24;
+        daily = 3;
+        monthly = 0;
+        yearly = 0;
+        recursive = true;
+      };
+      "${hostName}/home/Documents" = {
+        autosnap = true;
+        autoprune = true;
+        hourly = 24;
+        daily = 31;
+        monthly = 0;
+        yearly = 0;
+        recursive = true;
+      };
+      "${hostName}/home/Downloads" = {
+        autosnap = false;
+        autoprune = false;
+      };
+      "${hostName}/home/Videos" = {
+        autosnap = false;
+        autoprune = false;
+      };
     };
   };
-};
-# Trigger backups when disks are plugged
-services.udev.extraRules = ''
-  ACTION=="add",    SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_SERIAL}=="WDC_WD10JPVT-22A1YT0_WD-WX21AC2F3987", ENV{SYSTEMD_WANTS}+="zfs-local-backup-home@WD10JPVT.service", ENV{SYSTEMD_ALIAS}="/sys/subsystem/usb/WD10JPVT"
-  # See https://github.com/systemd/systemd/issues/7587#issuecomment-381428545
-  ACTION=="remove", SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_SERIAL}=="WDC_WD10JPVT-22A1YT0_WD-WX21AC2F3987", TAG+="systemd"
+  # Trigger backups when disks are plugged
+  services.udev.extraRules = ''
+    SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_SERIAL}=="WDC_WD10JPVT-22A1YT0_WD-WX21AC2F3987", \
+      ACTION=="add", ENV{SYSTEMD_WANTS}+="zfs-local-backup-home@WD10JPVT.service"
+    # See https://github.com/systemd/systemd/issues/7587#issuecomment-381428545
+    SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_SERIAL}=="WDC_WD10JPVT-22A1YT0_WD-WX21AC2F3987", \
+      ACTION=="remove", RUN+="${pkgs.systemd}/bin/systemctl stop --no-block zfs-local-backup-home@WD10JPVT.service"
 
-  ACTION=="add",    SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_FS_LABEL}=="GE_SP", ENV{SYSTEMD_USER_WANTS}+="rsync-backup@GE_SP.service", ENV{SYSTEMD_ALIAS}="/sys/subsystem/usb/GE_SP"
-  ACTION=="remove", SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_FS_LABEL}=="GE_SP", TAG+="systemd"
-'';
-programs.bash.shellAliases = {
-  mount-backup-WD10JPVT = "mount-zfs-backup WD10JPVT";
-};
+    SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_FS_LABEL}=="GE_SP", \
+      ACTION=="add", ENV{SYSTEMD_USER_WANTS}+="rsync-backup@GE_SP.service"
+    SUBSYSTEM=="block", KERNEL=="sd*", ENV{ID_FS_LABEL}=="GE_SP", \
+      ACTION=="remove", RUN+="${pkgs.systemd}/bin/systemctl stop --no-block zfs-import@off3.service"
+  '';
+  programs.bash.shellAliases = {
+    mount-backup-WD10JPVT = "mount-zfs-backup WD10JPVT";
+  };
 }