summary refs log tree commit diff
path: root/nixos/modules/virtualisation/containers.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-08-13 00:45:36 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-08-13 00:49:25 +0200
commit330fadb7060074bd5c38e5dcefc394abaf8d6a09 (patch)
treea6e18d6b741f38a5103586a71d20911ccc16a5ca /nixos/modules/virtualisation/containers.nix
parentab402dc1a49579785c690238ed4fce72dd707b30 (diff)
downloadnixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.tar
nixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.tar.gz
nixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.tar.bz2
nixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.tar.lz
nixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.tar.xz
nixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.tar.zst
nixpkgs-330fadb7060074bd5c38e5dcefc394abaf8d6a09.zip
Containers: Use systemd-nspawn startup notification
This prevents the container unit startup from hanging until timeout if
systemd-nspawn fails.
Diffstat (limited to 'nixos/modules/virtualisation/containers.nix')
-rw-r--r--nixos/modules/virtualisation/containers.nix14
1 files changed, 8 insertions, 6 deletions
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index a7256148f08..6933fbaa9ee 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -228,12 +228,6 @@ in
 
         postStart =
           ''
-            # This blocks until the container-startup-done service
-            # writes something to this pipe.  FIXME: it also hangs
-            # until the start timeout expires if systemd-nspawn exits.
-            read x < $root/var/lib/startup-done
-            rm -f $root/var/lib/startup-done
-
             if [ "$PRIVATE_NETWORK" = 1 ]; then
               ifaceHost=ve-$INSTANCE
               ip link set dev $ifaceHost up
@@ -244,6 +238,12 @@ in
                 ip route add $LOCAL_ADDRESS dev $ifaceHost
               fi
             fi
+
+            # This blocks until the container-startup-done service
+            # writes something to this pipe.  FIXME: it also hangs
+            # until the start timeout expires if systemd-nspawn exits.
+            read x < $root/var/lib/startup-done
+            rm -f $root/var/lib/startup-done
           '';
 
         preStop =
@@ -267,6 +267,8 @@ in
 
           EnvironmentFile = "-/etc/containers/%i.conf";
 
+          Type = "notify";
+
           # Note that on reboot, systemd-nspawn returns 10, so this
           # unit will be restarted. On poweroff, it returns 0, so the
           # unit won't be restarted.