2015-04-28 03:55:54 +01:00
|
|
|
|
/*
|
|
|
|
|
If user need access to more haskell package for building his
|
|
|
|
|
diagrams, he simply has to pass these package through the
|
|
|
|
|
extra packages function as follow in `config.nix`:
|
|
|
|
|
|
|
|
|
|
~~~
|
|
|
|
|
diagrams-builder.override {
|
|
|
|
|
extraPackages = self : [myHaskellPackage];
|
|
|
|
|
}
|
|
|
|
|
~~~
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
{ stdenv, ghcWithPackages, makeWrapper, diagrams-builder, extraPackages ? (self: []) }:
|
2015-04-30 02:45:57 +01:00
|
|
|
|
|
2015-04-28 03:55:54 +01:00
|
|
|
|
let
|
2015-04-30 02:45:57 +01:00
|
|
|
|
|
2015-04-28 03:55:54 +01:00
|
|
|
|
# Used same technique as for the yiCustom package.
|
2015-04-30 02:45:57 +01:00
|
|
|
|
wrappedGhc = ghcWithPackages
|
2015-04-28 03:55:54 +01:00
|
|
|
|
(self: [ diagrams-builder ] ++ extraPackages self);
|
2015-04-30 02:45:57 +01:00
|
|
|
|
ghcVersion = wrappedGhc.version;
|
|
|
|
|
|
|
|
|
|
exeWrapper = backend : ''
|
|
|
|
|
makeWrapper \
|
|
|
|
|
"${diagrams-builder}/bin/diagrams-builder-${backend}" "$out/bin/diagrams-builder-${backend}" \
|
|
|
|
|
--set NIX_GHC ${wrappedGhc}/bin/ghc \
|
|
|
|
|
--set NIX_GHC_LIBDIR ${wrappedGhc}/lib/ghc-${ghcVersion}
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
backends = ["svg" "cairo" "ps"];
|
|
|
|
|
|
2015-04-28 03:55:54 +01:00
|
|
|
|
in
|
2015-04-30 02:45:57 +01:00
|
|
|
|
|
2015-04-28 03:55:54 +01:00
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
|
name = "diagrams-builder";
|
2015-04-30 02:45:57 +01:00
|
|
|
|
|
2015-04-28 03:55:54 +01:00
|
|
|
|
buildInputs = [ makeWrapper ];
|
|
|
|
|
|
2015-04-30 02:45:57 +01:00
|
|
|
|
buildCommand = with stdenv.lib;
|
|
|
|
|
concatStrings (intersperse "\n" (map exeWrapper backends));
|
2015-04-28 03:55:54 +01:00
|
|
|
|
|
|
|
|
|
# Will be faster to build the wrapper locally then to fetch it from a binary cache.
|
|
|
|
|
preferLocalBuild = true;
|
|
|
|
|
meta = diagrams-builder.meta;
|
|
|
|
|
}
|