2014-08-24 18:18:18 +01:00
|
|
|
|
<chapter 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-installation">
|
|
|
|
|
|
|
|
|
|
<title>Installing NixOS</title>
|
|
|
|
|
|
2017-11-01 01:07:51 +00:00
|
|
|
|
<para>NixOS can be installed on BIOS or UEFI systems. The procedure
|
|
|
|
|
for a UEFI installation is by and large the same as a BIOS installation. The differences are mentioned in the steps that follow.</para>
|
|
|
|
|
|
2014-08-24 18:18:18 +01:00
|
|
|
|
<orderedlist>
|
|
|
|
|
|
2017-11-01 01:07:51 +00:00
|
|
|
|
<listitem><para>Boot from the CD.</para>
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry><term>UEFI systems</term>
|
|
|
|
|
<listitem><para>You should boot the live CD in UEFI mode
|
|
|
|
|
(consult your specific hardware's documentation for instructions).
|
|
|
|
|
You may find the <link xlink:href="http://www.rodsbooks.com/refind">rEFInd boot
|
|
|
|
|
manager</link> useful.</para></listitem></varlistentry></variablelist></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<listitem><para>The CD contains a basic NixOS installation. (It
|
2014-11-02 22:41:01 +00:00
|
|
|
|
also contains Memtest86+, useful if you want to test new hardware).
|
2014-08-24 18:18:18 +01:00
|
|
|
|
When it’s finished booting, it should have detected most of your
|
2014-11-02 22:41:01 +00:00
|
|
|
|
hardware.</para></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<listitem><para>The NixOS manual is available on virtual console 8
|
2017-10-25 10:08:37 +01:00
|
|
|
|
(press Alt+F8 to access) or by running <command>nixos-help</command>.
|
|
|
|
|
</para></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2015-10-11 12:37:19 +01:00
|
|
|
|
<listitem><para>You get logged in as <literal>root</literal>
|
|
|
|
|
(with empty password).</para></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<listitem><para>If you downloaded the graphical ISO image, you can
|
2016-07-04 08:54:17 +01:00
|
|
|
|
run <command>systemctl start display-manager</command> to start KDE. If you
|
2016-03-05 23:59:08 +00:00
|
|
|
|
want to continue on the terminal, you can use
|
|
|
|
|
<command>loadkeys</command> to switch to your preferred keyboard layout.
|
|
|
|
|
(We even provide neo2 via <command>loadkeys de neo</command>!)</para></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2014-11-02 22:41:01 +00:00
|
|
|
|
<listitem><para>The boot process should have brought up networking (check
|
2014-11-27 11:09:17 +00:00
|
|
|
|
<command>ip a</command>). Networking is necessary for the
|
2014-11-02 22:41:01 +00:00
|
|
|
|
installer, since it will download lots of stuff (such as source
|
|
|
|
|
tarballs or Nixpkgs channel binaries). It’s best if you have a DHCP
|
|
|
|
|
server on your network. Otherwise configure networking manually
|
|
|
|
|
using <command>ifconfig</command>.</para>
|
|
|
|
|
<para>To manually configure the network on the graphical installer,
|
2014-11-27 11:09:17 +00:00
|
|
|
|
first disable network-manager with
|
2017-11-29 20:06:54 +00:00
|
|
|
|
<command>systemctl stop network-manager</command>.</para>
|
|
|
|
|
<para>To manually configure the wifi on the minimal installer, run
|
|
|
|
|
<command>wpa_supplicant -B -i interface -c <(wpa_passphrase 'SSID' 'key')</command>.</para></listitem>
|
|
|
|
|
|
2014-11-02 22:41:01 +00:00
|
|
|
|
|
2017-01-23 21:34:43 +00:00
|
|
|
|
<listitem><para>If you would like to continue the installation from a different
|
|
|
|
|
machine you need to activate the SSH daemon via <literal>systemctl start sshd</literal>.
|
|
|
|
|
In order to be able to login you also need to set a password for
|
2017-01-25 20:38:13 +00:00
|
|
|
|
<literal>root</literal> using <literal>passwd</literal>.</para></listitem>
|
2017-01-23 21:34:43 +00:00
|
|
|
|
|
2014-08-24 18:18:18 +01:00
|
|
|
|
<listitem><para>The NixOS installer doesn’t do any partitioning or
|
2015-12-26 18:36:19 +00:00
|
|
|
|
formatting yet, so you need to do that yourself. Use the following
|
2014-08-24 18:18:18 +01:00
|
|
|
|
commands:
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
|
|
<listitem><para>For partitioning:
|
2017-11-01 01:07:51 +00:00
|
|
|
|
<command>fdisk</command>.
|
|
|
|
|
<screen>
|
|
|
|
|
# fdisk /dev/sda # <lineannotation>(or whatever device you want to install on)</lineannotation>
|
|
|
|
|
-- for UEFI systems only
|
|
|
|
|
> n # <lineannotation>(create a new partition for /boot)</lineannotation>
|
|
|
|
|
> 3 # <lineannotation>(make it a partition number 3)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default)</lineannotation>
|
|
|
|
|
> +512M # <lineannotation>(the size of the UEFI boot partition)</lineannotation>
|
|
|
|
|
> t # <lineannotation>(change the partition type ...)</lineannotation>
|
|
|
|
|
> 3 # <lineannotation>(... of the boot partition ...)</lineannotation>
|
|
|
|
|
> 1 # <lineannotation>(... to 'UEFI System')</lineannotation>
|
|
|
|
|
-- for BIOS or UEFI systems
|
|
|
|
|
> n # <lineannotation>(create a new partition for /swap)</lineannotation>
|
|
|
|
|
> 2 # <lineannotation>(make it a partition number 2)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default)</lineannotation>
|
|
|
|
|
> +8G # <lineannotation>(the size of the swap partition, set to whatever you like)</lineannotation>
|
|
|
|
|
> n # <lineannotation>(create a new partition for /)</lineannotation>
|
|
|
|
|
> 1 # <lineannotation>(make it a partition number 1)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default and use the rest of the remaining space)</lineannotation>
|
|
|
|
|
> a # <lineannotation>(make the partition bootable)</lineannotation>
|
|
|
|
|
> x # <lineannotation>(enter expert mode)</lineannotation>
|
|
|
|
|
> f # <lineannotation>(fix up the partition ordering)</lineannotation>
|
|
|
|
|
> r # <lineannotation>(exit expert mode)</lineannotation>
|
|
|
|
|
> w # <lineannotation>(write the partition table to disk and exit)</lineannotation></screen></para></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<listitem><para>For initialising Ext4 partitions:
|
|
|
|
|
<command>mkfs.ext4</command>. It is recommended that you assign a
|
|
|
|
|
unique symbolic label to the file system using the option
|
|
|
|
|
<option>-L <replaceable>label</replaceable></option>, since this
|
|
|
|
|
makes the file system configuration independent from device
|
|
|
|
|
changes. For example:
|
|
|
|
|
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# mkfs.ext4 -L nixos /dev/sda1</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>For creating swap partitions:
|
|
|
|
|
<command>mkswap</command>. Again it’s recommended to assign a
|
|
|
|
|
label to the swap partition: <option>-L
|
2017-11-01 01:07:51 +00:00
|
|
|
|
<replaceable>label</replaceable></option>. For example:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
# mkswap -L swap /dev/sda2</screen>
|
|
|
|
|
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry><term>UEFI systems</term>
|
|
|
|
|
<listitem><para>For creating boot partitions:
|
|
|
|
|
<command>mkfs.fat</command>. Again it’s recommended to assign a
|
|
|
|
|
label to the boot partition: <option>-L
|
|
|
|
|
<replaceable>label</replaceable></option>. For example:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
# mkfs.fat -F 32 -L boot /dev/sda3</screen>
|
|
|
|
|
|
|
|
|
|
</para></listitem></varlistentry></variablelist></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<listitem><para>For creating LVM volumes, the LVM commands, e.g.,
|
|
|
|
|
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# pvcreate /dev/sda1 /dev/sdb1
|
|
|
|
|
# vgcreate MyVolGroup /dev/sda1 /dev/sdb1
|
|
|
|
|
# lvcreate --size 2G --name bigdisk MyVolGroup
|
|
|
|
|
# lvcreate --size 1G --name smalldisk MyVolGroup</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>For creating software RAID devices, use
|
|
|
|
|
<command>mdadm</command>.</para></listitem>
|
|
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Mount the target file system on which NixOS should
|
|
|
|
|
be installed on <filename>/mnt</filename>, e.g.
|
|
|
|
|
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# mount /dev/disk/by-label/nixos /mnt
|
2014-08-24 18:18:18 +01:00
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
2017-11-01 01:07:51 +00:00
|
|
|
|
<listitem>
|
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry><term>UEFI systems</term>
|
|
|
|
|
<listitem><para>Mount the boot file system on <filename>/mnt/boot</filename>, e.g.
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
# mount /dev/disk/by-label/boot /mnt/boot
|
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
|
|
</para></listitem></varlistentry></variablelist></listitem>
|
|
|
|
|
|
2014-08-24 18:18:18 +01:00
|
|
|
|
<listitem><para>If your machine has a limited amount of memory, you
|
|
|
|
|
may want to activate swap devices now (<command>swapon
|
|
|
|
|
<replaceable>device</replaceable></command>). The installer (or
|
|
|
|
|
rather, the build actions that it may spawn) may need quite a bit of
|
2017-11-01 01:07:51 +00:00
|
|
|
|
RAM, depending on your configuration.
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
# swapon /dev/sda2</screen>
|
|
|
|
|
|
|
|
|
|
</para></listitem>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
|
|
|
|
|
<para>You now need to create a file
|
|
|
|
|
<filename>/mnt/etc/nixos/configuration.nix</filename> that
|
|
|
|
|
specifies the intended configuration of the system. This is
|
|
|
|
|
because NixOS has a <emphasis>declarative</emphasis> configuration
|
|
|
|
|
model: you create or edit a description of the desired
|
|
|
|
|
configuration of your system, and then NixOS takes care of making
|
|
|
|
|
it happen. The syntax of the NixOS configuration file is
|
|
|
|
|
described in <xref linkend="sec-configuration-syntax"/>, while a
|
|
|
|
|
list of available configuration options appears in <xref
|
|
|
|
|
linkend="ch-options"/>. A minimal example is shown in <xref
|
|
|
|
|
linkend="ex-config"/>.</para>
|
|
|
|
|
|
|
|
|
|
<para>The command <command>nixos-generate-config</command> can
|
|
|
|
|
generate an initial configuration file for you:
|
|
|
|
|
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# nixos-generate-config --root /mnt</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
You should then edit
|
|
|
|
|
<filename>/mnt/etc/nixos/configuration.nix</filename> to suit your
|
|
|
|
|
needs:
|
|
|
|
|
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# nano /mnt/etc/nixos/configuration.nix
|
2014-08-24 18:18:18 +01:00
|
|
|
|
</screen>
|
|
|
|
|
|
2015-06-04 12:10:26 +01:00
|
|
|
|
If you’re using the graphical ISO image, other editors may be
|
|
|
|
|
available (such as <command>vim</command>). If you have network
|
|
|
|
|
access, you can also install other editors — for instance, you can
|
|
|
|
|
install Emacs by running <literal>nix-env -i
|
|
|
|
|
emacs</literal>.</para>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2017-11-01 01:07:51 +00:00
|
|
|
|
<variablelist>
|
|
|
|
|
|
|
|
|
|
<varlistentry><term>BIOS systems</term>
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<listitem><para>You <emphasis>must</emphasis> set the option
|
|
|
|
|
<xref linkend="opt-boot.loader.grub.device"/> to specify on which disk
|
|
|
|
|
the GRUB boot loader is to be installed. Without it, NixOS cannot
|
|
|
|
|
boot.</para></listitem></varlistentry>
|
2017-11-01 01:07:51 +00:00
|
|
|
|
|
|
|
|
|
<varlistentry><term>UEFI systems</term>
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<listitem><para>You <emphasis>must</emphasis> set the option
|
|
|
|
|
<xref linkend="opt-boot.loader.systemd-boot.enable"/> to <literal>true</literal>.
|
|
|
|
|
<command>nixos-generate-config</command> should do this automatically for new
|
|
|
|
|
configurations when booted in
|
|
|
|
|
UEFI mode.</para>
|
|
|
|
|
<para>You may want to look at the options starting with
|
|
|
|
|
<option><link linkend="opt-boot.loader.efi.canTouchEfiVariables">boot.loader.efi</link></option> and
|
|
|
|
|
<option><link linkend="opt-boot.loader.systemd-boot.enable">boot.loader.systemd</link></option> as well.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2017-11-01 01:07:51 +00:00
|
|
|
|
|
|
|
|
|
</variablelist>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2017-10-28 23:20:52 +01:00
|
|
|
|
<para>If there are other operating systems running on the machine before
|
|
|
|
|
installing NixOS, the
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<xref linkend="opt-boot.loader.grub.useOSProber"/> option can be set to
|
2017-10-28 23:20:52 +01:00
|
|
|
|
<literal>true</literal> to automatically add them to the grub menu.</para>
|
|
|
|
|
|
2014-08-24 18:18:18 +01:00
|
|
|
|
<para>Another critical option is <option>fileSystems</option>,
|
|
|
|
|
specifying the file systems that need to be mounted by NixOS.
|
|
|
|
|
However, you typically don’t need to set it yourself, because
|
|
|
|
|
<command>nixos-generate-config</command> sets it automatically in
|
|
|
|
|
<filename>/mnt/etc/nixos/hardware-configuration.nix</filename>
|
|
|
|
|
from your currently mounted file systems. (The configuration file
|
|
|
|
|
<filename>hardware-configuration.nix</filename> is included from
|
|
|
|
|
<filename>configuration.nix</filename> and will be overwritten by
|
|
|
|
|
future invocations of <command>nixos-generate-config</command>;
|
|
|
|
|
thus, you generally should not modify it.)</para>
|
|
|
|
|
|
|
|
|
|
<note><para>Depending on your hardware configuration or type of
|
|
|
|
|
file system, you may need to set the option
|
|
|
|
|
<option>boot.initrd.kernelModules</option> to include the kernel
|
|
|
|
|
modules that are necessary for mounting the root file system,
|
|
|
|
|
otherwise the installed system will not be able to boot. (If this
|
|
|
|
|
happens, boot from the CD again, mount the target file system on
|
|
|
|
|
<filename>/mnt</filename>, fix
|
|
|
|
|
<filename>/mnt/etc/nixos/configuration.nix</filename> and rerun
|
|
|
|
|
<filename>nixos-install</filename>.) In most cases,
|
|
|
|
|
<command>nixos-generate-config</command> will figure out the
|
|
|
|
|
required modules.</para></note>
|
|
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Do the installation:
|
|
|
|
|
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# nixos-install</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
Cross fingers. If this fails due to a temporary problem (such as
|
|
|
|
|
a network issue while downloading binaries from the NixOS binary
|
|
|
|
|
cache), you can just re-run <command>nixos-install</command>.
|
|
|
|
|
Otherwise, fix your <filename>configuration.nix</filename> and
|
|
|
|
|
then re-run <command>nixos-install</command>.</para>
|
|
|
|
|
|
|
|
|
|
<para>As the last step, <command>nixos-install</command> will ask
|
|
|
|
|
you to set the password for the <literal>root</literal> user, e.g.
|
|
|
|
|
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<screen>
|
|
|
|
|
setting root password...
|
|
|
|
|
Enter new UNIX password: ***
|
|
|
|
|
Retype new UNIX password: ***
|
|
|
|
|
</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2018-02-20 08:59:13 +00:00
|
|
|
|
<note>
|
|
|
|
|
<para>
|
2018-04-05 09:43:56 +01:00
|
|
|
|
To prevent the password prompt, set <code><xref linkend="opt-users.mutableUsers"/> = false;</code> in
|
2018-02-20 08:59:13 +00:00
|
|
|
|
<filename>configuration.nix</filename>, which allows unattended installation
|
|
|
|
|
necessary in automation.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
|
2014-08-24 18:18:18 +01:00
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
|
|
2018-02-20 08:59:13 +00:00
|
|
|
|
<listitem>
|
|
|
|
|
<para>If everything went well:
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<screen>
|
|
|
|
|
# reboot</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
|
|
2015-06-04 12:10:26 +01:00
|
|
|
|
<para>You should now be able to boot into the installed NixOS. The
|
2018-04-05 09:43:56 +01:00
|
|
|
|
GRUB boot menu shows a list of <emphasis>available
|
|
|
|
|
configurations</emphasis> (initially just one). Every time you
|
|
|
|
|
change the NixOS configuration (see <link
|
|
|
|
|
linkend="sec-changing-config">Changing Configuration</link> ), a
|
|
|
|
|
new item is added to the menu. This allows you to easily roll back
|
|
|
|
|
to a previous configuration if something goes wrong.</para>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
<para>You should log in and change the <literal>root</literal>
|
|
|
|
|
password with <command>passwd</command>.</para>
|
|
|
|
|
|
|
|
|
|
<para>You’ll probably want to create some user accounts as well,
|
|
|
|
|
which can be done with <command>useradd</command>:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ useradd -c 'Eelco Dolstra' -m eelco
|
|
|
|
|
$ passwd eelco</screen>
|
|
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>You may also want to install some software. For instance,
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-env -qa \*</screen>
|
|
|
|
|
|
|
|
|
|
shows what packages are available, and
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-env -i w3m</screen>
|
|
|
|
|
|
|
|
|
|
install the <literal>w3m</literal> browser.</para>
|
|
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
</orderedlist>
|
|
|
|
|
|
|
|
|
|
<para>To summarise, <xref linkend="ex-install-sequence" /> shows a
|
|
|
|
|
typical sequence of commands for installing NixOS on an empty hard
|
|
|
|
|
drive (here <filename>/dev/sda</filename>). <xref linkend="ex-config"
|
|
|
|
|
/> shows a corresponding configuration Nix expression.</para>
|
|
|
|
|
|
|
|
|
|
<example xml:id='ex-install-sequence'><title>Commands for Installing NixOS on <filename>/dev/sda</filename></title>
|
|
|
|
|
<screen>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# fdisk /dev/sda # <lineannotation>(or whatever device you want to install on)</lineannotation>
|
2017-11-01 01:07:51 +00:00
|
|
|
|
-- for UEFI systems only
|
|
|
|
|
> n # <lineannotation>(create a new partition for /boot)</lineannotation>
|
|
|
|
|
> 3 # <lineannotation>(make it a partition number 3)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default)</lineannotation>
|
|
|
|
|
> +512M # <lineannotation>(the size of the UEFI boot partition)</lineannotation>
|
|
|
|
|
> t # <lineannotation>(change the partition type ...)</lineannotation>
|
|
|
|
|
> 3 # <lineannotation>(... of the boot partition ...)</lineannotation>
|
|
|
|
|
> 1 # <lineannotation>(... to 'UEFI System')</lineannotation>
|
|
|
|
|
-- for BIOS or UEFI systems
|
|
|
|
|
> n # <lineannotation>(create a new partition for /swap)</lineannotation>
|
|
|
|
|
> 2 # <lineannotation>(make it a partition number 2)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default)</lineannotation>
|
|
|
|
|
> +8G # <lineannotation>(the size of the swap partition)</lineannotation>
|
|
|
|
|
> n # <lineannotation>(create a new partition for /)</lineannotation>
|
|
|
|
|
> 1 # <lineannotation>(make it a partition number 1)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default)</lineannotation>
|
|
|
|
|
> # <lineannotation>(press enter to accept the default and use the rest of the remaining space)</lineannotation>
|
|
|
|
|
> a # <lineannotation>(make the partition bootable)</lineannotation>
|
|
|
|
|
> x # <lineannotation>(enter expert mode)</lineannotation>
|
|
|
|
|
> f # <lineannotation>(fix up the partition ordering)</lineannotation>
|
|
|
|
|
> r # <lineannotation>(exit expert mode)</lineannotation>
|
|
|
|
|
> w # <lineannotation>(write the partition table to disk and exit)</lineannotation>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# mkfs.ext4 -L nixos /dev/sda1
|
|
|
|
|
# mkswap -L swap /dev/sda2
|
|
|
|
|
# swapon /dev/sda2
|
2017-11-01 01:07:51 +00:00
|
|
|
|
# mkfs.fat -F 32 -L boot /dev/sda3 # <lineannotation>(for UEFI systems only)</lineannotation>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# mount /dev/disk/by-label/nixos /mnt
|
2017-11-01 01:07:51 +00:00
|
|
|
|
# mount /dev/disk/by-label/boot /mnt/boot # <lineannotation>(for UEFI systems only)</lineannotation>
|
2016-06-01 15:23:32 +01:00
|
|
|
|
# nixos-generate-config --root /mnt
|
|
|
|
|
# nano /mnt/etc/nixos/configuration.nix
|
|
|
|
|
# nixos-install
|
|
|
|
|
# reboot</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
</example>
|
|
|
|
|
|
|
|
|
|
<example xml:id='ex-config'><title>NixOS Configuration</title>
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<screen>
|
|
|
|
|
{ config, pkgs, ... }:
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2018-04-05 09:43:56 +01:00
|
|
|
|
{
|
|
|
|
|
imports =
|
2014-08-24 18:18:18 +01:00
|
|
|
|
[ # Include the results of the hardware scan.
|
2018-04-05 09:43:56 +01:00
|
|
|
|
./hardware-configuration.nix
|
2014-08-24 18:18:18 +01:00
|
|
|
|
];
|
|
|
|
|
|
2018-04-05 09:43:56 +01:00
|
|
|
|
<xref linkend="opt-boot.loader.grub.device"/> = "/dev/sda"; # <lineannotation>(for BIOS systems only)</lineannotation>
|
|
|
|
|
<xref linkend="opt-boot.loader.systemd-boot.enable"/> = true; # <lineannotation>(for UEFI systems only)</lineannotation>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2018-04-05 09:43:56 +01:00
|
|
|
|
# Note: setting fileSystems is generally not
|
|
|
|
|
# necessary, since nixos-generate-config figures them out
|
|
|
|
|
# automatically in hardware-configuration.nix.
|
|
|
|
|
#<link linkend="opt-fileSystems._name__.device">fileSystems."/".device</link> = "/dev/disk/by-label/nixos";
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
2018-04-05 09:43:56 +01:00
|
|
|
|
# Enable the OpenSSH server.
|
|
|
|
|
services.sshd.enable = true;
|
|
|
|
|
}</screen>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
</example>
|
|
|
|
|
|
2014-08-26 14:45:47 +01:00
|
|
|
|
<xi:include href="installing-usb.xml" />
|
2016-04-29 10:41:13 +01:00
|
|
|
|
<xi:include href="installing-pxe.xml" />
|
2016-08-07 03:10:29 +01:00
|
|
|
|
<xi:include href="installing-virtualbox-guest.xml" />
|
2018-03-03 20:27:14 +00:00
|
|
|
|
<xi:include href="installing-from-other-distro.xml" />
|
2014-08-24 18:18:18 +01:00
|
|
|
|
|
|
|
|
|
</chapter>
|