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