set up distributed builds
This commit is contained in:
parent
d69e1dcc16
commit
c60b753c5c
5 changed files with 106 additions and 1 deletions
45
services/distributed-builds.nix
Normal file
45
services/distributed-builds.nix
Normal file
|
@ -0,0 +1,45 @@
|
|||
{ 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" "x86_64-linux" ];
|
||||
supportedFeatures = [ ];
|
||||
});
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue