68 lines
1.7 KiB
Nix
68 lines
1.7 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
opts = {
|
|
paths = [
|
|
"/home/crony/.face"
|
|
"/home/crony/.librewolf"
|
|
"/home/crony/.ssh"
|
|
"/home/crony/.config/heroic"
|
|
"/home/crony/.config/nbfc.json"
|
|
"/home/crony/.config/OpenTabletDriver"
|
|
"/home/crony/.config/tridactyl"
|
|
"/home/crony/.local/share/gnupg"
|
|
"/home/crony/.local/share/osu"
|
|
"/home/crony/docs/sync"
|
|
"/home/crony/docs/wireguard-keys"
|
|
"/home/crony/pics"
|
|
];
|
|
pruneOpts = [
|
|
"--keep-last 10"
|
|
"--keep-daily 7"
|
|
"--keep-weekly 5"
|
|
"--keep-monthly 12"
|
|
];
|
|
checkOpts = [
|
|
"--read-data-subset=10%"
|
|
"--with-cache"
|
|
];
|
|
};
|
|
in {
|
|
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 home manager service
|
|
services.restic = {
|
|
enable = true;
|
|
backups = {
|
|
local = {
|
|
initialize = true;
|
|
passwordFile = "/run/user/1000/agenix/restic-local-pass";
|
|
repository = "/home/crony/.local/backup";
|
|
paths = opts.paths;
|
|
pruneOpts = opts.pruneOpts;
|
|
checkOpts = opts.checkOpts;
|
|
};
|
|
backblaze = {
|
|
initialize = true;
|
|
passwordFile = "/run/user/1000/agenix/restic-backblaze-pass";
|
|
repositoryFile = "/run/user/1000/agenix/restic-backblaze-repo";
|
|
environmentFile = "/run/user/1000/agenix/restic-backblaze-env";
|
|
paths = opts.paths;
|
|
pruneOpts = opts.pruneOpts;
|
|
checkOpts = opts.checkOpts;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|