87 lines
2.2 KiB
Nix
87 lines
2.2 KiB
Nix
|
{ inputs, pkgs, ... }:
|
||
|
{
|
||
|
##-- 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
|
||
|
''
|
||
|
);
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
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" ];
|
||
|
};
|
||
|
};
|
||
|
}
|