Files
vms/nix/cache.nix
T
Greg Hellings edffd23802 Have cache actually check cache
Cache has not been hitting the actual cache bits, so now we will tell it
to reach out to the cache server locally and check for the ISO to be
present in the bucket before we run the curl at all
2024-06-26 21:50:10 -05:00

37 lines
824 B
Nix

{
writeShellApplication,
active,
distroFile,
curl,
minio-client,
packer,
...
}:
let
inherit (builtins) concatStringsSep map;
in writeShellApplication {
name = "cache-isos";
runtimeInputs = [
curl
minio-client
packer
];
text = ''
mc alias set storage "$STORAGE_URL" root "$MINIO_SECRET"
'' + (concatStringsSep "\n" (
map (d: ''
url=$(echo var.iso.url | packer console -var-file="${distroFile d}" -config-type=hcl2 sources/)
sha=$(echo var.iso.checksum | packer console -var-file="${distroFile d}" -config-type=hcl2 sources/)
if [ -z "$(mc ls storage/isos/cache/ | grep $sha)" ]; then
curl --retry 3 --retry-all-errors -o "cache/$sha.iso" "$url"
mc put "cache/$sha.iso" "storage/isos/cache/$sha.iso"
else
echo "Skipping ${d.distro} - cache/$sha.iso"
fi
'') active
));
}