jenkins: 2.479.3 -> 2.492.1
[NixPkgs.git] / pkgs / development / ocaml-modules / ocaml-lsp / default.nix
blobfe4d5e5fa1aad55789e32eeb97a7f4e103915f16
2   lib,
3   ocaml,
4   buildDunePackage,
5   lsp,
6   xdg,
7   re,
8   fiber,
9   makeWrapper,
10   dot-merlin-reader,
11   spawn,
12   ocamlc-loc,
13   merlin,
14   merlin-lib,
15   astring,
16   camlp-streams,
17   base,
20 # Freeze ocaml-lsp-version at 1.17.0 for OCaml 5.0
21 #  for which merlin 4.16 is not available
22 let
23   lsp_v =
24     if lib.versions.majorMinor ocaml.version == "5.0" then
25       lsp.override { version = "1.17.0"; }
26     else
27       lsp;
30 let
31   lsp = lsp_v;
34 # Use merlin < 4.17 for OCaml < 5.2
35 let
36   merlin-lib_v =
37     if lib.versions.majorMinor ocaml.version == "4.14" then
38       merlin-lib.override {
39         merlin = merlin.override {
40           version = "4.16-414";
41         };
42       }
43     else if lib.versions.majorMinor ocaml.version == "5.1" then
44       merlin-lib.override {
45         merlin = merlin.override {
46           version = "4.16-501";
47         };
48       }
49     else
50       merlin-lib;
52 let
53   merlin-lib = merlin-lib_v;
56 buildDunePackage rec {
57   pname = "ocaml-lsp-server";
58   inherit (lsp) version src preBuild;
60   buildInputs =
61     lsp.buildInputs
62     ++ [
63       lsp
64       re
65     ]
66     ++ lib.optional (lib.versionAtLeast version "1.9") spawn
67     ++ lib.optionals (lib.versionAtLeast version "1.10") [
68       fiber
69       xdg
70     ]
71     ++ lib.optional (lib.versionAtLeast version "1.14.2") ocamlc-loc
72     ++ lib.optionals (lib.versionAtLeast version "1.17.0") [
73       astring
74       camlp-streams
75       merlin-lib
76     ]
77     ++ lib.optional (lib.versionAtLeast version "1.18.0") base;
79   nativeBuildInputs = [ makeWrapper ];
81   postInstall = ''
82     wrapProgram $out/bin/ocamllsp --prefix PATH : ${dot-merlin-reader}/bin
83   '';
85   meta = lsp.meta // {
86     description = "OCaml Language Server Protocol implementation";
87     mainProgram = "ocamllsp";
88   };