diff options
author | Doron Behar <doron.behar@gmail.com> | 2024-05-26 08:26:16 +0300 |
---|---|---|
committer | Doron Behar <doron.behar@gmail.com> | 2024-06-13 12:11:32 +0300 |
commit | 43f62ef3d03338b959a26ba28222058fa3153dc1 (patch) | |
tree | 56d8b0e93aeecf7eb83705fd78b549faedabca50 /pkgs/by-name/ba | |
parent | 21d22ef2ea511a82e20654d20ed493cef5690084 (diff) |
bash-language-server: use pnpm.fetchDeps instead of node2nix
Diffstat (limited to 'pkgs/by-name/ba')
-rw-r--r-- | pkgs/by-name/ba/bash-language-server/package.nix | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/pkgs/by-name/ba/bash-language-server/package.nix b/pkgs/by-name/ba/bash-language-server/package.nix new file mode 100644 index 0000000000000..0e66b1e268763 --- /dev/null +++ b/pkgs/by-name/ba/bash-language-server/package.nix @@ -0,0 +1,73 @@ +{ lib +, stdenv +, fetchFromGitHub +, pnpm_8 +, nodejs +, npmHooks +, makeBinaryWrapper +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "bash-language-server"; + version = "5.4.0"; + + src = fetchFromGitHub { + owner = "bash-lsp"; + repo = "bash-language-server"; + rev = "server-${finalAttrs.version}"; + hash = "sha256-yJ81oGd9aNsWQMLvDSgMVVH1//Mw/SVFYFIPsJTQYzE="; + }; + + pnpmDeps = pnpm_8.fetchDeps { + inherit (finalAttrs) pname version src; + hash = "sha256-W25xehcxncBs9QgQBt17F5YHK0b+GDEmt27XzTkyYWg="; + }; + + nativeBuildInputs = [ + nodejs + pnpm_8.configHook + npmHooks.npmBuildHook + makeBinaryWrapper + ]; + npmBuildScript = "compile"; + # We are only interested in the bash-language-server executable, which is + # part of the `./server` directory. From some reason, the `./vscode-client` + # directory is not included in upstream's `pnpm-workspace.yaml`, so perhaps + # that's why our ${pnpmDeps} don't include the dependencies required for it. + preBuild = '' + rm -r vscode-client + substituteInPlace tsconfig.json \ + --replace-fail '{ "path": "./vscode-client" },' "" + ''; + + installPhase = '' + runHook preInstall + + pnpm --offline \ + --frozen-lockfile --ignore-script \ + --filter=bash-language-server \ + deploy $out/lib/bash-language-server + # Cleanup directory a bit, to save space, and make fixup phase a bit faster + rm -r $out/lib/bash-language-server/src + find $out/lib/bash-language-server -name '*.ts' -delete + rm -r \ + $out/lib/bash-language-server/node_modules/.bin \ + $out/lib/bash-language-server/node_modules/*/bin + + # Create the executable, based upon what happens in npmHooks.npmInstallHook + makeWrapper ${lib.getExe nodejs} $out/bin/bash-language-server \ + --inherit-argv0 \ + --add-flags $out/lib/bash-language-server/out/cli.js + + runHook postInstall + ''; + + meta = with lib; { + description = "A language server for Bash"; + homepage = "https://github.com/bash-lsp/bash-language-server"; + license = licenses.mit; + maintainers = with maintainers; [ doronbehar ]; + mainProgram = "bash-language-server"; + platforms = platforms.all; + }; +}) |