| 
									
										
										
										
											2013-10-13 16:20:49 +02:00
										 |  |  |  | <refentry xmlns="http://docbook.org/ns/docbook" | 
					
						
							|  |  |  |  |           xmlns:xlink="http://www.w3.org/1999/xlink" | 
					
						
							|  |  |  |  |           xmlns:xi="http://www.w3.org/2001/XInclude"> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <refmeta> | 
					
						
							|  |  |  |  |   <refentrytitle><command>nixos-generate-config</command></refentrytitle> | 
					
						
							|  |  |  |  |   <manvolnum>8</manvolnum> | 
					
						
							|  |  |  |  |   <refmiscinfo class="source">NixOS</refmiscinfo> | 
					
						
							|  |  |  |  |   <!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> --> | 
					
						
							|  |  |  |  | </refmeta> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <refnamediv> | 
					
						
							|  |  |  |  |   <refname><command>nixos-generate-config</command></refname> | 
					
						
							|  |  |  |  |   <refpurpose>generate NixOS configuration modules</refpurpose> | 
					
						
							|  |  |  |  | </refnamediv> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <refsynopsisdiv> | 
					
						
							|  |  |  |  |   <cmdsynopsis> | 
					
						
							|  |  |  |  |     <command>nixos-generate-config</command> | 
					
						
							|  |  |  |  |     <arg><option>--force</option></arg> | 
					
						
							|  |  |  |  |     <arg> | 
					
						
							|  |  |  |  |       <arg choice='plain'><option>--root</option></arg> | 
					
						
							|  |  |  |  |       <replaceable>root</replaceable> | 
					
						
							|  |  |  |  |     </arg> | 
					
						
							|  |  |  |  |     <arg> | 
					
						
							|  |  |  |  |       <arg choice='plain'><option>--dir</option></arg> | 
					
						
							|  |  |  |  |       <replaceable>dir</replaceable> | 
					
						
							|  |  |  |  |     </arg> | 
					
						
							|  |  |  |  |   </cmdsynopsis> | 
					
						
							|  |  |  |  | </refsynopsisdiv> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <refsection><title>Description</title> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <para>This command writes two NixOS configuration modules: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <variablelist> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>/etc/nixos/hardware-configuration.nix</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |       <para>This module sets NixOS configuration options based on your | 
					
						
							|  |  |  |  |       current hardware configuration.  In particular, it sets the | 
					
						
							|  |  |  |  |       <option>fileSystem</option> option to reflect all currently | 
					
						
							|  |  |  |  |       mounted file systems, the <option>swapDevices</option> option to | 
					
						
							|  |  |  |  |       reflect active swap devices, and the | 
					
						
							|  |  |  |  |       <option>boot.initrd.*</option> options to ensure that the | 
					
						
							|  |  |  |  |       initial ramdisk contains any kernel modules necessary for | 
					
						
							|  |  |  |  |       mounting the root file system.</para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       <para>If this file already exists, it is overwritten.  Thus, you | 
					
						
							|  |  |  |  |       should not modify it manually.  Rather, you should include it | 
					
						
							|  |  |  |  |       from your <filename>/etc/nixos/configuration.nix</filename>, and | 
					
						
							|  |  |  |  |       re-run <command>nixos-generate-config</command> to update it | 
					
						
							|  |  |  |  |       whenever your hardware configuration changes.</para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>/etc/nixos/configuration.nix</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |       <para>This is the main NixOS system configuration module.  If it | 
					
						
							|  |  |  |  |       already exists, it’s left unchanged.  Otherwise, | 
					
						
							|  |  |  |  |       <command>nixos-generate-config</command> will write a template | 
					
						
							|  |  |  |  |       for you to customise.</para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | </variablelist> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | </para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | </refsection> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <refsection><title>Options</title> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <para>This command accepts the following options:</para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <variablelist> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>--root</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |       <para>If this option is given, treat the directory | 
					
						
							|  |  |  |  |       <replaceable>root</replaceable> as the root of the file system. | 
					
						
							|  |  |  |  |       This means that configuration files will be written to | 
					
						
							|  |  |  |  |       <filename><replaceable>root</replaceable>/etc/nixos</filename>, | 
					
						
							|  |  |  |  |       and that any file systems outside of | 
					
						
							|  |  |  |  |       <replaceable>root</replaceable> are ignored for the purpose of | 
					
						
							|  |  |  |  |       generating the <option>fileSystems</option> option.</para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>--dir</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |       <para>If this option is given, write the configuration files to | 
					
						
							|  |  |  |  |       the directory <replaceable>dir</replaceable> instead of | 
					
						
							|  |  |  |  |       <filename>/etc/nixos</filename>.</para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>--force</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |       <para>Overwrite | 
					
						
							|  |  |  |  |       <filename>/etc/nixos/configuration.nix</filename> if it already | 
					
						
							|  |  |  |  |       exists.</para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 15:55:27 +02:00
										 |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>--no-filesystems</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							| 
									
										
										
										
											2016-05-25 15:34:37 +02:00
										 |  |  |  |       <para>Omit everything concerning file systems and swap devices | 
					
						
							|  |  |  |  |       from the hardware configuration.</para> | 
					
						
							| 
									
										
										
										
											2013-10-23 15:55:27 +02:00
										 |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-23 16:42:34 +02:00
										 |  |  |  |   <varlistentry> | 
					
						
							|  |  |  |  |     <term><option>--show-hardware-config</option></term> | 
					
						
							|  |  |  |  |     <listitem> | 
					
						
							|  |  |  |  |       <para>Don't generate <filename>configuration.nix</filename> or | 
					
						
							|  |  |  |  |       <filename>hardware-configuration.nix</filename> and print the | 
					
						
							|  |  |  |  |       hardware configuration to stdout only.</para> | 
					
						
							|  |  |  |  |     </listitem> | 
					
						
							|  |  |  |  |   </varlistentry> | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-13 16:20:49 +02:00
										 |  |  |  | </variablelist> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | </refsection> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <refsection><title>Examples</title> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <para>This command is typically used during NixOS installation to | 
					
						
							|  |  |  |  | write initial configuration modules.  For example, if you created and | 
					
						
							|  |  |  |  | mounted the target file systems on <filename>/mnt</filename> and | 
					
						
							|  |  |  |  | <filename>/mnt/boot</filename>, you would run: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <screen> | 
					
						
							|  |  |  |  | $ nixos-generate-config --root /mnt | 
					
						
							|  |  |  |  | </screen> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The resulting file | 
					
						
							|  |  |  |  | <filename>/mnt/etc/nixos/hardware-configuration.nix</filename> might | 
					
						
							|  |  |  |  | look like this: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <programlisting> | 
					
						
							|  |  |  |  | # Do not modify this file!  It was generated by ‘nixos-generate-config’ | 
					
						
							|  |  |  |  | # and may be overwritten by future invocations.  Please make changes | 
					
						
							|  |  |  |  | # to /etc/nixos/configuration.nix instead. | 
					
						
							|  |  |  |  | { config, pkgs, ... }: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |   imports = | 
					
						
							|  |  |  |  |     [ <nixos/modules/installer/scan/not-detected.nix> | 
					
						
							|  |  |  |  |     ]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   boot.initrd.availableKernelModules = [ "ehci_hcd" "ahci" ]; | 
					
						
							|  |  |  |  |   boot.kernelModules = [ "kvm-intel" ]; | 
					
						
							|  |  |  |  |   boot.extraModulePackages = [ ]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   fileSystems."/" = | 
					
						
							|  |  |  |  |     { device = "/dev/disk/by-label/nixos"; | 
					
						
							|  |  |  |  |       fsType = "ext3"; | 
					
						
							| 
									
										
										
										
											2015-10-21 17:37:14 +00:00
										 |  |  |  |       options = [ "rw" "data=ordered" "relatime" ]; | 
					
						
							| 
									
										
										
										
											2013-10-13 16:20:49 +02:00
										 |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   fileSystems."/boot" = | 
					
						
							|  |  |  |  |     { device = "/dev/sda1"; | 
					
						
							|  |  |  |  |       fsType = "ext3"; | 
					
						
							| 
									
										
										
										
											2015-10-21 17:37:14 +00:00
										 |  |  |  |       options = [ "rw" "errors=continue" "user_xattr" "acl" "barrier=1" "data=writeback" "relatime" ]; | 
					
						
							| 
									
										
										
										
											2013-10-13 16:20:49 +02:00
										 |  |  |  |     }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   swapDevices = | 
					
						
							|  |  |  |  |     [ { device = "/dev/sda2"; } | 
					
						
							|  |  |  |  |     ]; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |   nix.maxJobs = 8; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | </programlisting> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | It will also create a basic | 
					
						
							|  |  |  |  | <filename>/mnt/etc/nixos/configuration.nix</filename>, which you | 
					
						
							|  |  |  |  | should edit to customise the logical configuration of your system. | 
					
						
							|  |  |  |  | This file includes the result of the hardware scan as follows: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <programlisting> | 
					
						
							|  |  |  |  |   imports = [ ./hardware-configuration.nix ]; | 
					
						
							|  |  |  |  | </programlisting> | 
					
						
							|  |  |  |  | </para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <para>After installation, if your hardware configuration changes, you | 
					
						
							|  |  |  |  | can run: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <screen> | 
					
						
							|  |  |  |  | $ nixos-generate-config | 
					
						
							|  |  |  |  | </screen> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | to update <filename>/etc/nixos/hardware-configuration.nix</filename>. | 
					
						
							|  |  |  |  | Your <filename>/etc/nixos/configuration.nix</filename> will | 
					
						
							|  |  |  |  | <emphasis>not</emphasis> be overwritten.</para> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | </refsection> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | </refentry> |