3 Commits

Author SHA1 Message Date
Tom Alexander
3c17d56664 Separate enabling distributed build vs substituters. 2026-08-05 17:54:38 -04:00
Tom Alexander
adff9fcd29 Update nix_builder to support tar in the flake lockfile. 2026-08-04 21:39:54 -04:00
Tom Alexander
649e4033fd Update nix_builder to record the revisions of the flake inputs. 2026-07-28 10:20:18 -04:00
8 changed files with 74 additions and 34 deletions

View File

@@ -170,11 +170,11 @@
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1784398011,
"narHash": "sha256-RMBrYkNpcOlPvX3LaI3qdZfqgX+R3/D3tsJhxLJJiak=",
"lastModified": 1785893798,
"narHash": "sha256-69nKdvM+E/66sj9R2HEK8i0p0TOt/0MSqfXiZjcJ9nI=",
"ref": "refs/heads/main",
"rev": "59fdbf41efdd0bbd0341a7534738149b33bd557f",
"revCount": 37,
"rev": "6386febdb81eb1e072ad7cb568019f06618008fe",
"revCount": 41,
"type": "git",
"url": "https://code.fizz.buzz/talexander/nix_builder.git"
},

View File

@@ -4,13 +4,15 @@
config = {
me.distributed_build.enable = true;
me.distributed_build.machines.quark = {
enable = false;
enable_build = false;
enable_substituter = false;
additional_config = {
speedFactor = 2;
};
};
me.distributed_build.machines.hydra = {
enable = true;
enable_build = false;
enable_substituter = true;
additional_config = {
speedFactor = 2;
};

View File

@@ -4,10 +4,19 @@
config = {
me.distributed_build.enable = true;
me.distributed_build.machines.quark = {
enable = true;
enable_build = false;
enable_substituter = false;
additional_config = {
speedFactor = 2;
};
};
me.distributed_build.machines.hydra = {
enable_build = false;
enable_substituter = true;
additional_config = {
speedFactor = 2;
};
substituter_url = "ssh-ng://nixworker@ns1.fizz.buzz:65122?compress=true&ssh-key=/persist/manual/ssh/root/keys/id_ed25519&remote-store=local?root=/.disk/root";
};
};
}

View File

@@ -4,13 +4,15 @@
config = {
me.distributed_build.enable = true;
me.distributed_build.machines.quark = {
enable = false;
enable_build = false;
enable_substituter = false;
additional_config = {
speedFactor = 2;
};
};
me.distributed_build.machines.hydra = {
enable = true;
enable_build = false;
enable_substituter = true;
additional_config = {
speedFactor = 2;
};

View File

@@ -4,13 +4,15 @@
config = {
me.distributed_build.enable = true;
me.distributed_build.machines.quark = {
enable = false;
enable_build = false;
enable_substituter = false;
additional_config = {
speedFactor = 2;
};
};
me.distributed_build.machines.hydra = {
enable = true;
enable_build = false;
enable_substituter = true;
additional_config = {
speedFactor = 2;
};

View File

@@ -3,8 +3,16 @@
config = {
me.distributed_build.enable = true;
me.distributed_build.machines.quark = {
enable_build = false;
enable_substituter = false;
additional_config = {
speedFactor = 2;
};
};
me.distributed_build.machines.hydra = {
enable = true;
enable_build = false;
enable_substituter = true;
additional_config = {
speedFactor = 2;
};

View File

@@ -4,10 +4,19 @@
config = {
me.distributed_build.enable = true;
me.distributed_build.machines.quark = {
enable = true;
enable_build = false;
enable_substituter = false;
additional_config = {
speedFactor = 2;
};
};
me.distributed_build.machines.hydra = {
enable_build = false;
enable_substituter = true;
additional_config = {
speedFactor = 2;
};
substituter_url = "ssh-ng://nixworker@ns1.fizz.buzz:65122?compress=true&ssh-key=/persist/manual/ssh/root/keys/id_ed25519&remote-store=local?root=/.disk/root";
};
};
}

View File

@@ -10,7 +10,14 @@
let
make_machine_config = name: {
enable = lib.mkOption {
enable_build = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether we want to use the ${name} machine during distributed builds.";
};
enable_substituter = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
@@ -59,11 +66,30 @@ let
hostName = lib.mkForce "hydra?remote-store=local?root=/.disk/root";
};
};
build_machine_list = (
map (
hostname:
(lib.mkIf config.me.distributed_build.machines."${hostname}".enable_build (
lib.mkMerge [
{
hostName = hostname;
sshUser = "nixworker";
sshKey = "/persist/manual/ssh/root/keys/id_ed25519";
maxJobs = 1;
supportedFeatures = all_nixos_configs."${hostname}".config.me.optimizations.system_features;
protocol = "ssh-ng";
}
static_host_configs."${hostname}"
config.me.distributed_build.machines."${hostname}".additional_config
]
))
) (builtins.attrNames all_nixos_configs)
);
substituters_list = (
map (
hostname:
(lib.mkIf (
config.me.distributed_build.machines."${hostname}".enable
config.me.distributed_build.machines."${hostname}".enable_substituter
&& config.me.distributed_build.machines."${hostname}".substituter_url != null
) (config.me.distributed_build.machines."${hostname}".substituter_url))
) (builtins.attrNames all_nixos_configs)
@@ -112,25 +138,7 @@ in
];
}
{
nix.buildMachines = (
map (
hostname:
(lib.mkIf config.me.distributed_build.machines."${hostname}".enable (
lib.mkMerge [
{
hostName = hostname;
sshUser = "nixworker";
sshKey = "/persist/manual/ssh/root/keys/id_ed25519";
maxJobs = 1;
supportedFeatures = all_nixos_configs."${hostname}".config.me.optimizations.system_features;
protocol = "ssh-ng";
}
static_host_configs."${hostname}"
config.me.distributed_build.machines."${hostname}".additional_config
]
))
) (builtins.attrNames all_nixos_configs)
);
nix.buildMachines = build_machine_list;
}
(lib.mkIf has_any_substituters {
nix.settings.substitute = lib.mkForce true;