Spaces:
Build error
Build error
# Generated by npins. Do not modify; will be overwritten regularly | |
let | |
data = builtins.fromJSON (builtins.readFile ./sources.json); | |
version = data.version; | |
mkSource = | |
spec: | |
assert spec ? type; | |
let | |
path = | |
if spec.type == "Git" then | |
mkGitSource spec | |
else if spec.type == "GitRelease" then | |
mkGitSource spec | |
else if spec.type == "PyPi" then | |
mkPyPiSource spec | |
else if spec.type == "Channel" then | |
mkChannelSource spec | |
else | |
builtins.throw "Unknown source type ${spec.type}"; | |
in | |
spec // { outPath = path; }; | |
mkGitSource = | |
{ | |
repository, | |
revision, | |
url ? null, | |
hash, | |
branch ? null, | |
... | |
}: | |
assert repository ? type; | |
# At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository | |
# In the latter case, there we will always be an url to the tarball | |
if url != null then | |
(builtins.fetchTarball { | |
inherit url; | |
sha256 = hash; # FIXME: check nix version & use SRI hashes | |
}) | |
else | |
assert repository.type == "Git"; | |
let | |
urlToName = | |
url: rev: | |
let | |
matched = builtins.match "^.*/([^/]*)(\\.git)?$" repository.url; | |
short = builtins.substring 0 7 rev; | |
appendShort = if (builtins.match "[a-f0-9]*" rev) != null then "-${short}" else ""; | |
in | |
"${if matched == null then "source" else builtins.head matched}${appendShort}"; | |
name = urlToName repository.url revision; | |
in | |
builtins.fetchGit { | |
url = repository.url; | |
rev = revision; | |
inherit name; | |
# hash = hash; | |
}; | |
mkPyPiSource = | |
{ url, hash, ... }: | |
builtins.fetchurl { | |
inherit url; | |
sha256 = hash; | |
}; | |
mkChannelSource = | |
{ url, hash, ... }: | |
builtins.fetchTarball { | |
inherit url; | |
sha256 = hash; | |
}; | |
in | |
if version == 3 then | |
builtins.mapAttrs (_: mkSource) data.pins | |
else | |
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`" | |