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-03-17 15:23:20 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-03-17 15:23:20 +0100
commitac215779dd1fdfe58d75bcc22cb6a5b0a58744a4 (patch)
tree5919585be388a02d13e156b3090b4eeeb7558bd5 /nixos/modules/virtualisation/containers.nix
parentef8e0266a2583eb45444b1faa0512f99d18fca6c (diff)
downloadnixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.tar
nixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.tar.gz
nixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.tar.bz2
nixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.tar.lz
nixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.tar.xz
nixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.tar.zst
nixpkgs-ac215779dd1fdfe58d75bcc22cb6a5b0a58744a4.zip
Give containers a writable /nix/var/nix/{profiles,gcroots}
These are stored on the host in
/nix/var/nix/{profiles,gcroots}/per-container/<container-name> to
ensure that container profiles/roots are not garbage-collected.
Diffstat (limited to 'nixos/modules/virtualisation/containers.nix')
-rw-r--r--nixos/modules/virtualisation/containers.nix11
1 files changed, 10 insertions, 1 deletions
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index 034ebe84b42..6a4833e1e21 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -110,10 +110,19 @@ with pkgs.lib;
             if ! [ -e ${container.root}/etc/os-release ]; then
               touch ${container.root}/etc/os-release
             fi
+
+            mkdir -p -m 0755 \
+              /nix/var/nix/profiles/per-container/${name} \
+              /nix/var/nix/gcroots/per-container/${name}
           '';
 
         serviceConfig.ExecStart =
-          "${config.systemd.package}/bin/systemd-nspawn -M ${name} -D ${container.root} --bind-ro=/nix ${container.path}/init";
+          "${config.systemd.package}/bin/systemd-nspawn"
+          + " -M ${name} -D ${container.root}"
+          + " --bind-ro=/nix/store --bind-ro=/nix/var/nix/db --bind-ro=/nix/var/nix/daemon-socket"
+          + " --bind=/nix/var/nix/profiles/per-container/${name}:/nix/var/nix/profiles"
+          + " --bind=/nix/var/nix/gcroots/per-container/${name}:/nix/var/nix/gcroots"
+          + " ${container.path}/init";
 
         preStop =
           ''