1{
2 callPackage,
3 lib,
4 stdenv,
5 chicken,
6 makeWrapper,
7}:
8{
9 name,
10 src,
11 buildInputs ? [ ],
12 chickenInstallFlags ? [ ],
13 cscOptions ? [ ],
14 ...
15}@args:
16
17let
18 overrides = callPackage ./overrides.nix { };
19 baseName = lib.getName name;
20 override =
21 if builtins.hasAttr baseName overrides then builtins.getAttr baseName overrides else lib.id;
22in
23(stdenv.mkDerivation (
24 {
25 name = "chicken-${name}";
26 propagatedBuildInputs = buildInputs;
27 nativeBuildInputs = [
28 chicken
29 makeWrapper
30 ];
31 buildInputs = [ chicken ];
32
33 strictDeps = true;
34
35 CSC_OPTIONS = lib.concatStringsSep " " cscOptions;
36
37 buildPhase = ''
38 runHook preBuild
39 chicken-install -cached -no-install -host ${lib.escapeShellArgs chickenInstallFlags}
40 runHook postBuild
41 '';
42
43 installPhase = ''
44 runHook preInstall
45
46 export CHICKEN_INSTALL_PREFIX=$out
47 export CHICKEN_INSTALL_REPOSITORY=$out/lib/chicken/${toString chicken.binaryVersion}
48 chicken-install -cached -host ${lib.escapeShellArgs chickenInstallFlags}
49
50 for f in $out/bin/*
51 do
52 wrapProgram $f \
53 --prefix CHICKEN_REPOSITORY_PATH : "$out/lib/chicken/${toString chicken.binaryVersion}:$CHICKEN_REPOSITORY_PATH" \
54 --prefix CHICKEN_INCLUDE_PATH : "$CHICKEN_INCLUDE_PATH:$out/share" \
55 --prefix PATH : "$out/bin:${chicken}/bin:$CHICKEN_REPOSITORY_PATH"
56 done
57
58 runHook postInstall
59 '';
60
61 dontConfigure = true;
62
63 meta = {
64 inherit (chicken.meta) platforms;
65 }
66 // args.meta or { };
67 }
68 // builtins.removeAttrs args [
69 "name"
70 "buildInputs"
71 "meta"
72 ]
73)).overrideAttrs
74 override