1{
2 lib,
3 buildDunePackage,
4 fetchFromGitHub,
5 fetchpatch,
6 angstrom,
7 cmdliner,
8 core,
9 core_bench,
10 core_unix ? null,
11 js_of_ocaml,
12 js_of_ocaml-ppx,
13 ppx_deriving_yojson,
14 uri,
15 yojson,
16 lwt,
17 xmlm,
18}:
19let
20 angstrom' = angstrom.overrideAttrs (attrs: {
21 patches = attrs.patches or [ ] ++ [
22 # mldoc requires Angstrom to expose `unsafe_lookahead`
23 (fetchpatch {
24 url = "https://github.com/logseq/angstrom/commit/bbe36c99c13678937d4c983a427e02a733d6cc24.patch";
25 sha256 = "sha256-RapY1QJ8U0HOqJ9TFDnCYB4tFLFuThESzdBZqjYuDUA=";
26 })
27 ];
28 });
29 uri' = uri.override { angstrom = angstrom'; };
30in
31buildDunePackage rec {
32 pname = "mldoc";
33 version = "1.5.8";
34
35 minimalOCamlVersion = "4.10";
36
37 duneVersion = "3";
38
39 src = fetchFromGitHub {
40 owner = "logseq";
41 repo = "mldoc";
42 rev = "v${version}";
43 hash = "sha256-7uuNUFMSQEgakTKfpYixp43gnfpQSW++snBzgr0Ni0Y=";
44 };
45
46 buildInputs = [
47 cmdliner
48 core
49 core_bench
50 core_unix
51 js_of_ocaml
52 js_of_ocaml-ppx
53 lwt
54 ];
55
56 propagatedBuildInputs = [
57 angstrom'
58 uri'
59 yojson
60 ppx_deriving_yojson
61 xmlm
62 ];
63
64 meta = with lib; {
65 homepage = "https://github.com/logseq/mldoc";
66 description = "Another Emacs Org-mode and Markdown parser";
67 license = licenses.agpl3Only;
68 maintainers = [ ];
69 };
70}