| 
									
										
										
										
											2009-12-09 15:05:13 +00: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 19:57:09 -04:00
										 |  |  |  |  <refmeta> | 
					
						
							|  |  |  |  |   <refentrytitle><command>nixos-rebuild</command> | 
					
						
							|  |  |  |  |   </refentrytitle><manvolnum>8</manvolnum> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |   <refmiscinfo class="source">NixOS</refmiscinfo> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  | <!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> --> | 
					
						
							|  |  |  |  |  </refmeta> | 
					
						
							|  |  |  |  |  <refnamediv> | 
					
						
							|  |  |  |  |   <refname><command>nixos-rebuild</command> | 
					
						
							|  |  |  |  |   </refname><refpurpose>reconfigure a NixOS machine</refpurpose> | 
					
						
							|  |  |  |  |  </refnamediv> | 
					
						
							|  |  |  |  |  <refsynopsisdiv> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |   <cmdsynopsis> | 
					
						
							|  |  |  |  |    <command>nixos-rebuild</command><group choice='req'>  | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>switch</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>boot</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>test</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>build</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>dry-build</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>dry-activate</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>build-vm</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg choice='plain'> | 
					
						
							|  |  |  |  |     <option>build-vm-with-bootloader</option> | 
					
						
							|  |  |  |  |    </arg> | 
					
						
							|  |  |  |  |     </group> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    <sbr /> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <option>--upgrade</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <option>--install-bootloader</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <option>--no-build-nix</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <option>--fast</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      | 
					
						
							|  |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <option>--rollback</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							|  |  |  |  |    <sbr /> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <group choice='req'>  | 
					
						
							|  |  |  |  |     <arg choice='plain'> | 
					
						
							|  |  |  |  |      <option>--profile-name</option> | 
					
						
							|  |  |  |  |     </arg> | 
					
						
							|  |  |  |  |       | 
					
						
							|  |  |  |  |     <arg choice='plain'> | 
					
						
							|  |  |  |  |      <option>-p</option> | 
					
						
							| 
									
										
										
										
											2013-10-11 14:07:53 +02:00
										 |  |  |  |     </arg> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:07:15 -04:00
										 |  |  |  |      </group> <replaceable>name</replaceable> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							|  |  |  |  |    <sbr /> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |    <arg> | 
					
						
							|  |  |  |  |     <option>--show-trace</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </arg> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |   </cmdsynopsis> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |  </refsynopsisdiv> | 
					
						
							|  |  |  |  |  <refsection> | 
					
						
							|  |  |  |  |   <title>Description</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    This command updates the system so that it corresponds to the configuration | 
					
						
							|  |  |  |  |    specified in <filename>/etc/nixos/configuration.nix</filename>. Thus, every | 
					
						
							|  |  |  |  |    time you modify <filename>/etc/nixos/configuration.nix</filename> or any | 
					
						
							|  |  |  |  |    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. | 
					
						
							|  |  |  |  |   </para> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    This command has one required argument, which specifies the desired | 
					
						
							|  |  |  |  |    operation. It must be one of the following: | 
					
						
							|  |  |  |  |    <variablelist> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>switch</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>boot</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>test</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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>). | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>build</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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 15:05:13 +00:00
										 |  |  |  | <screen> | 
					
						
							| 
									
										
										
										
											2013-10-27 08:39:32 +02:00
										 |  |  |  | $ nix-build /path/to/nixpkgs/nixos -A system | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  | </screen> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |        Note that you do not need to be <literal>root</literal> to run | 
					
						
							|  |  |  |  |        <command>nixos-rebuild build</command>. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>dry-build</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        Show what store paths would be built or downloaded by any of the | 
					
						
							|  |  |  |  |        operations above, but otherwise do nothing. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>dry-activate</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>build-vm</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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 15:05:13 +00:00
										 |  |  |  | <screen> | 
					
						
							|  |  |  |  | $ nixos-rebuild build-vm | 
					
						
							|  |  |  |  | $ ./result/bin/run-*-vm | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  | </screen> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |       </para> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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>. | 
					
						
							|  |  |  |  | <!-- The entire file system hierarchy of the host is available in
 | 
					
						
							|  |  |  |  |       the VM under <filename>/hostfs</filename>.--> | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |     <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |      <term> | 
					
						
							|  |  |  |  |       <option>build-vm-with-bootloader</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      </term> | 
					
						
							|  |  |  |  |      <listitem> | 
					
						
							|  |  |  |  |       <para> | 
					
						
							|  |  |  |  |        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> | 
					
						
							|  |  |  |  |        partition, which is mounted read-only in the VM. | 
					
						
							|  |  |  |  |       </para> | 
					
						
							|  |  |  |  |      </listitem> | 
					
						
							|  |  |  |  |     </varlistentry> | 
					
						
							|  |  |  |  |    </variablelist> | 
					
						
							|  |  |  |  |   </para> | 
					
						
							|  |  |  |  |  </refsection> | 
					
						
							|  |  |  |  |  <refsection> | 
					
						
							|  |  |  |  |   <title>Options</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    This command accepts the following options: | 
					
						
							|  |  |  |  |   </para> | 
					
						
							|  |  |  |  |   <variablelist> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--upgrade</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2012-06-25 16:17:34 -04:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Fetch the latest version of NixOS from the NixOS channel. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2012-06-25 16:17:34 -04:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--install-bootloader</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Causes the boot loader to be (re)installed on the device specified by the | 
					
						
							|  |  |  |  |       relevant configuration options. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--no-build-nix</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--fast</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Equivalent to <option>--no-build-nix</option> | 
					
						
							|  |  |  |  |       <option>--show-trace</option>. This option is useful if you call | 
					
						
							|  |  |  |  |       <command>nixos-rebuild</command> frequently (e.g. if you’re hacking on | 
					
						
							|  |  |  |  |       a NixOS module). | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--rollback</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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>.) | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2013-10-11 14:07:53 +02:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--profile-name</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>-p</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2013-10-11 14:07:53 +02:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Instead of using the Nix profile | 
					
						
							|  |  |  |  |       <filename>/nix/var/nix/profiles/system</filename> to keep track of the | 
					
						
							|  |  |  |  |       current and previous system configurations, use | 
					
						
							| 
									
										
										
										
											2013-10-11 14:07:53 +02:00
										 |  |  |  |       <filename>/nix/var/nix/profiles/system-profiles/<replaceable>name</replaceable></filename>. | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |       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. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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> | 
					
						
							|  |  |  |  | $ nixos-rebuild switch -p test -I nixos-config=./test.nix | 
					
						
							|  |  |  |  | </screen> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |       The new configuration will appear in the GRUB 2 submenu “NixOS - | 
					
						
							|  |  |  |  |       Profile 'test'”. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--build-host</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2015-12-23 12:22:16 +01:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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 | 
					
						
							| 
									
										
										
										
											2015-12-23 12:22:16 +01:00
										 |  |  |  |       <option>--target-host</option> is not set, the build will be copied back | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |       to the local machine when done. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2015-12-23 12:22:16 +01:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <option>--target-host</option> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2015-12-23 12:22:16 +01:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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 | 
					
						
							| 
									
										
										
										
											2015-12-23 12:22:16 +01:00
										 |  |  |  |       <option>--target-host</option> both building and activation will take | 
					
						
							|  |  |  |  |       place remotely (and no build artifacts will be copied to the local | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |       machine). | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       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. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |   </variablelist> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    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>, | 
					
						
							|  |  |  |  |    <option>--keep-going</option> and <option>--verbose</option> / | 
					
						
							|  |  |  |  |    <option>-v</option>. See the Nix manual for details. | 
					
						
							|  |  |  |  |   </para> | 
					
						
							|  |  |  |  |  </refsection> | 
					
						
							|  |  |  |  |  <refsection> | 
					
						
							|  |  |  |  |   <title>Environment</title> | 
					
						
							|  |  |  |  |   <variablelist> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <envar>NIXOS_CONFIG</envar> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Path to the main NixOS configuration module. Defaults to | 
					
						
							|  |  |  |  |       <filename>/etc/nixos/configuration.nix</filename>. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2015-12-23 12:22:16 +01:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <envar>NIX_SSHOPTS</envar> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       Additional options to be passed to <command>ssh</command> on the command | 
					
						
							|  |  |  |  |       line. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |   </variablelist> | 
					
						
							|  |  |  |  |  </refsection> | 
					
						
							|  |  |  |  |  <refsection> | 
					
						
							|  |  |  |  |   <title>Files</title> | 
					
						
							|  |  |  |  |   <variablelist> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <filename>/run/current-system</filename> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       A symlink to the currently active system configuration in the Nix store. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |    <varlistentry> | 
					
						
							| 
									
										
										
										
											2018-05-31 21:03:51 -04:00
										 |  |  |  |     <term> | 
					
						
							|  |  |  |  |      <filename>/nix/var/nix/profiles/system</filename> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |     </term> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |      <para> | 
					
						
							|  |  |  |  |       The Nix profile that contains the current and previous system | 
					
						
							|  |  |  |  |       configurations. Used to generate the GRUB boot menu. | 
					
						
							|  |  |  |  |      </para> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  |     </listitem> | 
					
						
							| 
									
										
										
										
											2018-05-01 19:57:09 -04:00
										 |  |  |  |    </varlistentry> | 
					
						
							|  |  |  |  |   </variablelist> | 
					
						
							|  |  |  |  |  </refsection> | 
					
						
							|  |  |  |  |  <refsection> | 
					
						
							|  |  |  |  |   <title>Bugs</title> | 
					
						
							|  |  |  |  |   <para> | 
					
						
							|  |  |  |  |    This command should be renamed to something more descriptive. | 
					
						
							|  |  |  |  |   </para> | 
					
						
							|  |  |  |  |  </refsection> | 
					
						
							| 
									
										
										
										
											2009-12-09 15:05:13 +00:00
										 |  |  |  | </refentry> |