nix_config/sys/modules/borgsync.nix
2025-08-28 16:26:31 -06:00

63 lines
1.4 KiB
Nix

{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.local.sys.borgsync;
in {
options.local.sys.borgsync = {
enable = mkEnableOption "borg backup to an rsync.net repo";
paths = mkOption {
type = with types; nullOr (coercedTo str singleton (listOf str));
default = null;
description = "Paths to back up.";
};
exclude = mkOption {
type = with types; listOf str;
description = "Exclude paths.";
default = [];
};
repoName = mkOption {
type = types.str;
description = "Remote rsync repository to back up to.";
};
};
config = mkIf cfg.enable {
services.borgbackup.jobs.rsync = {
paths = cfg.paths;
exclude = cfg.exclude;
user = "root";
group = "root";
doInit = true;
startAt = [
"hourly"
];
inhibitsSleep = true;
persistentTimer = true;
repo = "zh5777@zh5777.rsync.net:${cfg.repoName}";
encryption = {
mode = "repokey-blake2";
passCommand = "cat /var/trust/borg/${cfg.repoName}_passphrase";
};
compression = "auto,lz4";
prune = {
keep = {
hourly = 24;
daily = 7;
weekly = 4;
monthly = 12;
yearly = 99;
};
};
extraArgs = [
"--remote-path=borg14"
];
};
environment.sessionVariables.BORG_REMOTE_PATH = "borg14";
};
}