39 lines
1.1 KiB
Nix
39 lines
1.1 KiB
Nix
{ lib, stdenv, fetchFromGitHub, which, ocamlPackages }:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "eff";
|
|
version = "5.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "matijapretnar";
|
|
repo = "eff";
|
|
rev = "v${version}";
|
|
sha256 = "1fslfj5d7fhj3f7kh558b8mk5wllwyq4rnhfkyd96fpy144sdcka";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace setup.ml --replace js_of_ocaml.ocamlbuild js_of_ocaml-ocamlbuild
|
|
'';
|
|
|
|
buildInputs = [ which ] ++ (with ocamlPackages; [
|
|
ocaml findlib ocamlbuild menhir js_of_ocaml js_of_ocaml-ocamlbuild
|
|
]);
|
|
|
|
doCheck = true;
|
|
checkTarget = "test";
|
|
|
|
meta = with lib; {
|
|
homepage = "https://www.eff-lang.org";
|
|
description = "A functional programming language based on algebraic effects and their handlers";
|
|
longDescription = ''
|
|
Eff is a functional language with handlers of not only exceptions,
|
|
but also of other computational effects such as state or I/O. With
|
|
handlers, you can simply implement transactions, redirections,
|
|
backtracking, multi-threading, and much more...
|
|
'';
|
|
license = licenses.bsd2;
|
|
inherit (ocamlPackages.ocaml.meta) platforms;
|
|
maintainers = [ maintainers.jirkamarsik ];
|
|
};
|
|
}
|