diff options
| -rw-r--r-- | custom/lvm-snapshots.nix | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/custom/lvm-snapshots.nix b/custom/lvm-snapshots.nix index af8b61bb..afa5a9d6 100644 --- a/custom/lvm-snapshots.nix +++ b/custom/lvm-snapshots.nix | |||
| @@ -71,12 +71,19 @@ in { | |||
| 71 | 71 | ||
| 72 | unitConfig = { | 72 | unitConfig = { |
| 73 | StopWhenUnneeded = !scfg.persist; | 73 | StopWhenUnneeded = !scfg.persist; |
| 74 | AssertPathIsDirectory = "/var/lock"; | ||
| 74 | }; | 75 | }; |
| 75 | 76 | ||
| 76 | path = with pkgs; [ devicemapper ]; | 77 | path = with pkgs; [ devicemapper utillinux ]; |
| 77 | 78 | ||
| 78 | script = '' | 79 | script = '' |
| 79 | lvcreate -s ${scfg.cowSize} --name ${snapshotName name} ${scfg.VG}/${scfg.LV} | 80 | ( |
| 81 | flock -xn 9 || exit 1 | ||
| 82 | |||
| 83 | lvcreate -s ${scfg.cowSize} --name ${snapshotName name} ${scfg.VG}/${scfg.LV} | ||
| 84 | |||
| 85 | sleep infinity & | ||
| 86 | ) 9>/var/lock/lvm-snapshot.${scfg.VG} | ||
| 80 | ''; | 87 | ''; |
| 81 | 88 | ||
| 82 | preStop = '' | 89 | preStop = '' |
| @@ -84,8 +91,7 @@ in { | |||
| 84 | ''; | 91 | ''; |
| 85 | 92 | ||
| 86 | serviceConfig = with pkgs; { | 93 | serviceConfig = with pkgs; { |
| 87 | Type = "oneshot"; | 94 | Type = "forking"; |
| 88 | RemainAfterExit = true; | ||
| 89 | }; | 95 | }; |
| 90 | }) cfg.snapshots; | 96 | }) cfg.snapshots; |
| 91 | 97 | ||
