nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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 = "rocq-prover";
27 repo = "vsrocq";
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 # This is the last version of VsCoq. Now, new versions are for VsRocq.
45 inherit location;
46 };
47 fetched = fetch (if version != null then version else defaultVersion);
48in
49ocamlPackages.buildDunePackage {
50 pname = "vscoq-language-server";
51 inherit (fetched) version;
52 src = "${fetched.src}/language-server";
53 nativeBuildInputs = [ coq ];
54 buildInputs = [
55 coq
56 glib
57 adwaita-icon-theme
58 wrapGAppsHook3
59 ]
60 ++ (with ocamlPackages; [
61 findlib
62 lablgtk3-sourceview3
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.override {
71 ppx_yojson_conv_lib = ppx_yojson_conv_lib.override { yojson = yojson_2; };
72 })
73 lsp
74 sel
75 ppx_optcomp
76 ]);
77
78 meta = {
79 description = "Language server for the vscoq vscode/codium extension";
80 homepage = "https://github.com/rocq-prover/vsrocq";
81 maintainers = with lib.maintainers; [ cohencyril ];
82 license = lib.licenses.mit;
83 }
84 // lib.optionalAttrs (fetched.broken or false) {
85 coqFilter = true;
86 broken = true;
87 };
88}