diff options
Diffstat (limited to 'nixpkgs/nixos/doc/manual/installation/installing-from-other-distro.xml')
-rw-r--r-- | nixpkgs/nixos/doc/manual/installation/installing-from-other-distro.xml | 364 |
1 files changed, 0 insertions, 364 deletions
diff --git a/nixpkgs/nixos/doc/manual/installation/installing-from-other-distro.xml b/nixpkgs/nixos/doc/manual/installation/installing-from-other-distro.xml deleted file mode 100644 index 63d1d52b01b2..000000000000 --- a/nixpkgs/nixos/doc/manual/installation/installing-from-other-distro.xml +++ /dev/null @@ -1,364 +0,0 @@ -<!-- vim: set expandtab ts=2 softtabstop=2 shiftwidth=2 smarttab textwidth=80 wrapmargin=2 --> -<section - xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="sec-installing-from-other-distro"> - <title>Installing from another Linux distribution</title> - - <para> - 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: - </para> - - <orderedlist> - <listitem> - <para> - Install NixOS on another partition, from your existing Linux distribution - (without the use of a USB or optical device!) - </para> - </listitem> - <listitem> - <para> - Install NixOS on the same partition (in place!), from your existing - non-NixOS Linux distribution using <literal>NIXOS_LUSTRATE</literal>. - </para> - </listitem> - <listitem> - <para> - Install NixOS on your hard drive from the Live CD of any Linux - distribution. - </para> - </listitem> - </orderedlist> - - <para> - The first steps to all these are the same: - </para> - - <orderedlist> - <listitem> - <para> - Install the Nix package manager: - </para> - <para> - Short version: - </para> -<screen> -<prompt>$ </prompt>curl -L https://nixos.org/nix/install | sh -<prompt>$ </prompt>. $HOME/.nix-profile/etc/profile.d/nix.sh # …or open a fresh shell</screen> - <para> - More details in the - <link - xlink:href="https://nixos.org/nix/manual/#chap-quick-start"> - Nix manual</link> - </para> - </listitem> - <listitem> - <para> - Switch to the NixOS channel: - </para> - <para> - If you've just installed Nix on a non-NixOS distribution, you will be on - the <literal>nixpkgs</literal> channel by default. - </para> -<screen> -<prompt>$ </prompt>nix-channel --list -nixpkgs https://nixos.org/channels/nixpkgs-unstable</screen> - <para> - As that channel gets released without running the NixOS tests, it will be - safer to use the <literal>nixos-*</literal> channels instead: - </para> -<screen> -<prompt>$ </prompt>nix-channel --add https://nixos.org/channels/nixos-<replaceable>version</replaceable> nixpkgs</screen> - <para> - You may want to throw in a <literal>nix-channel --update</literal> for good - measure. - </para> - </listitem> - <listitem> - <para> - Install the NixOS installation tools: - </para> - <para> - You'll need <literal>nixos-generate-config</literal> and - <literal>nixos-install</literal>, but this also makes some man pages - and <literal>nixos-enter</literal> available, just in case you want to chroot into your - NixOS partition. NixOS installs these by default, but you don't have - NixOS yet.. - </para> - <screen><prompt>$ </prompt>nix-env -f '<nixpkgs>' -iA nixos-install-tools</screen> - </listitem> - <listitem> - <note> - <para> - The following 5 steps are only for installing NixOS to another partition. - For installing NixOS in place using <literal>NIXOS_LUSTRATE</literal>, - skip ahead. - </para> - </note> - <para> - Prepare your target partition: - </para> - <para> - At this point it is time to prepare your target partition. Please refer to - the partitioning, file-system creation, and mounting steps of - <xref linkend="sec-installation" /> - </para> - <para> - If you're about to install NixOS in place using - <literal>NIXOS_LUSTRATE</literal> there is nothing to do for this step. - </para> - </listitem> - <listitem> - <para> - Generate your NixOS configuration: - </para> -<screen><prompt>$ </prompt>sudo `which nixos-generate-config` --root /mnt</screen> - <para> - You'll probably want to edit the configuration files. Refer to the - <literal>nixos-generate-config</literal> step in - <xref - linkend="sec-installation" /> for more - information. - </para> - <para> - 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 <literal>configuration.nix</literal>: - </para> -<programlisting> -<xref linkend="opt-boot.loader.grub.extraEntries"/> = '' - menuentry "Ubuntu" { - search --set=ubuntu --fs-uuid 3cc3e652-0c1f-4800-8451-033754f68e6e - configfile "($ubuntu)/boot/grub/grub.cfg" - } -'';</programlisting> - <para> - (You can find the appropriate UUID for your partition in - <literal>/dev/disk/by-uuid</literal>) - </para> - </listitem> - <listitem> - <para> - Create the <literal>nixbld</literal> group and user on your original - distribution: - </para> -<screen> -<prompt>$ </prompt>sudo groupadd -g 30000 nixbld -<prompt>$ </prompt>sudo useradd -u 30000 -g nixbld -G nixbld nixbld</screen> - </listitem> - <listitem> - <para> - Download/build/install NixOS: - </para> - <warning> - <para> - 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. - </para> - </warning> - <note> - <para> - On some distributions there are separate PATHS for programs intended only for root. - In order for the installation to succeed, you might have to use <literal>PATH="$PATH:/usr/sbin:/sbin"</literal> - in the following command. - </para> - </note> -<screen><prompt>$ </prompt>sudo PATH="$PATH" NIX_PATH="$NIX_PATH" `which nixos-install` --root /mnt</screen> - <para> - Again, please refer to the <literal>nixos-install</literal> step in - <xref linkend="sec-installation" /> for more information. - </para> - <para> - That should be it for installation to another partition! - </para> - </listitem> - <listitem> - <para> - Optionally, you may want to clean up your non-NixOS distribution: - </para> -<screen> -<prompt>$ </prompt>sudo userdel nixbld -<prompt>$ </prompt>sudo groupdel nixbld</screen> - <para> - If you do not wish to keep the Nix package manager installed either, run - something like <literal>sudo rm -rv ~/.nix-* /nix</literal> and remove the - line that the Nix installer added to your <literal>~/.profile</literal>. - </para> - </listitem> - <listitem> - <note> - <para> - The following steps are only for installing NixOS in place using - <literal>NIXOS_LUSTRATE</literal>: - </para> - </note> - <para> - Generate your NixOS configuration: - </para> -<screen><prompt>$ </prompt>sudo `which nixos-generate-config` --root /</screen> - <para> - Note that this will place the generated configuration files in - <literal>/etc/nixos</literal>. You'll probably want to edit the - configuration files. Refer to the <literal>nixos-generate-config</literal> - step in <xref - linkend="sec-installation" /> for more - information. - </para> - <para> - 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 <literal>sudo passwd -l root</literal> if you - use <literal>sudo</literal>) - </para> -<programlisting> -<link linkend="opt-users.users._name_.initialHashedPassword">users.users.root.initialHashedPassword</link> = ""; -</programlisting> - </listitem> - <listitem> - <para> - Build the NixOS closure and install it in the <literal>system</literal> - profile: - </para> -<screen><prompt>$ </prompt>nix-env -p /nix/var/nix/profiles/system -f '<nixpkgs/nixos>' -I nixos-config=/etc/nixos/configuration.nix -iA system</screen> - </listitem> - <listitem> - <para> - Change ownership of the <literal>/nix</literal> tree to root (since your - Nix install was probably single user): - </para> -<screen><prompt>$ </prompt>sudo chown -R 0.0 /nix</screen> - </listitem> - <listitem> - <para> - Set up the <literal>/etc/NIXOS</literal> and - <literal>/etc/NIXOS_LUSTRATE</literal> files: - </para> - <para> - <literal>/etc/NIXOS</literal> officializes that this is now a NixOS - partition (the bootup scripts require its presence). - </para> - <para> - <literal>/etc/NIXOS_LUSTRATE</literal> tells the NixOS bootup scripts to - move <emphasis>everything</emphasis> that's in the root partition to - <literal>/old-root</literal>. 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: - </para> - <itemizedlist> - <listitem> - <para> - The <literal>/nix</literal> directory - </para> - </listitem> - <listitem> - <para> - The <literal>/boot</literal> directory - </para> - </listitem> - <listitem> - <para> - Any file or directory listed in <literal>/etc/NIXOS_LUSTRATE</literal> - (one per line) - </para> - </listitem> - </itemizedlist> - <note> - <para> - Support for <literal>NIXOS_LUSTRATE</literal> was added in NixOS 16.09. - The act of "lustrating" refers to the wiping of the existing distribution. - Creating <literal>/etc/NIXOS_LUSTRATE</literal> can also be used on NixOS - to remove all mutable files from your root partition (anything that's not - in <literal>/nix</literal> or <literal>/boot</literal> gets "lustrated" on - the next boot. - </para> - <para> - lustrate /ˈlʌstreɪt/ verb. - </para> - <para> - purify by expiatory sacrifice, ceremonial washing, or some other ritual - action. - </para> - </note> - <para> - Let's create the files: - </para> -<screen> -<prompt>$ </prompt>sudo touch /etc/NIXOS -<prompt>$ </prompt>sudo touch /etc/NIXOS_LUSTRATE -</screen> - <para> - Let's also make sure the NixOS configuration files are kept once we reboot - on NixOS: - </para> -<screen> -<prompt>$ </prompt>echo etc/nixos | sudo tee -a /etc/NIXOS_LUSTRATE -</screen> - </listitem> - <listitem> - <para> - Finally, move the <literal>/boot</literal> 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: - </para> - <warning> - <para> - 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. - </para> - </warning> -<screen> -<prompt>$ </prompt>sudo mv -v /boot /boot.bak && -sudo /nix/var/nix/profiles/system/bin/switch-to-configuration boot -</screen> - <para> - Cross your fingers, reboot, hopefully you should get a NixOS prompt! - </para> - </listitem> - <listitem> - <para> - 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: - </para> -<screen> -<prompt># </prompt>mkdir root -<prompt># </prompt>mount /dev/sdaX root -<prompt># </prompt>mkdir root/nixos-root -<prompt># </prompt>mv -v root/* root/nixos-root/ -<prompt># </prompt>mv -v root/nixos-root/old-root/* root/ -<prompt># </prompt>mv -v root/boot.bak root/boot # We had renamed this by hand earlier -<prompt># </prompt>umount root -<prompt># </prompt>reboot</screen> - <para> - This may work as is or you might also need to reinstall the boot loader - </para> - <para> - And of course, if you're happy with NixOS and no longer need the old - distribution: - </para> -<screen>sudo rm -rf /old-root</screen> - </listitem> - <listitem> - <para> - 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, - <link - xlink:href="https://github.com/elitak/nixos-infect">nixos-infect</link> - uses the lustrate process to convert Digital Ocean droplets to NixOS from - other distributions automatically. - </para> - </listitem> - </orderedlist> -</section> |