Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib, stdenv, fetchFromGitHub, which, ocamlPackages }:
2
3stdenv.mkDerivation rec {
4 pname = "eff";
5 version = "5.0";
6
7 src = fetchFromGitHub {
8 owner = "matijapretnar";
9 repo = "eff";
10 rev = "v${version}";
11 sha256 = "1fslfj5d7fhj3f7kh558b8mk5wllwyq4rnhfkyd96fpy144sdcka";
12 };
13
14 postPatch = ''
15 substituteInPlace setup.ml --replace js_of_ocaml.ocamlbuild js_of_ocaml-ocamlbuild
16 '';
17
18 strictDeps = true;
19
20 nativeBuildInputs = [ which ] ++ (with ocamlPackages; [
21 ocaml findlib ocamlbuild menhir
22 ]);
23
24 buildInputs = with ocamlPackages; [ js_of_ocaml js_of_ocaml-ocamlbuild ];
25
26 doCheck = true;
27 checkTarget = "test";
28
29 meta = with lib; {
30 homepage = "https://www.eff-lang.org";
31 description = "A functional programming language based on algebraic effects and their handlers";
32 longDescription = ''
33 Eff is a functional language with handlers of not only exceptions,
34 but also of other computational effects such as state or I/O. With
35 handlers, you can simply implement transactions, redirections,
36 backtracking, multi-threading, and much more...
37 '';
38 license = licenses.bsd2;
39 inherit (ocamlPackages.ocaml.meta) platforms;
40 maintainers = [ maintainers.jirkamarsik ];
41 };
42}