57 lines
1.6 KiB
Nix
57 lines
1.6 KiB
Nix
|
{ config, inputs, lib, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
mapAgents = lib.flip lib.mapAttrs config.services.hercules-ci-agents;
|
||
|
|
||
|
#lib.foldl' (a: b: a // b) {} (lib.attrValues (lib.mapAttrs (basename: basevalue: lib.mapAttrs' (n: v: lib.nameValuePair "${n}-${basename}" v) basevalue) x));
|
||
|
mergeMap = f: let
|
||
|
outputs = mapAgents f;
|
||
|
in lib.pipe outputs [
|
||
|
(lib.mapAttrs (basename: basevalue:
|
||
|
lib.mapAttrs' (n: v:
|
||
|
lib.nameValuePair "${n}-${basename}" v
|
||
|
) basevalue
|
||
|
))
|
||
|
lib.attrValues
|
||
|
(lib.foldl' (a: b: a // b) {})
|
||
|
];
|
||
|
in
|
||
|
{
|
||
|
imports = [
|
||
|
inputs.hercules-ci-agent.nixosModules.multi-agent-service
|
||
|
];
|
||
|
|
||
|
age.secrets = mergeMap (name: _: {
|
||
|
hci-token = {
|
||
|
file = ./secrets + "/hci-token-${name}-${config.networking.hostName}.age";
|
||
|
owner = "hci-${name}";
|
||
|
group = "hci-${name}";
|
||
|
};
|
||
|
hci-cache-credentials = {
|
||
|
file = ./secrets + "/hci-cache-credentials-${config.networking.hostName}.age";
|
||
|
owner = "hci-${name}";
|
||
|
group = "hci-${name}";
|
||
|
};
|
||
|
hci-cache-config = {
|
||
|
file = ./secrets/hci-cache-config.age;
|
||
|
owner = "hci-${name}";
|
||
|
group = "hci-${name}";
|
||
|
};
|
||
|
});
|
||
|
services.hercules-ci-agents.private-void = {
|
||
|
settings = {
|
||
|
clusterJoinTokenPath = config.age.secrets.hci-token-private-void.path;
|
||
|
binaryCachesPath = config.age.secrets.hci-cache-config-private-void.path;
|
||
|
};
|
||
|
};
|
||
|
systemd.services = mergeMap (name: _: {
|
||
|
hercules-ci-agent = {
|
||
|
# hercules-ci-agent-restarter should take care of this
|
||
|
restartIfChanged = false;
|
||
|
environment = {
|
||
|
AWS_SHARED_CREDENTIALS_FILE = config.age.secrets."hci-cache-credentials-${name}".path;
|
||
|
};
|
||
|
};
|
||
|
});
|
||
|
}
|