lol
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 buildInputs = [ which ] ++ (with ocamlPackages; [
19 ocaml findlib ocamlbuild menhir js_of_ocaml js_of_ocaml-ocamlbuild
20 ]);
21
22 doCheck = true;
23 checkTarget = "test";
24
25 meta = with lib; {
26 homepage = "https://www.eff-lang.org";
27 description = "A functional programming language based on algebraic effects and their handlers";
28 longDescription = ''
29 Eff is a functional language with handlers of not only exceptions,
30 but also of other computational effects such as state or I/O. With
31 handlers, you can simply implement transactions, redirections,
32 backtracking, multi-threading, and much more...
33 '';
34 license = licenses.bsd2;
35 inherit (ocamlPackages.ocaml.meta) platforms;
36 maintainers = [ maintainers.jirkamarsik ];
37 };
38}