{ config, pkgs, lib, ... }: { options = { crony.restic.enable = lib.mkEnableOption "Install and setup restic and backup services."; }; config = lib.mkIf config.crony.restic.enable { # Install restic package home.packages = with pkgs; [ restic ]; # Restic home manager service services.restic = { enable = true; backups = { local = { initialize = true; passwordFile = "/run/user/1000/agenix/restic-local-pass"; paths = [ "/home/crony/.face" "/home/crony/.librewolf" "/home/crony/.ssh" "/home/crony/.config/heroic" "/home/crony/.config/nbfc.json" "/home/crony/.config/OpenTabletDriver" "/home/crony/.config/tridactyl" "/home/crony/.local/share/gnupg" "/home/crony/.local/share/osu" "/home/crony/docs/sync" "/home/crony/docs/wireguard-keys" "/home/crony/pics" ]; repository = "/home/crony/.local/backup"; }; }; }; ##-- Restic Timers And Services --## # Restic backup # systemd.user.services = { # restic_backup = { # Unit.Description = "Restic backup service"; # Service = { # Type = "oneshot"; # ExecStart = toString (pkgs.writeShellScript "restic-backup" '' # . /etc/restic/local # restic backup --files-from /home/crony/.config/restic/list --verbose && restic forget --keep-last 10 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 # . /etc/restic/online # restic backup --files-from /home/crony/.config/restic/list --verbose && restic forget --keep-last 10 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 # rsync -avP --delete "$HOME/.local/backup/" "$HOME/Documents/Share/backup" # ''); # }; # }; # }; # systemd.user.timers = { # restic_backup = { # Unit.Description = "Restic backup timer"; # Timer = { # OnBootSec = "5m"; # OnUnitActiveSec = "6h"; # }; # Install.WantedBy = ["timers.target"]; # }; # }; # # # Restic check # systemd.user.services = { # restic_check = { # Unit.Description = "Restic check service"; # Service = { # Type = "oneshot"; # ExecStart = toString (pkgs.writeShellScript "restic-check" '' # . /etc/restic/local # restic check --read-data-subset=10% # . /etc/restic/online # restic check --read-data-subset=10% # ''); # }; # }; # }; # systemd.user.timers = { # restic_check = { # Unit.Description = "Restic check timer"; # Timer = {OnCalendar = "Thu *-*-* 18:00:00";}; # Install.WantedBy = ["timers.target"]; # }; # }; # # # Restic prune # systemd.user.services = { # restic_prune = { # Unit.Description = "Restic prune service"; # Service = { # Type = "oneshot"; # ExecStart = toString (pkgs.writeShellScript "restic-prune" '' # . /etc/restic/local # restic prune # . /etc/restic/online # restic prune # ''); # }; # }; # }; # systemd.user.timers = { # restic_prune = { # Unit.Description = "Restic prune timer"; # Timer = {OnCalendar = "Fri *-*-* 18:00:00";}; # Install.WantedBy = ["timers.target"]; # }; # }; }; }