nixos-install: Mound nixos and nixpkgs src directly
Previously nixos-install would fail if nixos and nixpkgs weren't on the same mountpoint as / Signed-off-by: Shea Levy <shea@shealevy.com>
This commit is contained in:
parent
e28b0453bf
commit
6e0723bac6
|
@ -39,7 +39,7 @@ fi
|
||||||
# Mount some stuff in the target root directory. We bind-mount /etc
|
# Mount some stuff in the target root directory. We bind-mount /etc
|
||||||
# into the chroot because we need networking and the nixbld user
|
# into the chroot because we need networking and the nixbld user
|
||||||
# accounts in /etc/passwd. But we do need the target's /etc/nixos.
|
# accounts in /etc/passwd. But we do need the target's /etc/nixos.
|
||||||
mkdir -m 0755 -p $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/mnt $mountPoint/mnt2 $mountPoint/etc /etc/nixos
|
mkdir -m 0755 -p $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/mnt $mountPoint/mnt2 $mountPoint/mnt-nixos $mountPoint/mnt-nixpkgs $mountPoint/etc /etc/nixos
|
||||||
mount --make-private / # systemd makes / shared, which is annoying
|
mount --make-private / # systemd makes / shared, which is annoying
|
||||||
mount --bind / $mountPoint/mnt
|
mount --bind / $mountPoint/mnt
|
||||||
mount --bind /nix $mountPoint/mnt/nix
|
mount --bind /nix $mountPoint/mnt/nix
|
||||||
|
@ -58,6 +58,8 @@ cleanup() {
|
||||||
mountpoint -q $mountPoint/etc/nixos && umount $mountPoint/etc/nixos
|
mountpoint -q $mountPoint/etc/nixos && umount $mountPoint/etc/nixos
|
||||||
mountpoint -q $mountPoint/etc && umount $mountPoint/etc
|
mountpoint -q $mountPoint/etc && umount $mountPoint/etc
|
||||||
umount $mountPoint/mnt2
|
umount $mountPoint/mnt2
|
||||||
|
umount $mountPoint/mnt-nixos
|
||||||
|
umount $mountPoint/mnt-nixpkgs
|
||||||
umount $mountPoint/sys/firmware/efi/efivars &>/dev/null || true
|
umount $mountPoint/sys/firmware/efi/efivars &>/dev/null || true
|
||||||
umount $mountPoint/sys
|
umount $mountPoint/sys
|
||||||
umount $mountPoint/proc
|
umount $mountPoint/proc
|
||||||
|
@ -66,7 +68,7 @@ cleanup() {
|
||||||
umount $mountPoint/mnt/nix/store
|
umount $mountPoint/mnt/nix/store
|
||||||
umount $mountPoint/mnt/nix
|
umount $mountPoint/mnt/nix
|
||||||
umount $mountPoint/mnt
|
umount $mountPoint/mnt
|
||||||
rmdir $mountPoint/mnt $mountPoint/mnt2
|
rmdir $mountPoint/mnt $mountPoint/mnt2 $mountPoint/mnt-nixos $mountPoint/mnt-nixpkgs
|
||||||
}
|
}
|
||||||
|
|
||||||
trap "cleanup" EXIT
|
trap "cleanup" EXIT
|
||||||
|
@ -165,14 +167,14 @@ done
|
||||||
|
|
||||||
|
|
||||||
# Get the absolute path to the NixOS/Nixpkgs sources.
|
# Get the absolute path to the NixOS/Nixpkgs sources.
|
||||||
nixpkgs_src=$(readlink -f $(nix-instantiate --find-file nixpkgs))
|
mount --bind $(readlink -f $(nix-instantiate --find-file nixpkgs)) $mountPoint/mnt-nixpkgs
|
||||||
nixos_src=$(readlink -f $(nix-instantiate --find-file nixos))
|
mount --bind $(readlink -f $(nix-instantiate --find-file nixos)) $mountPoint/mnt-nixos
|
||||||
|
|
||||||
|
|
||||||
# Build the specified Nix expression in the target store and install
|
# Build the specified Nix expression in the target store and install
|
||||||
# it into the system configuration profile.
|
# it into the system configuration profile.
|
||||||
echo "building the system configuration..."
|
echo "building the system configuration..."
|
||||||
NIX_PATH="nixpkgs=/mnt$nixpkgs_src:nixos=/mnt$nixos_src:nixos-config=$NIXOS_CONFIG" NIXOS_CONFIG= \
|
NIX_PATH="nixpkgs=/mnt-nixpkgs:nixos=/mnt-nixos:nixos-config=$NIXOS_CONFIG" NIXOS_CONFIG= \
|
||||||
chroot $mountPoint @nix@/bin/nix-env \
|
chroot $mountPoint @nix@/bin/nix-env \
|
||||||
-p /nix/var/nix/profiles/system -f '<nixos>' --set -A system --show-trace
|
-p /nix/var/nix/profiles/system -f '<nixos>' --set -A system --show-trace
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue