nix-conf/modules/linux/home-manager/restic.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;
};
};
};
};
}