crane/lib/registryFromGitIndex.nix
2022-11-20 16:28:49 -08:00

32 lines
607 B
Nix

{ registryFromDownloadUrl
}:
{ indexUrl
, rev
, fetchurlExtraArgs ? { }
}:
let
index = builtins.fetchGit {
inherit rev;
url = indexUrl;
shallow = true;
};
configPath = "${index}/config.json";
configContents =
if builtins.pathExists configPath then
builtins.readFile configPath
else
throw "registry index is missing a config.json file";
config = builtins.fromJSON configContents;
dl = config.dl or (throw ''
registry config does not have a "dl" endpoint:
${configContents}
'');
in
registryFromDownloadUrl {
inherit dl indexUrl fetchurlExtraArgs;
}