1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 autoreconfHook,
6 gaucheBootstrap,
7 pkg-config,
8 texinfo,
9 libiconv,
10 gdbm,
11 openssl,
12 zlib,
13 mbedtls,
14 cacert,
15}:
16
17stdenv.mkDerivation rec {
18 pname = "gauche";
19 version = "0.9.15";
20
21 src = fetchFromGitHub {
22 owner = "shirok";
23 repo = pname;
24 rev = "release${lib.replaceStrings [ "." ] [ "_" ] version}";
25 hash = "sha256-M2vZqTMkob+WxUnCo4NDxS4pCVNleVBqkiiRp9nG/KA=";
26 };
27
28 nativeBuildInputs = [
29 gaucheBootstrap
30 pkg-config
31 texinfo
32 autoreconfHook
33 ];
34
35 buildInputs = [
36 libiconv
37 gdbm
38 openssl
39 zlib
40 mbedtls
41 cacert
42 ];
43
44 autoreconfPhase = ''
45 ./DIST gen
46 '';
47
48 postPatch = ''
49 substituteInPlace ext/package-templates/configure \
50 --replace "#!/usr/bin/env gosh" "#!$out/bin/gosh"
51 patchShebangs .
52 '';
53
54 configureFlags = [
55 "--with-iconv=${libiconv}"
56 "--with-dbm=gdbm"
57 "--with-zlib=${zlib}"
58 "--with-ca-bundle=${cacert}/etc/ssl/certs/ca-bundle.crt"
59 # TODO: Enable slib
60 # Current slib in nixpkgs is specialized to Guile
61 # "--with-slib=${slibGuile}/lib/slib"
62 ];
63
64 enableParallelBuilding = true;
65
66 # TODO: Fix tests that fail in sandbox build
67 doCheck = false;
68
69 meta = with lib; {
70 description = "R7RS Scheme scripting engine";
71 homepage = "https://practical-scheme.net/gauche/";
72 mainProgram = "gosh";
73 maintainers = with maintainers; [ mnacamura ];
74 license = licenses.bsd3;
75 platforms = platforms.unix;
76 };
77}