1{ pkgs }:
2
3{ buildInputs ? [], generated, ... } @ attrs:
4
5let
6 # Fetches the bower packages. `generated` should be the result of a
7 # `bower2nix` command.
8 bowerPackages = import generated {
9 inherit (pkgs) buildEnv fetchbower;
10 };
11
12in pkgs.stdenv.mkDerivation (
13 attrs
14 //
15 {
16 name = "bower_components-" + attrs.name;
17
18 inherit bowerPackages;
19
20 builder = builtins.toFile "builder.sh" ''
21 source $stdenv/setup
22
23 # The project's bower.json is required
24 cp $src/bower.json .
25
26 # Dereference symlinks -- bower doesn't like them
27 cp --recursive --reflink=auto \
28 --dereference --no-preserve=mode \
29 $bowerPackages bc
30
31 # Bower install in offline mode -- links together the fetched
32 # bower packages.
33 HOME=$PWD bower \
34 --config.storage.packages=bc/packages \
35 --config.storage.registry=bc/registry \
36 --offline install
37
38 # Sets up a single bower_components directory within
39 # the output derivation.
40 mkdir -p $out
41 mv bower_components $out
42 '';
43
44 buildInputs = buildInputs ++ [
45 pkgs.git
46 pkgs.nodePackages.bower
47 ];
48 }
49)