summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--custom/borgbackup.nix23
-rw-r--r--odin.nix2
2 files changed, 18 insertions, 7 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 };
diff --git a/odin.nix b/odin.nix
index 336f1610..9d8efbe5 100644
--- a/odin.nix
+++ b/odin.nix
@@ -201,7 +201,7 @@
201 ]; 201 ];
202 202
203 prune = lib.genAttrs 203 prune = lib.genAttrs
204 ["raid6/mail" "raid6/home" "raid6/media" "raid6/root" "raid6/git" "ssd-raid1/root"] 204 ["raid6-mail" "raid6-home" "raid6-media" "raid6-root" "raid6-git" "ssd-raid1-root"]
205 (name: [ 205 (name: [
206 "--keep-within" "24H" 206 "--keep-within" "24H"
207 "--keep-daily" "31" 207 "--keep-daily" "31"