diff --git a/hosts/backwards/modules/default.nix b/hosts/backwards/modules/default.nix index c592aaa..ac48b4a 100644 --- a/hosts/backwards/modules/default.nix +++ b/hosts/backwards/modules/default.nix @@ -13,6 +13,7 @@ in ssh.enable = true; git.enable = true; syncthing.enable = true; + restic.enable = true; }; }; } diff --git a/hosts/backwards/modules/restic/default.nix b/hosts/backwards/modules/restic/default.nix new file mode 100644 index 0000000..961ea02 --- /dev/null +++ b/hosts/backwards/modules/restic/default.nix @@ -0,0 +1,50 @@ +{ lib, config, ... }: +let + enabled = config.mod.restic.enable; +in +{ + options = { + mod.restic = { + enable = lib.mkEnableOption "Enable restic"; + }; + }; + + config = lib.mkIf enabled { + fileSystems."/home/alex/backup" = { + device = "/dev/disk/by-uuid/34601701-65e6-4b2c-ac4d-8bef3dfd743f"; + fsType = "ext4"; + options = [ "nofail" ]; + }; + + services = { + restic.backups = { + "sync-to-external" = { + initialize = true; + + passwordFile = config.age.secrets.restic-password.path; + + paths = [ "/home/alex/sync" ]; + repository = "/home/alex/backup/restic"; + + timerConfig = { + OnCalendar = "*-*-* 0/12:00:00"; # Every 12th hour, i.e. twice a day + Persistent = true; + }; + + pruneOpts = [ + "--keep-daily 1" + "--keep-weekly 7" + "--keep-yearly 12" + ]; + }; + }; + }; + + age = { + secrets = { + "restic-password".file = ../../../../secrets/backwards/restic-password.age; + }; + }; + }; +} +