nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 81 lines 2.2 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 fetchPnpmDeps, 6 pnpmConfigHook, 7 pnpm, 8 nodejs, 9 nix-update-script, 10 makeBinaryWrapper, 11}: 12stdenv.mkDerivation (finalAttrs: { 13 pname = "vue-language-server"; 14 version = "3.2.2"; 15 16 src = fetchFromGitHub { 17 owner = "vuejs"; 18 repo = "language-tools"; 19 rev = "v${finalAttrs.version}"; 20 hash = "sha256-oVIWRCnJkJK1CsgNp7l95uuILeXv2XuwwfGElGnOEyU="; 21 }; 22 23 pnpmDeps = fetchPnpmDeps { 24 inherit (finalAttrs) pname version src; 25 fetcherVersion = 1; 26 hash = "sha256-lxRify3uJnqYH6btmXU9yaO8LJDGBZcyONLUHv2rLqg="; 27 }; 28 29 nativeBuildInputs = [ 30 nodejs 31 pnpmConfigHook 32 pnpm 33 makeBinaryWrapper 34 ]; 35 36 buildPhase = '' 37 runHook preBuild 38 pnpm run build packages/language-server 39 runHook postBuild 40 ''; 41 42 preInstall = '' 43 # the mv commands are workaround for https://github.com/pnpm/pnpm/issues/8307 44 mv packages packages.dontpruneme 45 CI=true pnpm prune --prod 46 find packages.dontpruneme/**/node_modules -xtype l -delete 47 mv packages.dontpruneme packages 48 49 find -type f \( -name "*.ts" -o -name "*.map" \) -exec rm -rf {} + 50 51 # https://github.com/pnpm/pnpm/issues/3645 52 find node_modules packages/language-server/node_modules -xtype l -delete 53 54 # remove non-deterministic files 55 rm node_modules/.modules.yaml node_modules/.pnpm-workspace-state-v1.json 56 ''; 57 58 installPhase = '' 59 runHook preInstall 60 61 mkdir -p $out/{bin,lib/language-tools} 62 cp -r {node_modules,packages,extensions} $out/lib/language-tools/ 63 64 makeWrapper ${lib.getExe nodejs} $out/bin/vue-language-server \ 65 --inherit-argv0 \ 66 --add-flags $out/lib/language-tools/packages/language-server/bin/vue-language-server.js 67 68 runHook postInstall 69 ''; 70 71 passthru.updateScript = nix-update-script { }; 72 73 meta = { 74 description = "Official Vue.js language server"; 75 homepage = "https://github.com/vuejs/language-tools#readme"; 76 changelog = "https://github.com/vuejs/language-tools/releases/tag/v${finalAttrs.version}"; 77 license = lib.licenses.mit; 78 maintainers = with lib.maintainers; [ friedow ]; 79 mainProgram = "vue-language-server"; 80 }; 81})