summaryrefslogtreecommitdiff
path: root/modules/nix/linux-builder.nix
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2024-04-05 10:59:38 +0200
committerGitHub <noreply@github.com>2024-04-05 10:59:38 +0200
commit6bd39d420578aacf7c0bab7de3e7027b952115ae (patch)
treee84978f345a91441855c396331aee4c68ee77c03 /modules/nix/linux-builder.nix
parentd7f1482c47503d6508657ebcbaeef281b78c6c56 (diff)
parent36524adc31566655f2f4d55ad6b875fb5c1a4083 (diff)
Merge branch 'LnL7:master' into master
Diffstat (limited to 'modules/nix/linux-builder.nix')
-rw-r--r--modules/nix/linux-builder.nix75
1 files changed, 71 insertions, 4 deletions
diff --git a/modules/nix/linux-builder.nix b/modules/nix/linux-builder.nix
index d487800..ecaf686 100644
--- a/modules/nix/linux-builder.nix
+++ b/modules/nix/linux-builder.nix
@@ -60,27 +60,95 @@ in
'';
};
+ mandatoryFeatures = mkOption {
+ type = types.listOf types.str;
+ default = [];
+ defaultText = literalExpression ''[]'';
+ example = literalExpression ''[ "big-parallel" ]'';
+ description = lib.mdDoc ''
+ A list of features mandatory for the Linux builder. The builder will
+ be ignored for derivations that don't require all features in
+ this list. All mandatory features are automatically included in
+ {var}`supportedFeatures`.
+
+ This sets the corresponding `nix.buildMachines.*.mandatoryFeatures` option.
+ '';
+ };
+
maxJobs = mkOption {
type = types.ints.positive;
default = 1;
example = 4;
description = lib.mdDoc ''
- This option specifies the maximum number of jobs to run on the Linux builder at once.
+ The number of concurrent jobs the Linux builder machine supports. The
+ build machine will enforce its own limits, but this allows hydra
+ to schedule better since there is no work-stealing between build
+ machines.
This sets the corresponding `nix.buildMachines.*.maxJobs` option.
'';
};
+ protocol = mkOption {
+ type = types.str;
+ default = "ssh-ng";
+ defaultText = literalExpression ''"ssh-ng"'';
+ example = literalExpression ''"ssh"'';
+ description = lib.mdDoc ''
+ The protocol used for communicating with the build machine. Use
+ `ssh-ng` if your remote builder and your local Nix version support that
+ improved protocol.
+
+ Use `null` when trying to change the special localhost builder without a
+ protocol which is for example used by hydra.
+ '';
+ };
+
+ speedFactor = mkOption {
+ type = types.ints.positive;
+ default = 1;
+ defaultText = literalExpression ''1'';
+ description = lib.mdDoc ''
+ The relative speed of the Linux builder. This is an arbitrary integer
+ that indicates the speed of this builder, relative to other
+ builders. Higher is faster.
+
+ This sets the corresponding `nix.buildMachines.*.speedFactor` option.
+ '';
+ };
+
supportedFeatures = mkOption {
type = types.listOf types.str;
default = [ "kvm" "benchmark" "big-parallel" ];
+ defaultText = literalExpression ''[ "kvm" "benchmark" "big-parallel" ]'';
+ example = literalExpression ''[ "kvm" "big-parallel" ]'';
description = lib.mdDoc ''
- This option specifies the list of features supported by the Linux builder.
+ A list of features supported by the Linux builder. The builder will
+ be ignored for derivations that require features not in this
+ list.
This sets the corresponding `nix.buildMachines.*.supportedFeatures` option.
'';
};
+ systems = mkOption {
+ type = types.listOf types.str;
+ default = [ "${stdenv.hostPlatform.uname.processor}-linux" ];
+ defaultText = literalExpression ''[ "''${stdenv.hostPlatform.uname.processor}-linux" ]'';
+ example = literalExpression ''
+ [
+ "x86_64-linux"
+ "aarch64-linux"
+ ]
+ '';
+ description = lib.mdDoc ''
+ This option specifies system types the build machine can execute derivations on.
+
+ This sets the corresponding `nix.buildMachines.*.systems` option.
+ '';
+ };
+
+
workingDirectory = mkOption {
type = types.str;
default = "/var/lib/darwin-builder";
@@ -139,9 +207,8 @@ in
hostName = "linux-builder";
sshUser = "builder";
sshKey = "/etc/nix/builder_ed25519";
- system = "${stdenv.hostPlatform.uname.processor}-linux";
publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUpCV2N4Yi9CbGFxdDFhdU90RStGOFFVV3JVb3RpQzVxQkorVXVFV2RWQ2Igcm9vdEBuaXhvcwo=";
- inherit (cfg) maxJobs supportedFeatures;
+ inherit (cfg) mandatoryFeatures maxJobs protocol speedFactor supportedFeatures systems;
}];
nix.settings.builders-use-substitutes = true;