confctl 2.2.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/.git-hooks/pre_commit/nixfmt.rb +13 -0
  3. data/.github/workflows/rspec.yml +64 -0
  4. data/.github/workflows/rubocop.yml +27 -0
  5. data/.github/workflows/tests.yml +139 -0
  6. data/.gitignore +12 -7
  7. data/.overcommit.yml +2 -0
  8. data/.rspec +1 -0
  9. data/.rubocop.yml +8 -1
  10. data/AGENTS.md +42 -0
  11. data/CHANGELOG.md +57 -0
  12. data/Gemfile +3 -2
  13. data/Gemfile.lock +198 -0
  14. data/README.md +166 -58
  15. data/Rakefile +5 -0
  16. data/confctl.gemspec +20 -2
  17. data/docs/carrier.md +3 -3
  18. data/docs/flake-inputs.md +159 -0
  19. data/docs/swpins-to-flakes.md +325 -0
  20. data/example/cluster/module-list.nix +2 -1
  21. data/example/cluster/nixos-machine/config.nix +12 -2
  22. data/example/cluster/nixos-machine/hardware.nix +6 -1
  23. data/example/cluster/vpsadminos-container/config.nix +6 -1
  24. data/example/cluster/vpsadminos-container/module.nix +4 -1
  25. data/example/cluster/vpsadminos-machine/config.nix +6 -1
  26. data/example/cluster/vpsadminos-machine/hardware.nix +6 -1
  27. data/example/cluster/vpsadminos-machine/module.nix +5 -2
  28. data/example/cluster/vpsfreecz-vps/config.nix +6 -1
  29. data/example/cluster/vpsfreecz-vps/module.nix +4 -1
  30. data/example/configs/swpins.nix +8 -3
  31. data/example/environments/base.nix +6 -1
  32. data/example/swpins/core.json +35 -0
  33. data/example-flake/.gitignore +2 -0
  34. data/example-flake/README.md +38 -0
  35. data/example-flake/cluster/cluster.nix +5 -0
  36. data/example-flake/cluster/module-list.nix +4 -0
  37. data/example-flake/cluster/nested/nixos-machine/config.nix +25 -0
  38. data/example-flake/cluster/nested/nixos-machine/hardware.nix +9 -0
  39. data/example-flake/cluster/nested/nixos-machine/module.nix +8 -0
  40. data/example-flake/cluster/nixos-machine/config.nix +25 -0
  41. data/example-flake/cluster/nixos-machine/hardware.nix +9 -0
  42. data/example-flake/cluster/nixos-machine/module.nix +8 -0
  43. data/example-flake/cluster/vpsadminos-container/config.nix +28 -0
  44. data/example-flake/cluster/vpsadminos-container/module.nix +8 -0
  45. data/example-flake/cluster/vpsadminos-machine/config.nix +27 -0
  46. data/example-flake/cluster/vpsadminos-machine/hardware.nix +9 -0
  47. data/example-flake/cluster/vpsadminos-machine/module.nix +8 -0
  48. data/example-flake/cluster/vpsfreecz-vps/config.nix +31 -0
  49. data/example-flake/cluster/vpsfreecz-vps/module.nix +8 -0
  50. data/example-flake/configs/confctl.nix +10 -0
  51. data/example-flake/data/default.nix +5 -0
  52. data/example-flake/data/ssh-keys.nix +7 -0
  53. data/example-flake/environments/base.nix +18 -0
  54. data/example-flake/flake.lock +75 -0
  55. data/example-flake/flake.nix +36 -0
  56. data/example-flake/modules/module-list.nix +13 -0
  57. data/example-flake/shell.nix +11 -0
  58. data/flake.lock +159 -0
  59. data/flake.nix +189 -0
  60. data/gemset.nix +1022 -0
  61. data/lib/confctl/cli/app.rb +145 -0
  62. data/lib/confctl/cli/attr_filters.rb +1 -1
  63. data/lib/confctl/cli/cluster.rb +681 -108
  64. data/lib/confctl/cli/command.rb +24 -2
  65. data/lib/confctl/cli/configuration.rb +171 -106
  66. data/lib/confctl/cli/generation.rb +65 -1
  67. data/lib/confctl/cli/inputs/channels.rb +190 -0
  68. data/lib/confctl/cli/inputs/machines.rb +83 -0
  69. data/lib/confctl/cli/inputs/root.rb +101 -0
  70. data/lib/confctl/cli/inputs.rb +5 -0
  71. data/lib/confctl/cli/log_view.rb +21 -10
  72. data/lib/confctl/cli/migrate/swpins_to_flakes.rb +866 -0
  73. data/lib/confctl/cli/migrate.rb +5 -0
  74. data/lib/confctl/cli/output_formatter.rb +5 -7
  75. data/lib/confctl/cli/swpins/base.rb +9 -0
  76. data/lib/confctl/cli/swpins/channel.rb +2 -5
  77. data/lib/confctl/cli/swpins/cluster.rb +2 -5
  78. data/lib/confctl/cli/swpins/core.rb +2 -5
  79. data/lib/confctl/config_type.rb +7 -0
  80. data/lib/confctl/flake_lock.rb +78 -0
  81. data/lib/confctl/flake_lock_diff.rb +36 -0
  82. data/lib/confctl/generation/build.rb +131 -24
  83. data/lib/confctl/generation/build_list.rb +4 -3
  84. data/lib/confctl/generation/unified.rb +14 -1
  85. data/lib/confctl/git_repo_mirror.rb +2 -2
  86. data/lib/confctl/health_checks/run_command.rb +3 -2
  87. data/lib/confctl/health_checks/systemd/properties.rb +1 -1
  88. data/lib/confctl/health_checks/systemd/property_list.rb +2 -2
  89. data/lib/confctl/inputs/commit_message.rb +125 -0
  90. data/lib/confctl/inputs/git_commit.rb +17 -0
  91. data/lib/confctl/inputs/nix_output_guard.rb +37 -0
  92. data/lib/confctl/inputs/setter.rb +179 -0
  93. data/lib/confctl/inputs/updater.rb +76 -0
  94. data/lib/confctl/inputs.rb +5 -0
  95. data/lib/confctl/inputs_info.rb +50 -0
  96. data/lib/confctl/line_buffer.rb +1 -1
  97. data/lib/confctl/machine.rb +18 -3
  98. data/lib/confctl/machine_control.rb +8 -2
  99. data/lib/confctl/machine_list.rb +2 -2
  100. data/lib/confctl/machine_status.rb +63 -20
  101. data/lib/confctl/nix/args.rb +48 -0
  102. data/lib/confctl/nix.rb +30 -437
  103. data/lib/confctl/nix_build_flake.rb +95 -0
  104. data/lib/confctl/nix_copy.rb +14 -2
  105. data/lib/confctl/nix_flake.rb +449 -0
  106. data/lib/confctl/nix_format.rb +3 -3
  107. data/lib/confctl/nix_legacy.rb +467 -0
  108. data/lib/confctl/swpins/change_set.rb +29 -3
  109. data/lib/confctl/swpins/specs/base.rb +2 -2
  110. data/lib/confctl/ui.rb +19 -0
  111. data/lib/confctl/version.rb +1 -1
  112. data/man/index.html +11 -0
  113. data/man/man8/confctl-options.nix.8.html +113 -0
  114. data/man/man8/confctl.8 +152 -21
  115. data/man/man8/confctl.8.html +355 -0
  116. data/man/man8/confctl.8.md +148 -17
  117. data/man/style.css +301 -0
  118. data/nix/evaluator.nix +94 -69
  119. data/nix/flake/mk-confctl-devshell.nix +85 -0
  120. data/nix/flake/mk-confctl-outputs.nix +522 -0
  121. data/nix/flake/mk-config-devshell.nix +168 -0
  122. data/nix/lib/default.nix +118 -65
  123. data/nix/lib/machine/default.nix +65 -45
  124. data/nix/lib/machine/info.nix +16 -5
  125. data/nix/lib/swpins/eval.nix +42 -29
  126. data/nix/lib/swpins/options.nix +6 -2
  127. data/nix/machines.nix +23 -15
  128. data/nix/modules/cluster/default.nix +104 -41
  129. data/nix/modules/confctl/carrier/base.nix +11 -4
  130. data/nix/modules/confctl/carrier/carrier-env.rb +2 -2
  131. data/nix/modules/confctl/carrier/netboot/build-netboot-server.rb +50 -16
  132. data/nix/modules/confctl/carrier/netboot/nixos.nix +56 -24
  133. data/nix/modules/confctl/configuration-info.nix +17 -0
  134. data/nix/modules/confctl/generations.nix +2 -2
  135. data/nix/modules/confctl/host.nix +13 -0
  136. data/nix/modules/confctl/inputs-info.nix +21 -0
  137. data/nix/modules/confctl/kexec-netboot/default.nix +13 -6
  138. data/nix/modules/confctl/kexec-netboot/kexec-netboot.8.adoc +3 -0
  139. data/nix/modules/confctl/kexec-netboot/kexec-netboot.rb +25 -16
  140. data/nix/modules/confctl/nix.nix +31 -1
  141. data/nix/modules/confctl/swpins.nix +13 -6
  142. data/nix/modules/module-list.nix +4 -2
  143. data/nix/modules/system-list.nix +4 -1
  144. data/nix/package.nix +37 -0
  145. data/shell.nix +39 -8
  146. data/skills/confctl-configuration-update/SKILL.md +228 -0
  147. data/skills/confctl-configuration-update/agents/openai.yaml +4 -0
  148. data/skills/confctl-release/SKILL.md +102 -0
  149. data/skills/confctl-release/agents/openai.yaml +4 -0
  150. data/spec/confctl/cli/cluster_health_check_spec.rb +43 -0
  151. data/spec/confctl/cli/cluster_skip_current_deploy_spec.rb +157 -0
  152. data/spec/confctl/cli/cluster_status_flake_spec.rb +83 -0
  153. data/spec/confctl/cli/inputs_set_output_spec.rb +70 -0
  154. data/spec/confctl/configuration_spec.rb +45 -0
  155. data/spec/confctl/inputs_spec.rb +104 -0
  156. data/spec/confctl/machine_control_spec.rb +112 -0
  157. data/spec/confctl/machine_list_spec.rb +47 -0
  158. data/spec/confctl/nix_flake_spec.rb +41 -0
  159. data/spec/confctl/swpins_spec.rb +106 -0
  160. data/spec/generation/build_modes_spec.rb +132 -0
  161. data/spec/inputs/commit_message_spec.rb +205 -0
  162. data/spec/inputs/nix_cached_fallback_spec.rb +50 -0
  163. data/spec/inputs/nix_output_guard_spec.rb +45 -0
  164. data/spec/spec_helper.rb +12 -0
  165. data/spec/support/cli_helper.rb +57 -0
  166. data/test-runner.sh +7 -0
  167. data/tests/all-tests.nix +30 -0
  168. data/tests/make-test.nix +15 -0
  169. data/tests/runner/extensions/confctl_helpers.rb +238 -0
  170. data/tests/runner/extensions/hostfwd_ports.rb +41 -0
  171. data/tests/suite/auto_rollback.nix +344 -0
  172. data/tests/suite/carrier/deploy.nix +751 -0
  173. data/tests/suite/carrier/netboot.nix +849 -0
  174. data/tests/suite/deploy/base.nix +806 -0
  175. data/tests/suite/deploy/flakes.nix +1 -0
  176. data/tests/suite/deploy/swpins.nix +1 -0
  177. metadata +104 -4
  178. data/nix/modules/confctl/overlays.nix +0 -15
