about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/misc/nimlsp/default.nix
blob: 1919e26ddec4e137da31fb595238885368b62e9a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{ lib, stdenv, fetchFromGitHub, srcOnly, nim }:
let
  astpatternmatching = fetchFromGitHub {
    owner = "krux02";
    repo = "ast-pattern-matching";
    rev = "87f7d163421af5a4f5e5cb6da7b93278e6897e96";
    sha256 = "19mb5bb6riia8380p5dpc3q0vwgrj958dd6p7vw8vkvwiqrzg6zq";
  };

  jsonschema = fetchFromGitHub {
    owner = "PMunch";
    repo = "jsonschema";
    rev = "7b41c03e3e1a487d5a8f6b940ca8e764dc2cbabf";
    sha256 = "1js64jqd854yjladxvnylij4rsz7212k31ks541pqrdzm6hpblbz";
  };
in
stdenv.mkDerivation rec {
  pname = "nimlsp";
  version = "0.2.6";

  src = fetchFromGitHub {
    owner = "PMunch";
    repo = "nimlsp";
    rev = "v${version}";
    sha256 = "13kw3zjh0iqymwqxwhyj8jz6hgswwahf1rjd6iad7c6gcwrrg6yl";
  };

  nativeBuildInputs = [ nim ];

  buildPhase = ''
    export HOME=$TMPDIR
    nim -d:release -p:${astpatternmatching}/src -p:${jsonschema}/src \
      c --threads:on -d:nimcore -d:nimsuggest -d:debugCommunication \
      -d:debugLogging -d:explicitSourcePath=${srcOnly nim.unwrapped} -d:tempDir=/tmp src/nimlsp
  '';

  installPhase = ''
    install -Dt $out/bin src/nimlsp
  '';

  meta = with lib; {
    description = "Language Server Protocol implementation for Nim";
    homepage = "https://github.com/PMunch/nimlsp";
    license = licenses.mit;
    platforms = nim.meta.platforms;
    maintainers = [ maintainers.marsam ];
  };
}