diff options
Diffstat (limited to 'nixpkgs/pkgs/build-support/fetchbower/default.nix')
-rw-r--r-- | nixpkgs/pkgs/build-support/fetchbower/default.nix | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/build-support/fetchbower/default.nix b/nixpkgs/pkgs/build-support/fetchbower/default.nix new file mode 100644 index 000000000000..fd971d431df8 --- /dev/null +++ b/nixpkgs/pkgs/build-support/fetchbower/default.nix @@ -0,0 +1,28 @@ +{ stdenvNoCC, lib, bower2nix, cacert }: +let + bowerVersion = version: + let + components = lib.splitString "#" version; + hash = lib.last components; + ver = if builtins.length components == 1 then (cleanName version) else hash; + in ver; + + cleanName = name: lib.replaceStrings ["/" ":"] ["-" "-"] name; + + fetchbower = name: version: target: outputHash: stdenvNoCC.mkDerivation { + name = "${cleanName name}-${bowerVersion version}"; + buildCommand = '' + fetch-bower --quiet --out=$PWD/out "${name}" "${target}" "${version}" + # In some cases, the result of fetchBower is different depending + # on the output directory (e.g. if the bower package contains + # symlinks). So use a local output directory before copying to + # $out. + cp -R out $out + ''; + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + inherit outputHash; + nativeBuildInputs = [ bower2nix cacert ]; + }; + +in fetchbower |