.TH confctl\-options.nix 8 2024\-05\-07 master .SH NAME .PP \fB\fCconfctl\-options.nix\fR \- confctl configuration documentation .SH DESCRIPTION .PP This document describes Nix options, which can be used in .BR confctl (8) cluster configurations to configure \fB\fCconfctl\fR and machines within the cluster. .SH CONFCTL SETTINGS .PP The following \fB\fCconfctl\fR settings can be configured in \fB\fCconfigs/confctl.nix\fR within the deployment configuration directory: .TP \fB\fCconfctl.buildGenerations.max\fR The maximum number of build generations to be kept. .IP This is the default value, which can be overriden per host. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC30\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.buildGenerations.maxAge\fR Delete build generations older than \fB\fCconfctl.buildGenerations.maxAge\fR seconds. Old generations are deleted even if \fB\fCconfctl.buildGenerations.max\fR is not reached. .IP This is the default value, which can be overriden per host. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC15552000\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.buildGenerations.min\fR The minimum number of build generations to be kept. .IP This is the default value, which can be overriden per host. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC5\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.hostGenerations.collectGarbage\fR Run nix\-collect\-garbage .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCtrue\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.hostGenerations.max\fR The maximum number of generations to be kept on machines. .IP This is the default value, which can be overriden per host. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC30\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.hostGenerations.maxAge\fR Delete generations older than \fB\fCconfctl.hostGenerations.maxAge\fR seconds from machines. Old generations are deleted even if \fB\fCconfctl.hostGenerations.max\fR is not reached. .IP This is the default value, which can be overriden per host. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC15552000\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.hostGenerations.min\fR The minimum number of generations to be kept on machines. .IP This is the default value, which can be overriden per host. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC5\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.list.columns\fR Configure which columns should \fB\fCconfctl ls\fR show. Names correspond to options within \fB\fCcluster.\fR module. .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ "name" "spin" "host.fqdn" ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.nix.maxJobs\fR Maximum number of build jobs, passed to \fB\fCnix\-build\fR commands. .PP \fIType:\fP null or signed integer or value "auto" (singular enum) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.nix.nixPath\fR List of extra paths added to environment variable \fB\fCNIX_PATH\fR for all \fB\fCnix\-build\fR invokations .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .SH SOFTWARE PIN CHANNELS .PP The following \fB\fCconfctl\fR settings for software pin channels can be configured in \fB\fCconfigs/swpins.nix\fR within the deployment configuration directory: .TP \fB\fCconfctl.swpins.channels\fR Software pin channels .PP \fIType:\fP attribute set of attribute set of (submodule) .PP \fIDefault:\fP \fB\fC{ }\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...directory\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...directory.path\fR Absolute path to the directory .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"/opt/my\-swpin"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git.fetchSubmodules\fR Fetch git submodules .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git.update.auto\fR When enabled, the pin is automatically updated to \fB\fCref\fR before building machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git.update.interval\fR Number of seconds from the last update to trigger the next auto\-update, if auto\-update is enabled. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC3600\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git.update.ref\fR Implicit git reference to use for both manual and automatic updates .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"refs/heads/master"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git.url\fR URL of the git repository .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"https://github.com/vpsfreecz/vpsadminos"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\-rev\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\-rev.fetchSubmodules\fR Fetch git submodules .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\-rev.update.auto\fR When enabled, the pin is automatically updated to \fB\fCref\fR before building machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\-rev.update.interval\fR Number of seconds from the last update to trigger the next auto\-update, if auto\-update is enabled. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC3600\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\-rev.update.ref\fR Implicit git reference to use for both manual and automatic updates .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"refs/heads/master"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...git\-rev.url\fR URL of the git repository .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"https://github.com/vpsfreecz/vpsadminos"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.channels...type\fR This option has no description. .PP \fIType:\fP one of "directory", "git", "git\-rev" .PP \fIDefault:\fP \fB\fC"git"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.channels\fR List of channels from \fB\fCconfctl.swpins.channels\fR to use for core swpins .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins\fR Core software packages used internally by confctl .IP It has to contain package \fB\fCnixpkgs\fR, which is used to resolve other software pins from channels or cluster machines. .PP \fIType:\fP attribute set of (submodule) .PP \fIDefault:\fP \fB\fC{ nixpkgs = { git\-rev = { update = { auto = true; interval = 2592000; ref = "refs/heads/nixos\-unstable"; }; url = "https://github.com/NixOS/nixpkgs"; }; type = "git\-rev"; }; }\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..directory\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..directory.path\fR Absolute path to the directory .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"/opt/my\-swpin"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git.fetchSubmodules\fR Fetch git submodules .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git.update.auto\fR When enabled, the pin is automatically updated to \fB\fCref\fR before building machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git.update.interval\fR Number of seconds from the last update to trigger the next auto\-update, if auto\-update is enabled. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC3600\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git.update.ref\fR Implicit git reference to use for both manual and automatic updates .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"refs/heads/master"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git.url\fR URL of the git repository .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"https://github.com/vpsfreecz/vpsadminos"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\-rev\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\-rev.fetchSubmodules\fR Fetch git submodules .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\-rev.update.auto\fR When enabled, the pin is automatically updated to \fB\fCref\fR before building machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\-rev.update.interval\fR Number of seconds from the last update to trigger the next auto\-update, if auto\-update is enabled. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC3600\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\-rev.update.ref\fR Implicit git reference to use for both manual and automatic updates .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"refs/heads/master"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..git\-rev.url\fR URL of the git repository .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"https://github.com/vpsfreecz/vpsadminos"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCconfctl.swpins.core.pins..type\fR This option has no description. .PP \fIType:\fP one of "directory", "git", "git\-rev" .PP \fIDefault:\fP \fB\fC"git"\fR .PP \fIDeclared by:\fP \fB\fC\fR .SH MACHINE CONFIGURATION .PP The following options can be configured in per\-machine \fB\fCmodule.nix\fR files within the deployment configuration directory, i.e. \fB\fCcluster//module.nix\fR: .TP \fB\fCcluster..addresses\fR IP addresses .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.primary\fR Default address other machines should use to connect to this machine .IP Defaults to the first IPv4 address if not set .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.primary.address\fR IPv4 address .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.primary.prefix\fR Prefix length .PP \fIType:\fP positive integer, meaning >0 .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.primary.string\fR Address with prefix as string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v4\fR List of IPv4 addresses this machine responds to .PP \fIType:\fP list of (submodule) .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v4.*.address\fR IPv4 address .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v4.*.prefix\fR Prefix length .PP \fIType:\fP positive integer, meaning >0 .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v4.*.string\fR Address with prefix as string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v6\fR List of IPv6 addresses this machine responds to .PP \fIType:\fP list of (submodule) .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v6.*.address\fR IPv6 address .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v6.*.prefix\fR Prefix length .PP \fIType:\fP positive integer, meaning >0 .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..addresses.v6.*.string\fR Address with prefix as string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..buildAttribute\fR Path to the attribute in machine system config that should be built .IP For example, \fB\fC[ "system" "build" "toplevel" ]\fR will select attribute \fB\fCconfig.system.build.toplevel\fR\&. .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ "system" "build" "toplevel" ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..buildGenerations.max\fR The maximum number of build generations to be kept on the build machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..buildGenerations.maxAge\fR Delete build generations older than \fB\fCcluster..buildGenerations.maxAge\fR seconds from the build machine. Old generations are deleted even if \fB\fCcluster..buildGenerations.max\fR is not reached. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..buildGenerations.min\fR The minimum number of build generations to be kept on the build machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.enable\fR Whether to enable This machine is a carrier for other machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIExample:\fP \fB\fCtrue\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines\fR List of carried machines .PP \fIType:\fP list of (submodule) .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.alias\fR Alias for carried machine name .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.buildAttribute\fR Path to the attribute in machine system config that should be built .IP For example, \fB\fC[ "system" "build" "toplevel" ]\fR will select attribute \fB\fCconfig.system.build.toplevel\fR\&. .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ "system" "build" "toplevel" ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.buildGenerations.max\fR The maximum number of build generations to be kept on the build machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.buildGenerations.maxAge\fR Delete build generations older than \fB\fCcluster..carrier.machines.*.buildGenerations.maxAge\fR seconds from the build machine. Old generations are deleted even if \fB\fCcluster..carrier.machines.*.buildGenerations.max\fR is not reached. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.buildGenerations.min\fR The minimum number of build generations to be kept on the build machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.extraModules\fR A list of additional NixOS modules to be imported for this machine .PP \fIType:\fP list of path .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.hostGenerations.max\fR The maximum number of generations to be kept on the machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.hostGenerations.maxAge\fR Delete generations older than \fB\fCcluster..carrier.machines.*.hostGenerations.maxAge\fR seconds from the machine. Old generations are deleted even if \fB\fCcluster..carrier.machines.*.hostGenerations.max\fR is not reached. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.hostGenerations.min\fR The minimum number of generations to be kept on the machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.labels\fR Optional user\-defined labels to classify the machine .PP \fIType:\fP attribute set .PP \fIDefault:\fP \fB\fC{ }\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.machine\fR Machine name .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..carrier.machines.*.tags\fR Optional user\-defined tags to classify the machine .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands\fR Check commands run on the build machine .PP \fIType:\fP list of (submodule) .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIExample:\fP \fB\fC[ { description = "ping"; command = [ "ping" "\-c1" "{host.fqdn}" ]; } ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.command\fR Command and its arguments .IP It is possible to access machine attributes as from CLI using curly brackets. For example, {host.fqdn} would be replaced by machine FQDN. See confctl ls \-L for a list of available attributes. .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.cooldown\fR Number of seconds in between check attempts .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC3\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.description\fR Command description .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fC""\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.exitStatus\fR Expected exit status .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC0\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.standardError.exclude\fR String that must not be included in standard error .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.standardError.include\fR String that must be included in standard error .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.standardError.match\fR Standard error must match this string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.standardOutput.exclude\fR Strings that must not be included in standard output .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.standardOutput.include\fR Strings that must be included in standard output .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.standardOutput.match\fR Standard output must match this string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.builderCommands.*.timeout\fR Max number of seconds to wait for the check to pass .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC60\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands\fR Check commands run on the target machine .IP Note that the commands have to be available on the machine. .PP \fIType:\fP list of (submodule) .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIExample:\fP \fB\fC[ { description = "curl"; command = [ "curl" "\-s" "http://localhost:80" ]; } ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.command\fR Command and its arguments .IP It is possible to access machine attributes as from CLI using curly brackets. For example, {host.fqdn} would be replaced by machine FQDN. See confctl ls \-L for a list of available attributes. .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.cooldown\fR Number of seconds in between check attempts .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC3\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.description\fR Command description .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fC""\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.exitStatus\fR Expected exit status .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC0\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.standardError.exclude\fR String that must not be included in standard error .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.standardError.include\fR String that must be included in standard error .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.standardError.match\fR Standard error must match this string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.standardOutput.exclude\fR Strings that must not be included in standard output .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.standardOutput.include\fR Strings that must be included in standard output .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.standardOutput.match\fR Standard output must match this string .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.machineCommands.*.timeout\fR Max number of seconds to wait for the check to pass .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC60\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.enable\fR Enable systemd checks, enabled by default .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCtrue\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.systemProperties\fR Check systemd manager properties reported by systemctl show .PP \fIType:\fP list of (submodule) .PP \fIDefault:\fP \fB\fC[ { property = "SystemState"; value = "running"; } ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.systemProperties.*.cooldown\fR Number of seconds in between check attempts .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC3\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.systemProperties.*.property\fR systemd property name .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.systemProperties.*.timeout\fR Max number of seconds to wait for the check to pass .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC60\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.systemProperties.*.value\fR value to be checked .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.unitProperties\fR Check systemd unit properties reported by systemctl show .PP \fIType:\fP attribute set of list of (submodule) .PP \fIDefault:\fP \fB\fC{ }\fR .PP \fIExample:\fP \fB\fC{ "firewall.service" = [ { property = "ActiveState"; value = "active"; } ]; }\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.unitProperties..*.cooldown\fR Number of seconds in between check attempts .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC3\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.unitProperties..*.property\fR systemd property name .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.unitProperties..*.timeout\fR Max number of seconds to wait for the check to pass .PP \fIType:\fP unsigned integer, meaning >=0 .PP \fIDefault:\fP \fB\fC60\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..healthChecks.systemd.unitProperties..*.value\fR value to be checked .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host.domain\fR Host domain .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host.fqdn\fR Host FQDN .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host.fullDomain\fR Domain including location, i.e. FQDN without host name .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host.location\fR Host location domain .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host.name\fR Host name .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..host.target\fR Address/host to which the configuration is deployed to .IP Set to null if the machine is not deployable, e.g. when it is only used as a carried machine. .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..hostGenerations.collectGarbage\fR Run nix\-collect\-garbage .PP \fIType:\fP null or boolean .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..hostGenerations.max\fR The maximum number of generations to be kept on the machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..hostGenerations.maxAge\fR Delete generations older than \fB\fCcluster..hostGenerations.maxAge\fR seconds from the machine. Old generations are deleted even if \fB\fCcluster..hostGenerations.max\fR is not reached. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..hostGenerations.min\fR The minimum number of generations to be kept on the machine. .PP \fIType:\fP null or signed integer .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..labels\fR Optional user\-defined labels to classify the machine .PP \fIType:\fP attribute set .PP \fIDefault:\fP \fB\fC{ }\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..managed\fR Determines whether the machine is managed using confctl or not .IP By default, NixOS and vpsAdminOS machines are managed by confctl. .PP \fIType:\fP null or boolean .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..netboot.enable\fR Whether to enable Include this system on pxe servers. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIExample:\fP \fB\fCtrue\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..netboot.macs\fR List of MAC addresses for iPXE node auto\-detection .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..nix.nixPath\fR List of extra paths added to environment variable \fB\fCNIX_PATH\fR for \fB\fCnix\-build\fR .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..spin\fR OS type .PP \fIType:\fP one of "openvz", "nixos", "vpsadminos", "other" .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.channels\fR List of channels from \fB\fCconfctl.swpins.channels\fR to use on this machine .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins\fR List of swpins for this machine, which can supplement or override swpins from configured channels .PP \fIType:\fP attribute set of (submodule) .PP \fIDefault:\fP \fB\fC{ }\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..directory\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..directory.path\fR Absolute path to the directory .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"/opt/my\-swpin"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git.fetchSubmodules\fR Fetch git submodules .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git.update.auto\fR When enabled, the pin is automatically updated to \fB\fCref\fR before building machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git.update.interval\fR Number of seconds from the last update to trigger the next auto\-update, if auto\-update is enabled. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC3600\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git.update.ref\fR Implicit git reference to use for both manual and automatic updates .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"refs/heads/master"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git.url\fR URL of the git repository .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"https://github.com/vpsfreecz/vpsadminos"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\-rev\fR This option has no description. .PP \fIType:\fP null or (submodule) .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\-rev.fetchSubmodules\fR Fetch git submodules .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\-rev.update.auto\fR When enabled, the pin is automatically updated to \fB\fCref\fR before building machines. .PP \fIType:\fP boolean .PP \fIDefault:\fP \fB\fCfalse\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\-rev.update.interval\fR Number of seconds from the last update to trigger the next auto\-update, if auto\-update is enabled. .PP \fIType:\fP signed integer .PP \fIDefault:\fP \fB\fC3600\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\-rev.update.ref\fR Implicit git reference to use for both manual and automatic updates .PP \fIType:\fP null or string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"refs/heads/master"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..git\-rev.url\fR URL of the git repository .PP \fIType:\fP string .PP \fIDefault:\fP \fB\fCnull\fR .PP \fIExample:\fP \fB\fC"https://github.com/vpsfreecz/vpsadminos"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..swpins.pins..type\fR This option has no description. .PP \fIType:\fP one of "directory", "git", "git\-rev" .PP \fIDefault:\fP \fB\fC"git"\fR .PP \fIDeclared by:\fP \fB\fC\fR .TP \fB\fCcluster..tags\fR Optional user\-defined tags to classify the machine .PP \fIType:\fP list of string .PP \fIDefault:\fP \fB\fC[ ]\fR .PP \fIDeclared by:\fP \fB\fC\fR .SH SERVICES .PP The following options can be configured in per\-machine \fB\fCconfig.nix\fR files within the deployment configuration directory, i.e. \fB\fCcluster//config.nix\fR, or any other imported Nix file. These options are added by \fB\fCconfctl\fR in addition to options from \fB\fCNixOS\fR or \fB\fCvpsAdminOS\fR\&. .SH SEE ALSO .PP .BR confctl (8) .SH BUGS .PP Report bugs to \[la]https://github.com/vpsfreecz/confctl/issues\[ra]\&. .SH ABOUT .PP \fB\fCconfctl\fR was originally developed for the purposes of vpsFree.cz \[la]https://vpsfree.org\[ra] and its cluster configuration \[la]https://github.com/vpsfreecz/vpsfree-cz-configuration\[ra]\&.