lol
1{ stdenv, fetchegg, chicken, makeWrapper }:
2{ name, src
3, buildInputs ? []
4, chickenInstallFlags ? []
5, cscOptions ? []
6, ...} @ args:
7
8let
9 libPath = "${chicken}/var/lib/chicken/${toString chicken.binaryVersion}/";
10 overrides = import ./overrides.nix;
11 lib = stdenv.lib;
12 baseName = (builtins.parseDrvName name).name;
13 override = if builtins.hasAttr baseName overrides
14 then
15 builtins.getAttr baseName overrides
16 else
17 {};
18in
19stdenv.mkDerivation ({
20 name = "chicken-${name}";
21 propagatedBuildInputs = buildInputs ++ [ chicken ];
22 propagatedUserEnvPkgs = buildInputs ++ [ chicken ];
23 buildInputs = [ makeWrapper ];
24
25 CSC_OPTIONS = stdenv.lib.concatStringsSep " " cscOptions;
26
27 CHICKEN_REPOSITORY = libPath;
28 CHICKEN_INSTALL_PREFIX = "$out";
29
30 installPhase = ''
31 runHook preInstall
32
33 chicken-install -p $out ${stdenv.lib.concatStringsSep " " chickenInstallFlags}
34
35 for f in $out/bin/*
36 do
37 wrapProgram $f \
38 --set CHICKEN_REPOSITORY $CHICKEN_REPOSITORY \
39 --prefix CHICKEN_REPOSITORY_EXTRA : "$out/lib/chicken/${toString chicken.binaryVersion}/:$CHICKEN_REPOSITORY_EXTRA" \
40 --prefix CHICKEN_INCLUDE_PATH \; \"$CHICKEN_INCLUDE_PATH\;$out/share/\" \
41 --prefix PATH : "$out/bin:${chicken}/bin:$CHICKEN_REPOSITORY_EXTRA:$CHICKEN_REPOSITORY"
42 done
43
44 runHook postInstall
45 '';
46} // (builtins.removeAttrs args ["name" "buildInputs"]) // override)