Merge pull request #121702 from hercules-ci/nixos-hercules-ci-agent-update
nixos/hercules-ci-agent: updates
This commit is contained in:
commit
316b82563a
|
@ -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 =
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ gnutar, gzip, git, haskell, haskellPackages, lib, makeWrapper, runc, stdenv }:
|
||||
{ gnutar, gzip, git, haskell, haskellPackages, lib, makeWrapper, nixos, runc, stdenv }:
|
||||
let
|
||||
inherit (haskell.lib) overrideCabal addBuildDepends;
|
||||
inherit (lib) makeBinPath;
|
||||
|
@ -16,8 +16,16 @@ let
|
|||
makeWrapper $out/libexec/hercules-ci-agent $out/bin/hercules-ci-agent --prefix PATH : ${makeBinPath bundledBins}
|
||||
'';
|
||||
});
|
||||
in pkg // {
|
||||
meta = pkg.meta // {
|
||||
in pkg.overrideAttrs (o: {
|
||||
meta = o.meta // {
|
||||
position = toString ./default.nix + ":1";
|
||||
};
|
||||
}
|
||||
passthru = o.passthru // {
|
||||
# Does not test the package, but evaluation of the related NixOS module.
|
||||
tests.nixos-minimal-config = nixos {
|
||||
boot.loader.grub.enable = false;
|
||||
fileSystems."/".device = "bogus";
|
||||
services.hercules-ci-agent.enable = true;
|
||||
};
|
||||
};
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue