staging-hydra: switch queue runner to presigned uploads
Builders upload NARs directly to S3 via presigned URLs instead of streaming through the queue runner. This requires every builder to substitute from the forced cache, otherwise the queue runner rejects it, so add the staging cache as a substituter on all staging builders via a shared module.
Jörg Thalheim committed
Jun 19, 2026 at 11:55 UTC
31985868a6a63e5f08677ea8182b390e24d69213
4 files changed
+14
macs/common/ofborg-queue-builder.nix
+1
@@ -8,6 +8,7 @@
8
{
9
imports = [
10
inputs.hydra.darwinModules.builder
11
+ ../../non-critical-infra/modules/hydra/staging-cache.nix
12
];
13
14
services.hydra-queue-builder-dev = {
non-critical-infra/hosts/staging-hydra/hydra.nix
+2
@@ -126,6 +126,8 @@ in
126
remoteStoreAddr = [
127
"s3://nix-cache-staging?secret-key=${config.sops.secrets.signing-key.path}&ls-compression=br&log-compression=br"
128
];
129
+ usePresignedUploads = true;
130
+ forcedSubstituters = [ "https://cache-staging.nixos.org" ];
131
};
132
};
133
non-critical-infra/modules/hydra/builder.nix
+1
@@ -15,6 +15,7 @@ in
15
{
16
imports = [
17
inputs.hydra.nixosModules.builder
18
+ ./staging-cache.nix
19
];
20
21
services.hydra-queue-builder-dev = {
non-critical-infra/modules/hydra/staging-cache.nix
new
+10
@@ -0,0 +1,10 @@
1
+{
2
+ # Substituter the staging queue runner forces builders onto for presigned
3
+ # uploads (services.hydra-queue-runner-dev.settings.forcedSubstituters).
4
+ nix.settings = {
5
+ extra-substituters = [ "https://cache-staging.nixos.org" ];
6
+ extra-trusted-public-keys = [
7
+ "staging-hydra.nixos.org:XTeS2S4YgmVOVVTBazog3M6pSHoUKw0k5mCcqdmPeCU="
8
+ ];
9
+ };
10
+}