forgejo-lts: 7.0.10 -> 7.0.11
[NixPkgs.git] / pkgs / development / ocaml-modules / ocaml-lsp / lsp.nix
blob9787c67bbd7cc0215cdd19c44616e9ba8281c6c7
1 { buildDunePackage
2 , lib
3 , cppo
4 , stdlib-shims
5 , ppx_yojson_conv_lib
6 , ocaml-syntax-shims
7 , jsonrpc
8 , omd
9 , octavius
10 , dune-build-info
11 , dune-rpc
12 , uutf
13 , dyn
14 , re
15 , stdune
16 , chrome-trace
17 , csexp
18 , result
19 , pp
20 , cmdliner
21 , ordering
22 , ocamlformat-rpc-lib
23 , ocaml
24 , version ?
25     if lib.versionAtLeast ocaml.version "5.02" then
26       "1.19.0"
27     else if lib.versionAtLeast ocaml.version "4.14" then
28       "1.18.0"
29     else if lib.versionAtLeast ocaml.version "4.13" then
30       "1.10.5"
31     else if lib.versionAtLeast ocaml.version "4.12" then
32       "1.9.0"
33     else
34       "1.4.1"
37 let jsonrpc_v = jsonrpc.override {
38   inherit version;
39 }; in
40 buildDunePackage rec {
41   pname = "lsp";
42   inherit (jsonrpc_v) version src;
43   minimalOCamlVersion =
44     if lib.versionAtLeast version "1.7.0" then
45       "4.12"
46     else
47       "4.06";
49   # unvendor some (not all) dependencies.
50   # They are vendored by upstream only because it is then easier to install
51   # ocaml-lsp without messing with your opam switch, but nix should prevent
52   # this type of problems without resorting to vendoring.
53   preBuild = lib.optionalString (lib.versionOlder version "1.10.4") ''
54     rm -r ocaml-lsp-server/vendor/{octavius,uutf,omd,cmdliner}
55   '';
57   buildInputs =
58     if lib.versionAtLeast version "1.12.0" then
59       [
60         pp
61         re
62         ppx_yojson_conv_lib
63         octavius
64         dune-build-info
65         dune-rpc
66         omd
67         cmdliner
68         ocamlformat-rpc-lib
69         dyn
70         stdune
71         chrome-trace
72       ]
73     else if lib.versionAtLeast version "1.10.0" then
74       [
75         pp
76         re
77         ppx_yojson_conv_lib
78         octavius
79         dune-build-info
80         dune-rpc
81         omd
82         cmdliner
83         ocamlformat-rpc-lib
84         dyn
85         stdune
86       ]
87     else if lib.versionAtLeast version "1.7.0" then
88       [ re octavius dune-build-info omd cmdliner ocamlformat-rpc-lib ]
89     else
90       [
91         ppx_yojson_conv_lib
92         ocaml-syntax-shims
93         octavius
94         dune-build-info
95         omd
96         cmdliner
97       ];
99   nativeBuildInputs = lib.optional (lib.versionOlder version "1.7.0") cppo;
101   propagatedBuildInputs =
102     if lib.versionAtLeast version "1.14.0" then [
103       jsonrpc
104       ppx_yojson_conv_lib
105       uutf
106     ] else if lib.versionAtLeast version "1.10.0" then [
107       dyn
108       jsonrpc
109       ordering
110       ppx_yojson_conv_lib
111       stdune
112       uutf
113     ] else if lib.versionAtLeast version "1.7.0" then [
114       csexp
115       jsonrpc
116       (pp.override { version = "1.2.0"; })
117       ppx_yojson_conv_lib
118       result
119       uutf
120     ] else [
121       csexp
122       jsonrpc
123       ppx_yojson_conv_lib
124       stdlib-shims
125       uutf
126     ];
128   meta = jsonrpc.meta // {
129     description = "LSP protocol implementation in OCaml";
130   };