1{
2 lib,
3 stdenv,
4 zig_0_14,
5 zig_0_15,
6 fetchFromGitHub,
7 callPackage,
8}:
9
10let
11 common = finalAttrs: _: {
12 pname = "zls";
13
14 meta = {
15 description = "Zig LSP implementation + Zig Language Server";
16 mainProgram = "zls";
17 changelog = "https://github.com/zigtools/zls/releases/tag/${finalAttrs.version}";
18 homepage = "https://github.com/zigtools/zls";
19 license = lib.licenses.mit;
20 maintainers = with lib.maintainers; [
21 figsoda
22 moni
23 _0x5a4
24 jmbaur
25 ];
26 platforms = lib.platforms.unix;
27 };
28 };
29in
30lib.mapAttrs (_: extension: stdenv.mkDerivation (lib.extends common extension)) {
31 zls_0_14 = finalAttrs: {
32 version = "0.14.0";
33
34 src = fetchFromGitHub {
35 owner = "zigtools";
36 repo = "zls";
37 tag = finalAttrs.version;
38 fetchSubmodules = true;
39 hash = "sha256-A5Mn+mfIefOsX+eNBRHrDVkqFDVrD3iXDNsUL4TPhKo=";
40 };
41
42 nativeBuildInputs = [ zig_0_14.hook ];
43
44 postPatch = ''
45 ln -s ${callPackage ./deps_0_14.nix { }} $ZIG_GLOBAL_CACHE_DIR/p
46 '';
47 };
48
49 zls_0_15 = finalAttrs: {
50 version = "0.15.0";
51
52 src = fetchFromGitHub {
53 owner = "zigtools";
54 repo = "zls";
55 tag = finalAttrs.version;
56 fetchSubmodules = true;
57 hash = "sha256-GFzSHUljcxy7sM1PaabbkQUdUnLwpherekPWJFxXtnk=";
58 };
59
60 nativeBuildInputs = [ zig_0_15.hook ];
61
62 postPatch = ''
63 ln -s ${callPackage ./deps_0_15.nix { }} $ZIG_GLOBAL_CACHE_DIR/p
64 '';
65 };
66}