93 lines
2.6 KiB
Nix
93 lines
2.6 KiB
Nix
{
|
|
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 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"];
|
|
};
|
|
};
|
|
};
|
|
}
|