system/roles/nix-build-client.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | {
config,
lib,
...
}:
let
data = (import ../../data);
machines = lib.filterAttrs (k: _: k != config.networking.hostName) data.machines;
mkKnownHost =
name:
{ publicKey, domains, ... }:
{
inherit publicKey;
extraHostNames = map (domain: "${name}.${domain}") domains;
};
mkBuilder =
{
system,
systems ? [ system ],
sshUser ? "nixremote",
protocol ? "ssh-ng",
...
}@builder:
builder
// {
inherit
sshUser
systems
protocol
;
};
mkBuildMachine =
hostName: machine:
(mkBuilder machine.builder)
// {
inherit hostName;
};
in
{
programs.ssh.knownHosts = lib.mapAttrs mkKnownHost machines;
nix = {
distributedBuilds = true;
buildMachines = lib.mapAttrsToList mkBuildMachine (lib.filterAttrs (n: v: v ? builder) machines);
settings = {
connect-timeout = 1;
};
};
}
|