diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/language-servers/perlnavigator/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/language-servers/perlnavigator/default.nix | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/language-servers/perlnavigator/default.nix b/nixpkgs/pkgs/development/tools/language-servers/perlnavigator/default.nix new file mode 100644 index 000000000000..ddeb1a9e0b93 --- /dev/null +++ b/nixpkgs/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 ]; + }; +} |