1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 nodejs,
6 pnpm_9,
7 nix-update-script,
8}:
9
10stdenv.mkDerivation (finalAttrs: {
11 pname = "tailwindcss-language-server";
12 version = "0.14.25";
13
14 src = fetchFromGitHub {
15 owner = "tailwindlabs";
16 repo = "tailwindcss-intellisense";
17 tag = "v${finalAttrs.version}";
18 hash = "sha256-uY5hOMuDfLpPFkVoZyISexb/RVtaOK/UpN1WRQ0uDQY=";
19 };
20
21 pnpmDeps = pnpm_9.fetchDeps {
22 inherit (finalAttrs)
23 pname
24 version
25 src
26 pnpmWorkspaces
27 ;
28 fetcherVersion = 1;
29 hash = "sha256-SUEq20gZCiTDkFuNgMc5McHBPgW++8P9Q1MJb7a7pY8=";
30 };
31
32 nativeBuildInputs = [
33 pnpm_9.configHook
34 ];
35
36 buildInputs = [
37 nodejs
38 ];
39
40 pnpmWorkspaces = [
41 "@tailwindcss/language-server..."
42 ];
43
44 # Must build the "@tailwindcss/language-service" package. Dependency is linked via workspace by "pnpm"
45 # https://github.com/tailwindlabs/tailwindcss-intellisense/blob/v0.14.24/pnpm-lock.yaml#L71
46 buildPhase = ''
47 runHook preBuild
48
49 pnpm --filter "@tailwindcss/language-server..." build
50
51 runHook postBuild
52 '';
53
54 installPhase = ''
55 runHook preInstall
56
57 mkdir -p $out/{bin,lib/tailwindcss-language-server}
58 cp -r {packages,node_modules} $out/lib/tailwindcss-language-server
59 chmod +x $out/lib/tailwindcss-language-server/packages/tailwindcss-language-server/bin/tailwindcss-language-server
60 ln -s $out/lib/tailwindcss-language-server/packages/tailwindcss-language-server/bin/tailwindcss-language-server $out/bin/tailwindcss-language-server
61
62 runHook postInstall
63 '';
64
65 passthru.updateScript = nix-update-script { };
66
67 meta = {
68 description = "Tailwind CSS Language Server";
69 homepage = "https://github.com/tailwindlabs/tailwindcss-intellisense";
70 changelog = "https://github.com/tailwindlabs/tailwindcss-intellisense/releases/tag/v${finalAttrs.version}";
71 license = lib.licenses.mit;
72 maintainers = with lib.maintainers; [ happysalada ];
73 mainProgram = "tailwindcss-language-server";
74 platforms = nodejs.meta.platforms;
75 };
76})