nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml
Maximilian Bosch e998f5140f
nixos-build-vms: pass --option to nix-build
Also simplified the argument parsing to write all currently supported
CLI options into a bash array and pass this to `nix-build`.

Also documented `--option` usage in the corresponding manpage.
2019-02-04 10:46:12 +01:00

138 lines
4.1 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-build-vms</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-build-vms</command>
</refname><refpurpose>build a network of virtual machines from a network of NixOS configurations</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>nixos-build-vms</command>
<arg>
<option>--show-trace</option>
</arg>
<arg>
<option>--no-out-link</option>
</arg>
<arg>
<option>--help</option>
</arg>
<arg>
<option>--option</option>
<replaceable>name</replaceable>
<replaceable>value</replaceable>
</arg>
<arg choice="plain">
<replaceable>network.nix</replaceable>
</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection>
<title>Description</title>
<para>
This command builds a network of QEMU-KVM virtual machines of a Nix
expression specifying a network of NixOS machines. The virtual network can
be started by executing the <filename>bin/run-vms</filename> shell script
that is generated by this command. By default, a <filename>result</filename>
symlink is produced that points to the generated virtual network.
</para>
<para>
A network Nix expression has the following structure:
<screen>
{
test1 = {pkgs, config, ...}:
{
services.openssh.enable = true;
nixpkgs.localSystem.system = "i686-linux";
deployment.targetHost = "test1.example.net";
# Other NixOS options
};
test2 = {pkgs, config, ...}:
{
services.openssh.enable = true;
services.httpd.enable = true;
environment.systemPackages = [ pkgs.lynx ];
nixpkgs.localSystem.system = "x86_64-linux";
deployment.targetHost = "test2.example.net";
# Other NixOS options
};
}
</screen>
Each attribute in the expression represents a machine in the network (e.g.
<varname>test1</varname> and <varname>test2</varname>) referring to a
function defining a NixOS configuration. In each NixOS configuration, two
attributes have a special meaning. The
<varname>deployment.targetHost</varname> specifies the address (domain name
or IP address) of the system which is used by <command>ssh</command> to
perform remote deployment operations. The
<varname>nixpkgs.localSystem.system</varname> attribute can be used to
specify an architecture for the target machine, such as
<varname>i686-linux</varname> which builds a 32-bit NixOS configuration.
Omitting this property will build the configuration for the same
architecture as the host system.
</para>
</refsection>
<refsection>
<title>Options</title>
<para>
This command accepts the following options:
</para>
<variablelist>
<varlistentry>
<term>
<option>--show-trace</option>
</term>
<listitem>
<para>
Shows a trace of the output.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--no-out-link</option>
</term>
<listitem>
<para>
Do not create a 'result' symlink.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-h</option>, <option>--help</option>
</term>
<listitem>
<para>
Shows the usage of this command to the user.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--option</option> <replaceable>name</replaceable> <replaceable>value</replaceable>
</term>
<listitem>
<para>Set the Nix configuration option
<replaceable>name</replaceable> to <replaceable>value</replaceable>.
This overrides settings in the Nix configuration file (see
<citerefentry><refentrytitle>nix.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
</refentry>