1{ stdenv
2, pkgsHostTarget
3, cmake
4, makeWrapper
5, fetchpatch
6, mkDerivation
7, fetchFromGitHub
8, alex
9, lib
10, hpack
11, aeson
12, array
13, async
14, base
15, bytestring
16, co-log-core
17, cond
18, containers
19, directory
20, FloatingHex
21, isocline
22, lens
23, lsp
24, mtl
25, network
26, network-simple
27, parsec
28, process
29, text
30, text-rope
31, time
32}:
33
34let
35 version = "3.1.0";
36 src = fetchFromGitHub {
37 owner = "koka-lang";
38 repo = "koka";
39 rev = "v${version}";
40 sha256 = "sha256-Twm2Hr8BQ0xTdA30e2Az/57525jTUkmv2Zs/+SNiQns=";
41 fetchSubmodules = true;
42 };
43 kklib = stdenv.mkDerivation {
44 pname = "kklib";
45 inherit version;
46 src = "${src}/kklib";
47 nativeBuildInputs = [ cmake ];
48 outputs = [ "out" "dev" ];
49 postInstall = ''
50 mkdir -p ''${!outputDev}/share/koka/v${version}
51 cp -a ../../kklib ''${!outputDev}/share/koka/v${version}
52 '';
53 };
54 inherit (pkgsHostTarget.targetPackages.stdenv) cc;
55 runtimeDeps = [
56 cc
57 cc.bintools.bintools
58 pkgsHostTarget.gnumake
59 pkgsHostTarget.cmake
60 ];
61in
62mkDerivation rec {
63 pname = "koka";
64 inherit version src;
65 isLibrary = false;
66 isExecutable = true;
67 libraryToolDepends = [ hpack ];
68 patches = [
69 (fetchpatch {
70 name = "koka-stackage-22.patch";
71 url = "https://github.com/koka-lang/koka/commit/95f9b360544996e06d4bb33321a83a6b9605d092.patch";
72 sha256 = "1a1sv1r393wkhsnj56awsi8mqxakqdy86p7dg9i9xfv13q2g4h6x";
73 includes = [ "src/**" ];
74 })
75 ];
76 executableHaskellDepends = [
77 aeson
78 array
79 async
80 base
81 bytestring
82 co-log-core
83 cond
84 containers
85 directory
86 FloatingHex
87 isocline
88 lens
89 lsp
90 mtl
91 network
92 network-simple
93 parsec
94 process
95 text
96 text-rope
97 time
98 kklib
99 ];
100 executableToolDepends = [ alex makeWrapper ];
101 postInstall = ''
102 mkdir -p $out/share/koka/v${version}
103 cp -a lib $out/share/koka/v${version}
104 ln -s ${kklib.dev}/share/koka/v${version}/kklib $out/share/koka/v${version}
105 wrapProgram "$out/bin/koka" \
106 --set CC "${lib.getBin cc}/bin/${cc.targetPrefix}cc" \
107 --prefix PATH : "${lib.makeSearchPath "bin" runtimeDeps}"
108 '';
109 doCheck = false;
110 prePatch = "hpack";
111 description = "Koka language compiler and interpreter";
112 homepage = "https://github.com/koka-lang/koka";
113 changelog = "${homepage}/blob/master/doc/spec/news.mdk";
114 license = lib.licenses.asl20;
115 maintainers = with lib.maintainers; [ siraben sternenseemann ];
116}