nix shell w/ npins by phanirithvij · Pull Request #772 · processing/processing-android
@@ -0,0 +1,80 @@
# 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`"
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`"