diff --git a/pkgs/by-name/ba/bash-language-server/package.nix b/pkgs/by-name/ba/bash-language-server/package.nix index d1b787529e21..49e85c9f6661 100644 --- a/pkgs/by-name/ba/bash-language-server/package.nix +++ b/pkgs/by-name/ba/bash-language-server/package.nix @@ -1,39 +1,39 @@ { lib, - stdenv, + stdenvNoCC, fetchFromGitHub, - pnpm_8, + pnpm_10, nodejs, makeBinaryWrapper, shellcheck, versionCheckHook, }: -stdenv.mkDerivation (finalAttrs: { +stdenvNoCC.mkDerivation (finalAttrs: { pname = "bash-language-server"; - version = "5.4.0"; + version = "5.6.0"; src = fetchFromGitHub { owner = "bash-lsp"; repo = "bash-language-server"; - rev = "server-${finalAttrs.version}"; - hash = "sha256-yJ81oGd9aNsWQMLvDSgMVVH1//Mw/SVFYFIPsJTQYzE="; + tag = "server-${finalAttrs.version}"; + hash = "sha256-Pe32lQSlyWcyUbqwhfoulwNwhrnWdRcKFIl3Jj0Skac="; }; pnpmWorkspaces = [ "bash-language-server" ]; - pnpmDeps = pnpm_8.fetchDeps { + pnpmDeps = pnpm_10.fetchDeps { inherit (finalAttrs) pname version src pnpmWorkspaces ; - hash = "sha256-W25xehcxncBs9QgQBt17F5YHK0b+GDEmt27XzTkyYWg="; + hash = "sha256-NvyqPv5OKgZi3hW98Da8LhsYatmrzrPX8kLOfLr+BrI="; }; nativeBuildInputs = [ nodejs - pnpm_8.configHook + pnpm_10.configHook makeBinaryWrapper versionCheckHook ]; @@ -45,31 +45,46 @@ stdenv.mkDerivation (finalAttrs: { runHook postBuild ''; + preInstall = '' + # remove unnecessary files + rm node_modules/.modules.yaml + pnpm --ignore-scripts --prod prune + rm -r node_modules/.pnpm/@mixmark-io*/node_modules/@mixmark-io/domino/{test,.yarn} + find -type f \( -name "*.ts" -o -name "*.map" \) -exec rm -rf {} + + # https://github.com/pnpm/pnpm/issues/3645 + find node_modules server/node_modules -xtype l -delete + + # remove non-deterministic files + rm node_modules/{.modules.yaml,.pnpm-workspace-state.json} + ''; + installPhase = '' runHook preInstall - pnpm --offline \ - --frozen-lockfile --ignore-script \ - --filter=bash-language-server \ - deploy --prod $out/lib/bash-language-server + mkdir -p $out/{bin,lib/bash-language-server} + cp -r {node_modules,server} $out/lib/bash-language-server/ # Create the executable, based upon what happens in npmHooks.npmInstallHook makeWrapper ${lib.getExe nodejs} $out/bin/bash-language-server \ --suffix PATH : ${lib.makeBinPath [ shellcheck ]} \ --inherit-argv0 \ - --add-flags $out/lib/bash-language-server/out/cli.js + --add-flags $out/lib/bash-language-server/server/out/cli.js runHook postInstall ''; doInstallCheck = true; - meta = with lib; { + meta = { description = "Language server for Bash"; homepage = "https://github.com/bash-lsp/bash-language-server"; - license = licenses.mit; - maintainers = with maintainers; [ doronbehar ]; + changelog = "https://github.com/bash-lsp/bash-language-server/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + doronbehar + gepbird + ]; mainProgram = "bash-language-server"; - platforms = platforms.all; + platforms = lib.platforms.all; }; })