20 # Freeze ocaml-lsp-version at 1.17.0 for OCaml 5.0
21 # for which merlin 4.16 is not available
24 if lib.versions.majorMinor ocaml.version == "5.0" then
25 lsp.override { version = "1.17.0"; }
34 # Use merlin < 4.17 for OCaml < 5.2
37 if lib.versions.majorMinor ocaml.version == "4.14" then
39 merlin = merlin.override {
43 else if lib.versions.majorMinor ocaml.version == "5.1" then
45 merlin = merlin.override {
53 merlin-lib = merlin-lib_v;
56 buildDunePackage rec {
57 pname = "ocaml-lsp-server";
58 inherit (lsp) version src preBuild;
66 ++ lib.optional (lib.versionAtLeast version "1.9") spawn
67 ++ lib.optionals (lib.versionAtLeast version "1.10") [
71 ++ lib.optional (lib.versionAtLeast version "1.14.2") ocamlc-loc
72 ++ lib.optionals (lib.versionAtLeast version "1.17.0") [
77 ++ lib.optional (lib.versionAtLeast version "1.18.0") base;
79 nativeBuildInputs = [ makeWrapper ];
82 wrapProgram $out/bin/ocamllsp --prefix PATH : ${dot-merlin-reader}/bin
86 description = "OCaml Language Server Protocol implementation";
87 mainProgram = "ocamllsp";