@@ -0,0 +1,113 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="generator" content="md2man 5.1.2 https://github.com/sunaku/md2man" />
6
+ <title>confctl-options(nix.8) &mdash; confctl configuration documentation</title>
7
+ <link rel="stylesheet" href="../style.css"/>
8
+ <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
9
+ </head>
10
+ <body><div class="navbar"><div class="navbar-inner"><span class="brand"><a href="../index.html#man8">man8</a>/confctl-options.nix.8</span></div></div><div class="container-fluid"><h1 id="confctl-options-nix-8-2024-05-07-master"><span class="md2man-title">confctl-options.nix</span> <span class="md2man-section">8</span> <span class="md2man-date">2024-05-07</span> <span class="md2man-source">master</span><a name="confctl-options-nix-8-2024-05-07-master" href="#confctl-options-nix-8-2024-05-07-master" class="md2man-permalink" title="permalink"></a></h1><h2 id="name">NAME<a name="name" href="#name" class="md2man-permalink" title="permalink"></a></h2><p><code>confctl-options.nix</code> - confctl configuration documentation</p><h2 id="description">DESCRIPTION<a name="description" href="#description" class="md2man-permalink" title="permalink"></a></h2><p>This document describes Nix options, which can be used in <a class="md2man-reference" href="../man8/confctl.8.html">confctl(8)</a> cluster
11
+ configurations to configure <code>confctl</code> and machines within the cluster.</p><h2 id="confctl-settings">CONFCTL SETTINGS<a name="confctl-settings" href="#confctl-settings" class="md2man-permalink" title="permalink"></a></h2><p>The following <code>confctl</code> settings can be configured in <code>configs/confctl.nix</code>
12
+ within the deployment configuration directory:</p><dl><dt><code>confctl.buildGenerations.max</code></dt><dd>The maximum number of build generations to be kept.</dd></dl><dl><dd>This is the default value, which can be overriden per host.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>30</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.buildGenerations.maxAge</code></dt><dd>Delete build generations older than
13
+ <code>confctl.buildGenerations.maxAge</code> seconds. Old generations
14
+ are deleted even if <code>confctl.buildGenerations.max</code> is
15
+ not reached.</dd></dl><dl><dd>This is the default value, which can be overriden per host.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>15552000</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.buildGenerations.min</code></dt><dd>The minimum number of build generations to be kept.</dd></dl><dl><dd>This is the default value, which can be overriden per host.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>5</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.hostGenerations.collectGarbage</code></dt><dd>Run nix-collect-garbage</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>true</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.hostGenerations.max</code></dt><dd>The maximum number of generations to be kept on machines.</dd></dl><dl><dd>This is the default value, which can be overriden per host.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>30</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.hostGenerations.maxAge</code></dt><dd>Delete generations older than
16
+ <code>confctl.hostGenerations.maxAge</code> seconds from
17
+ machines. Old generations
18
+ are deleted even if <code>confctl.hostGenerations.max</code> is
19
+ not reached.</dd></dl><dl><dd>This is the default value, which can be overriden per host.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>15552000</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.hostGenerations.min</code></dt><dd>The minimum number of generations to be kept on machines.</dd></dl><dl><dd>This is the default value, which can be overriden per host.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>5</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/generations.nix&gt;</code></p><dl><dt><code>confctl.list.columns</code></dt><dd>Configure which columns should <code>confctl ls</code> show.
20
+ Names correspond to options within <code>cluster.&lt;name&gt;</code>
21
+ module.</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[
22
+ &quot;name&quot;
23
+ &quot;spin&quot;
24
+ &quot;host.fqdn&quot;
25
+ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/cli.nix&gt;</code></p><dl><dt><code>confctl.nix.maxJobs</code></dt><dd>Maximum number of build jobs, passed to <code>nix-build</code>
26
+ commands.</dd></dl><p> <em>Type:</em> null or signed integer or value &quot;auto&quot; (singular enum)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/nix.nix&gt;</code></p><dl><dt><code>confctl.nix.nixPath</code></dt><dd>List of extra paths added to environment variable
27
+ <code>NIX_PATH</code> for all <code>nix-build</code>
28
+ invokations</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/nix.nix&gt;</code></p><h2 id="software-pin-channels">SOFTWARE PIN CHANNELS<a name="software-pin-channels" href="#software-pin-channels" class="md2man-permalink" title="permalink"></a></h2><p>The following <code>confctl</code> settings for software pin channels can be configured
29
+ in <code>configs/swpins.nix</code> within the deployment configuration directory:</p><dl><dt><code>confctl.swpins.channels</code></dt><dd>Software pin channels</dd></dl><p> <em>Type:</em> attribute set of attribute set of (submodule)</p><p> <em>Default:</em> <code>{ }</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.directory</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.directory.path</code></dt><dd>Absolute path to the directory</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;/opt/my-swpin&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git.fetchSubmodules</code></dt><dd>Fetch git submodules</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git.update.auto</code></dt><dd>When enabled, the pin is automatically updated to
30
+ <code>ref</code> before building machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git.update.interval</code></dt><dd>Number of seconds from the last update to trigger the next
31
+ auto-update, if auto-update is enabled.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>3600</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git.update.ref</code></dt><dd>Implicit git reference to use for both manual and automatic updates</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;refs/heads/master&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git.url</code></dt><dd>URL of the git repository</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;https://github.com/vpsfreecz/vpsadminos&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git-rev</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git-rev.fetchSubmodules</code></dt><dd>Fetch git submodules</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git-rev.update.auto</code></dt><dd>When enabled, the pin is automatically updated to
32
+ <code>ref</code> before building machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git-rev.update.interval</code></dt><dd>Number of seconds from the last update to trigger the next
33
+ auto-update, if auto-update is enabled.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>3600</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git-rev.update.ref</code></dt><dd>Implicit git reference to use for both manual and automatic updates</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;refs/heads/master&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.git-rev.url</code></dt><dd>URL of the git repository</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;https://github.com/vpsfreecz/vpsadminos&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.channels.&lt;name&gt;.&lt;name&gt;.type</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> one of &quot;directory&quot;, &quot;git&quot;, &quot;git-rev&quot;</p><p> <em>Default:</em> <code>&quot;git&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.channels</code></dt><dd>List of channels from <code>confctl.swpins.channels</code>
34
+ to use for core swpins</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins</code></dt><dd>Core software packages used internally by confctl</dd></dl><dl><dd>It has to contain package <code>nixpkgs</code>, which is used
35
+ to resolve other software pins from channels or cluster machines.</dd></dl><p> <em>Type:</em> attribute set of (submodule)</p><p> <em>Default:</em> <code>{
36
+ nixpkgs = {
37
+ git-rev = {
38
+ update = {
39
+ auto = true;
40
+ interval = 2592000;
41
+ ref = &quot;refs/heads/nixos-unstable&quot;;
42
+ };
43
+ url = &quot;https://github.com/NixOS/nixpkgs&quot;;
44
+ };
45
+ type = &quot;git-rev&quot;;
46
+ };
47
+ }</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.directory</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.directory.path</code></dt><dd>Absolute path to the directory</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;/opt/my-swpin&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git.fetchSubmodules</code></dt><dd>Fetch git submodules</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git.update.auto</code></dt><dd>When enabled, the pin is automatically updated to
48
+ <code>ref</code> before building machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git.update.interval</code></dt><dd>Number of seconds from the last update to trigger the next
49
+ auto-update, if auto-update is enabled.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>3600</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git.update.ref</code></dt><dd>Implicit git reference to use for both manual and automatic updates</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;refs/heads/master&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git.url</code></dt><dd>URL of the git repository</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;https://github.com/vpsfreecz/vpsadminos&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git-rev</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git-rev.fetchSubmodules</code></dt><dd>Fetch git submodules</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git-rev.update.auto</code></dt><dd>When enabled, the pin is automatically updated to
50
+ <code>ref</code> before building machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git-rev.update.interval</code></dt><dd>Number of seconds from the last update to trigger the next
51
+ auto-update, if auto-update is enabled.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>3600</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git-rev.update.ref</code></dt><dd>Implicit git reference to use for both manual and automatic updates</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;refs/heads/master&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.git-rev.url</code></dt><dd>URL of the git repository</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;https://github.com/vpsfreecz/vpsadminos&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><dl><dt><code>confctl.swpins.core.pins.&lt;name&gt;.type</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> one of &quot;directory&quot;, &quot;git&quot;, &quot;git-rev&quot;</p><p> <em>Default:</em> <code>&quot;git&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/confctl/swpins.nix&gt;</code></p><h2 id="machine-configuration">MACHINE CONFIGURATION<a name="machine-configuration" href="#machine-configuration" class="md2man-permalink" title="permalink"></a></h2><p>The following options can be configured in per-machine <code>module.nix</code> files within
52
+ the deployment configuration directory, i.e. <code>cluster/&lt;machine-name&gt;/module.nix</code>:</p><dl><dt><code>cluster.&lt;name&gt;.addresses</code></dt><dd>IP addresses</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.primary</code></dt><dd>Default address other machines should use to connect to this machine</dd></dl><dl><dd>Defaults to the first IPv4 address if not set</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.primary.address</code></dt><dd>IPv4 address</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.primary.prefix</code></dt><dd>Prefix length</dd></dl><p> <em>Type:</em> positive integer, meaning &gt;0</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.primary.string</code></dt><dd>Address with prefix as string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v4</code></dt><dd>List of IPv4 addresses this machine responds to</dd></dl><p> <em>Type:</em> list of (submodule)</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v4.*.address</code></dt><dd>IPv4 address</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v4.*.prefix</code></dt><dd>Prefix length</dd></dl><p> <em>Type:</em> positive integer, meaning &gt;0</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v4.*.string</code></dt><dd>Address with prefix as string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v6</code></dt><dd>List of IPv6 addresses this machine responds to</dd></dl><p> <em>Type:</em> list of (submodule)</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v6.*.address</code></dt><dd>IPv6 address</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v6.*.prefix</code></dt><dd>Prefix length</dd></dl><p> <em>Type:</em> positive integer, meaning &gt;0</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.addresses.v6.*.string</code></dt><dd>Address with prefix as string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.buildAttribute</code></dt><dd>Path to the attribute in machine system config that should be built</dd></dl><dl><dd>For example, <code>[ &quot;system&quot; &quot;build&quot; &quot;toplevel&quot; ]</code> will select attribute
53
+ <code>config.system.build.toplevel</code>.</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[
54
+ &quot;system&quot;
55
+ &quot;build&quot;
56
+ &quot;toplevel&quot;
57
+ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.buildGenerations.max</code></dt><dd>The maximum number of build generations to be kept on the build
58
+ machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.buildGenerations.maxAge</code></dt><dd>Delete build generations older than
59
+ <code>cluster.&lt;name&gt;.buildGenerations.maxAge</code>
60
+ seconds from the build machine. Old generations are deleted even
61
+ if <code>cluster.&lt;name&gt;.buildGenerations.max</code> is
62
+ not reached.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.buildGenerations.min</code></dt><dd>The minimum number of build generations to be kept on the build
63
+ machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.enable</code></dt><dd>Whether to enable This machine is a carrier for other machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Example:</em> <code>true</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines</code></dt><dd>List of carried machines</dd></dl><p> <em>Type:</em> list of (submodule)</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.alias</code></dt><dd>Alias for carried machine name</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.buildAttribute</code></dt><dd>Path to the attribute in machine system config that should be built</dd></dl><dl><dd>For example, <code>[ &quot;system&quot; &quot;build&quot; &quot;toplevel&quot; ]</code> will select attribute
64
+ <code>config.system.build.toplevel</code>.</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[
65
+ &quot;system&quot;
66
+ &quot;build&quot;
67
+ &quot;toplevel&quot;
68
+ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.buildGenerations.max</code></dt><dd>The maximum number of build generations to be kept on the build
69
+ machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.buildGenerations.maxAge</code></dt><dd>Delete build generations older than
70
+ <code>cluster.&lt;name&gt;.carrier.machines.*.buildGenerations.maxAge</code>
71
+ seconds from the build machine. Old generations are deleted even
72
+ if <code>cluster.&lt;name&gt;.carrier.machines.*.buildGenerations.max</code> is
73
+ not reached.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.buildGenerations.min</code></dt><dd>The minimum number of build generations to be kept on the build
74
+ machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.extraModules</code></dt><dd>A list of additional NixOS modules to be imported for this machine</dd></dl><p> <em>Type:</em> list of path</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.hostGenerations.max</code></dt><dd>The maximum number of generations to be kept on the machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.hostGenerations.maxAge</code></dt><dd>Delete generations older than
75
+ <code>cluster.&lt;name&gt;.carrier.machines.*.hostGenerations.maxAge</code>
76
+ seconds from the machine. Old generations are deleted even
77
+ if <code>cluster.&lt;name&gt;.carrier.machines.*.hostGenerations.max</code> is
78
+ not reached.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.hostGenerations.min</code></dt><dd>The minimum number of generations to be kept on the machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.labels</code></dt><dd>Optional user-defined labels to classify the machine</dd></dl><p> <em>Type:</em> attribute set</p><p> <em>Default:</em> <code>{ }</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.machine</code></dt><dd>Machine name</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.carrier.machines.*.tags</code></dt><dd>Optional user-defined tags to classify the machine</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands</code></dt><dd>Check commands run on the build machine</dd></dl><p> <em>Type:</em> list of (submodule)</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Example:</em> <code>[
79
+ { description = &quot;ping&quot;; command = [ &quot;ping&quot; &quot;-c1&quot; &quot;{host.fqdn}&quot; ]; }
80
+ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.command</code></dt><dd>Command and its arguments</dd></dl><dl><dd>It is possible to access machine attributes as from CLI using curly
81
+ brackets. For example, {host.fqdn} would be replaced by machine FQDN.
82
+ See confctl ls -L for a list of available attributes.</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.cooldown</code></dt><dd>Number of seconds in between check attempts</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>3</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.description</code></dt><dd>Command description</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>&quot;&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.exitStatus</code></dt><dd>Expected exit status</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>0</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.standardError.exclude</code></dt><dd>String that must not be included in standard error</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.standardError.include</code></dt><dd>String that must be included in standard error</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.standardError.match</code></dt><dd>Standard error must match this string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.standardOutput.exclude</code></dt><dd>Strings that must not be included in standard output</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.standardOutput.include</code></dt><dd>Strings that must be included in standard output</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.standardOutput.match</code></dt><dd>Standard output must match this string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.builderCommands.*.timeout</code></dt><dd>Max number of seconds to wait for the check to pass</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>60</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands</code></dt><dd>Check commands run on the target machine</dd></dl><dl><dd>Note that the commands have to be available on the machine.</dd></dl><p> <em>Type:</em> list of (submodule)</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Example:</em> <code>[
83
+ { description = &quot;curl&quot;; command = [ &quot;curl&quot; &quot;-s&quot; &quot;http://localhost:80&quot; ]; }
84
+ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.command</code></dt><dd>Command and its arguments</dd></dl><dl><dd>It is possible to access machine attributes as from CLI using curly
85
+ brackets. For example, {host.fqdn} would be replaced by machine FQDN.
86
+ See confctl ls -L for a list of available attributes.</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.cooldown</code></dt><dd>Number of seconds in between check attempts</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>3</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.description</code></dt><dd>Command description</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>&quot;&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.exitStatus</code></dt><dd>Expected exit status</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>0</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.standardError.exclude</code></dt><dd>String that must not be included in standard error</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.standardError.include</code></dt><dd>String that must be included in standard error</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.standardError.match</code></dt><dd>Standard error must match this string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.standardOutput.exclude</code></dt><dd>Strings that must not be included in standard output</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.standardOutput.include</code></dt><dd>Strings that must be included in standard output</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.standardOutput.match</code></dt><dd>Standard output must match this string</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.machineCommands.*.timeout</code></dt><dd>Max number of seconds to wait for the check to pass</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>60</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.enable</code></dt><dd>Enable systemd checks, enabled by default</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>true</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.systemProperties</code></dt><dd>Check systemd manager properties reported by systemctl show</dd></dl><p> <em>Type:</em> list of (submodule)</p><p> <em>Default:</em> <code>[
87
+ {
88
+ property = &quot;SystemState&quot;;
89
+ value = &quot;running&quot;;
90
+ }
91
+ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.systemProperties.*.cooldown</code></dt><dd>Number of seconds in between check attempts</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>3</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.systemProperties.*.property</code></dt><dd>systemd property name</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.systemProperties.*.timeout</code></dt><dd>Max number of seconds to wait for the check to pass</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>60</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.systemProperties.*.value</code></dt><dd>value to be checked</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.unitProperties</code></dt><dd>Check systemd unit properties reported by systemctl show <unit></dd></dl><p> <em>Type:</em> attribute set of list of (submodule)</p><p> <em>Default:</em> <code>{ }</code></p><p> <em>Example:</em> <code>{
92
+ &quot;firewall.service&quot; = [
93
+ { property = &quot;ActiveState&quot;; value = &quot;active&quot;; }
94
+ ];
95
+ }</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.unitProperties.&lt;name&gt;.*.cooldown</code></dt><dd>Number of seconds in between check attempts</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>3</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.unitProperties.&lt;name&gt;.*.property</code></dt><dd>systemd property name</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.unitProperties.&lt;name&gt;.*.timeout</code></dt><dd>Max number of seconds to wait for the check to pass</dd></dl><p> <em>Type:</em> unsigned integer, meaning &gt;=0</p><p> <em>Default:</em> <code>60</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.healthChecks.systemd.unitProperties.&lt;name&gt;.*.value</code></dt><dd>value to be checked</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host.domain</code></dt><dd>Host domain</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host.fqdn</code></dt><dd>Host FQDN</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host.fullDomain</code></dt><dd>Domain including location, i.e. FQDN without host name</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host.location</code></dt><dd>Host location domain</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host.name</code></dt><dd>Host name</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.host.target</code></dt><dd>Address/host to which the configuration is deployed to</dd></dl><dl><dd>Set to null if the machine is not deployable, e.g. when it is only used
96
+ as a carried machine.</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.hostGenerations.collectGarbage</code></dt><dd>Run nix-collect-garbage</dd></dl><p> <em>Type:</em> null or boolean</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.hostGenerations.max</code></dt><dd>The maximum number of generations to be kept on the machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.hostGenerations.maxAge</code></dt><dd>Delete generations older than
97
+ <code>cluster.&lt;name&gt;.hostGenerations.maxAge</code>
98
+ seconds from the machine. Old generations are deleted even
99
+ if <code>cluster.&lt;name&gt;.hostGenerations.max</code> is
100
+ not reached.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.hostGenerations.min</code></dt><dd>The minimum number of generations to be kept on the machine.</dd></dl><p> <em>Type:</em> null or signed integer</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.labels</code></dt><dd>Optional user-defined labels to classify the machine</dd></dl><p> <em>Type:</em> attribute set</p><p> <em>Default:</em> <code>{ }</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.managed</code></dt><dd>Determines whether the machine is managed using confctl or not</dd></dl><dl><dd>By default, NixOS and vpsAdminOS machines are managed by confctl.</dd></dl><p> <em>Type:</em> null or boolean</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.netboot.enable</code></dt><dd>Whether to enable Include this system on pxe servers.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Example:</em> <code>true</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.netboot.macs</code></dt><dd>List of MAC addresses for iPXE node auto-detection</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.nix.nixPath</code></dt><dd>List of extra paths added to environment variable
101
+ <code>NIX_PATH</code> for <code>nix-build</code></dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.spin</code></dt><dd>OS type</dd></dl><p> <em>Type:</em> one of &quot;openvz&quot;, &quot;nixos&quot;, &quot;vpsadminos&quot;, &quot;other&quot;</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.channels</code></dt><dd>List of channels from <code>confctl.swpins.channels</code>
102
+ to use on this machine</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins</code></dt><dd>List of swpins for this machine, which can supplement or
103
+ override swpins from configured channels</dd></dl><p> <em>Type:</em> attribute set of (submodule)</p><p> <em>Default:</em> <code>{ }</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.directory</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.directory.path</code></dt><dd>Absolute path to the directory</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;/opt/my-swpin&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git.fetchSubmodules</code></dt><dd>Fetch git submodules</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git.update.auto</code></dt><dd>When enabled, the pin is automatically updated to
104
+ <code>ref</code> before building machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git.update.interval</code></dt><dd>Number of seconds from the last update to trigger the next
105
+ auto-update, if auto-update is enabled.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>3600</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git.update.ref</code></dt><dd>Implicit git reference to use for both manual and automatic updates</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;refs/heads/master&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git.url</code></dt><dd>URL of the git repository</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;https://github.com/vpsfreecz/vpsadminos&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git-rev</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> null or (submodule)</p><p> <em>Default:</em> <code>null</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git-rev.fetchSubmodules</code></dt><dd>Fetch git submodules</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git-rev.update.auto</code></dt><dd>When enabled, the pin is automatically updated to
106
+ <code>ref</code> before building machines.</dd></dl><p> <em>Type:</em> boolean</p><p> <em>Default:</em> <code>false</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git-rev.update.interval</code></dt><dd>Number of seconds from the last update to trigger the next
107
+ auto-update, if auto-update is enabled.</dd></dl><p> <em>Type:</em> signed integer</p><p> <em>Default:</em> <code>3600</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git-rev.update.ref</code></dt><dd>Implicit git reference to use for both manual and automatic updates</dd></dl><p> <em>Type:</em> null or string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;refs/heads/master&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.git-rev.url</code></dt><dd>URL of the git repository</dd></dl><p> <em>Type:</em> string</p><p> <em>Default:</em> <code>null</code></p><p> <em>Example:</em> <code>&quot;https://github.com/vpsfreecz/vpsadminos&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.swpins.pins.&lt;name&gt;.type</code></dt><dd>This option has no description.</dd></dl><p> <em>Type:</em> one of &quot;directory&quot;, &quot;git&quot;, &quot;git-rev&quot;</p><p> <em>Default:</em> <code>&quot;git&quot;</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><dl><dt><code>cluster.&lt;name&gt;.tags</code></dt><dd>Optional user-defined tags to classify the machine</dd></dl><p> <em>Type:</em> list of string</p><p> <em>Default:</em> <code>[ ]</code></p><p> <em>Declared by:</em> <code>&lt;confctl/nix/modules/cluster&gt;</code></p><h2 id="services">SERVICES<a name="services" href="#services" class="md2man-permalink" title="permalink"></a></h2><p>The following options can be configured in per-machine <code>config.nix</code> files within
108
+ the deployment configuration directory, i.e. <code>cluster/&lt;machine-name&gt;/config.nix</code>,
109
+ or any other imported Nix file. These options are added by <code>confctl</code> in addition
110
+ to options from <code>NixOS</code> or <code>vpsAdminOS</code>.</p><h2 id="see-also">SEE ALSO<a name="see-also" href="#see-also" class="md2man-permalink" title="permalink"></a></h2><p><a class="md2man-reference" href="../man8/confctl.8.html">confctl(8)</a></p><h2 id="bugs">BUGS<a name="bugs" href="#bugs" class="md2man-permalink" title="permalink"></a></h2><p>Report bugs to <a href="https://github.com/vpsfreecz/confctl/issues">https://github.com/vpsfreecz/confctl/issues</a>.</p><h2 id="about">ABOUT<a name="about" href="#about" class="md2man-permalink" title="permalink"></a></h2><p><code>confctl</code> was originally developed for the purposes of
111
+ <a href="https://vpsfree.org">vpsFree.cz</a> and its cluster
112
+ <a href="https://github.com/vpsfreecz/vpsfree-cz-configuration">configuration</a>.</p></div></body>
113
+ </html>
data/man/man8/confctl.8 CHANGED
@@ -22,11 +22,14 @@ for \fB\fCnix\-build\fR and can also be read by \fB\fCNix\fR while building mach
22
22
  Software pins can be defined using channels or on specific machines.
23
23
  The advantage of using channels is that changing a pin in a channel changes
24
24
  also all machines that use the channel. Channels are defined in file
25
- \fB\fCconfigs/swpins.nix\fR using option \fB\fCconfctl.swpins.channels\fR\&. Deployments
26
- declare software pins and channels in their respective \fB\fCmodule.nix\fR files,
27
- option \fB\fCcluster.<name>.swpins.channels\fR is a list of channels to use and option
28
- \fB\fCcluster.<name>.swpins.pins\fR is an attrset of pins to extend or override pins
29
- from channels.
25
+ \fB\fCconfigs/swpins.nix\fR using option \fB\fCconfctl.swpins.channels\fR (legacy, non\-flake
26
+ configurations).
27
+ .PP
28
+ In flake\-based configurations (using \fB\fCconfctl.lib.mkConfctlOutputs\fR), channel names
29
+ are provided by the flake \fB\fCchannels\fR mapping and machines select them via
30
+ \fB\fCcluster.<name>.inputs.channels\fR\&. Per\-machine role\-to\-input overrides are configured
31
+ via \fB\fCcluster.<name>.inputs.overrides\fR\&. \fB\fCcluster.<name>.swpins.*\fR is not used in flake
32
+ mode; manage \fB\fCflake.lock\fR using the \fB\fCconfctl inputs\fR command family.
30
33
  .PP
31
34
  Software pins declared in the Nix configuration have to be prefetched before
32
35
  they can be used to build machines. See the \fB\fCconfctl swpins\fR command family
@@ -49,9 +52,12 @@ Set output color mode. Defaults to \fB\fCauto\fR, which enables colors when
49
52
  the standard output is connected to a terminal.
50
53
  .SH COMMANDS
51
54
  .TP
52
- \fB\fCconfctl init\fR
55
+ \fB\fCconfctl init\fR [\fIoptions\fP]
53
56
  Create a new configuration in the current directory. The current directory
54
- is set up to be used with \fB\fCconfctl\fR\&.
57
+ is set up to be used with \fB\fCconfctl\fR\&. Defaults to a flake\-based configuration.
58
+ .PP
59
+ \fB\fC\-\-swpins\fR, \fB\fC\-\-legacy\fR
60
+ Create a legacy swpins\-based (non\-flake) configuration.
55
61
  .TP
56
62
  \fB\fCconfctl add\fR \fIname\fP
57
63
  Add new machine to the configuration.
@@ -125,6 +131,9 @@ generations can be managed using \fB\fCconfctl generation\fR command family.
125
131
  .TP
126
132
  \fB\fCconfctl deploy\fR [\fIoptions\fP] [\fImachine\-pattern\fP [\fB\fCboot\fR|\fB\fCswitch\fR|\fB\fCtest\fR|\fB\fCdry\-activate\fR]]
127
133
  Deploy either a new or an existing build generation to matching machines.
134
+ Machines that already use the target generation are skipped before copy,
135
+ activation, reboot and health checks. For carried machines, the
136
+ carrier\-managed profile is used as the deployed state.
128
137
  .IP
129
138
  \fIswitch\-action\fP is the argument to \fB\fCswitch\-to\-configuration\fR called on
130
139
  the target machine. The default action is \fB\fCswitch\fR\&.
@@ -535,26 +544,148 @@ Generate container data files from vpsAdmin API.
535
544
  \fB\fCconfctl gen\-data vpsadmin network\fR
536
545
  Generate network data files from vpsAdmin API.
537
546
  .TP
547
+ \fB\fCconfctl inputs ls\fR [\fIinput\-pattern\fP]
548
+ List root\-level flake inputs and their locked revisions. Available only in
549
+ flake configs.
550
+ .TP
551
+ \fB\fCconfctl inputs update\fR [\fIinput\-name ...\fP]
552
+ Update flake inputs in \fB\fCflake.lock\fR\&. Available only in flake configs.
553
+ .PP
554
+ \fB\fC\-\-[no\-]commit\fR
555
+ Commit changes to git. Disabled by default.
556
+ .PP
557
+ \fB\fC\-\-[no\-]changelog\fR
558
+ Include git log in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
559
+ default.
560
+ .PP
561
+ \fB\fC\-\-[no\-]editor\fR
562
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
563
+ .PP
564
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
565
+ Use when the new version is older than the previously set version. Used for
566
+ generating the commit changelog direction.
567
+ .PP
568
+ \fB\fC\-\-all\fR
569
+ Update all root inputs.
570
+ .TP
571
+ \fB\fCconfctl inputs set\fR \fIinput\-name\fP \fIrev\fP
572
+ Set a flake input to a specific revision in \fB\fCflake.lock\fR while keeping the
573
+ original upstream reference. Available only in flake configs.
574
+ .PP
575
+ \fB\fC\-\-[no\-]commit\fR
576
+ Commit changes to git. Disabled by default.
577
+ .PP
578
+ \fB\fC\-\-[no\-]changelog\fR
579
+ Include git log in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
580
+ default.
581
+ .PP
582
+ \fB\fC\-\-[no]\-editor\fR
583
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
584
+ .PP
585
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
586
+ Use when the new version is older than the previously set version. Used for
587
+ generating the commit changelog direction.
588
+ .TP
589
+ \fB\fCconfctl inputs channel ls\fR [\fIchannel\-pattern\fP]
590
+ List channels and their role\-to\-input mapping (including locked revisions).
591
+ Available only in flake configs.
592
+ .TP
593
+ \fB\fCconfctl inputs channel update\fR \fIchannels\fP [\fIrole\fP]
594
+ Update inputs referenced by selected channels. If \fIrole\fP is provided, update
595
+ only that role (e.g. \fB\fCnixpkgs\fR or \fB\fCvpsadminos\fR). Available only in flake configs.
596
+ .PP
597
+ \fB\fC\-\-[no\-]commit\fR
598
+ Commit changes to git. Disabled by default.
599
+ .PP
600
+ \fB\fC\-\-[no\-]changelog\fR
601
+ Include git log in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
602
+ default.
603
+ .PP
604
+ \fB\fC\-\-[no\-]editor\fR
605
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
606
+ .PP
607
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
608
+ Use when the new version is older than the previously set version. Used for
609
+ generating the commit changelog direction.
610
+ .TP
611
+ \fB\fCconfctl inputs channel set\fR \fIchannels\fP \fIrole\fP \fIrev\fP
612
+ Set inputs referenced by selected channels for a specific role to \fIrev\fP\&.
613
+ Available only in flake configs.
614
+ .PP
615
+ \fB\fC\-\-[no\-]commit\fR
616
+ Commit changes to git. Disabled by default.
617
+ .PP
618
+ \fB\fC\-\-[no\-]changelog\fR
619
+ Include git log in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
620
+ default.
621
+ .PP
622
+ \fB\fC\-\-[no\-]editor\fR
623
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
624
+ .PP
625
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
626
+ Use when the new version is older than the previously set version. Used for
627
+ generating the commit changelog direction.
628
+ .PP
629
+ \fB\fC\-\-[no\-]allow\-shared\fR
630
+ Allow setting inputs that are shared with other channels or roles. Disabled
631
+ by default; without it, shared inputs cause an error.
632
+ .TP
633
+ \fB\fCconfctl inputs machine update\fR \fImachine\fP \fIrole\fP
634
+ Update the input used by a specific machine for a specific role. Available
635
+ only in flake configs.
636
+ .PP
637
+ \fB\fC\-\-[no\-]commit\fR
638
+ Commit changes to git. Disabled by default.
639
+ .PP
640
+ \fB\fC\-\-[no\-]changelog\fR
641
+ Include git log in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
642
+ default.
643
+ .PP
644
+ \fB\fC\-\-[no\-]editor\fR
645
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
646
+ .PP
647
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
648
+ Use when the new version is older than the previously set version. Used for
649
+ generating the commit changelog direction.
650
+ .TP
651
+ \fB\fCconfctl inputs machine set\fR \fImachine\fP \fIrole\fP \fIrev\fP
652
+ Set the input used by a specific machine for a specific role to \fIrev\fP\&.
653
+ Available only in flake configs.
654
+ .PP
655
+ \fB\fC\-\-[no\-]commit\fR
656
+ Commit changes to git. Disabled by default.
657
+ .PP
658
+ \fB\fC\-\-[no\-]changelog\fR
659
+ Include git log in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
660
+ default.
661
+ .PP
662
+ \fB\fC\-\-[no\-]editor\fR
663
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
664
+ .PP
665
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
666
+ Use when the new version is older than the previously set version. Used for
667
+ generating the commit changelog direction.
668
+ .TP
538
669
  \fB\fCconfctl swpins cluster ls\fR [\fIname\-pattern\fP [\fIsw\-pattern\fP]]
539
670
  List cluster machines with pinned software packages.
540
671
  .TP
541
672
  \fB\fCconfctl swpins cluster set\fR \fIname\-pattern\fP \fIsw\-pattern\fP \fIversion...\fP
542
673
  Set selected software packages to new \fIversion\fP\&. The value of \fIversion\fP depends
543
674
  on the type of the software pin, for git it is a git reference, e.g. a revision.
544
- .TP
545
- \fB\fC\-\-[no\-]commit\fR
546
- Commit changed swpins files to git. Disabled by default.
547
- .TP
548
- \fB\fC\-\-[no\-]changelog\fR
549
- Include changelog in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
550
- default.
551
- .TP
552
- \fB\fC\-\-[no]\-editor\fR
553
- Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
554
- .TP
555
- \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
556
- Use when the new version is older than the previously set version. Used for
557
- generating changelog for the commit message.
675
+ .PP
676
+ \fB\fC\-\-[no\-]commit\fR
677
+ Commit changed swpins files to git. Disabled by default.
678
+ .PP
679
+ \fB\fC\-\-[no\-]changelog\fR
680
+ Include changelog in the commit message when \fB\fC\-\-commit\fR is used. Enabled by
681
+ default.
682
+ .PP
683
+ \fB\fC\-\-[no]\-editor\fR
684
+ Open \fB\fC$EDITOR\fR with the commit message. Enabled by default.
685
+ .PP
686
+ \fB\fC\-d\fR, \fB\fC\-\-downgrade\fR
687
+ Use when the new version is older than the previously set version. Used for
688
+ generating changelog for the commit message.
558
689
  .TP
559
690
  \fB\fCconfctl swpins cluster update\fR [\fIname\-pattern\fP [\fIsw\-pattern\fP]]
560
691
  Update selected or all software packages that have been configured to support