diff options
Diffstat (limited to 'nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp')
3 files changed, 86 insertions, 68 deletions
diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix index 0391498c37ae..a56621465f34 100644 --- a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix +++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/default.nix @@ -1,78 +1,21 @@ -{ buildDunePackage -, stdlib-shims -, ppx_yojson_conv_lib -, ocaml-syntax-shims -, yojson -, result -, omd -, octavius -, dune-build-info -, uutf -, csexp -, cmdliner -, fetchzip -, lib -}: -let - version = "1.4.0"; - src = fetchzip { - url = "https://github.com/ocaml/ocaml-lsp/releases/download/${version}/jsonrpc-${version}.tbz"; - sha256 = "16vvwq3d9xmr91r6yv5i2gyqcdliji7asyq4g6iygi617233fa33"; - }; - - # 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,ocaml-syntax-shims,omd,cmdliner} - ''; - - buildInputs = [ - stdlib-shims - ppx_yojson_conv_lib - ocaml-syntax-shims - octavius - uutf - csexp - dune-build-info - omd - cmdliner - jsonrpc - ]; - - lsp = buildDunePackage { - pname = "lsp"; - inherit version src; - useDune2 = true; - minimumOCamlVersion = "4.06"; - - inherit buildInputs preBuild; - }; +{ buildDunePackage, jsonrpc, lsp, makeWrapper, dot-merlin-reader }: - jsonrpc = buildDunePackage { - pname = "jsonrpc"; - inherit version src; - useDune2 = true; - minimumOCamlVersion = "4.06"; - - buildInputs = [ yojson stdlib-shims ocaml-syntax-shims ppx_yojson_conv_lib result ]; - }; - -in buildDunePackage { pname = "ocaml-lsp-server"; - inherit version src; + inherit (jsonrpc) version src; useDune2 = true; - inherit preBuild; + inherit (lsp) preBuild; - buildInputs = buildInputs ++ [ lsp ]; + buildInputs = lsp.buildInputs ++ [ lsp ]; + + nativeBuildInputs = [ makeWrapper ]; + + postInstall = '' + wrapProgram $out/bin/ocamllsp --prefix PATH : ${dot-merlin-reader}/bin + ''; - meta = with lib; { + meta = jsonrpc.meta // { description = "OCaml Language Server Protocol implementation"; - license = lib.licenses.isc; - platforms = platforms.unix; - maintainers = [ maintainers.symphorien ]; }; } diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix new file mode 100644 index 000000000000..701604c8710a --- /dev/null +++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix @@ -0,0 +1,31 @@ +{ buildDunePackage +, stdlib-shims +, ppx_yojson_conv_lib +, ocaml-syntax-shims +, yojson +, result +, fetchzip +, lib +}: + + +buildDunePackage rec { + pname = "jsonrpc"; + version = "1.4.1"; + src = fetchzip { + url = "https://github.com/ocaml/ocaml-lsp/releases/download/${version}/jsonrpc-${version}.tbz"; + sha256 = "0hzpw17qfhb0cxgwah1fv4k300r363dy1kv0977anl44dlanx1v5"; + }; + + useDune2 = true; + minimumOCamlVersion = "4.06"; + + buildInputs = [ yojson stdlib-shims ocaml-syntax-shims ppx_yojson_conv_lib result ]; + + meta = with lib; { + description = "Jsonrpc protocol implementation in OCaml"; + license = licenses.isc; + platforms = platforms.unix; + maintainers = with maintainers; [ symphorien marsam ]; + }; +} diff --git a/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix new file mode 100644 index 000000000000..b501282c1558 --- /dev/null +++ b/nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix @@ -0,0 +1,44 @@ +{ buildDunePackage +, stdlib-shims +, ppx_yojson_conv_lib +, ocaml-syntax-shims +, jsonrpc +, omd +, octavius +, dune-build-info +, uutf +, csexp +, cmdliner +}: + +buildDunePackage { + pname = "lsp"; + inherit (jsonrpc) version src; + useDune2 = true; + minimumOCamlVersion = "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,ocaml-syntax-shims,omd,cmdliner} + ''; + + buildInputs = [ + stdlib-shims + ppx_yojson_conv_lib + ocaml-syntax-shims + octavius + uutf + csexp + dune-build-info + omd + cmdliner + jsonrpc + ]; + + meta = jsonrpc.meta // { + description = "LSP protocol implementation in OCaml"; + }; +} |