diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2018-09-26 14:08:57 +0200 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2018-09-26 14:08:57 +0200 |
commit | 667bc2e06b522b6f78b5355a184cefc3f68d899c (patch) | |
tree | 65de89336c1750c985c38ecf93363c174a79939e /custom | |
parent | 89fd970c82b9b858c1f07c956dad92a9e7890535 (diff) | |
download | nixos-667bc2e06b522b6f78b5355a184cefc3f68d899c.tar nixos-667bc2e06b522b6f78b5355a184cefc3f68d899c.tar.gz nixos-667bc2e06b522b6f78b5355a184cefc3f68d899c.tar.bz2 nixos-667bc2e06b522b6f78b5355a184cefc3f68d899c.tar.xz nixos-667bc2e06b522b6f78b5355a184cefc3f68d899c.zip |
...
Diffstat (limited to 'custom')
-rw-r--r-- | custom/borgbackup.nix | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/custom/borgbackup.nix b/custom/borgbackup.nix index 75ff8cde..dabf4200 100644 --- a/custom/borgbackup.nix +++ b/custom/borgbackup.nix | |||
@@ -99,9 +99,21 @@ in { | |||
99 | inherit (path) LV VG; | 99 | inherit (path) LV VG; |
100 | mountName = withPrefix (path.VG + "-" + path.LV); | 100 | mountName = withPrefix (path.VG + "-" + path.LV); |
101 | }) (unique (flatten (mapAttrsToList (target: tCfg: tCfg.paths) cfg.targets))))); | 101 | }) (unique (flatten (mapAttrsToList (target: tCfg: tCfg.paths) cfg.targets))))); |
102 | |||
103 | systemd.targets."timers-borg" = { | ||
104 | wantedBy = [ "timers.target" ]; | ||
105 | }; | ||
106 | |||
107 | systemd.slices."system-borgbackup" = { | ||
108 | sliceConfig = { | ||
109 | Nice = 15; | ||
110 | IOSchedulingClass = 2; | ||
111 | IOSchedulingPriority = 7; | ||
112 | }; | ||
113 | }; | ||
102 | 114 | ||
103 | systemd.timers = (listToAttrs (map ({ target, path, tCfg }: nameValuePair "borgbackup-${target}@${systemdPath path}" { | 115 | systemd.timers = (listToAttrs (map ({ target, path, tCfg }: nameValuePair "borgbackup-${target}@${systemdPath path}" { |
104 | wantedBy = [ "timers.target" ]; | 116 | requiredBy = [ "timers-borg.target" ]; |
105 | 117 | ||
106 | timerConfig = { | 118 | timerConfig = { |
107 | Persistent = false; | 119 | Persistent = false; |
@@ -112,7 +124,7 @@ in { | |||
112 | }) (flatten (mapAttrsToList (target: tCfg: map (path: { inherit target path tCfg; }) tCfg.paths) cfg.targets)))) // (mapAttrs' (target: tCfg: nameValuePair "borgbackup-prune-${target}" { | 124 | }) (flatten (mapAttrsToList (target: tCfg: map (path: { inherit target path tCfg; }) tCfg.paths) cfg.targets)))) // (mapAttrs' (target: tCfg: nameValuePair "borgbackup-prune-${target}" { |
113 | enable = tCfg.prune != {}; | 125 | enable = tCfg.prune != {}; |
114 | 126 | ||
115 | wantedBy = [ "timers.target" ]; | 127 | requiredBy = [ "timers-borg.target" ]; |
116 | 128 | ||
117 | timerConfig = { | 129 | timerConfig = { |
118 | Persistent = false; | 130 | Persistent = false; |
@@ -159,10 +171,8 @@ in { | |||
159 | serviceConfig = { | 171 | serviceConfig = { |
160 | Type = "oneshot"; | 172 | Type = "oneshot"; |
161 | WorkingDirectory = if (cfg.snapshots == null) then "%I" else (if (cfg.snapshots == "lvm") then "${mountPoint}/${withPrefix "%I"}" else "${mountPoint}/${withPrefix "%i"}"); | 173 | WorkingDirectory = if (cfg.snapshots == null) then "%I" else (if (cfg.snapshots == "lvm") then "${mountPoint}/${withPrefix "%I"}" else "${mountPoint}/${withPrefix "%i"}"); |
162 | Nice = 15; | ||
163 | IOSchedulingClass = 2; | ||
164 | IOSchedulingPriority = 7; | ||
165 | SuccessExitStatus = [1 2]; | 174 | SuccessExitStatus = [1 2]; |
175 | Slice = "system-borgbackup"; | ||
166 | }; | 176 | }; |
167 | })) cfg.targets) // (mapAttrs' (target: tCfg: nameValuePair "borgbackup-prune-${target}" { | 177 | })) cfg.targets) // (mapAttrs' (target: tCfg: nameValuePair "borgbackup-prune-${target}" { |
168 | enable = tCfg.prune != {}; | 178 | enable = tCfg.prune != {}; |
@@ -177,13 +187,14 @@ in { | |||
177 | --lock-wait ${toString tCfg.lockWait} \ | 187 | --lock-wait ${toString tCfg.lockWait} \ |
178 | --list \ | 188 | --list \ |
179 | --stats \ | 189 | --stats \ |
180 | --prefix ${escapeShellArg "${cfg.prefix}${if cfg.snapshots == "lvm" then path else escapeSystemdPath path}"} \ | 190 | --prefix ${escapeShellArg "${cfg.prefix}${path}"} \ |
181 | ${escapeShellArgs args} \ | 191 | ${escapeShellArgs args} \ |
182 | ${tCfg.repo} | 192 | ${tCfg.repo} |
183 | '') tCfg.prune); | 193 | '') tCfg.prune); |
184 | 194 | ||
185 | serviceConfig = { | 195 | serviceConfig = { |
186 | Type = "oneshot"; | 196 | Type = "oneshot"; |
197 | Slice = "system-borgbackup"; | ||
187 | }; | 198 | }; |
188 | }) cfg.targets); | 199 | }) cfg.targets); |
189 | }; | 200 | }; |