2009-12-09 16:05:13 +01: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-02 01:57:09 +02:00
|
|
|
|
<refmeta>
|
|
|
|
|
<refentrytitle><command>nixos-rebuild</command>
|
|
|
|
|
</refentrytitle><manvolnum>8</manvolnum>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<refmiscinfo class="source">NixOS</refmiscinfo>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
|
|
|
|
|
</refmeta>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refnamediv>
|
2019-10-05 17:48:30 +02:00
|
|
|
|
<refname><command>nixos-rebuild</command></refname>
|
|
|
|
|
<refpurpose>reconfigure a NixOS machine</refpurpose>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</refnamediv>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refsynopsisdiv>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<cmdsynopsis>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<command>nixos-rebuild</command><group choice='req'>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>switch</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>boot</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>test</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>build</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>dry-build</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>dry-activate</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2019-02-25 19:36:23 +01:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>edit</option>
|
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>build-vm</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>build-vm-with-bootloader</option>
|
|
|
|
|
</arg>
|
|
|
|
|
</group>
|
2020-09-25 17:22:11 +02:00
|
|
|
|
<sbr />
|
|
|
|
|
|
|
|
|
|
<arg>
|
|
|
|
|
<group choice='req'>
|
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>--upgrade</option>
|
|
|
|
|
</arg>
|
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>--upgrade-all</option>
|
|
|
|
|
</arg>
|
|
|
|
|
</group>
|
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<option>--install-bootloader</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<option>--no-build-nix</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<option>--fast</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<option>--rollback</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2019-01-11 11:39:26 +01:00
|
|
|
|
<arg>
|
2019-03-22 14:44:11 +01:00
|
|
|
|
<option>--builders</option> <replaceable>builder-spec</replaceable>
|
2019-01-11 11:39:26 +01:00
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2019-09-13 18:02:44 +02:00
|
|
|
|
<sbr/>
|
|
|
|
|
|
|
|
|
|
<arg>
|
|
|
|
|
<option>--flake</option> <replaceable>flake-uri</replaceable>
|
|
|
|
|
</arg>
|
|
|
|
|
|
2021-06-05 11:53:34 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<option>--override-input</option> <replaceable>input-name</replaceable> <replaceable>flake-uri</replaceable>
|
|
|
|
|
</arg>
|
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<sbr />
|
2019-09-13 18:02:44 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<group choice='req'>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>--profile-name</option>
|
|
|
|
|
</arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg choice='plain'>
|
|
|
|
|
<option>-p</option>
|
2013-10-11 14:07:53 +02:00
|
|
|
|
</arg>
|
2018-06-01 03:07:15 +02:00
|
|
|
|
</group> <replaceable>name</replaceable>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2021-07-07 23:10:53 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<sbr />
|
2021-07-07 23:10:53 +02:00
|
|
|
|
|
|
|
|
|
<arg>
|
|
|
|
|
<option>--build-host</option> <replaceable>host</replaceable>
|
|
|
|
|
</arg>
|
|
|
|
|
|
|
|
|
|
<arg>
|
|
|
|
|
<option>--target-host</option> <replaceable>host</replaceable>
|
|
|
|
|
</arg>
|
|
|
|
|
|
|
|
|
|
<arg>
|
|
|
|
|
<option>--use-remote-sudo</option>
|
|
|
|
|
</arg>
|
|
|
|
|
|
|
|
|
|
<sbr />
|
|
|
|
|
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<option>--show-trace</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</arg>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
<arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<option>-I</option>
|
|
|
|
|
<replaceable>path</replaceable>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
</arg>
|
|
|
|
|
<arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<group choice='req'>
|
|
|
|
|
<arg choice='plain'><option>--verbose</option></arg>
|
|
|
|
|
<arg choice='plain'><option>-v</option></arg>
|
|
|
|
|
</group>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
</arg>
|
2020-09-29 01:41:05 +02:00
|
|
|
|
<arg>
|
|
|
|
|
<group choice='req'>
|
|
|
|
|
<arg choice='plain'><option>--impure</option></arg>
|
|
|
|
|
</group>
|
|
|
|
|
</arg>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
<arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<group choice='req'>
|
|
|
|
|
<arg choice='plain'><option>--max-jobs</option></arg>
|
|
|
|
|
<arg choice='plain'><option>-j</option></arg>
|
|
|
|
|
</group>
|
|
|
|
|
<replaceable>number</replaceable>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
</arg>
|
|
|
|
|
<arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<group choice='req'>
|
|
|
|
|
<arg choice='plain'><option>--keep-failed</option></arg>
|
|
|
|
|
<arg choice='plain'><option>-K</option></arg>
|
|
|
|
|
</group>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
</arg>
|
|
|
|
|
<arg>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<group choice='req'>
|
|
|
|
|
<arg choice='plain'><option>--keep-going</option></arg>
|
|
|
|
|
<arg choice='plain'><option>-k</option></arg>
|
|
|
|
|
</group>
|
2019-06-10 02:07:55 +02:00
|
|
|
|
</arg>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</cmdsynopsis>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</refsynopsisdiv>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refsection>
|
|
|
|
|
<title>Description</title>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 14:40:24 +02:00
|
|
|
|
This command updates the system so that it corresponds to the
|
|
|
|
|
configuration specified in
|
|
|
|
|
<filename>/etc/nixos/configuration.nix</filename> or
|
|
|
|
|
<filename>/etc/nixos/flake.nix</filename>. Thus, every time you
|
|
|
|
|
modify the configuration or any other NixOS module, you must run
|
|
|
|
|
<command>nixos-rebuild</command> to make the changes take
|
|
|
|
|
effect. It builds the new system in
|
|
|
|
|
<filename>/nix/store</filename>, runs its activation script, and
|
|
|
|
|
stop and (re)starts any system services if needed. Please note that
|
|
|
|
|
user services need to be started manually as they aren't detected
|
|
|
|
|
by the activation script at the moment.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
This command has one required argument, which specifies the desired
|
|
|
|
|
operation. It must be one of the following:
|
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>switch</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Build and activate the new configuration, and make it the boot default.
|
|
|
|
|
That is, the configuration is added to the GRUB boot menu as the default
|
|
|
|
|
menu entry, so that subsequent reboots will boot the system into the new
|
|
|
|
|
configuration. Previous configurations activated with
|
|
|
|
|
<command>nixos-rebuild switch</command> or <command>nixos-rebuild
|
|
|
|
|
boot</command> remain available in the GRUB menu.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>boot</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Build the new configuration and make it the boot default (as with
|
|
|
|
|
<command>nixos-rebuild switch</command>), but do not activate it. That
|
|
|
|
|
is, the system continues to run the previous configuration until the
|
|
|
|
|
next reboot.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>test</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Build and activate the new configuration, but do not add it to the GRUB
|
|
|
|
|
boot menu. Thus, if you reboot the system (or if it crashes), you will
|
|
|
|
|
automatically revert to the default configuration (i.e. the
|
|
|
|
|
configuration resulting from the last call to <command>nixos-rebuild
|
|
|
|
|
switch</command> or <command>nixos-rebuild boot</command>).
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>build</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Build the new configuration, but neither activate it nor add it to the
|
|
|
|
|
GRUB boot menu. It leaves a symlink named <filename>result</filename> in
|
|
|
|
|
the current directory, which points to the output of the top-level
|
|
|
|
|
“system” derivation. This is essentially the same as doing
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<screen>
|
2019-06-17 13:25:50 +02:00
|
|
|
|
<prompt>$ </prompt>nix-build /path/to/nixpkgs/nixos -A system
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</screen>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Note that you do not need to be <literal>root</literal> to run
|
|
|
|
|
<command>nixos-rebuild build</command>.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>dry-build</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Show what store paths would be built or downloaded by any of the
|
|
|
|
|
operations above, but otherwise do nothing.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>dry-activate</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Build the new configuration, but instead of activating it, show what
|
|
|
|
|
changes would be performed by the activation (i.e. by
|
|
|
|
|
<command>nixos-rebuild test</command>). For instance, this command will
|
|
|
|
|
print which systemd units would be restarted. The list of changes is not
|
|
|
|
|
guaranteed to be complete.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2019-02-25 19:36:23 +01:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<option>edit</option>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-03-22 14:44:11 +01:00
|
|
|
|
Opens <filename>configuration.nix</filename> in the default editor.
|
2019-02-25 19:36:23 +01:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
2019-03-02 11:32:24 +01:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>build-vm</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Build a script that starts a NixOS virtual machine with the desired
|
|
|
|
|
configuration. It leaves a symlink <filename>result</filename> in the
|
|
|
|
|
current directory that points (under
|
|
|
|
|
<filename>result/bin/run-<replaceable>hostname</replaceable>-vm</filename>)
|
|
|
|
|
at the script that starts the VM. Thus, to test a NixOS configuration in
|
|
|
|
|
a virtual machine, you should do the following:
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<screen>
|
2019-06-17 13:25:50 +02:00
|
|
|
|
<prompt>$ </prompt>nixos-rebuild build-vm
|
|
|
|
|
<prompt>$ </prompt>./result/bin/run-*-vm
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</screen>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
The VM is implemented using the <literal>qemu</literal> package. For
|
|
|
|
|
best performance, you should load the <literal>kvm-intel</literal> or
|
|
|
|
|
<literal>kvm-amd</literal> kernel modules to get hardware
|
|
|
|
|
virtualisation.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
The VM mounts the Nix store of the host through the 9P file system. The
|
|
|
|
|
host Nix store is read-only, so Nix commands that modify the Nix store
|
|
|
|
|
will not work in the VM. This includes commands such as
|
|
|
|
|
<command>nixos-rebuild</command>; to change the VM’s configuration,
|
|
|
|
|
you must halt the VM and re-run the commands above.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
The VM has its own <literal>ext3</literal> root file system, which is
|
|
|
|
|
automatically created when the VM is first started, and is persistent
|
|
|
|
|
across reboots of the VM. It is stored in
|
|
|
|
|
<literal>./<replaceable>hostname</replaceable>.qcow2</literal>.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<!-- The entire file system hierarchy of the host is available in
|
|
|
|
|
the VM under <filename>/hostfs</filename>.-->
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>build-vm-with-bootloader</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Like <option>build-vm</option>, but boots using the regular boot loader
|
|
|
|
|
of your configuration (e.g., GRUB 1 or 2), rather than booting directly
|
|
|
|
|
into the kernel and initial ramdisk of the system. This allows you to
|
|
|
|
|
test whether the boot loader works correctly. However, it does not
|
|
|
|
|
guarantee that your NixOS configuration will boot successfully on the
|
|
|
|
|
host hardware (i.e., after running <command>nixos-rebuild
|
|
|
|
|
switch</command>), because the hardware and boot loader configuration in
|
|
|
|
|
the VM are different. The boot loader is installed on an automatically
|
|
|
|
|
generated virtual disk containing a <filename>/boot</filename>
|
2020-07-03 01:43:31 +02:00
|
|
|
|
partition.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
</variablelist>
|
|
|
|
|
</para>
|
|
|
|
|
</refsection>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refsection>
|
|
|
|
|
<title>Options</title>
|
|
|
|
|
<para>
|
|
|
|
|
This command accepts the following options:
|
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--upgrade</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2020-09-25 17:22:11 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--upgrade-all</option>
|
|
|
|
|
</term>
|
2012-06-25 22:17:34 +02:00
|
|
|
|
<listitem>
|
2020-09-25 17:22:11 +02:00
|
|
|
|
<para>
|
|
|
|
|
Update the root user's channel named <literal>nixos</literal>
|
|
|
|
|
before rebuilding the system.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
In addition to the <literal>nixos</literal> channel, the root
|
|
|
|
|
user's channels which have a file named
|
|
|
|
|
<literal>.update-on-nixos-rebuild</literal> in their base
|
|
|
|
|
directory will also be updated.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Passing <option>--upgrade-all</option> updates all of the root
|
|
|
|
|
user's channels.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2012-06-25 22:17:34 +02:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--install-bootloader</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Causes the boot loader to be (re)installed on the device specified by the
|
|
|
|
|
relevant configuration options.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--no-build-nix</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Normally, <command>nixos-rebuild</command> first builds the
|
|
|
|
|
<varname>nixUnstable</varname> attribute in Nixpkgs, and uses the
|
|
|
|
|
resulting instance of the Nix package manager to build the new system
|
|
|
|
|
configuration. This is necessary if the NixOS modules use features not
|
|
|
|
|
provided by the currently installed version of Nix. This option disables
|
|
|
|
|
building a new Nix.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--fast</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2021-06-03 19:01:09 +02:00
|
|
|
|
Equivalent to <option>--no-build-nix</option>. This option is
|
|
|
|
|
useful if you call <command>nixos-rebuild</command> frequently
|
|
|
|
|
(e.g. if you’re hacking on a NixOS module).
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--rollback</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Instead of building a new configuration as specified by
|
|
|
|
|
<filename>/etc/nixos/configuration.nix</filename>, roll back to the
|
|
|
|
|
previous configuration. (The previous configuration is defined as the one
|
|
|
|
|
before the “current” generation of the Nix profile
|
|
|
|
|
<filename>/nix/var/nix/profiles/system</filename>.)
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2013-10-11 14:07:53 +02:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2019-01-11 11:39:26 +01:00
|
|
|
|
<varlistentry>
|
2019-03-22 14:44:11 +01:00
|
|
|
|
<term>
|
|
|
|
|
<option>--builders</option> <replaceable>builder-spec</replaceable>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Allow ad-hoc remote builders for building the new system. This requires
|
|
|
|
|
the user executing <command>nixos-rebuild</command> (usually root) to be
|
|
|
|
|
configured as a trusted user in the Nix daemon. This can be achieved by
|
|
|
|
|
using the <literal>nix.trustedUsers</literal> NixOS option. Examples
|
|
|
|
|
values for that option are described in the <literal>Remote builds
|
|
|
|
|
chapter</literal> in the Nix manual, (i.e. <command>--builders
|
|
|
|
|
"ssh://bigbrother x86_64-linux"</command>). By specifying an empty string
|
|
|
|
|
existing builders specified in <filename>/etc/nix/machines</filename> can
|
|
|
|
|
be ignored: <command>--builders ""</command> for example when they are
|
|
|
|
|
not reachable due to network connectivity.
|
2019-03-22 14:44:11 +01:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
2019-01-11 11:39:26 +01:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--profile-name</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>-p</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2013-10-11 14:07:53 +02:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Instead of using the Nix profile
|
|
|
|
|
<filename>/nix/var/nix/profiles/system</filename> to keep track of the
|
|
|
|
|
current and previous system configurations, use
|
|
|
|
|
<filename>/nix/var/nix/profiles/system-profiles/<replaceable>name</replaceable></filename>.
|
|
|
|
|
When you use GRUB 2, for every system profile created with this flag,
|
|
|
|
|
NixOS will create a submenu named “NixOS - Profile
|
|
|
|
|
'<replaceable>name</replaceable>'” in GRUB’s boot menu, containing
|
|
|
|
|
the current and previous configurations of this profile.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
For instance, if you want to test a configuration file named
|
|
|
|
|
<filename>test.nix</filename> without affecting the default system
|
|
|
|
|
profile, you would do:
|
2013-10-11 14:07:53 +02:00
|
|
|
|
<screen>
|
2019-06-17 13:25:50 +02:00
|
|
|
|
<prompt>$ </prompt>nixos-rebuild switch -p test -I nixos-config=./test.nix
|
2013-10-11 14:07:53 +02:00
|
|
|
|
</screen>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
The new configuration will appear in the GRUB 2 submenu “NixOS -
|
|
|
|
|
Profile 'test'”.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--build-host</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2015-12-23 12:22:16 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Instead of building the new configuration locally, use the specified host
|
|
|
|
|
to perform the build. The host needs to be accessible with ssh, and must
|
|
|
|
|
be able to perform Nix builds. If the option
|
|
|
|
|
<option>--target-host</option> is not set, the build will be copied back
|
|
|
|
|
to the local machine when done.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Note that, if <option>--no-build-nix</option> is not specified, Nix will
|
|
|
|
|
be built both locally and remotely. This is because the configuration
|
|
|
|
|
will always be evaluated locally even though the building might be
|
|
|
|
|
performed remotely.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
You can include a remote user name in the host name
|
|
|
|
|
(<replaceable>user@host</replaceable>). You can also set ssh options by
|
|
|
|
|
defining the <envar>NIX_SSHOPTS</envar> environment variable.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2015-12-23 12:22:16 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<option>--target-host</option>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2015-12-23 12:22:16 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Specifies the NixOS target host. By setting this to something other than
|
|
|
|
|
<replaceable>localhost</replaceable>, the system activation will happen
|
|
|
|
|
on the remote host instead of the local machine. The remote host needs to
|
|
|
|
|
be accessible over ssh, and for the commands <option>switch</option>,
|
|
|
|
|
<option>boot</option> and <option>test</option> you need root access.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
If <option>--build-host</option> is not explicitly specified,
|
|
|
|
|
<option>--build-host</option> will implicitly be set to the same value as
|
|
|
|
|
<option>--target-host</option>. So, if you only specify
|
|
|
|
|
<option>--target-host</option> both building and activation will take
|
|
|
|
|
place remotely (and no build artifacts will be copied to the local
|
|
|
|
|
machine).
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
You can include a remote user name in the host name
|
|
|
|
|
(<replaceable>user@host</replaceable>). You can also set ssh options by
|
|
|
|
|
defining the <envar>NIX_SSHOPTS</envar> environment variable.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-10-23 20:22:39 +02:00
|
|
|
|
|
2021-06-10 23:20:23 +02:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<option>--use-substitutes</option>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
When set, nixos-rebuild will add <option>--use-substitutes</option>
|
|
|
|
|
to each invocation of nix-copy-closure. This will only affect the
|
|
|
|
|
behavior of nixos-rebuild if <option>--target-host</option> or
|
|
|
|
|
<option>--build-host</option> is also set. This is useful when
|
|
|
|
|
the target-host connection to cache.nixos.org is faster than the
|
|
|
|
|
connection between hosts.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2019-10-23 20:22:39 +02:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<option>--use-remote-sudo</option>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
When set, nixos-rebuild prefixes remote commands that run on
|
|
|
|
|
the <option>--build-host</option> and <option>--target-host</option>
|
|
|
|
|
systems with <command>sudo</command>. Setting this option allows
|
|
|
|
|
deploying as a non-root user.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
2019-09-13 18:02:44 +02:00
|
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
2020-09-04 06:53:00 +02:00
|
|
|
|
<option>--flake</option> <replaceable>flake-uri</replaceable><optional>#<replaceable>name</replaceable></optional>
|
2019-09-13 18:02:44 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 14:40:24 +02:00
|
|
|
|
Build the NixOS system from the specified flake. It defaults to
|
|
|
|
|
the directory containing the target of the symlink
|
|
|
|
|
<filename>/etc/nixos/flake.nix</filename>, if it exists. The
|
|
|
|
|
flake must contain an output named
|
2019-09-20 18:37:17 +02:00
|
|
|
|
<literal>nixosConfigurations.<replaceable>name</replaceable></literal>. If
|
|
|
|
|
<replaceable>name</replaceable> is omitted, it default to the
|
|
|
|
|
current host name.
|
2019-09-13 18:02:44 +02:00
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</variablelist>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
In addition, <command>nixos-rebuild</command> accepts various Nix-related
|
|
|
|
|
flags, including <option>--max-jobs</option> / <option>-j</option>,
|
|
|
|
|
<option>--show-trace</option>, <option>--keep-failed</option>,
|
2020-09-29 01:41:05 +02:00
|
|
|
|
<option>--keep-going</option>, <option>--impure</option>, and <option>--verbose</option> /
|
2019-09-19 19:17:30 +02:00
|
|
|
|
<option>-v</option>. See the Nix manual for details.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
|
|
|
|
</refsection>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refsection>
|
|
|
|
|
<title>Environment</title>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<variablelist>
|
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<envar>NIXOS_CONFIG</envar>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Path to the main NixOS configuration module. Defaults to
|
|
|
|
|
<filename>/etc/nixos/configuration.nix</filename>.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2015-12-23 12:22:16 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<envar>NIX_SSHOPTS</envar>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
Additional options to be passed to <command>ssh</command> on the command
|
|
|
|
|
line.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
|
|
|
|
</variablelist>
|
|
|
|
|
</refsection>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refsection>
|
|
|
|
|
<title>Files</title>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<variablelist>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2019-09-19 14:40:24 +02:00
|
|
|
|
<varlistentry>
|
|
|
|
|
<term>
|
|
|
|
|
<filename>/etc/nixos/flake.nix</filename>
|
|
|
|
|
</term>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
If this file exists, then <command>nixos-rebuild</command> will
|
|
|
|
|
use it as if the <option>--flake</option> option was given. This
|
|
|
|
|
file may be a symlink to a <filename>flake.nix</filename> in an
|
|
|
|
|
actual flake; thus <filename>/etc/nixos</filename> need not be a
|
|
|
|
|
flake.
|
|
|
|
|
</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</varlistentry>
|
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<filename>/run/current-system</filename>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
|
|
|
|
A symlink to the currently active system configuration in the Nix store.
|
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<varlistentry>
|
2018-06-01 03:03:51 +02:00
|
|
|
|
<term>
|
|
|
|
|
<filename>/nix/var/nix/profiles/system</filename>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</term>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
<listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<para>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
The Nix profile that contains the current and previous system
|
|
|
|
|
configurations. Used to generate the GRUB boot menu.
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</para>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</listitem>
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</varlistentry>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
</variablelist>
|
|
|
|
|
</refsection>
|
2019-09-19 19:17:30 +02:00
|
|
|
|
|
2018-05-02 01:57:09 +02:00
|
|
|
|
<refsection>
|
|
|
|
|
<title>Bugs</title>
|
|
|
|
|
<para>
|
|
|
|
|
This command should be renamed to something more descriptive.
|
|
|
|
|
</para>
|
|
|
|
|
</refsection>
|
2009-12-09 16:05:13 +01:00
|
|
|
|
</refentry>
|