50 lines
1.1 KiB
Nix
50 lines
1.1 KiB
Nix
{ pkgs }:
|
|
|
|
{ buildInputs ? [], generated, ... } @ attrs:
|
|
|
|
let
|
|
# Fetches the bower packages. `generated` should be the result of a
|
|
# `bower2nix` command.
|
|
bowerPackages = import generated {
|
|
inherit (pkgs) buildEnv fetchbower;
|
|
};
|
|
|
|
in pkgs.stdenv.mkDerivation (
|
|
attrs
|
|
//
|
|
{
|
|
name = "bower_components-" + attrs.name;
|
|
|
|
inherit bowerPackages;
|
|
|
|
builder = builtins.toFile "builder.sh" ''
|
|
source $stdenv/setup
|
|
|
|
# The project's bower.json is required
|
|
cp $src/bower.json .
|
|
|
|
# Dereference symlinks -- bower doesn't like them
|
|
cp --recursive --reflink=auto \
|
|
--dereference --no-preserve=mode \
|
|
$bowerPackages bc
|
|
|
|
# Bower install in offline mode -- links together the fetched
|
|
# bower packages.
|
|
HOME=$PWD bower \
|
|
--config.storage.packages=bc/packages \
|
|
--config.storage.registry=bc/registry \
|
|
--offline install
|
|
|
|
# Sets up a single bower_components directory within
|
|
# the output derivation.
|
|
mkdir -p $out
|
|
mv bower_components $out
|
|
'';
|
|
|
|
buildInputs = buildInputs ++ [
|
|
pkgs.git
|
|
pkgs.nodePackages.bower
|
|
];
|
|
}
|
|
)
|