91 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<chapter xmlns="http://docbook.org/ns/docbook"
 | 
						||
         xmlns:xlink="http://www.w3.org/1999/xlink"
 | 
						||
         version="5.0"
 | 
						||
         xml:id="sec-changing-config">
 | 
						||
 | 
						||
<title>Changing the Configuration</title>
 | 
						||
 | 
						||
<para>The file <filename>/etc/nixos/configuration.nix</filename>
 | 
						||
contains the current configuration of your machine.  Whenever you’ve
 | 
						||
changed something to that file, you should do
 | 
						||
 | 
						||
<screen>
 | 
						||
$ nixos-rebuild switch</screen>
 | 
						||
 | 
						||
to build the new configuration, make it the default configuration for
 | 
						||
booting, and try to realise the configuration in the running system
 | 
						||
(e.g., by restarting system services).</para>
 | 
						||
 | 
						||
<warning><para>These commands must be executed as root, so you should
 | 
						||
either run them from a root shell or by prefixing them with
 | 
						||
<literal>sudo -i</literal>.</para></warning>
 | 
						||
 | 
						||
<para>You can also do
 | 
						||
 | 
						||
<screen>
 | 
						||
$ nixos-rebuild test</screen>
 | 
						||
 | 
						||
to build the configuration and switch the running system to it, but
 | 
						||
without making it the boot default.  So if (say) the configuration
 | 
						||
locks up your machine, you can just reboot to get back to a working
 | 
						||
configuration.</para>
 | 
						||
 | 
						||
<para>There is also
 | 
						||
 | 
						||
<screen>
 | 
						||
$ nixos-rebuild boot</screen>
 | 
						||
 | 
						||
to build the configuration and make it the boot default, but not
 | 
						||
switch to it now (so it will only take effect after the next
 | 
						||
reboot).</para>
 | 
						||
 | 
						||
<para>You can make your configuration show up in a different submenu
 | 
						||
of the GRUB 2 boot screen by giving it a different <emphasis>profile
 | 
						||
name</emphasis>, e.g.
 | 
						||
 | 
						||
<screen>
 | 
						||
$ nixos-rebuild switch -p test </screen>
 | 
						||
 | 
						||
which causes the new configuration (and previous ones created using
 | 
						||
<literal>-p test</literal>) to show up in the GRUB submenu “NixOS -
 | 
						||
Profile 'test'”.  This can be useful to separate test configurations
 | 
						||
from “stable” configurations.</para>
 | 
						||
 | 
						||
<para>Finally, you can do
 | 
						||
 | 
						||
<screen>
 | 
						||
$ nixos-rebuild build</screen>
 | 
						||
 | 
						||
to build the configuration but nothing more.  This is useful to see
 | 
						||
whether everything compiles cleanly.</para>
 | 
						||
 | 
						||
<para>If you have a machine that supports hardware virtualisation, you
 | 
						||
can also test the new configuration in a sandbox by building and
 | 
						||
running a QEMU <emphasis>virtual machine</emphasis> that contains the
 | 
						||
desired configuration.  Just do
 | 
						||
 | 
						||
<screen>
 | 
						||
$ nixos-rebuild build-vm
 | 
						||
$ ./result/bin/run-*-vm
 | 
						||
</screen>
 | 
						||
 | 
						||
The VM does not have any data from your host system, so your existing
 | 
						||
user accounts and home directories will not be available.  You can
 | 
						||
forward ports on the host to the guest.  For instance, the following
 | 
						||
will forward host port 2222 to guest port 22 (SSH):
 | 
						||
 | 
						||
<screen>
 | 
						||
$ QEMU_NET_OPTS="hostfwd=tcp::2222-:22" ./result/bin/run-*-vm
 | 
						||
</screen>
 | 
						||
 | 
						||
allowing you to log in via SSH (assuming you have set the appropriate
 | 
						||
passwords or SSH authorized keys):
 | 
						||
 | 
						||
<screen>
 | 
						||
$ ssh -p 2222 localhost
 | 
						||
</screen>
 | 
						||
 | 
						||
</para>
 | 
						||
 | 
						||
</chapter>
 |