summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--custom/lvm-snapshots.nix16
1 files changed, 13 insertions, 3 deletions
diff --git a/custom/lvm-snapshots.nix b/custom/lvm-snapshots.nix
index b6527a1f..34c10460 100644
--- a/custom/lvm-snapshots.nix
+++ b/custom/lvm-snapshots.nix
@@ -68,15 +68,25 @@ in {
68 systemd.services = mapAttrs' (name: scfg: nameValuePair ("lvm-snapshot@" + snapshotName name) { 68 systemd.services = mapAttrs' (name: scfg: nameValuePair ("lvm-snapshot@" + snapshotName name) {
69 enable = true; 69 enable = true;
70 70
71 description = "LVM-snapshot of ${scfg.VG}/${scfg.LV}";
72
71 unitConfig = { 73 unitConfig = {
72 StopWhenUnneeded = true; 74 StopWhenUnneeded = true;
73 }; 75 };
74 76
77 path = with pkgs; [ devicemapper ];
78
79 script = ''
80 lvcreate -s ${scfg.cowSize} --name ${snapshotName name} ${scfg.VG}/${scfg.LV}
81 '';
82
83 preStop = ''
84 lvchange -a n ${scfg.VG}/${snapshotName name}
85 lvremove ${scfg.VG}/${snapshotName name}
86 '';
87
75 serviceConfig = with pkgs; { 88 serviceConfig = with pkgs; {
76 Type = "oneshot"; 89 Type = "oneshot";
77 ExecStart = "${devicemapper}/bin/lvcreate -s ${scfg.cowSize} --name ${snapshotName name} ${scfg.VG}/${scfg.LV}";
78 ExecStopPre = "${devicemapper}/bin/lvchange -a n ${scfg.VG}/${snapshotName name}";
79 ExecStop = "${devicemapper}/bin/lvremove ${scfg.VG}/${snapshotName name}";
80 RemainAfterExit = true; 90 RemainAfterExit = true;
81 }; 91 };
82 }) cfg.snapshots; 92 }) cfg.snapshots;