diff --git a/nixos/doc/manual/man-nixos-install.xml b/nixos/doc/manual/man-nixos-install.xml
index 15c603256ca7..c9887146989b 100644
--- a/nixos/doc/manual/man-nixos-install.xml
+++ b/nixos/doc/manual/man-nixos-install.xml
@@ -26,8 +26,8 @@
root
-
- closure
+
+ path
@@ -118,7 +118,7 @@ it.
-
+
If this option is provided, nixos-install will install the specified closure
rather than attempt to build one from /mnt/etc/nixos/configuration.nix.
diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix
index 4da863469032..ebfb09db7b7e 100644
--- a/nixos/lib/make-disk-image.nix
+++ b/nixos/lib/make-disk-image.nix
@@ -181,7 +181,8 @@ let format' = format; in let
nix-store --load-db < ${closureInfo}/registration
echo "running nixos-install..."
- nixos-install --root $root --no-bootloader --no-root-passwd --closure ${config.system.build.toplevel} --substituters ""
+ nixos-install --root $root --no-bootloader --no-root-passwd \
+ --system ${config.system.build.toplevel} --channel ${channelSources} --substituters ""
echo "copying staging root to image..."
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} -t ${fsType} -i $diskImage $root/* /
diff --git a/nixos/modules/installer/tools/nixos-install.sh b/nixos/modules/installer/tools/nixos-install.sh
index b51779cfb957..87013dc8f977 100644
--- a/nixos/modules/installer/tools/nixos-install.sh
+++ b/nixos/modules/installer/tools/nixos-install.sh
@@ -12,6 +12,7 @@ umask 0022
extraBuildFlags=()
mountPoint=/mnt
+channelPath=
while [ "$#" -gt 0 ]; do
i="$1"; shift 1
@@ -28,10 +29,12 @@ while [ "$#" -gt 0 ]; do
--root)
mountPoint="$1"; shift 1
;;
- --closure)
- # FIXME: --closure is a misnomer
+ --system|--closure)
system="$1"; shift 1
;;
+ --channel)
+ channelPath="$1"; shift 1
+ ;;
--no-channel-copy)
noChannelCopy=1
;;
@@ -104,7 +107,9 @@ nix-env --store "$mountPoint" "${extraBuildFlags[@]}" \
# Copy the NixOS/Nixpkgs sources to the target as the initial contents
# of the NixOS channel.
if [[ -z $noChannelCopy ]]; then
- channelPath="$(nix-env -p /nix/var/nix/profiles/per-user/root/channels -q nixos --no-name --out-path 2>/dev/null || echo -n "")"
+ if [[ -z $channelPath ]]; then
+ channelPath="$(nix-env -p /nix/var/nix/profiles/per-user/root/channels -q nixos --no-name --out-path 2>/dev/null || echo -n "")"
+ fi
if [[ -n $channelPath ]]; then
echo "copying channel..."
mkdir -p $mountPoint/nix/var/nix/profiles/per-user/root
diff --git a/nixos/tests/boot.nix b/nixos/tests/boot.nix
index 0ba8a2704e63..301d9d0f817f 100644
--- a/nixos/tests/boot.nix
+++ b/nixos/tests/boot.nix
@@ -25,6 +25,11 @@ let
$machine->start;
$machine->waitForUnit("multi-user.target");
$machine->succeed("nix verify -r --no-trust /run/current-system");
+
+ # Test whether the channel got installed correctly.
+ $machine->succeed("nix-instantiate --dry-run '' -A hello");
+ $machine->succeed("nix-env --dry-run -iA nixos.procps");
+
$machine->shutdown;
'';
};