diff --git a/nixos/doc/manual/installation/installing-from-other-distro.xml b/nixos/doc/manual/installation/installing-from-other-distro.xml
new file mode 100644
index 000000000000..556238988274
--- /dev/null
+++ b/nixos/doc/manual/installation/installing-from-other-distro.xml
@@ -0,0 +1,297 @@
+
+
+
+ Installing from another Linux distribution
+
+
+ Because Nix (the package manager) & Nixpkgs (the Nix packages
+ collection) can both be installed on any (most?) Linux distributions,
+ they can be used to install NixOS in various creative ways. You can,
+ for instance:
+
+
+
+ Install NixOS on another partition, from your existing
+ Linux distribution (without the use of a USB or optical
+ device!)
+
+ Install NixOS on the same partition (in place!), from
+ your existing non-NixOS Linux distribution using
+ NIXOS_LUSTRATE.
+
+ Install NixOS on your hard drive from the Live CD of
+ any Linux distribution.
+
+
+ The first steps to all these are the same:
+
+
+
+ Install the Nix package manager:
+
+ Short version:
+
+
+$ bash <(curl https://nixos.org/nix/install)
+$ . $HOME/.nix-profile/etc/profile.d/nix.sh # …or open a fresh shell
+
+ More details in the
+ Nix manual
+
+
+
+ Switch to the NixOS channel:
+
+ If you've just installed Nix on a non-NixOS distribution, you
+ will be on the nixpkgs channel by
+ default.
+
+
+$ nix-channel --list
+nixpkgs https://nixos.org/channels/nixpkgs-unstable
+
+ As that channel gets released without running the NixOS
+ tests, it will be safer to use the nixos-*
+ channels instead:
+
+
+$ nix-channel --add https://nixos.org/channels/nixos-version nixpkgs
+
+ You may want to throw in a nix-channel
+ --update for good measure.
+
+
+
+ Install the NixOS installation tools:
+
+ You'll need nixos-generate-config and
+ nixos-install and we'll throw in some man
+ pages and nixos-enter just in case you want
+ to chroot into your NixOS partition. They are installed by
+ default on NixOS, but you don't have NixOS yet..
+
+ $ nix-env -iE "_: with import <nixpkgs/nixos> { configuration = {}; }; with config.system.build; [ nixos-generate-config nixos-install nixos-enter manual.manpages ]"
+
+
+
+ The following 5 steps are only for installing NixOS to
+ another partition. For installing NixOS in place using
+ NIXOS_LUSTRATE, skip ahead.
+
+ Prepare your target partition:
+
+ At this point it is time to prepare your target partition.
+ Please refer to the partitioning, file-system creation, and
+ mounting steps of
+
+ If you're about to install NixOS in place using
+ NIXOS_LUSTRATE there is nothing to do for
+ this step.
+
+
+
+ Generate your NixOS configuration:
+
+ $ sudo `which nixos-generate-config` --root /mnt
+
+ You'll probably want to edit the configuration files. Refer
+ to the nixos-generate-config step in for more information.
+
+ Consider setting up the NixOS bootloader to give you the
+ ability to boot on your existing Linux partition. For instance,
+ if you're using GRUB and your existing distribution is running
+ Ubuntu, you may want to add something like this to your
+ configuration.nix:
+
+
+boot.loader.grub.extraEntries = ''
+ menuentry "Ubuntu" {
+ search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e
+ configfile "($ubuntu)/boot/grub/grub.cfg"
+ }
+'';
+
+ (You can find the appropriate UUID for your partition in
+ /dev/disk/by-uuid)
+
+
+
+ Create the nixbld group and user on your
+ original distribution:
+
+
+$ sudo groupadd -g 30000 nixbld
+$ sudo useradd -u 30000 -g nixbld -G nixbld nixbld
+
+
+
+ Download/build/install NixOS:
+
+ Once you complete this step, you might no longer be
+ able to boot on existing systems without the help of a
+ rescue USB drive or similar.
+
+ $ sudo PATH="$PATH" NIX_PATH="$NIX_PATH" `which nixos-install` --root /mnt
+
+ Again, please refer to the nixos-install
+ step in for more
+ information.
+
+ That should be it for installation to another partition!
+
+
+
+ Optionally, you may want to clean up your non-NixOS distribution:
+
+
+$ sudo userdel nixbld
+$ sudo groupdel nixbld
+
+ If you do not wish to keep the Nix package mananager
+ installed either, run something like sudo rm -rv
+ ~/.nix-* /nix and remove the line that the Nix
+ installer added to your ~/.profile.
+
+
+
+ The following steps are only for installing NixOS in
+ place using
+ NIXOS_LUSTRATE:
+
+ Generate your NixOS configuration:
+
+ $ sudo `which nixos-generate-config` --root /
+
+ Note that this will place the generated configuration files
+ in /etc/nixos. You'll probably want to edit
+ the configuration files. Refer to the
+ nixos-generate-config step in for more information.
+
+ You'll likely want to set a root password for your first boot
+ using the configuration files because you won't have a chance
+ to enter a password until after you reboot. You can initalize
+ the root password to an empty one with this line: (and of course
+ don't forget to set one once you've rebooted or to lock the
+ account with sudo passwd -l root if you use
+ sudo)
+
+ users.extraUsers.root.initialHashedPassword = "";
+
+
+
+ Build the NixOS closure and install it in the
+ system profile:
+
+ $ nix-env -p /nix/var/nix/profiles/system -f '<nixpkgs/nixos>' -I nixos-config=/etc/nixos/configuration.nix -iA system
+
+
+
+ Change ownership of the /nix tree to root
+ (since your Nix install was probably single user):
+
+ $ sudo chown -R 0.0 /nix
+
+
+
+ Set up the /etc/NIXOS and
+ /etc/NIXOS_LUSTRATE files:
+
+ /etc/NIXOS officializes that this is now a
+ NixOS partition (the bootup scripts require its presence).
+
+ /etc/NIXOS_LUSTRATE tells the NixOS bootup
+ scripts to move everything that's in the
+ root partition to /old-root. This will move
+ your existing distribution out of the way in the very early
+ stages of the NixOS bootup. There are exceptions (we do need to
+ keep NixOS there after all), so the NixOS lustrate process will
+ not touch:
+
+
+ The /nix
+ directory
+
+ The /boot
+ directory
+
+ Any file or directory listed in
+ /etc/NIXOS_LUSTRATE (one per
+ line)
+
+
+ Let's create the files:
+
+
+$ sudo touch /etc/NIXOS
+$ sudo touch /etc/NIXOS_LUSTRATE
+
+ Let's also make sure the NixOS configuration files are kept
+ once we reboot on NixOS:
+
+
+$ echo etc/nixos | sudo tee -a /etc/NIXOS_LUSTRATE
+
+
+
+ Finally, move the /boot directory of your
+ current distribution out of the way (the lustrate process will
+ take care of the rest once you reboot, but this one must be
+ moved out now because NixOS needs to install its own boot
+ files:
+
+ Once you complete this step, your current
+ distribution will no longer be bootable! If you didn't get
+ all the NixOS configuration right, especially those
+ settings pertaining to boot loading and root partition,
+ NixOS may not be bootable either. Have a USB rescue device
+ ready in case this happens.
+
+
+$ sudo mv -v /boot /boot.bak &&
+ sudo /nix/var/nix/profiles/system/bin/switch-to-configuration boot
+
+ Cross your fingers, reboot, hopefully you should get a NixOS
+ prompt!
+
+
+ If for some reason you want to revert to the old
+ distribution, you'll need to boot on a USB rescue disk and do
+ something along these lines:
+
+
+# mkdir root
+# mount /dev/sdaX root
+# mkdir root/nixos-root
+# mv -v root/* root/nixos-root/
+# mv -v root/nixos-root/old-root/* root/
+# mv -v root/boot.bak root/boot # We had renamed this by hand earlier
+# umount root
+# reboot
+
+ This may work as is or you might also need to reinstall the
+ boot loader
+
+ And of course, if you're happy with NixOS and no longer need
+ the old distribution:
+
+ sudo rm -rf /old-root
+
+
+
+ It's also worth noting that this whole process can be
+ automated. This is especially useful for Cloud VMs, where
+ provider do not provide NixOS. For instance, nixos-infect
+ uses the lustrate process to convert Digital Ocean droplets to
+ NixOS from other distributions automatically.
+
+
+
diff --git a/nixos/doc/manual/installation/installing.xml b/nixos/doc/manual/installation/installing.xml
index 2a5d1fc3ce8d..e20b6574b725 100644
--- a/nixos/doc/manual/installation/installing.xml
+++ b/nixos/doc/manual/installation/installing.xml
@@ -401,5 +401,6 @@ drive (here /dev/sda).
+
diff --git a/nixos/modules/installer/tools/nixos-enter.sh b/nixos/modules/installer/tools/nixos-enter.sh
index 122d9fdcd29b..679391189612 100644
--- a/nixos/modules/installer/tools/nixos-enter.sh
+++ b/nixos/modules/installer/tools/nixos-enter.sh
@@ -15,8 +15,8 @@ else
fi
mountPoint=/mnt
-command=("bash" "--login")
system=/nix/var/nix/profiles/system
+command=($system/sw/bin/bash "--login")
while [ "$#" -gt 0 ]; do
i="$1"; shift 1
@@ -32,7 +32,7 @@ while [ "$#" -gt 0 ]; do
exit 1
;;
--command|-c)
- command=("bash" "-c" "$1")
+ command=($system/sw/bin/bash "-c" "$1")
shift 1
;;
--)