3
0
Fork 0
forked from mirrors/nixpkgs

Fix installing the Nixpkgs channel on the installation media

And test that it got installed correctly.
This commit is contained in:
Eelco Dolstra 2018-02-27 19:58:23 +01:00
parent 8c6f9223d0
commit cc2eeef4ab
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
4 changed files with 18 additions and 7 deletions

View file

@ -26,8 +26,8 @@
<replaceable>root</replaceable> <replaceable>root</replaceable>
</arg> </arg>
<arg> <arg>
<arg choice='plain'><option>--closure</option></arg> <arg choice='plain'><option>--system</option></arg>
<replaceable>closure</replaceable> <replaceable>path</replaceable>
</arg> </arg>
<arg> <arg>
<arg choice='plain'><option>--no-channel-copy</option></arg> <arg choice='plain'><option>--no-channel-copy</option></arg>
@ -118,7 +118,7 @@ it.</para>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--closure</option></term> <term><option>--system</option></term>
<listitem> <listitem>
<para>If this option is provided, <command>nixos-install</command> will install the specified closure <para>If this option is provided, <command>nixos-install</command> will install the specified closure
rather than attempt to build one from <filename>/mnt/etc/nixos/configuration.nix</filename>.</para> rather than attempt to build one from <filename>/mnt/etc/nixos/configuration.nix</filename>.</para>

View file

@ -181,7 +181,8 @@ let format' = format; in let
nix-store --load-db < ${closureInfo}/registration nix-store --load-db < ${closureInfo}/registration
echo "running nixos-install..." 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..." echo "copying staging root to image..."
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} -t ${fsType} -i $diskImage $root/* / cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} -t ${fsType} -i $diskImage $root/* /

View file

@ -12,6 +12,7 @@ umask 0022
extraBuildFlags=() extraBuildFlags=()
mountPoint=/mnt mountPoint=/mnt
channelPath=
while [ "$#" -gt 0 ]; do while [ "$#" -gt 0 ]; do
i="$1"; shift 1 i="$1"; shift 1
@ -28,10 +29,12 @@ while [ "$#" -gt 0 ]; do
--root) --root)
mountPoint="$1"; shift 1 mountPoint="$1"; shift 1
;; ;;
--closure) --system|--closure)
# FIXME: --closure is a misnomer
system="$1"; shift 1 system="$1"; shift 1
;; ;;
--channel)
channelPath="$1"; shift 1
;;
--no-channel-copy) --no-channel-copy)
noChannelCopy=1 noChannelCopy=1
;; ;;
@ -104,7 +107,9 @@ nix-env --store "$mountPoint" "${extraBuildFlags[@]}" \
# Copy the NixOS/Nixpkgs sources to the target as the initial contents # Copy the NixOS/Nixpkgs sources to the target as the initial contents
# of the NixOS channel. # of the NixOS channel.
if [[ -z $noChannelCopy ]]; then 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 if [[ -n $channelPath ]]; then
echo "copying channel..." echo "copying channel..."
mkdir -p $mountPoint/nix/var/nix/profiles/per-user/root mkdir -p $mountPoint/nix/var/nix/profiles/per-user/root

View file

@ -25,6 +25,11 @@ let
$machine->start; $machine->start;
$machine->waitForUnit("multi-user.target"); $machine->waitForUnit("multi-user.target");
$machine->succeed("nix verify -r --no-trust /run/current-system"); $machine->succeed("nix verify -r --no-trust /run/current-system");
# Test whether the channel got installed correctly.
$machine->succeed("nix-instantiate --dry-run '<nixpkgs>' -A hello");
$machine->succeed("nix-env --dry-run -iA nixos.procps");
$machine->shutdown; $machine->shutdown;
''; '';
}; };