diff --git a/nixos/doc/manual/administration/imperative-containers.xml b/nixos/doc/manual/administration/imperative-containers.xml
index fa380477f6c..9bb62bc2ece 100644
--- a/nixos/doc/manual/administration/imperative-containers.xml
+++ b/nixos/doc/manual/administration/imperative-containers.xml
@@ -73,7 +73,8 @@ Linux foo 3.4.82 #1-NixOS SMP Thu Mar 20 14:44:05 UTC 2014 x86_64 GNU/Linux
- To change the configuration of the container, you can edit
+ There are several ways to change the configuration of the container. First,
+ on the host, you can edit
/var/lib/container/name/etc/nixos/configuration.nix,
and run
@@ -86,7 +87,8 @@ Linux foo 3.4.82 #1-NixOS SMP Thu Mar 20 14:44:05 UTC 2014 x86_64 GNU/Linux
= true;
= "foo@example.org";
= [ 80 ];
- '
+'
+
# curl http://$(nixos-container show-ip foo)/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">…
@@ -95,13 +97,11 @@ Linux foo 3.4.82 #1-NixOS SMP Thu Mar 20 14:44:05 UTC 2014 x86_64 GNU/Linux
- Note that in previous versions of NixOS (17.09 and earlier) one could also
- use all nix-related commands (like nixos-rebuild switch)
- from inside the container. However, since the release of Nix 2.0 this is not
- supported anymore. Supporting Nix commands inside the container might be
- possible again in future versions. See
- the github
- issue for tracking progress on this issue.
+ Alternatively, you can change the configuration from within the container
+ itself by running nixos-rebuild switch inside the
+ container. Note that the container by default does not have a copy of the
+ NixOS channel, so you should run nix-channel --update
+ first.
diff --git a/nixos/modules/virtualisation/container-config.nix b/nixos/modules/virtualisation/container-config.nix
index 5e368acd6d8..561db7cabcf 100644
--- a/nixos/modules/virtualisation/container-config.nix
+++ b/nixos/modules/virtualisation/container-config.nix
@@ -22,6 +22,13 @@ with lib;
# Not supported in systemd-nspawn containers.
security.audit.enable = false;
+ # Make sure that root user in container will talk to host nix-daemon
+ environment.etc."profile".text = ''
+ export NIX_REMOTE=daemon
+ '';
+
+
+
};
}
diff --git a/nixos/tests/containers-imperative.nix b/nixos/tests/containers-imperative.nix
index 6f86819f4e8..782095a09da 100644
--- a/nixos/tests/containers-imperative.nix
+++ b/nixos/tests/containers-imperative.nix
@@ -86,6 +86,9 @@ import ./make-test.nix ({ pkgs, ...} : {
# Execute commands via the root shell.
$machine->succeed("nixos-container run $id1 -- uname") =~ /Linux/ or die;
+ # Execute a nix command via the root shell. (regression test for #40355)
+ $machine->succeed("nixos-container run $id1 -- nix-instantiate -E 'derivation { name = \"empty\"; builder = \"false\"; system = \"false\"; }'");
+
# Stop and start (regression test for #4989)
$machine->succeed("nixos-container stop $id1");
$machine->succeed("nixos-container start $id1");