1{
2 metaFetch,
3 coq,
4 lib,
5 glib,
6 adwaita-icon-theme,
7 wrapGAppsHook3,
8 version ? null,
9}:
10
11let
12 ocamlPackages = coq.ocamlPackages;
13 defaultVersion =
14 let
15 case = case: out: { inherit case out; };
16 in
17 with lib.versions;
18 lib.switch coq.coq-version [
19 (case (range "8.18" "9.1") "2.2.6")
20 (case (range "8.18" "8.20") "2.2.1")
21 (case (range "8.18" "8.19") "2.1.2")
22 (case (isEq "8.18") "2.0.3+coq8.18")
23 ] null;
24 location = {
25 domain = "github.com";
26 owner = "coq-community";
27 repo = "vscoq";
28 };
29 fetch = metaFetch ({
30 release."2.0.3+coq8.18".sha256 = "sha256-VXhHCP6Ni5/OcsgoI1EbJfYCpXzwkuR8kbbKrl6dfjU=";
31 release."2.0.3+coq8.18".rev = "v2.0.3+coq8.18";
32 release."2.1.2".rev = "v2.1.2";
33 release."2.1.2".sha256 = "sha256-GloY68fLmIv3oiEGNWwmgKv1CMAReBuXzMTUsKOs328=";
34 release."2.1.4".rev = "v2.1.4";
35 release."2.1.4".sha256 = "sha256-Vwve1sCg5OsGmhDLlOyGCwP6A8g618IzD79vLPw/JtQ=";
36 release."2.1.7".rev = "v2.1.7";
37 release."2.1.7".sha256 = "sha256-HsLv2ziPIUK6Q5/xz8ZvaGWggUCK1AKv47U5M7SCcKU=";
38 release."2.2.1".rev = "v2.2.1";
39 release."2.2.1".sha256 = "sha256-miIVAv/8jlP1pXnoK1MWz4O6nlmb309a8UjcCivbiB4=";
40 release."2.2.5".rev = "v2.2.5";
41 release."2.2.5".sha256 = "sha256-XyIjwem/yS7UIpQATNixgKkrMOHHs74nkAOvpU5WG1k=";
42 release."2.2.6".rev = "v2.2.6";
43 release."2.2.6".sha256 = "sha256-J8nRTAwN6GBEYgqlXa2kkkrHPatXsSObQg9QUQoZhgE=";
44 inherit location;
45 });
46 fetched = fetch (if version != null then version else defaultVersion);
47in
48ocamlPackages.buildDunePackage {
49 pname = "vscoq-language-server";
50 inherit (fetched) version;
51 src = "${fetched.src}/language-server";
52 nativeBuildInputs = [ coq ];
53 buildInputs = [
54 coq
55 glib
56 adwaita-icon-theme
57 wrapGAppsHook3
58 ]
59 ++ (with ocamlPackages; [
60 findlib
61 lablgtk3-sourceview3
62 yojson
63 zarith
64 ppx_inline_test
65 ppx_assert
66 ppx_sexp_conv
67 ppx_deriving
68 ppx_import
69 sexplib
70 ppx_yojson_conv
71 lsp
72 sel
73 ppx_optcomp
74 ]);
75
76 meta =
77 with lib;
78 {
79 description = "Language server for the vscoq vscode/codium extension";
80 homepage = "https://github.com/coq-community/vscoq";
81 maintainers = with maintainers; [ cohencyril ];
82 license = licenses.mit;
83 }
84 // optionalAttrs (fetched.broken or false) {
85 coqFilter = true;
86 broken = true;
87 };
88}