|
|
# Backported buildBowerComponents so that we can also use it with the version
|
|
|
# 16.03 which is the current stable at the time of this writing.
|
|
|
#
|
|
|
# This file can be removed once building with 16.03 is not needed anymore.
|
|
|
|
|
|
{ pkgs }:
|
|
|
|
|
|
{ buildInputs ? [], generated, ... } @ attrs:
|
|
|
|
|
|
let
|
|
|
bower2nix-src = pkgs.fetchzip {
|
|
|
url = "https://github.com/rvl/bower2nix/archive/v3.0.1.tar.gz";
|
|
|
sha256 = "1zbvz96k2j6g0r4lvm5cgh41a73k9dgayk7x63cmg538dzznxvyb";
|
|
|
};
|
|
|
|
|
|
bower2nix = import "${bower2nix-src}/default.nix" { inherit pkgs; };
|
|
|
|
|
|
fetchbower = import ./backport-16.03-fetchbower.nix {
|
|
|
inherit (pkgs) stdenv lib;
|
|
|
inherit bower2nix;
|
|
|
};
|
|
|
|
|
|
# Fetches the bower packages. `generated` should be the result of a
|
|
|
# `bower2nix` command.
|
|
|
bowerPackages = import generated {
|
|
|
inherit (pkgs) buildEnv;
|
|
|
inherit 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
|
|
|
];
|
|
|
}
|
|
|
)
|
|
|
|