about summary refs log tree commit diff
path: root/pkgs/development/tools/language-servers/lua-language-server
diff options
context:
space:
mode:
authorfigsoda <figsoda@pm.me>2023-02-06 22:43:34 -0500
committerfigsoda <figsoda@pm.me>2023-02-06 23:26:51 -0500
commit291887ff6e0ac84488afa27641c894620dc50718 (patch)
tree125cdf3e63521e2df2645ed7e74b11c84cb93472 /pkgs/development/tools/language-servers/lua-language-server
parentdfc0ceece39e8d294c0661c24cbc49ca65d77c4d (diff)
lua-language-server: rename from sumneko-lua-language-server
and add figsoda as a maintainer

lua-language-server has been moved to a new organization (LuaLS).
Diffstat (limited to 'pkgs/development/tools/language-servers/lua-language-server')
-rw-r--r--pkgs/development/tools/language-servers/lua-language-server/default.nix84
1 files changed, 84 insertions, 0 deletions
diff --git a/pkgs/development/tools/language-servers/lua-language-server/default.nix b/pkgs/development/tools/language-servers/lua-language-server/default.nix
new file mode 100644
index 0000000000000..d260e7601e2f7
--- /dev/null
+++ b/pkgs/development/tools/language-servers/lua-language-server/default.nix
@@ -0,0 +1,84 @@
+{ lib, stdenv, fetchFromGitHub, ninja, makeWrapper, CoreFoundation, Foundation }:
+
+stdenv.mkDerivation rec {
+  pname = "lua-language-server";
+  version = "3.6.10";
+
+  src = fetchFromGitHub {
+    owner = "luals";
+    repo = "lua-language-server";
+    rev = version;
+    sha256 = "sha256-QnkWEf1Uv+CZwEyv1b3WMPvaOZEn+mKH5w3CPyw02CQ=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    ninja
+    makeWrapper
+  ];
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    CoreFoundation
+    Foundation
+  ];
+
+  postPatch = ''
+    # filewatch tests are failing on darwin
+    # this feature is not used in lua-language-server
+    sed -i /filewatch/d 3rd/bee.lua/test/test.lua
+
+    pushd 3rd/luamake
+  '' + lib.optionalString stdenv.isDarwin ''
+    # This package uses the program clang for C and C++ files. The language
+    # is selected via the command line argument -std, but this do not work
+    # in combination with the nixpkgs clang wrapper. Therefor we have to
+    # find all c++ compiler statements and replace $cc (which expands to
+    # clang) with clang++.
+    sed -i compile/ninja/macos.ninja \
+      -e '/c++/s,$cc,clang++,' \
+      -e '/test.lua/s,= .*,= true,' \
+      -e '/ldl/s,$cc,clang++,'
+    sed -i scripts/compiler/gcc.lua \
+      -e '/cxx_/s,$cc,clang++,'
+  '';
+
+  ninjaFlags = [
+    "-fcompile/ninja/${if stdenv.isDarwin then "macos" else "linux"}.ninja"
+  ];
+
+  postBuild = ''
+    popd
+    ./3rd/luamake/luamake rebuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dt "$out"/share/lua-language-server/bin bin/lua-language-server
+    install -m644 -t "$out"/share/lua-language-server/bin bin/*.*
+    install -m644 -t "$out"/share/lua-language-server {debugger,main}.lua
+    cp -r locale meta script "$out"/share/lua-language-server
+
+    # necessary for --version to work:
+    install -m644 -t "$out"/share/lua-language-server changelog.md
+
+    makeWrapper "$out"/share/lua-language-server/bin/lua-language-server \
+      $out/bin/lua-language-server \
+      --add-flags "-E $out/share/lua-language-server/main.lua \
+      --logpath=\''${XDG_CACHE_HOME:-\$HOME/.cache}/lua-language-server/log \
+      --metapath=\''${XDG_CACHE_HOME:-\$HOME/.cache}/lua-language-server/meta"
+
+    runHook postInstall
+  '';
+
+  # some tests require local networking
+  __darwinAllowLocalNetworking = true;
+
+  meta = with lib; {
+    description = "A language server that offers Lua language support";
+    homepage = "https://github.com/luals/lua-language-server";
+    license = licenses.mit;
+    maintainers = with maintainers; [ figsoda sei40kr ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}