diff options
author | Izumi Raine <63145238+IzumiRaine@users.noreply.github.com> | 2022-12-10 12:31:13 +0100 |
---|---|---|
committer | Izumi Raine <63145238+IzumiRaine@users.noreply.github.com> | 2022-12-10 16:49:34 +0100 |
commit | cb4547a433dfb0581c5ab389eedb49618fa902e7 (patch) | |
tree | b1b6cf73af4b3d5aea45e0271fdb9f06d6e5a137 /nixos/modules/services/backup/borgbackup.nix | |
parent | f9db53a542b9d6c282056b48eb79392c346eb97f (diff) |
nixos/borgbackup: add option "patterns"
Diffstat (limited to 'nixos/modules/services/backup/borgbackup.nix')
-rw-r--r-- | nixos/modules/services/backup/borgbackup.nix | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix index 7b29eb41e72a0..18522080fbb6c 100644 --- a/nixos/modules/services/backup/borgbackup.nix +++ b/nixos/modules/services/backup/borgbackup.nix @@ -11,7 +11,11 @@ let mkExcludeFile = cfg: # Write each exclude pattern to a new line - pkgs.writeText "excludefile" (concatStringsSep "\n" cfg.exclude); + pkgs.writeText "excludefile" (concatMapStrings (s: s + "\n") cfg.exclude); + + mkPatternsFile = cfg: + # Write each pattern to a new line + pkgs.writeText "patternsfile" (concatMapStrings (s: s + "\n") cfg.patterns); mkKeepArgs = cfg: # If cfg.prune.keep e.g. has a yearly attribute, @@ -46,6 +50,7 @@ let borg create $extraArgs \ --compression ${cfg.compression} \ --exclude-from ${mkExcludeFile cfg} \ + --patterns-from ${mkPatternsFile cfg} \ $extraCreateArgs \ "::$archiveName$archiveSuffix" \ ${if cfg.paths == null then "-" else escapeShellArgs cfg.paths} @@ -424,6 +429,21 @@ in { ]; }; + patterns = mkOption { + type = with types; listOf str; + description = lib.mdDoc '' + Include/exclude paths matching the given patterns. The first + matching patterns is used, so if an include pattern (prefix `+`) + matches before an exclude pattern (prefix `-`), the file is + backed up. See [{command}`borg help patterns`](https://borgbackup.readthedocs.io/en/stable/usage/help.html#borg-patterns) for pattern syntax. + ''; + default = [ ]; + example = [ + "+ /home/susan" + "- /home/*" + ]; + }; + readWritePaths = mkOption { type = with types; listOf path; description = lib.mdDoc '' |