aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/tools/graphics/diagrams-builder/default.nix
blob: a12e5dbb8bb3592d26076212ef14cef7516f0c6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
  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: []) }:

let

  # Used same technique as for the yiCustom package.
  wrappedGhc = ghcWithPackages 
    (self: [ diagrams-builder ] ++ extraPackages self);
  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"];

in

stdenv.mkDerivation {
  name = "diagrams-builder";

  buildInputs = [ makeWrapper ];

  buildCommand = with stdenv.lib; 
    concatStrings (intersperse "\n" (map exeWrapper backends));

  # Will be faster to build the wrapper locally then to fetch it from a binary cache.
  preferLocalBuild = true;
  meta = diagrams-builder.meta;
}