19 # Freeze ocaml-lsp-version at 1.17.0 for OCaml 5.0
20 # for which merlin 4.16 is not available
22 if lib.versions.majorMinor ocaml.version == "5.0"
23 then lsp.override { version = "1.17.0"; }
29 # Use merlin < 4.17 for OCaml < 5.2
31 if lib.versions.majorMinor ocaml.version == "4.14"
32 then merlin-lib.override {
33 merlin = merlin.override {
36 } else if lib.versions.majorMinor ocaml.version == "5.1"
37 then merlin-lib.override {
38 merlin = merlin.override {
43 let merlin-lib = merlin-lib_v; in
45 buildDunePackage rec {
46 pname = "ocaml-lsp-server";
47 inherit (lsp) version src preBuild;
49 buildInputs = lsp.buildInputs ++ [ lsp re ]
50 ++ lib.optional (lib.versionAtLeast version "1.9") spawn
51 ++ lib.optionals (lib.versionAtLeast version "1.10") [ fiber xdg ]
52 ++ lib.optional (lib.versionAtLeast version "1.14.2") ocamlc-loc
53 ++ lib.optionals (lib.versionAtLeast version "1.17.0") [ astring camlp-streams merlin-lib ]
54 ++ lib.optional (lib.versionAtLeast version "1.18.0") base
57 nativeBuildInputs = [ makeWrapper ];
60 wrapProgram $out/bin/ocamllsp --prefix PATH : ${dot-merlin-reader}/bin
64 description = "OCaml Language Server Protocol implementation";
65 mainProgram = "ocamllsp";