diff options
author | Thomas Tuegel <ttuegel@mailbox.org> | 2019-11-27 15:44:32 -0600 |
---|---|---|
committer | Thomas Tuegel <ttuegel@mailbox.org> | 2019-11-27 15:51:19 -0600 |
commit | 757c7f377326205f3e04afe5d053c371600457f7 (patch) | |
tree | 3c08bafbfa0a09ef29d31fc39a6921096db13ed7 /nixos | |
parent | 0ee0489d42e6f0df5991113caee6feae97bca057 (diff) | |
download | nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.tar nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.tar.gz nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.tar.bz2 nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.tar.lz nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.tar.xz nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.tar.zst nixpkgs-757c7f377326205f3e04afe5d053c371600457f7.zip |
docker-container: Remove /etc symlink
The system output usually contains a symlink from /etc to the static configuration for the benefit of the stage-1 script in the initrd. The stage-2 script is usually started in the real root without such a symlink. In a container, there is no stage-1 and the system output is used directly as a real root. If the symlink is present, setup-etc.pl will create a symlink cycle and the system cannot boot. There is no reason for the /etc link to exist in a container because setup-etc.pl will create the necessary files. The container module will now remove the /etc symlink and create an empty directory. The empty /etc is for container managers to populate it with site-specific settings; for example, to set the hostname. This is required to boot NixOS in an LXC container on another host. See also: #9735
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/profiles/docker-container.nix | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/nixos/modules/profiles/docker-container.nix b/nixos/modules/profiles/docker-container.nix index 5d6b11498b5..183645de36f 100644 --- a/nixos/modules/profiles/docker-container.nix +++ b/nixos/modules/profiles/docker-container.nix @@ -2,6 +2,8 @@ with lib; +let inherit (pkgs) writeScript; in + let pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l; @@ -30,7 +32,12 @@ in { ]; # Some container managers like lxc need these - extraCommands = "mkdir -p proc sys dev"; + extraCommands = + let script = writeScript "extra-commands.sh" '' + rm etc + mkdir -p proc sys dev etc + ''; + in script; }; boot.isContainer = true; |