55 lines
1.5 KiB
Nix
55 lines
1.5 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
inherit (builtins) elem;
|
|
inherit (lib) mkIf mkEnableOption mkOption types optional;
|
|
cfg = config.qenya.services.distributed-builds;
|
|
in
|
|
{
|
|
options.qenya.services.distributed-builds = {
|
|
enable = mkEnableOption "distributed builds";
|
|
keyFile = mkOption {
|
|
type = types.path;
|
|
description = ''
|
|
Path to the OpenSSH private key to be used for distributed builds.
|
|
'';
|
|
};
|
|
builders = mkOption {
|
|
type = types.listOf types.str;
|
|
default = [ ];
|
|
description = ''
|
|
List of builders to attempt to use for distributed builds.
|
|
'';
|
|
example = [ "kalessin" ];
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
assertions = [{
|
|
assertion = cfg ? keyFile;
|
|
message = "must specify a private key to be used for distributed builds";
|
|
}];
|
|
|
|
nix.distributedBuilds = true;
|
|
nix.settings.builders-use-substitutes = true;
|
|
|
|
nix.buildMachines =
|
|
(optional (elem "kalessin" cfg.builders) {
|
|
hostName = config.birdsong.hosts."kalessin".ipv4;
|
|
sshUser = "remotebuild";
|
|
sshKey = cfg.keyFile;
|
|
systems = [ "aarch64-linux" ];
|
|
maxJobs = 2;
|
|
supportedFeatures = [ "big-parallel" ];
|
|
})
|
|
++ (optional (elem "kilgharrah" cfg.builders) {
|
|
hostName = config.birdsong.hosts."kilgharrah".ipv4;
|
|
sshUser = "remotebuild";
|
|
sshKey = cfg.keyFile;
|
|
systems = [ "x86_64-linux" ];
|
|
maxJobs = 12;
|
|
supportedFeatures = [ "big-parallel" ];
|
|
});
|
|
};
|
|
}
|