nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ pkgs, lib, gccStdenv, callPackage, fetchFromGitHub }:
2# See ../gambit/build.nix regarding gccStdenv
3
4rec {
5 # Gerbil libraries
6 gerbilPackages-unstable = {
7 gerbil-libp2p = callPackage ./gerbil-libp2p.nix { };
8 gerbil-utils = callPackage ./gerbil-utils.nix { };
9 gerbil-crypto = callPackage ./gerbil-crypto.nix { };
10 gerbil-poo = callPackage ./gerbil-poo.nix { };
11 gerbil-persist = callPackage ./gerbil-persist.nix { };
12 gerbil-ethereum = callPackage ./gerbil-ethereum.nix { };
13 smug-gerbil = callPackage ./smug-gerbil.nix { };
14 };
15
16 # Use this function in any package that uses Gerbil libraries, to define the GERBIL_LOADPATH.
17 gerbilLoadPath =
18 gerbilInputs : builtins.concatStringsSep ":" (map (x : x + "/gerbil/lib") gerbilInputs);
19
20 # Use this function to create a Gerbil library. See gerbil-utils as an example.
21 gerbilPackage = {
22 pname, version, src, meta, gerbil-package,
23 git-version ? "", version-path ? "",
24 gerbil ? pkgs.gerbil-unstable,
25 gambit-params ? pkgs.gambit-support.stable-params,
26 gerbilInputs ? [],
27 nativeBuildInputs ? [],
28 buildInputs ? [],
29 buildScript ? "./build.ss",
30 softwareName ? ""} :
31 let buildInputs_ = buildInputs; in
32 gccStdenv.mkDerivation rec {
33 inherit src meta pname version nativeBuildInputs;
34 passthru = { inherit gerbil-package version-path ;};
35 buildInputs = [ gerbil ] ++ gerbilInputs ++ buildInputs_;
36 postPatch = ''
37 set -e ;
38 if [ -n "${version-path}.ss" ] ; then
39 echo -e '(import :clan/versioning${builtins.concatStringsSep ""
40 (map (x : lib.optionalString (x.passthru.version-path != "")
41 " :${x.passthru.gerbil-package}/${x.passthru.version-path}")
42 gerbilInputs)
43 })\n(register-software "${softwareName}" "v${git-version}")\n' > "${passthru.version-path}.ss"
44 fi
45 patchShebangs . ;
46 '';
47
48 postConfigure = ''
49 export GERBIL_BUILD_CORES=$NIX_BUILD_CORES
50 export GERBIL_PATH=$PWD/.build
51 export GERBIL_LOADPATH=${gerbilLoadPath gerbilInputs}
52 ${pkgs.gambit-support.export-gambopt gambit-params}
53 '';
54
55 buildPhase = ''
56 runHook preBuild
57 ${buildScript}
58 runHook postBuild
59 '';
60
61 installPhase = ''
62 runHook preInstall
63 mkdir -p $out/gerbil/lib
64 cp -fa .build/lib $out/gerbil/
65 bins=(.build/bin/*)
66 if [ 0 -lt ''${#bins} ] ; then
67 cp -fa .build/bin $out/gerbil/
68 mkdir $out/bin
69 cd $out/bin
70 ln -s ../gerbil/bin/* .
71 fi
72 runHook postInstall
73 '';
74
75 dontFixup = true;
76 };
77}