mirror of
https://github.com/nmattia/niv.git
synced 2024-11-07 22:36:53 +03:00
4c78b665f4
The goal is to group the two files that go together so they don't get lost in the sea of all the other files in the nix/ folder.
30 lines
961 B
Nix
30 lines
961 B
Nix
# A record, from name to path, of the third-party packages
|
|
with
|
|
{
|
|
sources = builtins.fromJSON (builtins.readFile ./sources.json);
|
|
|
|
# fetchTarball version that is compatible between all the sources of Nix
|
|
fetchTarball =
|
|
{ url, sha256 }:
|
|
if builtins.lessThan builtins.nixVersion "1.12" then
|
|
builtins.fetchTarball { inherit url; }
|
|
else
|
|
builtins.fetchTarball { inherit url sha256; };
|
|
mapAttrs = builtins.mapAttrs or
|
|
(f: set: with builtins;
|
|
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)));
|
|
};
|
|
|
|
# NOTE: spec must _not_ have an "outPath" attribute
|
|
mapAttrs (_: spec:
|
|
if builtins.hasAttr "outPath" spec
|
|
then abort
|
|
"The values in sources.json should not have an 'outPath' attribute"
|
|
else
|
|
if builtins.hasAttr "url" spec && builtins.hasAttr "sha256" spec
|
|
then
|
|
spec //
|
|
{ outPath = fetchTarball { inherit (spec) url sha256; } ; }
|
|
else spec
|
|
) sources
|