nixos-config/modules/restic.nix

76 lines
1.9 KiB
Nix
Raw Normal View History

2020-08-22 17:44:39 +02:00
{ pkgs, config, lib, ... }:
let
2020-10-17 09:58:44 +02:00
name = "${config.networking.hostName}-system";
2020-08-22 17:44:39 +02:00
excludes = [
# General
"/home/*/Downloads/"
"/home/*/.cache/"
"/home/*/**/cache/"
"/home/*/.claws-mail/imapcache"
"/home/*/.local/share/Trash"
"/home/*/.local/share/nvim/"
# Rust
"/home/*/**/target/debug/"
"/home/*/**/target/doc/"
"/home/*/**/target/release/"
"/home/*/**/target/rls/"
"/home/*/**/target/tarpaulin/"
"/home/*/**/target/wasm32-unknown-unknown/"
"/home/*/.rustup/toolchains/"
"/home/*/.cargo"
# Python
"/home/*/.local/share/pyppeteer"
"/home/*/.local/share/virtualenvs/"
"/home/*/.platformio/"
# Node
"/home/*/**/.local-chromium"
# Project related
"/home/*/mount"
"/home/*/projects/vapoursynth/data/"
"/home/*/projects/vapoursynth/out/"
"/home/*/projects/vapoursynth/src/"
# Docker
"/var/lib/docker/"
2020-10-22 21:59:05 +02:00
# Stuff I do not want to back up
"/data/cache/"
2020-08-22 17:44:39 +02:00
];
excludesFile = pkgs.writeText "exludes.txt" (builtins.concatStringsSep "\n" excludes);
maybePath = path: (lib.optional (builtins.pathExists path) (toString path));
in
{
2020-10-17 09:58:44 +02:00
services.restic.backups."${name}" = {
passwordFile = toString (../secrets/restic_password);
2020-08-22 17:44:39 +02:00
s3CredentialsFile = toString ../secrets/s3_credentials;
repository = "s3:https://s3.eu-central-1.wasabisys.com/sbruder-restic";
paths = lib.mkDefault (
[ ]
2020-08-22 17:44:39 +02:00
++ maybePath /data
++ maybePath /home
++ maybePath /srv
++ maybePath /var
);
initialize = true;
extraBackupArgs = [
"--exclude-caches"
"--exclude-file=${excludesFile}"
2020-09-14 07:15:58 +02:00
"--verbose"
2020-08-22 17:44:39 +02:00
];
timerConfig = {
OnCalendar = "20:00";
RandomizedDelaySec = "2h";
};
};
2020-10-17 09:58:44 +02:00
systemd.services."restic-backups-${name}".serviceConfig = {
"Nice" = 10;
"IOSchedulingClass" = "best-effort";
"IOSchedulingPriority" = 7;
};
2020-08-22 17:44:39 +02:00
}