about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSarah Brofeldt <sbrofeldt@gmail.com>2019-08-21 21:04:52 +0200
committerGitHub <noreply@github.com>2019-08-21 21:04:52 +0200
commitf20fbeedcf8891b80bfb2440df7168650e7a0d1f (patch)
treeab835604b84bd1833c75f3129f6584d579c4cdfc
parente17c387e39066486c91e630373d7b330e062be1a (diff)
parent578d712af46c7569f6c7c02a0a7a1ca51a6b6d89 (diff)
downloadnixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.tar
nixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.tar.gz
nixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.tar.bz2
nixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.tar.lz
nixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.tar.xz
nixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.tar.zst
nixlib-f20fbeedcf8891b80bfb2440df7168650e7a0d1f.zip
Merge pull request #67179 from uvNikita/containers/fix-imperative
nixos/containers: fix imperative containers
-rw-r--r--nixos/modules/virtualisation/containers.nix14
1 files changed, 10 insertions, 4 deletions
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index e1a91f7704e7..b65374c92577 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -70,7 +70,7 @@ let
   startScript = cfg:
     ''
       mkdir -p -m 0755 "$root/etc" "$root/var/lib"
-      mkdir -p -m 0700 "$root/var/lib/private" "$root/root"
+      mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
       if ! [ -e "$root/etc/os-release" ]; then
         touch "$root/etc/os-release"
       fi
@@ -248,7 +248,7 @@ let
 
     Type = "notify";
 
-    RuntimeDirectory = [ "containers" ] ++ lib.optional cfg.ephemeral "containers/%i";
+    RuntimeDirectory = lib.optional cfg.ephemeral "containers/%i";
 
     # Note that on reboot, systemd-nspawn returns 133, so this
     # unit will be restarted. On poweroff, it returns 0, so the
@@ -683,8 +683,15 @@ in
     unit = {
       description = "Container '%i'";
 
+      unitConfig.RequiresMountsFor = "/var/lib/containers/%i";
+
       path = [ pkgs.iproute ];
 
+      environment = {
+        root = "/var/lib/containers/%i";
+        INSTANCE = "%i";
+      };
+
       preStart = preStartScript dummyConfig;
 
       script = startScript dummyConfig;
@@ -722,14 +729,13 @@ in
             }
           else {});
         in
-          unit // {
+          recursiveUpdate unit {
             preStart = preStartScript containerConfig;
             script = startScript containerConfig;
             postStart = postStartScript containerConfig;
             serviceConfig = serviceDirectives containerConfig;
             unitConfig.RequiresMountsFor = lib.optional (!containerConfig.ephemeral) "/var/lib/containers/%i";
             environment.root = if containerConfig.ephemeral then "/run/containers/%i" else "/var/lib/containers/%i";
-            environment.INSTANCE = "%i";
           } // (
           if containerConfig.autoStart then
             {