about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobert Schütz <nix@dotlambda.de>2023-09-05 15:03:53 +0000
committerGitHub <noreply@github.com>2023-09-05 15:03:53 +0000
commitff766898cc00e0e9e45e5d12c26a132b93d6cb8d (patch)
treed0a5e4057237b18158f6aea48f3a4b2afe9635ec
parent7cb9338b8fa29b159312bbfdaf0363185f87f988 (diff)
parentf555a4ab3fbcd97b1ccbc75ffe6c93e213f7375c (diff)
Merge pull request #253163 from dotlambda/perlnavigator-init
perlnavigator: init at 0.6.0
-rw-r--r--pkgs/development/tools/language-servers/perlnavigator/default.nix80
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/development/tools/language-servers/perlnavigator/default.nix b/pkgs/development/tools/language-servers/perlnavigator/default.nix
new file mode 100644
index 0000000000000..ddeb1a9e0b930
--- /dev/null
+++ b/pkgs/development/tools/language-servers/perlnavigator/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+let
+  version = "0.6.0";
+  src = fetchFromGitHub {
+    owner = "bscan";
+    repo = "PerlNavigator";
+    rev = "v${version}";
+    hash = "sha256-RMxM8g3ZdSt1B8WgwmcQgjpPZOCrVYYkhOt610SgbIw=";
+  };
+  browser-ext = buildNpmPackage {
+    pname = "perlnavigator-web-server";
+    inherit version src;
+    sourceRoot = "${src.name}/browser-ext";
+    npmDepsHash = "sha256-PJKW+ni2wKw1ivkgQsL6g0jaxoYboa3XpVEEwgT4jWo=";
+    dontNpmBuild = true;
+    installPhase = ''
+      cp -r . "$out"
+    '';
+  };
+  client = buildNpmPackage {
+    pname = "perlnavigator-client";
+    inherit version src;
+    sourceRoot = "${src.name}/client";
+    npmDepsHash = "sha256-CM0l+D1VNkXBrZQHQGDiB/vAxMvpbHYoYlIugoLxSfA=";
+    dontNpmBuild = true;
+    installPhase = ''
+      cp -r . "$out"
+    '';
+  };
+  server = buildNpmPackage {
+    pname = "perlnavigator-server";
+    inherit version src;
+    sourceRoot = "${src.name}/server";
+    npmDepsHash = "sha256-TxK3ba9T97p8TBlULHUov6YX7WRl2QMq6TiNHxBoQeY=";
+    dontNpmBuild = true;
+    installPhase = ''
+      cp -r . "$out"
+    '';
+  };
+in buildNpmPackage rec {
+  pname = "perlnavigator";
+  inherit version src;
+
+  npmDepsHash = "sha256-nEinmgrbbFC+nkfTwu9djiUS+tj0VM4WKl2oqKpcGtM=";
+
+  postPatch = ''
+    sed -i /postinstall/d package.json
+
+    rm -r browser-ext client server
+    cp -r ${browser-ext} browser-ext
+    cp -r ${client} client
+    cp -r ${server} server
+    chmod +w browser-ext client server
+  '';
+
+  env = {
+    PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = 1;
+  };
+
+  npmBuildScript = "compile";
+
+  postInstall = ''
+    cp -r ${browser-ext}/node_modules "$out/lib/node_modules/perlnavigator/browser-ext"
+    cp -r ${client}/node_modules "$out/lib/node_modules/perlnavigator/client"
+    cp -r ${server}/node_modules "$out/lib/node_modules/perlnavigator/server"
+  '';
+
+  meta = {
+    changelog = "https://github.com/bscan/PerlNavigator/blob/${src.rev}/CHANGELOG.md";
+    description = "Perl Language Server that includes syntax checking, perl critic, and code navigation";
+    homepage = "https://github.com/bscan/PerlNavigator/tree/main/server";
+    license = lib.licenses.mit;
+    mainProgram = "perlnavigator";
+    maintainers = with lib.maintainers; [ wolfangaukang ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b95c98b3a3671..40cf53c894636 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -18549,6 +18549,8 @@ with pkgs;
 
   openscad-lsp = callPackage ../development/tools/language-servers/openscad-lsp { };
 
+  perlnavigator = callPackage ../development/tools/language-servers/perlnavigator { };
+
   postgres-lsp = callPackage ../development/tools/language-servers/postgres-lsp { };
 
   pylyzer = callPackage ../development/tools/language-servers/pylyzer { };