diff options
author | Robert Hensing <roberth@users.noreply.github.com> | 2021-05-07 15:48:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-07 15:48:33 +0200 |
commit | 316b82563a7793a4a88bed9e41adb936d9adc969 (patch) | |
tree | 75eb6c1d853ddfe694bbba9a85cae46d84d13747 /nixos | |
parent | 7ea6fae80235106e53fbda1cdc7845fe6778381f (diff) | |
parent | 7bd3c0c2dfcaca2949bf9c2049eb884fc7da7756 (diff) | |
download | nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.tar nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.tar.gz nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.tar.bz2 nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.tar.lz nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.tar.xz nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.tar.zst nixlib-316b82563a7793a4a88bed9e41adb936d9adc969.zip |
Merge pull request #121702 from hercules-ci/nixos-hercules-ci-agent-update
nixos/hercules-ci-agent: updates
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix | 28 | ||||
-rw-r--r-- | nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix | 18 |
2 files changed, 40 insertions, 6 deletions
diff --git a/nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix b/nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix index 9f9b86ee61cb..2f0b573e8721 100644 --- a/nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix +++ b/nixos/modules/services/continuous-integration/hercules-ci-agent/common.nix @@ -37,15 +37,22 @@ let description = '' Number of tasks to perform simultaneously. - A task is a single derivation build or an evaluation. + A task is a single derivation build, an evaluation or an effect run. At minimum, you need 2 concurrent tasks for <literal>x86_64-linux</literal> in your cluster, to allow for import from derivation. <literal>concurrentTasks</literal> can be around the CPU core count or lower if memory is the bottleneck. + + The optimal value depends on the resource consumption characteristics of your workload, + including memory usage and in-task parallelism. This is typically determined empirically. + + When scaling, it is generally better to have a double-size machine than two machines, + because each split of resources causes inefficiencies; particularly with regards + to build latency because of extra downloads. ''; - type = types.int; - default = 4; + type = types.either types.ints.positive (types.enum [ "auto" ]); + default = "auto"; }; workDirectory = mkOption { description = '' @@ -186,7 +193,18 @@ in # even shortly after the previous lookup. This *also* applies to the daemon. narinfo-cache-negative-ttl = 0 ''; - services.hercules-ci-agent.tomlFile = - format.generate "hercules-ci-agent.toml" cfg.settings; + services.hercules-ci-agent = { + tomlFile = + format.generate "hercules-ci-agent.toml" cfg.settings; + + settings.labels = { + agent.source = + if options.services.hercules-ci-agent.package.highestPrio == (lib.modules.mkOptionDefault { }).priority + then "nixpkgs" + else lib.mkOptionDefault "override"; + pkgs.version = pkgs.lib.version; + lib.version = lib.version; + }; + }; }; } diff --git a/nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix b/nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix index e8a42e59de0d..06c174e7d376 100644 --- a/nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix +++ b/nixos/modules/services/continuous-integration/hercules-ci-agent/default.nix @@ -68,7 +68,23 @@ in # Trusted user allows simplified configuration and better performance # when operating in a cluster. nix.trustedUsers = [ config.systemd.services.hercules-ci-agent.serviceConfig.User ]; - services.hercules-ci-agent.settings.nixUserIsTrusted = true; + services.hercules-ci-agent = { + settings = { + nixUserIsTrusted = true; + labels = + let + mkIfNotNull = x: mkIf (x != null) x; + in + { + nixos.configurationRevision = mkIfNotNull config.system.configurationRevision; + nixos.release = config.system.nixos.release; + nixos.label = mkIfNotNull config.system.nixos.label; + nixos.codeName = config.system.nixos.codeName; + nixos.tags = config.system.nixos.tags; + nixos.systemName = mkIfNotNull config.system.name; + }; + }; + }; users.users.hercules-ci-agent = { home = cfg.settings.baseDirectory; |