Run uploads in the background, to speed builds

This commit is contained in:
Greg Hellings
2025-03-05 17:13:52 -06:00
parent 6f35efaf16
commit 382a3138ff
+27 -14
View File
@@ -40,20 +40,33 @@ with lib;
greg.tailscale.enable = true; greg.tailscale.enable = true;
# The builder user needs to be trusted to submit builds # The builder user needs to be trusted to submit builds
nix.settings = { nix.settings =
post-build-hook = getExe ( let
pkgs.writeShellScriptBin "upload-to-cache.sh" '' upload = getExe (
set -eu pkgs.writeShellScriptBin "upload-to-cache.sh" ''
set -f set -eu
export AWS_SHARED_CREDENTIALS_FILE=${config.age.secrets.cache-credentials.path} set -f
export IFS=' ' export AWS_SHARED_CREDENTIALS_FILE=${config.age.secrets.cache-credentials.path}
echo "Uploading paths " $OUT_PATHS export IFS=' '
nix copy --to "s3://binary-cache/?scheme=http&endpoint=nas.home%3A9000&profile=default" $OUT_PATHS ${getExe config.nix.package} copy --to "s3://binary-cache/?scheme=http&endpoint=nas.home%3A9000&profile=default" "$@"
'' ''
); );
secret-key-files = config.age.secrets.private-cache.path; uploadRunner = getExe (
trusted-users = [ config.users.users.remote-builder-user.name ]; pkgs.writeShellScriptBin "uploade-to-cache-runner.sh" ''
}; ${lib.getExe' config.systemd.package "systemd-run"} \
--unit "upload-$(${lib.getExe' pkgs.coreutils "date"} +%s%3N)" \
--property Type=exec \
--property CollectMode=inactive \
--property Group=nixbld \
${upload} $OUT_PATHS
''
);
in
{
post-build-hook = uploadRunner;
secret-key-files = config.age.secrets.private-cache.path;
trusted-users = [ config.users.users.remote-builder-user.name ];
};
users.users.remote-builder-user = { users.users.remote-builder-user = {
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [