nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at litex 609 lines 19 kB view raw
1# Do not use overrides in this file to add `meta.mainProgram` to packages. Use `./main-programs.nix` 2# instead. 3{ pkgs, nodejs }: 4 5let 6 inherit (pkgs) 7 stdenv 8 lib 9 callPackage 10 fetchFromGitHub 11 fetchurl 12 fetchpatch 13 nixosTests; 14 15 since = version: lib.versionAtLeast nodejs.version version; 16 before = version: lib.versionOlder nodejs.version version; 17in 18 19final: prev: { 20 inherit nodejs; 21 22 "@angular/cli" = prev."@angular/cli".override { 23 prePatch = '' 24 export NG_CLI_ANALYTICS=false 25 ''; 26 }; 27 28 "@electron-forge/cli" = prev."@electron-forge/cli".override { 29 buildInputs = [ final.node-gyp-build ]; 30 }; 31 32 "@forge/cli" = prev."@forge/cli".override { 33 nativeBuildInputs = [ pkgs.pkg-config ]; 34 buildInputs = with pkgs; [ 35 libsecret 36 final.node-gyp-build 37 final.node-pre-gyp 38 ] ++ lib.optionals stdenv.isDarwin [ 39 darwin.apple_sdk.frameworks.AppKit 40 darwin.apple_sdk.frameworks.Security 41 ]; 42 }; 43 44 "@medable/mdctl-cli" = prev."@medable/mdctl-cli".override (oldAttrs: { 45 nativeBuildInputs = with pkgs; with darwin.apple_sdk.frameworks; [ 46 glib 47 libsecret 48 pkg-config 49 ] ++ lib.optionals stdenv.isDarwin [ 50 AppKit 51 Security 52 ]; 53 buildInputs = [ 54 final.node-gyp-build 55 final.node-pre-gyp 56 nodejs 57 ]; 58 59 meta = oldAttrs.meta // { broken = since "16"; }; 60 }); 61 mdctl-cli = final."@medable/mdctl-cli"; 62 63 autoprefixer = prev.autoprefixer.override { 64 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 65 postInstall = '' 66 wrapProgram "$out/bin/autoprefixer" \ 67 --prefix NODE_PATH : ${final.postcss}/lib/node_modules 68 ''; 69 passthru.tests = { 70 simple-execution = callPackage ./package-tests/autoprefixer.nix { inherit (final) autoprefixer; }; 71 }; 72 }; 73 74 aws-azure-login = prev.aws-azure-login.override (oldAttrs: { 75 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 76 prePatch = '' 77 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 78 ''; 79 postInstall = '' 80 wrapProgram $out/bin/aws-azure-login \ 81 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium}/bin/chromium 82 ''; 83 meta = oldAttrs.meta // { platforms = lib.platforms.linux; }; 84 }); 85 86 balanceofsatoshis = prev.balanceofsatoshis.override { 87 nativeBuildInputs = [ pkgs.installShellFiles ]; 88 postInstall = '' 89 installShellCompletion --cmd bos\ 90 --bash <($out/bin/bos completion bash)\ 91 --zsh <($out/bin/bos completion zsh)\ 92 --fish <($out/bin/bos completion fish) 93 ''; 94 }; 95 96 bitwarden-cli = prev."@bitwarden/cli".override { 97 name = "bitwarden-cli"; 98 nativeBuildInputs = with pkgs; [ 99 pkg-config 100 ] ++ lib.optionals stdenv.isDarwin [ 101 darwin.apple_sdk.frameworks.CoreText 102 ]; 103 buildInputs = with pkgs; [ 104 pixman 105 cairo 106 pango 107 giflib 108 ]; 109 }; 110 111 bower2nix = prev.bower2nix.override { 112 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 113 postInstall = '' 114 for prog in bower2nix fetch-bower; do 115 wrapProgram "$out/bin/$prog" --prefix PATH : ${lib.makeBinPath [ pkgs.git pkgs.nix ]} 116 done 117 ''; 118 }; 119 120 carbon-now-cli = prev.carbon-now-cli.override { 121 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 122 prePatch = '' 123 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 124 ''; 125 postInstall = '' 126 wrapProgram $out/bin/carbon-now \ 127 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 128 ''; 129 }; 130 131 coc-imselect = prev.coc-imselect.override (oldAttrs: { 132 meta = oldAttrs.meta // { broken = since "10"; }; 133 }); 134 135 dat = prev.dat.override (oldAttrs: { 136 buildInputs = [ final.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ]; 137 meta = oldAttrs.meta // { broken = since "12"; }; 138 }); 139 140 castnow = prev.castnow.override { 141 nativeBuildInputs = [ pkgs.makeWrapper ]; 142 143 postInstall = '' 144 wrapProgram "$out/bin/castnow" \ 145 --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.ffmpeg ]} 146 ''; 147 }; 148 149 eask = prev."@emacs-eask/cli".override { 150 name = "eask"; 151 }; 152 153 expo-cli = prev."expo-cli".override (oldAttrs: { 154 # The traveling-fastlane-darwin optional dependency aborts build on Linux. 155 dependencies = builtins.filter (d: d.packageName != "@expo/traveling-fastlane-${if stdenv.isLinux then "darwin" else "linux"}") oldAttrs.dependencies; 156 }); 157 158 fast-cli = prev.fast-cli.override { 159 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 160 prePatch = '' 161 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 162 ''; 163 postInstall = '' 164 wrapProgram $out/bin/fast \ 165 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 166 ''; 167 }; 168 169 fauna-shell = prev.fauna-shell.override { 170 # printReleaseNotes just pulls them from GitHub which is not allowed in sandbox 171 preRebuild = '' 172 sed -i 's|"node ./tools/printReleaseNotes"|"true"|' node_modules/faunadb/package.json 173 ''; 174 }; 175 176 firebase-tools = prev.firebase-tools.override { 177 nativeBuildInputs = lib.optionals stdenv.isDarwin [ pkgs.xcbuild ]; 178 }; 179 180 flood = prev.flood.override { 181 buildInputs = [ final.node-pre-gyp ]; 182 }; 183 184 git-ssb = prev.git-ssb.override (oldAttrs: { 185 buildInputs = [ final.node-gyp-build ]; 186 meta = oldAttrs.meta // { broken = since "10"; }; 187 }); 188 189 graphite-cli = prev."@withgraphite/graphite-cli".override { 190 name = "graphite-cli"; 191 nativeBuildInputs = [ pkgs.installShellFiles ]; 192 # 'gt completion' auto-detects zshell from environment variables: 193 # https://github.com/yargs/yargs/blob/2b6ba3139396b2e623aed404293f467f16590039/lib/completion.ts#L45 194 postInstall = '' 195 installShellCompletion --cmd gt \ 196 --bash <($out/bin/gt completion) \ 197 --zsh <(ZSH_NAME=zsh $out/bin/gt completion) 198 ''; 199 }; 200 201 graphql-language-service-cli = prev.graphql-language-service-cli.override { 202 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 203 postInstall = '' 204 wrapProgram "$out/bin/graphql-lsp" \ 205 --prefix NODE_PATH : ${final.graphql}/lib/node_modules 206 ''; 207 }; 208 209 hsd = prev.hsd.override { 210 buildInputs = [ final.node-gyp-build pkgs.unbound ]; 211 }; 212 213 ijavascript = prev.ijavascript.override (oldAttrs: { 214 preRebuild = '' 215 export npm_config_zmq_external=true 216 ''; 217 buildInputs = oldAttrs.buildInputs ++ [ final.node-gyp-build pkgs.zeromq ]; 218 }); 219 220 insect = prev.insect.override (oldAttrs: { 221 nativeBuildInputs = oldAttrs.nativeBuildInputs or [] ++ [ pkgs.psc-package final.pulp ]; 222 }); 223 224 intelephense = prev.intelephense.override (oldAttrs: { 225 meta = oldAttrs.meta // { license = lib.licenses.unfree; }; 226 }); 227 228 joplin = prev.joplin.override { 229 nativeBuildInputs = [ 230 pkgs.pkg-config 231 ] ++ lib.optionals stdenv.isDarwin [ 232 pkgs.xcbuild 233 ]; 234 buildInputs = with pkgs; [ 235 # required by sharp 236 # https://sharp.pixelplumbing.com/install 237 vips 238 239 libsecret 240 final.node-gyp-build 241 final.node-pre-gyp 242 243 pixman 244 cairo 245 pango 246 ] ++ lib.optionals stdenv.isDarwin [ 247 darwin.apple_sdk.frameworks.AppKit 248 darwin.apple_sdk.frameworks.Security 249 ]; 250 }; 251 252 jsonplaceholder = prev.jsonplaceholder.override { 253 buildInputs = [ nodejs ]; 254 postInstall = '' 255 exe=$out/bin/jsonplaceholder 256 mkdir -p $out/bin 257 cat >$exe <<EOF 258 #!${pkgs.runtimeShell} 259 exec -a jsonplaceholder ${nodejs}/bin/node $out/lib/node_modules/jsonplaceholder/index.js 260 EOF 261 chmod a+x $exe 262 ''; 263 }; 264 265 keyoxide = prev.keyoxide.override { 266 nativeBuildInputs = [ pkgs.pkg-config ]; 267 buildInputs = with pkgs; [ 268 pixman 269 cairo 270 pango 271 ] ++ lib.optionals stdenv.isDarwin [ 272 darwin.apple_sdk.frameworks.CoreText 273 ]; 274 }; 275 276 makam = prev.makam.override { 277 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 278 postFixup = '' 279 wrapProgram "$out/bin/makam" --prefix PATH : ${lib.makeBinPath [ nodejs ]} 280 ${lib.optionalString stdenv.isLinux "patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\""} 281 ''; 282 }; 283 284 mermaid-cli = prev."@mermaid-js/mermaid-cli".override ( 285 if stdenv.isDarwin 286 then {} 287 else { 288 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 289 prePatch = '' 290 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 291 ''; 292 postInstall = '' 293 wrapProgram $out/bin/mmdc \ 294 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 295 ''; 296 }); 297 298 near-cli = prev.near-cli.override { 299 nativeBuildInputs = with pkgs; [ 300 libusb1 301 final.prebuild-install 302 final.node-gyp-build 303 pkg-config 304 ]; 305 }; 306 307 node-gyp = prev.node-gyp.override { 308 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 309 # Teach node-gyp to use nodejs headers locally rather that download them form https://nodejs.org. 310 # This is important when build nodejs packages in sandbox. 311 postInstall = '' 312 wrapProgram "$out/bin/node-gyp" \ 313 --set npm_config_nodedir ${nodejs} 314 ''; 315 }; 316 317 node-inspector = prev.node-inspector.override (oldAttrs: { 318 buildInputs = [ final.node-pre-gyp ]; 319 meta = oldAttrs.meta // { broken = since "10"; }; 320 }); 321 322 node-red = prev.node-red.override { 323 buildInputs = [ final.node-pre-gyp ]; 324 }; 325 326 node2nix = prev.node2nix.override { 327 # Get latest commit for misc fixes 328 src = fetchFromGitHub { 329 owner = "svanderburg"; 330 repo = "node2nix"; 331 rev = "315e1b85a6761152f57a41ccea5e2570981ec670"; 332 sha256 = "sha256-8OxTOkwBPcnjyhXhxQEDd8tiaQoHt91zUJX5Ka+IXco="; 333 }; 334 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 335 postInstall = let 336 patches = [ 337 # Needed to fix packages with DOS line-endings after above patch - PR svanderburg/node2nix#314 338 (fetchpatch { 339 name = "convert-crlf-for-script-bin-files.patch"; 340 url = "https://github.com/svanderburg/node2nix/commit/91aa511fe7107938b0409a02ab8c457a6de2d8ca.patch"; 341 hash = "sha256-ISiKYkur/o8enKDzJ8mQndkkSC4yrTNlheqyH+LiXlU="; 342 }) 343 # fix nodejs attr names 344 (fetchpatch { 345 url = "https://github.com/svanderburg/node2nix/commit/3b63e735458947ef39aca247923f8775633363e5.patch"; 346 hash = "sha256-pe8Xm4mjPh9oKXugoMY6pRl8YYgtdw0sRXN+TienalU="; 347 }) 348 ]; 349 in '' 350 ${lib.concatStringsSep "\n" (map (patch: "patch -d $out/lib/node_modules/node2nix -p1 < ${patch}") patches)} 351 wrapProgram "$out/bin/node2nix" --prefix PATH : ${lib.makeBinPath [ pkgs.nix ]} 352 ''; 353 }; 354 355 parcel = prev.parcel.override { 356 buildInputs = [ final.node-gyp-build ]; 357 preRebuild = '' 358 sed -i -e "s|#!/usr/bin/env node|#! ${nodejs}/bin/node|" node_modules/node-gyp-build/bin.js 359 ''; 360 }; 361 362 pnpm = prev.pnpm.override { 363 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 364 365 preRebuild = '' 366 sed 's/"link:/"file:/g' --in-place package.json 367 ''; 368 369 postInstall = let 370 pnpmLibPath = lib.makeBinPath [ 371 nodejs.passthru.python 372 nodejs 373 ]; 374 in '' 375 for prog in $out/bin/*; do 376 wrapProgram "$prog" --prefix PATH : ${pnpmLibPath} 377 done 378 ''; 379 }; 380 381 postcss-cli = prev.postcss-cli.override (oldAttrs: { 382 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 383 postInstall = '' 384 wrapProgram "$out/bin/postcss" \ 385 --prefix NODE_PATH : ${final.postcss}/lib/node_modules \ 386 --prefix NODE_PATH : ${final.autoprefixer}/lib/node_modules 387 ln -s '${final.postcss}/lib/node_modules/postcss' "$out/lib/node_modules/postcss" 388 ''; 389 passthru.tests = { 390 simple-execution = callPackage ./package-tests/postcss-cli.nix { 391 inherit (final) postcss-cli; 392 }; 393 }; 394 meta = oldAttrs.meta // { maintainers = with lib.maintainers; [ Luflosi ]; }; 395 }); 396 397 # To update prisma, please first update prisma-engines to the latest 398 # version. Then change the correct hash to this package. The PR should hold 399 # two commits: one for the engines and the other one for the node package. 400 prisma = prev.prisma.override rec { 401 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 402 403 inherit (pkgs.prisma-engines) version; 404 405 src = fetchurl { 406 url = "https://registry.npmjs.org/prisma/-/prisma-${version}.tgz"; 407 hash = "sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA=="; 408 }; 409 postInstall = with pkgs; '' 410 wrapProgram "$out/bin/prisma" \ 411 --set PRISMA_MIGRATION_ENGINE_BINARY ${prisma-engines}/bin/migration-engine \ 412 --set PRISMA_QUERY_ENGINE_BINARY ${prisma-engines}/bin/query-engine \ 413 --set PRISMA_QUERY_ENGINE_LIBRARY ${lib.getLib prisma-engines}/lib/libquery_engine.node \ 414 --set PRISMA_FMT_BINARY ${prisma-engines}/bin/prisma-fmt 415 ''; 416 417 passthru.tests = { 418 simple-execution = pkgs.callPackage ./package-tests/prisma.nix { 419 inherit (final) prisma; 420 }; 421 }; 422 }; 423 424 pulp = prev.pulp.override { 425 # tries to install purescript 426 npmFlags = builtins.toString [ "--ignore-scripts" ]; 427 428 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 429 postInstall = '' 430 wrapProgram "$out/bin/pulp" --suffix PATH : ${lib.makeBinPath [ 431 pkgs.purescript 432 ]} 433 ''; 434 }; 435 436 reveal-md = prev.reveal-md.override ( 437 lib.optionalAttrs (!stdenv.isDarwin) { 438 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 439 prePatch = '' 440 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 441 ''; 442 postInstall = '' 443 wrapProgram $out/bin/reveal-md \ 444 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 445 ''; 446 } 447 ); 448 449 rush = prev."@microsoft/rush".override { 450 name = "rush"; 451 }; 452 453 ssb-server = prev.ssb-server.override (oldAttrs: { 454 buildInputs = [ pkgs.automake pkgs.autoconf final.node-gyp-build ]; 455 meta = oldAttrs.meta // { broken = since "10"; }; 456 }); 457 458 stf = prev.stf.override (oldAttrs: { 459 meta = oldAttrs.meta // { broken = since "10"; }; 460 }); 461 462 tailwindcss = prev.tailwindcss.override { 463 plugins = [ ]; 464 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 465 postInstall = '' 466 nodePath="" 467 for p in "$out" "${final.postcss}" $plugins; do 468 nodePath="$nodePath''${nodePath:+:}$p/lib/node_modules" 469 done 470 wrapProgram "$out/bin/tailwind" \ 471 --prefix NODE_PATH : "$nodePath" 472 wrapProgram "$out/bin/tailwindcss" \ 473 --prefix NODE_PATH : "$nodePath" 474 unset nodePath 475 ''; 476 passthru.tests = { 477 simple-execution = callPackage ./package-tests/tailwindcss.nix { 478 inherit (final) tailwindcss; 479 }; 480 }; 481 }; 482 483 teck-programmer = prev.teck-programmer.override { 484 nativeBuildInputs = [ final.node-gyp-build ]; 485 buildInputs = [ pkgs.libusb1 ]; 486 }; 487 488 tedicross = prev."tedicross-git+https://github.com/TediCross/TediCross.git#v0.8.7".override { 489 nativeBuildInputs = with pkgs; [ makeWrapper libtool autoconf ]; 490 postInstall = '' 491 makeWrapper '${nodejs}/bin/node' "$out/bin/tedicross" \ 492 --add-flags "$out/lib/node_modules/tedicross/main.js" 493 ''; 494 }; 495 496 thelounge-plugin-closepms = prev.thelounge-plugin-closepms.override { 497 nativeBuildInputs = [ final.node-pre-gyp ]; 498 }; 499 500 thelounge-plugin-giphy = prev.thelounge-plugin-giphy.override { 501 nativeBuildInputs = [ final.node-pre-gyp ]; 502 }; 503 504 thelounge-theme-flat-blue = prev.thelounge-theme-flat-blue.override { 505 nativeBuildInputs = [ final.node-pre-gyp ]; 506 # TODO: needed until upstream pins thelounge version 4.3.1+ (which fixes dependency on old sqlite3 and transitively very old node-gyp 3.x) 507 preRebuild = '' 508 rm -r node_modules/node-gyp 509 ''; 510 }; 511 512 thelounge-theme-flat-dark = prev.thelounge-theme-flat-dark.override { 513 nativeBuildInputs = [ final.node-pre-gyp ]; 514 # TODO: needed until upstream pins thelounge version 4.3.1+ (which fixes dependency on old sqlite3 and transitively very old node-gyp 3.x) 515 preRebuild = '' 516 rm -r node_modules/node-gyp 517 ''; 518 }; 519 520 ts-node = prev.ts-node.override { 521 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 522 postInstall = '' 523 wrapProgram "$out/bin/ts-node" \ 524 --prefix NODE_PATH : ${final.typescript}/lib/node_modules 525 ''; 526 }; 527 528 tsun = prev.tsun.override { 529 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 530 postInstall = '' 531 wrapProgram "$out/bin/tsun" \ 532 --prefix NODE_PATH : ${final.typescript}/lib/node_modules 533 ''; 534 }; 535 536 typescript-language-server = prev.typescript-language-server.override { 537 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 538 postInstall = '' 539 ${pkgs.xorg.lndir}/bin/lndir ${final.typescript} $out 540 ''; 541 }; 542 543 uppy-companion = prev."@uppy/companion".override { 544 name = "uppy-companion"; 545 }; 546 547 vega-cli = prev.vega-cli.override { 548 nativeBuildInputs = [ pkgs.pkg-config ]; 549 buildInputs = with pkgs; [ 550 final.node-pre-gyp 551 pixman 552 cairo 553 pango 554 libjpeg 555 ] ++ lib.optionals stdenv.isDarwin [ 556 darwin.apple_sdk.frameworks.CoreText 557 ]; 558 }; 559 560 vega-lite = prev.vega-lite.override { 561 postInstall = '' 562 cd node_modules 563 for dep in ${final.vega-cli}/lib/node_modules/vega-cli/node_modules/*; do 564 if [[ ! -d ''${dep##*/} ]]; then 565 ln -s "${final.vega-cli}/lib/node_modules/vega-cli/node_modules/''${dep##*/}" 566 fi 567 done 568 ''; 569 passthru.tests = { 570 simple-execution = callPackage ./package-tests/vega-lite.nix { 571 inherit (final) vega-lite; 572 }; 573 }; 574 }; 575 576 volar = final."@volar/vue-language-server".override { 577 name = "volar"; 578 }; 579 580 wavedrom-cli = prev.wavedrom-cli.override { 581 nativeBuildInputs = [ pkgs.pkg-config final.node-pre-gyp ]; 582 # These dependencies are required by 583 # https://github.com/Automattic/node-canvas. 584 buildInputs = with pkgs; [ 585 giflib 586 pixman 587 cairo 588 pango 589 ] ++ lib.optionals stdenv.isDarwin [ 590 darwin.apple_sdk.frameworks.CoreText 591 ]; 592 }; 593 594 webtorrent-cli = prev.webtorrent-cli.override { 595 buildInputs = [ final.node-gyp-build ]; 596 }; 597 598 wrangler = prev.wrangler.override (oldAttrs: { 599 meta = oldAttrs.meta // { broken = before "16.13"; }; 600 }); 601 602 yaml-language-server = prev.yaml-language-server.override { 603 nativeBuildInputs = [ pkgs.buildPackages.makeWrapper ]; 604 postInstall = '' 605 wrapProgram "$out/bin/yaml-language-server" \ 606 --prefix NODE_PATH : ${final.prettier}/lib/node_modules 607 ''; 608 }; 609}