{ pkgs, ... }:

let
  backups1 = {
    path = "/mnt/backup";
    uuid = "fd47c61a-8aac-44ed-9a18-4ec43ee663fb";
  };
in
{
  systemd = {
    mounts = [
      {
        where = "${backups1.path}";
        what = "UUID=${backups1.uuid}";
        type = "ext4";
        options = "defaults,noatime,nofail";
      }
    ];

    automounts = [
      {
        where = "${backups1.path}";
        automountConfig.TimeoutIdleSec = "60";
      }
    ];
  };

  systemd.tmpfiles.rules = [
    "d ${backups1.path} 755 root root -"
  ];

  services = {
    udev.extraRules = ''
      ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_UUID}=="${backups1.uuid}", ENV{SYSTEMD_WANTS}="mnt-backup.mount"
      ACTION=="remove", SUBSYSTEM=="block", ENV{ID_FS_UUID}=="${backups1.uuid}", RUN+="${pkgs.systemd}/bin/systemctl stop mnt-backup.mount"
    '';

    rsnapshot = {
      enable = true;
      enableManualRsnapshot = true;

      extraConfig = ''
        lockfile	/home/opdavies/.rsnapshot.pid

        snapshot_root	/mnt/backup/rsnapshot/
        no_create_root	1

        backup	/home/opdavies	opdavies/
        backup	/media	media/
        backup	/var/lib/immich/upload	immich/

        exclude	".cache/"
        exclude	".devenv/"
        exclude	".direnv/"
        exclude	"node_modules/"
        exclude	"vendor/"

        retain	daily	7
        retain	weekly	4
        retain	monthly	12
      '';

      cronIntervals = {
        daily = "0 21 * * *";
        monthly = "0 23 1 * 0";
        weekly = "0 22 * * 0";
      };
    };
  };
}