{ pkgs, config, ... }: let vars = import ../../vars.nix; arionPath = "/home/${vars.user}/.setup/hosts/franz/arion"; cfg = config.virtualisation.arion; in { # systemd.timers."restic-cron" = { # wantedBy = ["timers.target"]; # timerConfig = { # OnBootSec = "1m"; # OnUnitActiveSec = "1m"; # Unit = "restic-cron.service"; # }; # }; # # systemd.services."restic-cron" = { # path = [ # cfg.docker.client.package # cfg.package # pkgs.nix # pkgs.restic # pkgs.autorestic # ]; # script = '' # source /etc/profile # autorestic -c /home/ghoscht/.autorestic.yml --verbose cron >> /tmp/autorestic.log 2>&1 # ''; # serviceConfig = { # Type = "oneshot"; # User = "root"; # }; # }; services.cron = { enable = true; systemCronJobs = [ "*/5 * * * * root . /etc/profile; autorestic -c /home/ghoscht/.autorestic.yml --ci cron" ]; }; environment.systemPackages = with pkgs; [autorestic restic]; sops.secrets."autorestic/zfs_key" = { owner = vars.user; }; sops.secrets."autorestic/ssd_key" = { owner = vars.user; }; sops.secrets."autorestic/eustachius_key" = { owner = vars.user; }; sops.secrets."autorestic/ntfy_access_token" = { owner = vars.user; }; sops.templates.".autorestic.yml" = { path = "/home/${vars.user}/.autorestic.yml"; owner = vars.user; mode = "0775"; content = '' version: 2 global: forget: keep-weekly: 7 keep-monthly: 12 extras: default_hooks: &default_hooks success: - 'curl -H "Authorization: Bearer ${config.sops.placeholder."autorestic/ntfy_access_token"}" -H "X-Tags: white_check_mark" -H "X-Title: Backup of location $AUTORESTIC_LOCATION successful" -d "Added $AUTORESTIC_FILES_ADDED_0 files and changed $AUTORESTIC_FILES_CHANGED_0 files with a total size of $AUTORESTIC_ADDED_SIZE_0. Processed $AUTORESTIC_PROCESSED_FILES_0 files with total size $AUTORESTIC_PROCESSED_SIZE_0 in $AUTORESTIC_PROCESSED_DURATION_0. Snapshot $AUTORESTIC_SNAPSHOT_ID_0" https://push.ghoscht.com/autorestic-log' failure: - 'curl -H "Authorization: Bearer ${config.sops.placeholder."autorestic/ntfy_access_token"}" -H "X-Tags: warning" -H "X-Title: Backup Failure" -d "Backup of location $AUTORESTIC_LOCATION failed" https://push.ghoscht.com/autorestic' - 'curl -H "Authorization: Bearer ${config.sops.placeholder."autorestic/ntfy_access_token"}" -H "X-Tags: warning" -H "X-Title: Backup Failure" -d "Backup of location $AUTORESTIC_LOCATION failed" https://push.ghoscht.com/autorestic-log' locations: dashboard: from: /storage/dataset/docker/dashboard to: - zfs # - eustachius cron: '0 4 * * 0' # Every Sunday at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/dashboard/arion-compose.nix -p ${arionPath}/dashboard/arion-pkgs.nix stop after: - arion -f ${arionPath}/dashboard/arion-compose.nix -p ${arionPath}/dashboard/arion-pkgs.nix start dns: from: /storage/dataset/docker/dns to: - zfs - ssd # - eustachius cron: '0 4 * * 0' # Every Sunday at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/dns/arion-compose.nix -p ${arionPath}/dns/arion-pkgs.nix stop after: - arion -f ${arionPath}/dns/arion-compose.nix -p ${arionPath}/dns/arion-pkgs.nix start feed: from: /storage/dataset/docker/feed to: - zfs # - eustachius cron: '0 4 * * 0' # Every Sunday at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/feed/arion-compose.nix -p ${arionPath}/feed/arion-pkgs.nix stop after: - arion -f ${arionPath}/feed/arion-compose.nix -p ${arionPath}/feed/arion-pkgs.nix start git: from: /storage/dataset/docker/git to: - zfs - ssd # - eustachius cron: '0 4 * * *' # Every Day at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/git/arion-compose.nix -p ${arionPath}/git/arion-pkgs.nix stop after: - arion -f ${arionPath}/git/arion-compose.nix -p ${arionPath}/git/arion-pkgs.nix start media: from: /storage/dataset/docker/media to: - zfs - ssd # - eustachius cron: '0 4 * * *' # Every Day at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix stop after: - arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix start nextcloud: from: /storage/dataset/docker/nextcloud to: - zfs - ssd # - eustachius cron: '0 4 * * *' # Every Day at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/nextcloud/arion-compose.nix -p ${arionPath}/nextcloud/arion-pkgs.nix stop after: - arion -f ${arionPath}/nextcloud/arion-compose.nix -p ${arionPath}/nextcloud/arion-pkgs.nix start smarthome: from: /storage/dataset/docker/smarthome to: - zfs # - eustachius cron: '0 4 * * 0' # Every Sunday at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/smarthome/arion-compose.nix -p ${arionPath}/smarthome/arion-pkgs.nix stop after: - arion -f ${arionPath}/smarthome/arion-compose.nix -p ${arionPath}/smarthome/arion-pkgs.nix start passwords: from: /storage/dataset/docker/passwords to: - zfs - ssd # - eustachius cron: '0 4 * * *' # Every Day at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/passwords/arion-compose.nix -p ${arionPath}/passwords/arion-pkgs.nix stop after: - arion -f ${arionPath}/passwords/arion-compose.nix -p ${arionPath}/passwords/arion-pkgs.nix start matrix: from: /storage/dataset/docker/matrix to: - zfs # - eustachius cron: '0 4 * * 0' # Every Sunday at 4:00 hooks: <<: *default_hooks before: - arion -f ${arionPath}/matrix/arion-compose.nix -p ${arionPath}/matrix/arion-pkgs.nix stop after: - arion -f ${arionPath}/matrix/arion-compose.nix -p ${arionPath}/matrix/arion-pkgs.nix start # music: # from: /storage/dataset/data/media/music # to: # - eustachius # cron: '0 4 * * 0' # Every Sunday at 4:00 # hooks: # <<: *default_hooks # before: # - arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix stop # after: # - arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix start headscale: from: /storage/dataset/docker/headscale to: - zfs cron: '55 3 * * *' # Every Day at 3:55 hooks: <<: *default_hooks before: - arion -f ${arionPath}/headscale/arion-compose.nix -p ${arionPath}/headscale/arion-pkgs.nix stop after: - arion -f ${arionPath}/headscale/arion-compose.nix -p ${arionPath}/headscale/arion-pkgs.nix start auth: from: /storage/dataset/docker/auth to: - zfs - ssd # - eustachius cron: '55 3 * * *' # Every Day at 3:55 hooks: <<: *default_hooks before: - arion -f ${arionPath}/auth/arion-compose.nix -p ${arionPath}/auth/arion-pkgs.nix stop after: - arion -f ${arionPath}/auth/arion-compose.nix -p ${arionPath}/auth/arion-pkgs.nix start backends: zfs: type: local path: /storage/dataset/backups key: '${config.sops.placeholder."autorestic/zfs_key"}' ssd: type: local path: /home/ghoscht/Backups key: '${config.sops.placeholder."autorestic/ssd_key"}' # eustachius: # type: rest # path: http://100.64.0.3:8000/Backups # key: '${config.sops.placeholder."autorestic/eustachius_key"}' ''; }; }