2021-09-08 23:45:32 +08:00
|
|
|
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xml:id="sec-installation">
|
|
|
|
|
<title>Installing NixOS</title>
|
|
|
|
|
<section xml:id="sec-installation-booting">
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<title>Booting from the install medium</title>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
To begin the installation, you have to boot your computer from the
|
|
|
|
|
install drive.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<orderedlist numeration="arabic">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Plug in the install drive. Then turn on or restart your
|
|
|
|
|
computer.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Open the boot menu by pressing the appropriate key, which is
|
|
|
|
|
usually shown on the display on early boot. Select the USB
|
|
|
|
|
flash drive (the option usually contains the word
|
|
|
|
|
<quote>USB</quote>). If you choose the incorrect drive, your
|
|
|
|
|
computer will likely continue to boot as normal. In that case
|
|
|
|
|
restart your computer and pick a different drive.
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
The key to open the boot menu is different across computer
|
|
|
|
|
brands and even models. It can be <keycap>F12</keycap>, but
|
|
|
|
|
also <keycap>F1</keycap>, <keycap>F9</keycap>,
|
|
|
|
|
<keycap>F10</keycap>, <keycap>Enter</keycap>,
|
|
|
|
|
<keycap>Del</keycap>, <keycap>Esc</keycap> or another
|
|
|
|
|
function key. If you are unsure and don’t see it on the
|
|
|
|
|
early boot screen, you can search online for your computers
|
|
|
|
|
brand, model followed by <quote>boot from usb</quote>. The
|
|
|
|
|
computer might not even have that feature, so you have to go
|
|
|
|
|
into the BIOS/UEFI settings to change the boot order. Again,
|
|
|
|
|
search online for details about your specific computer
|
|
|
|
|
model.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
For Apple computers with Intel processors press and hold the
|
|
|
|
|
<keycap>⌥</keycap> (Option or Alt) key until you see the
|
|
|
|
|
boot menu. On Apple silicon press and hold the power button.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
If your computer supports both BIOS and UEFI boot, choose
|
|
|
|
|
the UEFI option.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
If you use a CD for the installation, the computer will
|
|
|
|
|
probably boot from it automatically. If not, choose the
|
|
|
|
|
option containing the word <quote>CD</quote> from the boot
|
|
|
|
|
menu.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Shortly after selecting the appropriate boot drive, you should
|
|
|
|
|
be presented with a menu with different installer options.
|
|
|
|
|
Leave the default and wait (or press <keycap>Enter</keycap> to
|
|
|
|
|
speed up).
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
The graphical images will start their corresponding desktop
|
|
|
|
|
environment and the graphical installer, which can take some
|
|
|
|
|
time. The minimal images will boot to a command line. You have
|
|
|
|
|
to follow the instructions in
|
|
|
|
|
<xref linkend="sec-installation-manual" /> there.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="sec-installation-graphical">
|
|
|
|
|
<title>Graphical Installation</title>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
The graphical installer is recommended for desktop users and will
|
|
|
|
|
guide you through the installation.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<orderedlist numeration="arabic">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
In the <quote>Welcome</quote> screen, you can select the
|
|
|
|
|
language of the Installer and the installed system.
|
|
|
|
|
</para>
|
|
|
|
|
<tip>
|
|
|
|
|
<para>
|
|
|
|
|
Leaving the language as <quote>American English</quote> will
|
|
|
|
|
make it easier to search for error messages in a search
|
|
|
|
|
engine or to report an issue.
|
|
|
|
|
</para>
|
|
|
|
|
</tip>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Next you should choose your location to have the timezone set
|
|
|
|
|
correctly. You can actually click on the map!
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
The installer will use an online service to guess your
|
|
|
|
|
location based on your public IP address.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Then you can select the keyboard layout. The default keyboard
|
|
|
|
|
model should work well with most desktop keyboards. If you
|
|
|
|
|
have a special keyboard or notebook, your model might be in
|
|
|
|
|
the list. Select the language you are most comfortable typing
|
|
|
|
|
in.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
On the <quote>Users</quote> screen, you have to type in your
|
|
|
|
|
display name, login name and password. You can also enable an
|
|
|
|
|
option to automatically login to the desktop.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Then you have the option to choose a desktop environment. If
|
|
|
|
|
you want to create a custom setup with a window manager, you
|
|
|
|
|
can select <quote>No desktop</quote>.
|
|
|
|
|
</para>
|
|
|
|
|
<tip>
|
|
|
|
|
<para>
|
|
|
|
|
If you don’t have a favorite desktop and don’t know which
|
|
|
|
|
one to choose, you can stick to either GNOME or Plasma. They
|
|
|
|
|
have a quite different design, so you should choose
|
|
|
|
|
whichever you like better. They are both popular choices and
|
|
|
|
|
well tested on NixOS.
|
|
|
|
|
</para>
|
|
|
|
|
</tip>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
You have the option to allow unfree software in the next
|
|
|
|
|
screen.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
The easiest option in the <quote>Partitioning</quote> screen
|
|
|
|
|
is <quote>Erase disk</quote>, which will delete all data from
|
|
|
|
|
the selected disk and install the system on it. Also select
|
|
|
|
|
<quote>Swap (with Hibernation)</quote> in the dropdown below
|
|
|
|
|
it. You have the option to encrypt the whole disk with LUKS.
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
At the top left you see if the Installer was booted with
|
|
|
|
|
BIOS or UEFI. If you know your system supports UEFI and it
|
|
|
|
|
shows <quote>BIOS</quote>, reboot with the correct option.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
<warning>
|
|
|
|
|
<para>
|
|
|
|
|
Make sure you have selected the correct disk at the top and
|
|
|
|
|
that no valuable data is still on the disk! It will be
|
|
|
|
|
deleted when formatting the disk.
|
|
|
|
|
</para>
|
|
|
|
|
</warning>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Check the choices you made in the <quote>Summary</quote> and
|
|
|
|
|
click <quote>Install</quote>.
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
The installation takes about 15 minutes. The time varies
|
|
|
|
|
based on the selected desktop environment, internet
|
|
|
|
|
connection speed and disk write speed.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
When the install is complete, remove the USB flash drive and
|
|
|
|
|
reboot into your new system!
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="sec-installation-manual">
|
|
|
|
|
<title>Manual Installation</title>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
NixOS can be installed on BIOS or UEFI systems. The procedure for
|
|
|
|
|
a UEFI installation is broadly the same as for a BIOS
|
|
|
|
|
installation. The differences are mentioned in the following
|
|
|
|
|
steps.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
The NixOS manual is available by running
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<literal>nixos-help</literal> in the command line or from the
|
|
|
|
|
application menu in the desktop environment.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
To have access to the command line on the graphical images, open
|
|
|
|
|
Terminal (GNOME) or Konsole (Plasma) from the application menu.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
You are logged-in automatically as <literal>nixos</literal>. The
|
|
|
|
|
<literal>nixos</literal> user account has an empty password so you
|
2021-10-13 15:41:50 -04:00
|
|
|
|
can use <literal>sudo</literal> without a password:
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2021-10-13 15:41:50 -04:00
|
|
|
|
<programlisting>
|
|
|
|
|
$ sudo -i
|
|
|
|
|
</programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
You can use <literal>loadkeys</literal> to switch to your
|
|
|
|
|
preferred keyboard layout. (We even provide neo2 via
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<literal>loadkeys de neo</literal>!)
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
If the text is too small to be legible, try
|
|
|
|
|
<literal>setfont ter-v32n</literal> to increase the font size.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
To install over a serial port connect with
|
|
|
|
|
<literal>115200n8</literal> (e.g.
|
|
|
|
|
<literal>picocom -b 115200 /dev/ttyUSB0</literal>). When the
|
|
|
|
|
bootloader lists boot entries, select the serial console boot
|
|
|
|
|
entry.
|
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<section xml:id="sec-installation-manual-networking">
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<title>Networking in the installer</title>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<para>
|
|
|
|
|
<anchor xml:id="sec-installation-booting-networking" />
|
|
|
|
|
<!-- legacy anchor -->
|
|
|
|
|
</para>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
|
|
|
|
The boot process should have brought up networking (check
|
|
|
|
|
<literal>ip a</literal>). Networking is necessary for the
|
|
|
|
|
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 <literal>ifconfig</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
On the graphical installer, you can configure the network, wifi
|
|
|
|
|
included, through NetworkManager. Using the
|
|
|
|
|
<literal>nmtui</literal> program, you can do so even in a
|
|
|
|
|
non-graphical session. If you prefer to configure the network
|
|
|
|
|
manually, disable NetworkManager with
|
|
|
|
|
<literal>systemctl stop NetworkManager</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
On the minimal installer, NetworkManager is not available, so
|
|
|
|
|
configuration must be perfomed manually. To configure the wifi,
|
|
|
|
|
first start wpa_supplicant with
|
|
|
|
|
<literal>sudo systemctl start wpa_supplicant</literal>, then run
|
|
|
|
|
<literal>wpa_cli</literal>. For most home networks, you need to
|
|
|
|
|
type in the following commands:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
|
|
|
|
> add_network
|
|
|
|
|
0
|
|
|
|
|
> set_network 0 ssid "myhomenetwork"
|
|
|
|
|
OK
|
|
|
|
|
> set_network 0 psk "mypassword"
|
|
|
|
|
OK
|
|
|
|
|
> set_network 0 key_mgmt WPA-PSK
|
|
|
|
|
OK
|
|
|
|
|
> enable_network 0
|
|
|
|
|
OK
|
|
|
|
|
</programlisting>
|
|
|
|
|
<para>
|
|
|
|
|
For enterprise networks, for example
|
|
|
|
|
<emphasis>eduroam</emphasis>, instead do:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
|
|
|
|
> add_network
|
|
|
|
|
0
|
|
|
|
|
> set_network 0 ssid "eduroam"
|
|
|
|
|
OK
|
|
|
|
|
> set_network 0 identity "myname@example.com"
|
|
|
|
|
OK
|
|
|
|
|
> set_network 0 password "mypassword"
|
|
|
|
|
OK
|
|
|
|
|
> set_network 0 key_mgmt WPA-EAP
|
|
|
|
|
OK
|
|
|
|
|
> enable_network 0
|
|
|
|
|
OK
|
|
|
|
|
</programlisting>
|
|
|
|
|
<para>
|
|
|
|
|
When successfully connected, you should see a line such as this
|
|
|
|
|
one
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
|
|
|
|
<3>CTRL-EVENT-CONNECTED - Connection to 32:85:ab:ef:24:5c completed [id=0 id_str=]
|
|
|
|
|
</programlisting>
|
|
|
|
|
<para>
|
|
|
|
|
you can now leave <literal>wpa_cli</literal> by typing
|
|
|
|
|
<literal>quit</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
If you would like to continue the installation from a different
|
|
|
|
|
machine you can use activated SSH daemon. You need to copy your
|
|
|
|
|
ssh key to either
|
|
|
|
|
<literal>/home/nixos/.ssh/authorized_keys</literal> or
|
|
|
|
|
<literal>/root/.ssh/authorized_keys</literal> (Tip: For
|
|
|
|
|
installers with a modifiable filesystem such as the sd-card
|
|
|
|
|
installer image a key can be manually placed by mounting the
|
|
|
|
|
image on a different machine). Alternatively you must set a
|
|
|
|
|
password for either <literal>root</literal> or
|
|
|
|
|
<literal>nixos</literal> with <literal>passwd</literal> to be
|
|
|
|
|
able to login.
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<section xml:id="sec-installation-manual-partitioning">
|
|
|
|
|
<title>Partitioning and formatting</title>
|
|
|
|
|
<para>
|
|
|
|
|
<anchor xml:id="sec-installation-partitioning" />
|
|
|
|
|
<!-- legacy anchor -->
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
The NixOS installer doesn’t do any partitioning or formatting,
|
|
|
|
|
so you need to do that yourself.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
The NixOS installer ships with multiple partitioning tools. The
|
|
|
|
|
examples below use <literal>parted</literal>, but also provides
|
|
|
|
|
<literal>fdisk</literal>, <literal>gdisk</literal>,
|
|
|
|
|
<literal>cfdisk</literal>, and <literal>cgdisk</literal>.
|
|
|
|
|
</para>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
The recommended partition scheme differs depending if the
|
|
|
|
|
computer uses <emphasis>Legacy Boot</emphasis> or
|
|
|
|
|
<emphasis>UEFI</emphasis>.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<section xml:id="sec-installation-manual-partitioning-UEFI">
|
|
|
|
|
<title>UEFI (GPT)</title>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<anchor xml:id="sec-installation-partitioning-UEFI" />
|
|
|
|
|
<!-- legacy anchor -->
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<para>
|
|
|
|
|
Here's an example partition scheme for UEFI, using
|
|
|
|
|
<literal>/dev/sda</literal> as the device.
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
You can safely ignore <literal>parted</literal>'s
|
|
|
|
|
informational message about needing to update /etc/fstab.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</note>
|
|
|
|
|
<orderedlist numeration="arabic">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Create a <emphasis>GPT</emphasis> partition table.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# parted /dev/sda -- mklabel gpt
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Add the <emphasis>root</emphasis> partition. This will
|
|
|
|
|
fill the disk except for the end part, where the swap will
|
|
|
|
|
live, and the space left in front (512MiB) which will be
|
|
|
|
|
used by the boot partition.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-04 20:17:14 +02:00
|
|
|
|
# parted /dev/sda -- mkpart primary 512MB -8GB
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Next, add a <emphasis>swap</emphasis> partition. The size
|
|
|
|
|
required will vary according to needs, here a 8GB one is
|
|
|
|
|
created.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-04 20:17:14 +02:00
|
|
|
|
# parted /dev/sda -- mkpart primary linux-swap -8GB 100%
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
The swap partition size rules are no different than for
|
|
|
|
|
other Linux distributions.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
Finally, the <emphasis>boot</emphasis> partition. NixOS by
|
|
|
|
|
default uses the ESP (EFI system partition) as its
|
|
|
|
|
<emphasis>/boot</emphasis> partition. It uses the
|
|
|
|
|
initially reserved 512MiB at the start of the disk.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<programlisting>
|
2022-05-04 20:17:14 +02:00
|
|
|
|
# parted /dev/sda -- mkpart ESP fat32 1MB 512MB
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# parted /dev/sda -- set 3 esp on
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
Once complete, you can follow with
|
|
|
|
|
<xref linkend="sec-installation-manual-partitioning-formatting" />.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="sec-installation-manual-partitioning-MBR">
|
|
|
|
|
<title>Legacy Boot (MBR)</title>
|
|
|
|
|
<para>
|
|
|
|
|
<anchor xml:id="sec-installation-partitioning-MBR" />
|
|
|
|
|
<!-- legacy anchor -->
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Here's an example partition scheme for Legacy Boot, using
|
|
|
|
|
<literal>/dev/sda</literal> as the device.
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
You can safely ignore <literal>parted</literal>'s
|
|
|
|
|
informational message about needing to update /etc/fstab.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</note>
|
|
|
|
|
<orderedlist numeration="arabic">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Create a <emphasis>MBR</emphasis> partition table.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# parted /dev/sda -- mklabel msdos
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Add the <emphasis>root</emphasis> partition. This will
|
|
|
|
|
fill the the disk except for the end part, where the swap
|
|
|
|
|
will live.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-04 20:17:14 +02:00
|
|
|
|
# parted /dev/sda -- mkpart primary 1MB -8GB
|
2022-08-25 16:44:10 +01:00
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Set the root partition’s boot flag to on. This allows the
|
|
|
|
|
disk to be booted from.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-08-25 16:44:10 +01:00
|
|
|
|
# parted /dev/sda -- set 1 boot on
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Finally, add a <emphasis>swap</emphasis> partition. The
|
2022-11-08 08:46:20 +01:00
|
|
|
|
size required will vary according to needs, here a 8GB one
|
|
|
|
|
is created.
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-04 20:17:14 +02:00
|
|
|
|
# parted /dev/sda -- mkpart primary linux-swap -8GB 100%
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
The swap partition size rules are no different than for
|
|
|
|
|
other Linux distributions.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
<para>
|
|
|
|
|
Once complete, you can follow with
|
|
|
|
|
<xref linkend="sec-installation-manual-partitioning-formatting" />.
|
|
|
|
|
</para>
|
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="sec-installation-manual-partitioning-formatting">
|
|
|
|
|
<title>Formatting</title>
|
|
|
|
|
<para>
|
|
|
|
|
<anchor xml:id="sec-installation-partitioning-formatting" />
|
|
|
|
|
<!-- legacy anchor -->
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Use the following commands:
|
|
|
|
|
</para>
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
<listitem>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
For initialising Ext4 partitions:
|
|
|
|
|
<literal>mkfs.ext4</literal>. It is recommended that you
|
|
|
|
|
assign a unique symbolic label to the file system using
|
|
|
|
|
the option <literal>-L label</literal>, since this makes
|
|
|
|
|
the file system configuration independent from device
|
|
|
|
|
changes. For example:
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<programlisting>
|
|
|
|
|
# mkfs.ext4 -L nixos /dev/sda1
|
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
For creating swap partitions: <literal>mkswap</literal>.
|
|
|
|
|
Again it’s recommended to assign a label to the swap
|
|
|
|
|
partition: <literal>-L label</literal>. For example:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
|
|
|
|
# mkswap -L swap /dev/sda2
|
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
<emphasis role="strong">UEFI systems</emphasis>
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
For creating boot partitions: <literal>mkfs.fat</literal>.
|
|
|
|
|
Again it’s recommended to assign a label to the boot
|
|
|
|
|
partition: <literal>-n label</literal>. For example:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
|
|
|
|
# mkfs.fat -F 32 -n boot /dev/sda3
|
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
For creating LVM volumes, the LVM commands, e.g.,
|
|
|
|
|
<literal>pvcreate</literal>, <literal>vgcreate</literal>,
|
|
|
|
|
and <literal>lvcreate</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
For creating software RAID devices, use
|
|
|
|
|
<literal>mdadm</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
</section>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</section>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<section xml:id="sec-installation-manual-installing">
|
|
|
|
|
<title>Installing</title>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<anchor xml:id="sec-installation-installing" />
|
|
|
|
|
<!-- legacy anchor -->
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<orderedlist numeration="arabic">
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
Mount the target file system on which NixOS should be
|
|
|
|
|
installed on <literal>/mnt</literal>, e.g.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
# mount /dev/disk/by-label/nixos /mnt
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<emphasis role="strong">UEFI systems</emphasis>
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Mount the boot file system on <literal>/mnt/boot</literal>,
|
|
|
|
|
e.g.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
# mkdir -p /mnt/boot
|
|
|
|
|
# mount /dev/disk/by-label/boot /mnt/boot
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
If your machine has a limited amount of memory, you may want
|
|
|
|
|
to activate swap devices now
|
|
|
|
|
(<literal>swapon device</literal>). The installer (or
|
|
|
|
|
rather, the build actions that it may spawn) may need quite
|
|
|
|
|
a bit of RAM, depending on your configuration.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
# swapon /dev/sda2
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
You now need to create a file
|
|
|
|
|
<literal>/mnt/etc/nixos/configuration.nix</literal> 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
|
|
|
|
|
<link linkend="ex-config">Example: NixOS
|
|
|
|
|
Configuration</link>.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
The command <literal>nixos-generate-config</literal> can
|
|
|
|
|
generate an initial configuration file for you:
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# nixos-generate-config --root /mnt
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<para>
|
|
|
|
|
You should then edit
|
|
|
|
|
<literal>/mnt/etc/nixos/configuration.nix</literal> to suit
|
|
|
|
|
your needs:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# nano /mnt/etc/nixos/configuration.nix
|
|
|
|
|
</programlisting>
|
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
If you’re using the graphical ISO image, other editors may
|
|
|
|
|
be available (such as <literal>vim</literal>). If you have
|
|
|
|
|
network access, you can also install other editors – for
|
|
|
|
|
instance, you can install Emacs by running
|
|
|
|
|
<literal>nix-env -f '<nixpkgs>' -iA emacs</literal>.
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
BIOS systems
|
|
|
|
|
</term>
|
|
|
|
|
<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>
|
|
|
|
|
<para>
|
|
|
|
|
If there are other operating systems running on the
|
|
|
|
|
machine before installing NixOS, the
|
|
|
|
|
<xref linkend="opt-boot.loader.grub.useOSProber" />
|
|
|
|
|
option can be set to <literal>true</literal> to
|
|
|
|
|
automatically add them to the grub menu.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
UEFI systems
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
You must select a boot-loader, either system-boot or
|
|
|
|
|
GRUB. The recommended option is systemd-boot: set the
|
|
|
|
|
option
|
|
|
|
|
<xref linkend="opt-boot.loader.systemd-boot.enable" />
|
|
|
|
|
to <literal>true</literal>.
|
|
|
|
|
<literal>nixos-generate-config</literal> should do
|
|
|
|
|
this automatically for new configurations when booted
|
|
|
|
|
in UEFI mode.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
You may want to look at the options starting with
|
|
|
|
|
<link linkend="opt-boot.loader.efi.canTouchEfiVariables"><literal>boot.loader.efi</literal></link>
|
|
|
|
|
and
|
|
|
|
|
<link linkend="opt-boot.loader.systemd-boot.enable"><literal>boot.loader.systemd-boot</literal></link>
|
|
|
|
|
as well.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
If you want to use GRUB, set
|
|
|
|
|
<xref linkend="opt-boot.loader.grub.device" /> to
|
|
|
|
|
<literal>nodev</literal> and
|
|
|
|
|
<xref linkend="opt-boot.loader.grub.efiSupport" /> to
|
|
|
|
|
<literal>true</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
With system-boot, you should not need any special
|
|
|
|
|
configuration to detect other installed systems. With
|
|
|
|
|
GRUB, set
|
|
|
|
|
<xref linkend="opt-boot.loader.grub.useOSProber" /> to
|
|
|
|
|
<literal>true</literal>, but this will only detect
|
|
|
|
|
windows partitions, not other linux distributions. If
|
|
|
|
|
you dual boot another linux distribution, use
|
|
|
|
|
system-boot instead.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
</variablelist>
|
|
|
|
|
<para>
|
|
|
|
|
If you need to configure networking for your machine the
|
|
|
|
|
configuration options are described in
|
|
|
|
|
<xref linkend="sec-networking" />. In particular, while wifi
|
|
|
|
|
is supported on the installation image, it is not enabled by
|
|
|
|
|
default in the configuration generated by
|
|
|
|
|
<literal>nixos-generate-config</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Another critical option is <literal>fileSystems</literal>,
|
|
|
|
|
specifying the file systems that need to be mounted by
|
|
|
|
|
NixOS. However, you typically don’t need to set it yourself,
|
|
|
|
|
because <literal>nixos-generate-config</literal> sets it
|
|
|
|
|
automatically in
|
|
|
|
|
<literal>/mnt/etc/nixos/hardware-configuration.nix</literal>
|
|
|
|
|
from your currently mounted file systems. (The configuration
|
|
|
|
|
file <literal>hardware-configuration.nix</literal> is
|
|
|
|
|
included from <literal>configuration.nix</literal> and will
|
|
|
|
|
be overwritten by future invocations of
|
|
|
|
|
<literal>nixos-generate-config</literal>; thus, you
|
|
|
|
|
generally should not modify it.) Additionally, you may want
|
|
|
|
|
to look at
|
|
|
|
|
<link xlink:href="https://github.com/NixOS/nixos-hardware">Hardware
|
|
|
|
|
configuration for known-hardware</link> at this point or
|
|
|
|
|
after installation.
|
|
|
|
|
</para>
|
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
Depending on your hardware configuration or type of file
|
|
|
|
|
system, you may need to set the option
|
|
|
|
|
<literal>boot.initrd.kernelModules</literal> 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
|
|
|
|
|
installation media again, mount the target file system on
|
|
|
|
|
<literal>/mnt</literal>, fix
|
|
|
|
|
<literal>/mnt/etc/nixos/configuration.nix</literal> and
|
|
|
|
|
rerun <literal>nixos-install</literal>.) In most cases,
|
|
|
|
|
<literal>nixos-generate-config</literal> will figure out
|
|
|
|
|
the required modules.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
Do the installation:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# nixos-install
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<para>
|
|
|
|
|
This will install your system based on the configuration you
|
|
|
|
|
provided. If anything fails due to a configuration problem
|
|
|
|
|
or any other issue (such as a network outage while
|
|
|
|
|
downloading binaries from the NixOS binary cache), you can
|
|
|
|
|
re-run <literal>nixos-install</literal> after fixing your
|
|
|
|
|
<literal>configuration.nix</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
As the last step, <literal>nixos-install</literal> will ask
|
|
|
|
|
you to set the password for the <literal>root</literal>
|
|
|
|
|
user, e.g.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
setting root password...
|
|
|
|
|
New password: ***
|
|
|
|
|
Retype new password: ***
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<note>
|
|
|
|
|
<para>
|
|
|
|
|
For unattended installations, it is possible to use
|
|
|
|
|
<literal>nixos-install --no-root-passwd</literal> in order
|
|
|
|
|
to disable the password prompt entirely.
|
|
|
|
|
</para>
|
|
|
|
|
</note>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
If everything went well:
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</para>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# reboot
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
You should now be able to boot into the installed NixOS. The
|
|
|
|
|
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>
|
|
|
|
|
<para>
|
|
|
|
|
You should log in and change the <literal>root</literal>
|
|
|
|
|
password with <literal>passwd</literal>.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
You’ll probably want to create some user accounts as well,
|
|
|
|
|
which can be done with <literal>useradd</literal>:
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
$ useradd -c 'Eelco Dolstra' -m eelco
|
|
|
|
|
$ passwd eelco
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<para>
|
|
|
|
|
You may also want to install some software. This will be
|
|
|
|
|
covered in <xref linkend="sec-package-management" />.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</orderedlist>
|
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="sec-installation-manual-summary">
|
|
|
|
|
<title>Installation summary</title>
|
|
|
|
|
<para>
|
|
|
|
|
<anchor xml:id="sec-installation-summary" />
|
|
|
|
|
<!-- legacy anchor -->
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
To summarise, <link linkend="ex-install-sequence">Example:
|
|
|
|
|
Commands for Installing NixOS on
|
|
|
|
|
<literal>/dev/sda</literal></link> shows a typical sequence of
|
|
|
|
|
commands for installing NixOS on an empty hard drive (here
|
|
|
|
|
<literal>/dev/sda</literal>). <link linkend="ex-config">Example:
|
|
|
|
|
NixOS Configuration</link> shows a corresponding configuration
|
|
|
|
|
Nix expression.
|
|
|
|
|
</para>
|
|
|
|
|
<anchor xml:id="ex-partition-scheme-MBR" />
|
|
|
|
|
<para>
|
|
|
|
|
<emphasis role="strong">Example: Example partition schemes for
|
|
|
|
|
NixOS on <literal>/dev/sda</literal> (MBR)</emphasis>
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# parted /dev/sda -- mklabel msdos
|
2022-11-08 08:46:20 +01:00
|
|
|
|
# parted /dev/sda -- mkpart primary 1MB -8GB
|
|
|
|
|
# parted /dev/sda -- mkpart primary linux-swap -8GB 100%
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<anchor xml:id="ex-partition-scheme-UEFI" />
|
|
|
|
|
<para>
|
|
|
|
|
<emphasis role="strong">Example: Example partition schemes for
|
|
|
|
|
NixOS on <literal>/dev/sda</literal> (UEFI)</emphasis>
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# parted /dev/sda -- mklabel gpt
|
2022-11-08 08:46:20 +01:00
|
|
|
|
# parted /dev/sda -- mkpart primary 512MB -8GB
|
|
|
|
|
# parted /dev/sda -- mkpart primary linux-swap -8GB 100%
|
|
|
|
|
# parted /dev/sda -- mkpart ESP fat32 1MB 512MB
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# parted /dev/sda -- set 3 esp on
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<anchor xml:id="ex-install-sequence" />
|
|
|
|
|
<para>
|
|
|
|
|
<emphasis role="strong">Example: Commands for Installing NixOS
|
|
|
|
|
on <literal>/dev/sda</literal></emphasis>
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
With a partitioned disk.
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
# mkfs.ext4 -L nixos /dev/sda1
|
|
|
|
|
# mkswap -L swap /dev/sda2
|
|
|
|
|
# swapon /dev/sda2
|
|
|
|
|
# mkfs.fat -F 32 -n boot /dev/sda3 # (for UEFI systems only)
|
|
|
|
|
# mount /dev/disk/by-label/nixos /mnt
|
|
|
|
|
# mkdir -p /mnt/boot # (for UEFI systems only)
|
|
|
|
|
# mount /dev/disk/by-label/boot /mnt/boot # (for UEFI systems only)
|
|
|
|
|
# nixos-generate-config --root /mnt
|
|
|
|
|
# nano /mnt/etc/nixos/configuration.nix
|
|
|
|
|
# nixos-install
|
|
|
|
|
# reboot
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
<anchor xml:id="ex-config" />
|
|
|
|
|
<para>
|
|
|
|
|
<emphasis role="strong">Example: NixOS Configuration</emphasis>
|
|
|
|
|
</para>
|
|
|
|
|
<programlisting>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
{ config, pkgs, ... }: {
|
|
|
|
|
imports = [
|
|
|
|
|
# Include the results of the hardware scan.
|
|
|
|
|
./hardware-configuration.nix
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
boot.loader.grub.device = "/dev/sda"; # (for BIOS systems only)
|
|
|
|
|
boot.loader.systemd-boot.enable = true; # (for UEFI systems only)
|
|
|
|
|
|
|
|
|
|
# Note: setting fileSystems is generally not
|
|
|
|
|
# necessary, since nixos-generate-config figures them out
|
|
|
|
|
# automatically in hardware-configuration.nix.
|
|
|
|
|
#fileSystems."/".device = "/dev/disk/by-label/nixos";
|
|
|
|
|
|
|
|
|
|
# Enable the OpenSSH server.
|
|
|
|
|
services.sshd.enable = true;
|
|
|
|
|
}
|
|
|
|
|
</programlisting>
|
2022-05-27 23:38:35 +02:00
|
|
|
|
</section>
|
2021-09-08 23:45:32 +08:00
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="sec-installation-additional-notes">
|
|
|
|
|
<title>Additional installation notes</title>
|
|
|
|
|
<xi:include href="installing-usb.section.xml" />
|
|
|
|
|
<xi:include href="installing-pxe.section.xml" />
|
2022-06-09 20:08:34 +02:00
|
|
|
|
<xi:include href="installing-kexec.section.xml" />
|
2021-09-08 23:45:32 +08:00
|
|
|
|
<xi:include href="installing-virtualbox-guest.section.xml" />
|
|
|
|
|
<xi:include href="installing-from-other-distro.section.xml" />
|
|
|
|
|
<xi:include href="installing-behind-a-proxy.section.xml" />
|
|
|
|
|
</section>
|
|
|
|
|
</chapter>
|