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> |