2013-10-13 07:57:09 -07:00
<refentry xmlns= "http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
2018-05-01 16:57:09 -07:00
<refmeta >
<refentrytitle > <command > nixos-install</command>
</refentrytitle> <manvolnum > 8</manvolnum>
2013-10-13 07:57:09 -07:00
<refmiscinfo class= "source" > NixOS</refmiscinfo>
2018-05-01 16:57:09 -07:00
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv >
<refname > <command > nixos-install</command>
</refname> <refpurpose > install bootloader and NixOS</refpurpose>
</refnamediv>
<refsynopsisdiv >
2018-05-31 18:03:51 -07:00
<cmdsynopsis >
2019-09-18 13:13:35 -07:00
<command > nixos-install</command>
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > -I</option>
</arg>
<replaceable > path</replaceable>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --root</option>
</arg>
<replaceable > root</replaceable>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --system</option>
</arg>
<replaceable > path</replaceable>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --no-channel-copy</option>
2015-01-06 05:49:18 -08:00
</arg>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --no-root-passwd</option>
2015-01-06 05:49:18 -08:00
</arg>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --no-bootloader</option>
2016-07-24 06:45:24 -07:00
</arg>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-31 18:03:51 -07:00
<arg >
2019-09-18 13:13:35 -07:00
<group choice= 'req' >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --max-jobs</option>
2016-07-24 06:45:24 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > -j</option>
</arg>
2018-05-31 18:07:15 -07:00
</group> <replaceable > number</replaceable>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-31 18:03:51 -07:00
<arg >
2018-05-31 18:07:15 -07:00
<option > --cores</option> <replaceable > number</replaceable>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-31 18:03:51 -07:00
<arg >
2018-05-31 18:07:15 -07:00
<option > --option</option> <replaceable > name</replaceable> <replaceable > value</replaceable>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --show-trace</option>
2016-07-24 06:45:24 -07:00
</arg>
2018-05-01 16:57:09 -07:00
</arg>
2019-09-18 13:13:35 -07:00
2018-05-01 16:57:09 -07:00
<arg >
2018-05-31 18:03:51 -07:00
<arg choice= 'plain' >
<option > --help</option>
2015-01-06 05:49:18 -08:00
</arg>
2018-05-01 16:57:09 -07:00
</arg>
2013-10-13 07:57:09 -07:00
</cmdsynopsis>
2018-05-01 16:57:09 -07:00
</refsynopsisdiv>
<refsection >
<title > Description</title>
<para >
2019-09-18 13:13:35 -07:00
This command installs NixOS in the file system mounted on <filename > /mnt</filename> , based on the NixOS configuration specified in <filename > /mnt/etc/nixos/configuration.nix</filename> . It performs the following steps:
2018-05-01 16:57:09 -07:00
<itemizedlist >
<listitem >
<para >
2019-09-18 13:13:35 -07:00
It copies Nix and its dependencies to <filename > /mnt/nix/store</filename> .
2018-05-01 16:57:09 -07:00
</para>
</listitem>
<listitem >
<para >
2019-09-18 13:13:35 -07:00
It runs Nix in <filename > /mnt</filename> to build the NixOS configuration specified in <filename > /mnt/etc/nixos/configuration.nix</filename> .
2018-05-01 16:57:09 -07:00
</para>
</listitem>
<listitem >
<para >
2019-09-18 13:13:35 -07:00
It installs the GRUB boot loader on the device specified in the option <option > boot.loader.grub.device</option> (unless <option > --no-bootloader</option> is specified), and generates a GRUB configuration file that boots into the NixOS configuration just installed.
2018-05-01 16:57:09 -07:00
</para>
</listitem>
<listitem >
<para >
2019-09-18 13:13:35 -07:00
It prompts you for a password for the root account (unless <option > --no-root-passwd</option> is specified).
2018-05-01 16:57:09 -07:00
</para>
</listitem>
</itemizedlist>
</para>
<para >
2019-09-18 13:13:35 -07:00
This command is idempotent: if it is interrupted or fails due to a temporary problem (e.g. a network issue), you can safely re-run it.
2018-05-01 16:57:09 -07:00
</para>
</refsection>
<refsection >
<title > Options</title>
<para >
This command accepts the following options:
</para>
<variablelist >
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > --root</option>
2018-05-01 16:57:09 -07:00
</term>
<listitem >
<para >
2019-09-18 13:13:35 -07:00
Defaults to <filename > /mnt</filename> . If this option is given, treat the directory <replaceable > root</replaceable> as the root of the NixOS installation.
2018-05-01 16:57:09 -07:00
</para>
</listitem>
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > --system</option>
2018-05-01 16:57:09 -07:00
</term>
<listitem >
<para >
2019-09-18 13:13:35 -07:00
If this option is provided, <command > nixos-install</command> will install the specified closure rather than attempt to build one from <filename > /mnt/etc/nixos/configuration.nix</filename> .
2018-05-01 16:57:09 -07:00
</para>
<para >
2019-09-18 13:13:35 -07:00
The closure must be an appropriately configured NixOS system, with boot loader and partition configuration that fits the target host. Such a closure is typically obtained with a command such as <command > nix-build -I nixos-config=./configuration.nix '< nixos> ' -A system --no-out-link</command>
2018-05-01 16:57:09 -07:00
</para>
</listitem>
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > -I</option>
2018-05-01 16:57:09 -07:00
</term>
<listitem >
<para >
2019-09-18 13:13:35 -07:00
Add a path to the Nix expression search path. This option may be given multiple times. See the NIX_PATH environment variable for information on the semantics of the Nix search path. Paths added through <replaceable > -I</replaceable> take precedence over NIX_PATH.
2018-05-01 16:57:09 -07:00
</para>
</listitem>
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > --max-jobs</option>
2018-05-01 16:57:09 -07:00
</term>
2018-05-31 18:03:51 -07:00
<term >
<option > -j</option>
2018-05-01 16:57:09 -07:00
</term>
2015-01-06 05:49:18 -08:00
<listitem >
2018-05-01 16:57:09 -07:00
<para >
2019-09-18 13:13:35 -07:00
Sets the maximum number of build jobs that Nix will perform in parallel to the specified number. The default is <literal > 1</literal> . A higher value is useful on SMP systems or to exploit I/O latency.
2018-05-01 16:57:09 -07:00
</para>
2016-07-24 06:45:24 -07:00
</listitem>
2018-05-01 16:57:09 -07:00
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > --cores</option>
2018-05-01 16:57:09 -07:00
</term>
2016-07-24 06:45:24 -07:00
<listitem >
2018-05-01 16:57:09 -07:00
<para >
2019-09-18 13:13:35 -07:00
Sets the value of the <envar > NIX_BUILD_CORES</envar> environment variable in the invocation of builders. Builders can use this variable at their discretion to control the maximum amount of parallelism. For instance, in Nixpkgs, if the derivation attribute <varname > enableParallelBuilding</varname> is set to <literal > true</literal> , the builder passes the <option > -j<replaceable > N</replaceable> </option> flag to GNU Make. The value <literal > 0</literal> means that the builder should use all available CPU cores in the system.
2018-05-01 16:57:09 -07:00
</para>
2015-01-06 05:49:18 -08:00
</listitem>
2018-05-01 16:57:09 -07:00
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
2018-05-31 18:07:15 -07:00
<option > --option</option> <replaceable > name</replaceable> <replaceable > value</replaceable>
2018-05-01 16:57:09 -07:00
</term>
2015-01-06 05:49:18 -08:00
<listitem >
2018-05-01 16:57:09 -07:00
<para >
2019-09-18 13:13:35 -07:00
Set the Nix configuration option <replaceable > name</replaceable> to <replaceable > value</replaceable> .
2018-05-01 16:57:09 -07:00
</para>
2015-01-06 05:49:18 -08:00
</listitem>
2018-05-01 16:57:09 -07:00
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > --show-trace</option>
2018-05-01 16:57:09 -07:00
</term>
2015-01-06 05:49:18 -08:00
<listitem >
2018-05-01 16:57:09 -07:00
<para >
2019-09-18 13:13:35 -07:00
Causes Nix to print out a stack trace in case of Nix expression evaluation errors.
2018-05-01 16:57:09 -07:00
</para>
2015-01-06 05:49:18 -08:00
</listitem>
2018-05-01 16:57:09 -07:00
</varlistentry>
<varlistentry >
2018-05-31 18:03:51 -07:00
<term >
<option > --help</option>
2018-05-01 16:57:09 -07:00
</term>
2015-01-06 05:49:18 -08:00
<listitem >
2018-05-01 16:57:09 -07:00
<para >
Synonym for <command > man nixos-install</command> .
</para>
2015-01-06 05:49:18 -08:00
</listitem>
2018-05-01 16:57:09 -07:00
</varlistentry>
</variablelist>
</refsection>
<refsection >
<title > Examples</title>
<para >
2019-09-18 13:13:35 -07:00
A typical NixOS installation is done by creating and mounting a file system on <filename > /mnt</filename> , generating a NixOS configuration in <filename > /mnt/etc/nixos/configuration.nix</filename> , and running <command > nixos-install</command> . For instance, if we want to install NixOS on an <literal > ext4</literal> file system created in <filename > /dev/sda1</filename> :
2013-10-13 07:57:09 -07:00
<screen >
2019-06-17 04:25:50 -07:00
<prompt > $ </prompt> mkfs.ext4 /dev/sda1
<prompt > $ </prompt> mount /dev/sda1 /mnt
<prompt > $ </prompt> nixos-generate-config --root /mnt
<prompt > $ </prompt> # edit /mnt/etc/nixos/configuration.nix
<prompt > $ </prompt> nixos-install
<prompt > $ </prompt> reboot
2013-10-13 07:57:09 -07:00
</screen>
2018-05-01 16:57:09 -07:00
</para>
</refsection>
2013-10-13 07:57:09 -07:00
</refentry>