209 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<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>
 | 
						||
 | 
						||
  <varlistentry>
 | 
						||
    <term><option>--no-filesystems</option></term>
 | 
						||
    <listitem>
 | 
						||
      <para>Omit everything concerning file systems and swap devices
 | 
						||
      from the hardware configuration.</para>
 | 
						||
    </listitem>
 | 
						||
  </varlistentry>
 | 
						||
 | 
						||
  <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>
 | 
						||
 | 
						||
</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";
 | 
						||
      options = [ "rw" "data=ordered" "relatime" ];
 | 
						||
    };
 | 
						||
 | 
						||
  fileSystems."/boot" =
 | 
						||
    { device = "/dev/sda1";
 | 
						||
      fsType = "ext3";
 | 
						||
      options = [ "rw" "errors=continue" "user_xattr" "acl" "barrier=1" "data=writeback" "relatime" ];
 | 
						||
    };
 | 
						||
 | 
						||
  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>
 |