nixos-config/system/all/restic.nix
Ingolf Wagner bfbad5285e
looks fine
2019-10-28 18:33:40 +01:00

53 lines
1.2 KiB
Nix

{ config, lib, ... }:
{
options = {
backup.all.restic.dirs = lib.mkOption {
default = [];
type = with lib.types; listOf str;
};
};
config = let
servers = ["porani" "workhorse" "workout"];
dirs = config.backup.all.restic.dirs;
setup = server: {
passwordFile = toString <secrets/backup/restic-repo>;
repo = "sftp::backup/remote-${config.networking.hostName}";
requires = [];
extraArguments = [
"sftp.command='ssh backup@${server} -i ${toString <secrets/backup/sftp-user_rsa>} -s sftp'"
];
initialize = true;
timerConfig = {
OnCalendar = "daily";
Persistent = "true";
};
dirs = dirs;
};
hostname = config.networking.hostName;
infoEntry = server: {
restic = {
folders = dirs;
from = hostname;
to = server;
};
};
in {
backup.services.restic = lib.zipAttrsWith
(name: vals: lib.head vals)
(map (server: {
"on-${server}" = setup "${server}.private";
}) servers);
environment.etc."info/restic-${hostname}.json" = {
enable = true;
text = builtins.toJSON (map infoEntry servers);
};
};
}