diff options
Diffstat (limited to 'pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix')
-rw-r--r-- | pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix b/pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix new file mode 100644 index 00000000000..cd01116b820 --- /dev/null +++ b/pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix @@ -0,0 +1,59 @@ +{ buildDunePackage +, lib +, cppo +, stdlib-shims +, ppx_yojson_conv_lib +, ocaml-syntax-shims +, jsonrpc +, omd +, octavius +, dune-build-info +, uutf +, re +, pp +, csexp +, cmdliner +, ocamlformat-rpc-lib +}: + +buildDunePackage rec { + pname = "lsp"; + inherit (jsonrpc) version src; + useDune2 = true; + minimumOCamlVersion = + if lib.versionAtLeast version "1.7.0" then + "4.12" + else + "4.06"; + + # unvendor some (not all) dependencies. + # They are vendored by upstream only because it is then easier to install + # ocaml-lsp without messing with your opam switch, but nix should prevent + # this type of problems without resorting to vendoring. + preBuild = '' + rm -r ocaml-lsp-server/vendor/{octavius,uutf,omd,cmdliner} + ''; + + buildInputs = + if lib.versionAtLeast version "1.7.0" then + [ pp re ppx_yojson_conv_lib octavius dune-build-info omd cmdliner ocamlformat-rpc-lib ] + else + [ cppo + ppx_yojson_conv_lib + ocaml-syntax-shims + octavius + dune-build-info + omd + cmdliner + ]; + + propagatedBuildInputs = [ + csexp + jsonrpc + uutf + ] ++ lib.optional (lib.versionOlder version "1.7.0") stdlib-shims; + + meta = jsonrpc.meta // { + description = "LSP protocol implementation in OCaml"; + }; +} |