Files
vms/nix/cache.nix
T
2025-01-15 14:41:33 -06:00

50 lines
1.0 KiB
Nix

{
writeShellApplication,
active,
distroFile,
buildGoModule,
lib,
go,
packer,
...
}:
let
inherit (builtins) concatStringsSep map;
bin = buildGoModule {
pname = "cache";
version = "0.0.0";
src = ./cache;
vendorHash = "sha256-i/LzGiFbXCPQ8qWGiMh7ozhf4EIzn1Xf2e2g1OAW9gQ=";
#vendorHash = lib.fakeHash;
meta.mainProgram = "main";
};
in
writeShellApplication {
name = "cache-isos";
runtimeInputs = [
go
packer
];
text =
''
set -o pipefail
function list_isos {
''
+ (concatStringsSep "\n" (
map (d: ''
url=$(echo var.iso.url | packer console -var-file="${d}" -config-type=hcl2 sources/)
sha=$(echo var.iso.checksum | packer console -var-file="${d}" -config-type=hcl2 sources/)
distro=$(echo var.distro | packer console -var-file="${d}" -config-type=hcl2 sources/)
echo "$url" "$sha" "$distro"
'') (lib.unique (lib.map distroFile active))
))
+ ''
}
list_isos | ${lib.getExe bin}
'';
}