Move restic to modules, also create backup services.
This commit is contained in:
parent
e3104c99d2
commit
6ec3de9e4e
@ -13,7 +13,6 @@
|
||||
home.packages = with pkgs; [
|
||||
alejandra
|
||||
keepassxc
|
||||
restic
|
||||
age
|
||||
nix-output-monitor
|
||||
nvd
|
||||
|
@ -8,6 +8,7 @@
|
||||
./mpv.nix
|
||||
./obs-studio.nix
|
||||
./nh.nix
|
||||
./restic.nix
|
||||
];
|
||||
|
||||
crony.mangohud.enable = lib.mkDefault true;
|
||||
@ -18,4 +19,5 @@
|
||||
crony.mpv.enable = lib.mkDefault true;
|
||||
crony.obs-studio.enable = lib.mkDefault true;
|
||||
crony.nh.enable = lib.mkDefault true;
|
||||
crony.restic.enable = lib.mkDefault true;
|
||||
}
|
||||
|
92
modules/home-manager/restic.nix
Normal file
92
modules/home-manager/restic.nix
Normal file
@ -0,0 +1,92 @@
|
||||
{
|
||||
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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user