1{
2 buildDunePackage,
3 stdlib-shims,
4 ppx_yojson_conv_lib,
5 ocaml-syntax-shims,
6 yojson,
7 result,
8 fetchurl,
9 lib,
10 ocaml,
11 version ?
12 if lib.versionAtLeast ocaml.version "5.3" then
13 "1.23.0"
14 else if lib.versionAtLeast ocaml.version "5.2" then
15 "1.21.0"
16 else if lib.versionAtLeast ocaml.version "4.14" then
17 "1.18.0"
18 else if lib.versionAtLeast ocaml.version "4.13" then
19 "1.10.5"
20 else if lib.versionAtLeast ocaml.version "4.12" then
21 "1.9.0"
22 else
23 "1.4.1",
24}:
25
26let
27 params =
28 {
29 "1.23.0" = {
30 name = "lsp";
31 minimalOCamlVersion = "5.3";
32 sha256 = "sha256-fyvQI7VKgOrOFihtKIkcE2B2iUYFLJOZGKipzZU0Dn0=";
33 };
34 "1.22.0" = {
35 name = "lsp";
36 minimalOCamlVersion = "5.2";
37 sha256 = "sha256-UZ3DV30V3CIQ3vpYBIGnQ1eRGNUGk7aRuxDLyCA/tYE=";
38 };
39 "1.21.0" = {
40 name = "lsp";
41 minimalOCamlVersion = "5.2";
42 sha256 = "sha256-Z4cDN/8j0NK6Q3dL+1io/eBJd+o32k0txQDtC1fO9xc=";
43 };
44 "1.18.0" = {
45 name = "lsp";
46 minimalOCamlVersion = "4.14";
47 sha256 = "sha256-tZ2kPM/S/9J3yeX2laDjnHLA144b8svy9iwae32nXwM=";
48 };
49 "1.17.0" = {
50 name = "lsp";
51 minimalOCamlVersion = "4.14";
52 sha256 = "sha256-j7i71xfu/SYItNg0WBBbZg4N46ETTcj8IWrmWdTRlgA=";
53 };
54 "1.14.2" = {
55 name = "lsp";
56 minimalOCamlVersion = "4.14";
57 sha256 = "sha256-1R+HYaGbPLGDs5DMN3jmnrZFMhMmPUHgF+s+yNzIVJQ=";
58 };
59 "1.10.5" = {
60 name = "jsonrpc";
61 minimalOCamlVersion = "4.13";
62 sha256 = "sha256-TeJS6t1ruWhWPvWNatrnSUWI6T17XKiosHLYizBDDcw=";
63 };
64 "1.9.0" = {
65 name = "jsonrpc";
66 minimalOCamlVersion = "4.12";
67 sha256 = "sha256:1ac44n6g3rf84gvhcca545avgf9vpkwkkkm0s8ipshfhp4g4jikh";
68 };
69 "1.4.1" = {
70 name = "jsonrpc";
71 minimalOCamlVersion = "4.06";
72 sha256 = "1ssyazc0yrdng98cypwa9m3nzfisdzpp7hqnx684rqj8f0g3gs6f";
73 };
74 }
75 ."${version}";
76in
77
78buildDunePackage rec {
79 pname = "jsonrpc";
80 inherit version;
81 src = fetchurl {
82 url = "https://github.com/ocaml/ocaml-lsp/releases/download/${version}/${params.name}-${version}.tbz";
83 inherit (params) sha256;
84 };
85
86 inherit (params) minimalOCamlVersion;
87
88 buildInputs =
89 if lib.versionAtLeast version "1.7.0" then
90 [ ]
91 else
92 [
93 yojson
94 stdlib-shims
95 ocaml-syntax-shims
96 ];
97
98 propagatedBuildInputs =
99 if lib.versionAtLeast version "1.7.0" then
100 [ ]
101 else
102 [
103 ppx_yojson_conv_lib
104 result
105 ];
106
107 meta = with lib; {
108 description = "Jsonrpc protocol implementation in OCaml";
109 license = licenses.isc;
110 platforms = platforms.unix;
111 maintainers = [ ];
112 };
113}