1{
2 buildDunePackage,
3 lib,
4 ocaml,
5 fetchFromGitHub,
6 which,
7 ocsigen_server,
8 lwt_react,
9 ppx_deriving,
10 ppx_optcomp,
11 js_of_ocaml-ocamlbuild,
12 js_of_ocaml-ppx,
13 js_of_ocaml-ppx_deriving_json,
14 js_of_ocaml-lwt,
15 js_of_ocaml-tyxml,
16 lwt_ppx,
17 ocsipersist,
18}:
19
20lib.throwIf (lib.versionAtLeast ocaml.version "5.3")
21 "eliom is not available for OCaml ${ocaml.version}"
22
23 buildDunePackage
24 rec {
25 pname = "eliom";
26 version = "11.1.1";
27
28 src = fetchFromGitHub {
29 owner = "ocsigen";
30 repo = "eliom";
31 rev = version;
32 hash = "sha256-ALuoyO6axNQEeBteBVIFwdoSrbLxxcaSTObAcLPGIvo=";
33 };
34
35 nativeBuildInputs = [
36 which
37 ];
38 buildInputs = [
39 js_of_ocaml-ocamlbuild
40 js_of_ocaml-ppx_deriving_json
41 ppx_optcomp
42 ];
43
44 propagatedBuildInputs = [
45 js_of_ocaml-lwt
46 js_of_ocaml-ppx
47 js_of_ocaml-tyxml
48 lwt_ppx
49 lwt_react
50 ocsigen_server
51 ocsipersist
52 ppx_deriving
53 ];
54
55 strictDeps = true;
56
57 setupHook = [ ./setup-hook.sh ];
58
59 meta = {
60 homepage = "http://ocsigen.org/eliom/";
61 description = "OCaml Framework for programming Web sites and client/server Web applications";
62
63 longDescription = ''
64 Eliom is a framework for programming Web sites
65 and client/server Web applications. It introduces new concepts to
66 simplify programming common behaviours and uses advanced static
67 typing features of OCaml to check many properties of the Web site
68 at compile time. If you want to write a Web application, Eliom
69 makes possible to write the whole application as a single program
70 (client and server parts). A syntax extension is used to
71 distinguish both parts and the client side is compiled to JS using
72 Ocsigen Js_of_ocaml.
73 '';
74
75 license = lib.licenses.lgpl21;
76
77 maintainers = [ lib.maintainers.gal_bolle ];
78 };
79 }