diff options
Diffstat (limited to 'modules/services/backup')
-rw-r--r-- | modules/services/backup/default.nix | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/modules/services/backup/default.nix b/modules/services/backup/default.nix deleted file mode 100644 index 3481f3f..0000000 --- a/modules/services/backup/default.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ config, pkgs, lib, ... }: -let - cfg = config.my.services.backup; - excludeArg = with builtins; - with pkgs; - "--exclude-file=" - + (writeText "excludes.txt" (concatStringsSep "\n" cfg.exclude)); -in -{ - options.my.services.backup = with lib; { - enable = mkEnableOption "Enable backups for this host"; - - repository = mkOption { - type = types.str; - example = "/data/slow/backups/hosts"; - description = "The repository to back up to"; - }; - - passwordFile = mkOption { - type = types.path; - example = "/var/lib/restic/password.txt"; - description = "Read the repository's password from this path"; - }; - - extraOptions = mkOption { - type = with types; listOf str; - default = [ ]; - example = [ "sftp.command='ssh ....'" ]; - description = "Extra options to restic"; - }; - - paths = mkOption { - type = with types; listOf str; - default = [ ]; - example = [ "/var/lib" "/home" ]; - description = "Paths to backup"; - }; - - exclude = mkOption { - type = with types; listOf str; - default = [ ]; - example = [ - # very large paths - "/var/lib/docker" - "/var/lib/systemd" - "/var/lib/libvirt" - - # temporary files created by `cargo` and `go build` - "**/target" - "/home/*/go/bin" - "/home/*/go/pkg" - ]; - description = "Paths to exclude from backup"; - }; - - pruneOpts = mkOption { - type = with types; listOf str; - default = [ - "--keep-last 10" - "--keep-daily 7" - "--keep-weekly 4" - "--keep-monthly 8" - "--keep-yearly 2" - ]; - example = [ "--keep-last 5" "--keep-weekly 2" ]; - description = '' - List of options to give to the `forget` subcommand after a backup. - ''; - }; - - timerConfig = mkOption { - # NOTE: I do not know how to cleanly set the type - default = { OnCalendar = "daily"; }; - example = { - OnCalendar = "00:05"; - RandomizedDelaySec = "5h"; - }; - description = '' - When to run the backup. See man systemd.timer for details. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - services.restic.backups.host = { - # Take care of included and excluded files - paths = cfg.paths; - extraBackupArgs = [ "--verbose=1" "--compression=max" ] - ++ lib.optional (builtins.length cfg.exclude != 0) excludeArg; - # Take care of creating the repository if it doesn't exist - initialize = true; - inherit (cfg) passwordFile pruneOpts timerConfig repository extraOptions; - }; - }; -} |