mirror of
https://github.com/nmasur/dotfiles
synced 2025-02-07 20:22:04 +00:00
62 lines
1.7 KiB
Nix
62 lines
1.7 KiB
Nix
|
{ config, lib, ... }:
|
||
|
|
||
|
let
|
||
|
cfg = config.nmasur.presets.services.restic;
|
||
|
in
|
||
|
{
|
||
|
|
||
|
options.nmasur.presets.services.restic = {
|
||
|
enable = lib.mkEnableOption "Restic backup service";
|
||
|
resticPassword = lib.mkOption {
|
||
|
type = lib.types.nullOr lib.types.path;
|
||
|
description = "Password file path for Restic backups";
|
||
|
default = ../../../../../../private/restic.age;
|
||
|
};
|
||
|
s3 = {
|
||
|
endpoint = lib.mkOption {
|
||
|
type = lib.types.nullOr lib.types.str;
|
||
|
description = "S3 endpoint for Restic backups";
|
||
|
default = "s3.us-east-1.amazonaws.com";
|
||
|
};
|
||
|
bucket = lib.mkOption {
|
||
|
type = lib.types.nullOr lib.types.str;
|
||
|
description = "S3 bucket for Restic backups";
|
||
|
default = null;
|
||
|
};
|
||
|
accessKeySecretPair = lib.mkOption {
|
||
|
type = lib.types.nullOr lib.types.path;
|
||
|
description = "Path to file containing S3 access and secret key for Restic backups";
|
||
|
default = ../../../../../../private/s3-glacier.age;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = lib.mkIf (cfg.enable) {
|
||
|
|
||
|
secrets.restic-s3-creds = {
|
||
|
source = cfg.s3.accessKeySecretPair;
|
||
|
dest = "${config.secretsDirectory}/restic-s3-creds";
|
||
|
};
|
||
|
secrets.restic = {
|
||
|
source = cfg.resticPassword;
|
||
|
dest = "${config.secretsDirectory}/restic";
|
||
|
};
|
||
|
|
||
|
services.restic.backups = {
|
||
|
default = {
|
||
|
repository = "s3:${cfg.endpoint}/${cfg.s3.bucket}/restic";
|
||
|
paths = [ ];
|
||
|
environmentFile = config.secrets.restic-s3-creds.dest;
|
||
|
passwordFile = config.secrets.restic.dest;
|
||
|
pruneOpts = [
|
||
|
"--keep-daily 14"
|
||
|
"--keep-weekly 6"
|
||
|
"--keep-monthly 12"
|
||
|
"--keep-yearly 100"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
|
||
|
};
|
||
|
}
|