Files
nixpkgs/pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix
2026-06-25 08:22:06 +02:00

140 lines
3.5 KiB
Nix

{
buildDunePackage,
stdlib-shims,
ppx_yojson_conv_lib,
ocaml-syntax-shims,
yojson,
result,
fetchurl,
lib,
ocaml,
version ?
if lib.versionAtLeast ocaml.version "5.5" then
"1.27.0"
else if lib.versionAtLeast ocaml.version "5.4" then
"1.26.0"
else if lib.versionAtLeast ocaml.version "5.3" then
"1.23.1"
else if lib.versionAtLeast ocaml.version "5.2" then
"1.21.0"
else if lib.versionAtLeast ocaml.version "4.14" then
"1.18.0"
else if lib.versionAtLeast ocaml.version "4.13" then
"1.10.5"
else if lib.versionAtLeast ocaml.version "4.12" then
"1.9.0"
else
"1.4.1",
}:
let
params =
{
"1.27.0" = {
name = "lsp";
minimalOCamlVersion = "5.3";
sha256 = "sha256-BDrNaSP4pcuq2RVFI1cKsTlzuu72mOK1VTIT3WN5JxU=";
};
"1.26.0" = {
name = "lsp";
minimalOCamlVersion = "5.3";
sha256 = "sha256-tMgQ1mZKW/F1pvmUbIDIzCsY5GqYWTTBRQss4IDkaDI=";
};
"1.25.0" = {
name = "lsp";
minimalOCamlVersion = "5.3";
sha256 = "sha256-4xXSvvP4lwmtJXCEaSeZblT/ja/OJRGIgWq5fO8h8CA=";
};
"1.24.0" = {
name = "lsp";
minimalOCamlVersion = "5.3";
sha256 = "sha256-TVoaIVf2EvbALY+DjZferKX4GyOt08XOpcts7Ot7N1c=";
};
"1.23.1" = {
name = "lsp";
minimalOCamlVersion = "5.3";
sha256 = "sha256-x0fjlAJmOeogRGfoWd6T6o6ZWNv0T3gNyyoYl8VtdXE=";
};
"1.22.0" = {
name = "lsp";
minimalOCamlVersion = "5.2";
sha256 = "sha256-UZ3DV30V3CIQ3vpYBIGnQ1eRGNUGk7aRuxDLyCA/tYE=";
};
"1.21.0" = {
name = "lsp";
minimalOCamlVersion = "5.2";
sha256 = "sha256-Z4cDN/8j0NK6Q3dL+1io/eBJd+o32k0txQDtC1fO9xc=";
};
"1.18.0" = {
name = "lsp";
minimalOCamlVersion = "4.14";
sha256 = "sha256-tZ2kPM/S/9J3yeX2laDjnHLA144b8svy9iwae32nXwM=";
};
"1.17.0" = {
name = "lsp";
minimalOCamlVersion = "4.14";
sha256 = "sha256-j7i71xfu/SYItNg0WBBbZg4N46ETTcj8IWrmWdTRlgA=";
};
"1.14.2" = {
name = "lsp";
minimalOCamlVersion = "4.14";
sha256 = "sha256-1R+HYaGbPLGDs5DMN3jmnrZFMhMmPUHgF+s+yNzIVJQ=";
};
"1.10.5" = {
name = "jsonrpc";
minimalOCamlVersion = "4.13";
sha256 = "sha256-TeJS6t1ruWhWPvWNatrnSUWI6T17XKiosHLYizBDDcw=";
};
"1.9.0" = {
name = "jsonrpc";
minimalOCamlVersion = "4.12";
sha256 = "sha256:1ac44n6g3rf84gvhcca545avgf9vpkwkkkm0s8ipshfhp4g4jikh";
};
"1.4.1" = {
name = "jsonrpc";
minimalOCamlVersion = "4.06";
sha256 = "1ssyazc0yrdng98cypwa9m3nzfisdzpp7hqnx684rqj8f0g3gs6f";
};
}
."${version}";
in
buildDunePackage {
pname = "jsonrpc";
inherit version;
src = fetchurl {
url = "https://github.com/ocaml/ocaml-lsp/releases/download/${version}/${params.name}-${version}.tbz";
inherit (params) sha256;
};
inherit (params) minimalOCamlVersion;
buildInputs =
if lib.versionAtLeast version "1.7.0" then
[ ]
else
[
yojson
stdlib-shims
ocaml-syntax-shims
];
propagatedBuildInputs =
if lib.versionAtLeast version "1.23.1" then
[ yojson ]
else if lib.versionAtLeast version "1.7.0" then
[ ]
else
[
ppx_yojson_conv_lib
result
];
meta = {
description = "Jsonrpc protocol implementation in OCaml";
license = lib.licenses.isc;
platforms = lib.platforms.unix;
maintainers = [ ];
};
}