{ config, lib, pkgs, ... }: let cfg = config.homelab.core.restic; in { options.homelab.core.restic = { enable = lib.mkEnableOption "restic"; passwordFile = lib.mkOption { description = "restic password file"; type = lib.types.path; }; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ pkgs.restic ]; services.restic.backups = let defaultPruneOpts = [ "--keep-daily 7" "--keep-weekly 4" "--keep-monthly 6" ]; in { syncthing = { initialize = true; paths = [ "/home/server/Sync" ]; repository = "/srv/backups/syncthing"; pruneOpts = defaultPruneOpts; passwordFile = cfg.passwordFile; }; }; }; }