aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/doc/manual/man-nixos-build-vms.xml
blob: d114261f53bef32704fa670342ee25808b6f8a1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<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>