at 22.05-pre 471 lines 15 kB view raw
1{ pkgs, nodejs, stdenv, applyPatches, fetchFromGitHub, fetchpatch, fetchurl }: 2 3let 4 inherit (pkgs) lib; 5 since = (version: pkgs.lib.versionAtLeast nodejs.version version); 6 before = (version: pkgs.lib.versionOlder nodejs.version version); 7 super = import ./composition.nix { 8 inherit pkgs nodejs; 9 inherit (stdenv.hostPlatform) system; 10 }; 11 self = super // { 12 "@angular/cli" = super."@angular/cli".override { 13 prePatch = '' 14 export NG_CLI_ANALYTICS=false 15 ''; 16 }; 17 18 autoprefixer = super.autoprefixer.override { 19 nativeBuildInputs = [ pkgs.makeWrapper ]; 20 postInstall = '' 21 wrapProgram "$out/bin/autoprefixer" \ 22 --prefix NODE_PATH : ${self.postcss}/lib/node_modules 23 ''; 24 passthru.tests = { 25 simple-execution = pkgs.callPackage ./package-tests/autoprefixer.nix { inherit (self) autoprefixer; }; 26 }; 27 }; 28 29 aws-azure-login = super.aws-azure-login.override { 30 meta.platforms = pkgs.lib.platforms.linux; 31 nativeBuildInputs = [ pkgs.makeWrapper ]; 32 prePatch = '' 33 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 34 ''; 35 postInstall = '' 36 wrapProgram $out/bin/aws-azure-login \ 37 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium}/bin/chromium 38 ''; 39 }; 40 41 bower2nix = super.bower2nix.override { 42 buildInputs = [ pkgs.makeWrapper ]; 43 postInstall = '' 44 for prog in bower2nix fetch-bower; do 45 wrapProgram "$out/bin/$prog" --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.git pkgs.nix ]} 46 done 47 ''; 48 }; 49 50 carbon-now-cli = super.carbon-now-cli.override ({ 51 nativeBuildInputs = [ pkgs.makeWrapper ]; 52 prePatch = '' 53 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 54 ''; 55 postInstall = '' 56 wrapProgram $out/bin/carbon-now \ 57 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 58 ''; 59 }); 60 61 deltachat-desktop = super."deltachat-desktop-../../applications/networking/instant-messengers/deltachat-desktop".override { 62 meta.broken = true; # use the top-level package instead 63 }; 64 65 fast-cli = super.fast-cli.override ({ 66 nativeBuildInputs = [ pkgs.makeWrapper ]; 67 prePatch = '' 68 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 69 ''; 70 postInstall = '' 71 wrapProgram $out/bin/fast \ 72 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 73 ''; 74 }); 75 76 hyperspace-cli = super."@hyperspace/cli".override { 77 nativeBuildInputs = with pkgs; [ 78 makeWrapper 79 libtool 80 autoconf 81 automake 82 ]; 83 buildInputs = with pkgs; [ 84 nodePackages.node-gyp-build 85 nodejs 86 ]; 87 postInstall = '' 88 wrapProgram "$out/bin/hyp" --prefix PATH : ${ 89 pkgs.lib.makeBinPath [ pkgs.nodejs ] 90 } 91 ''; 92 # See: https://github.com/NixOS/nixpkgs/issues/142196 93 # [...]/@hyperspace/cli/node_modules/.bin/node-gyp-build: /usr/bin/env: bad interpreter: No such file or directory 94 meta.broken = true; 95 }; 96 97 mdctl-cli = super."@medable/mdctl-cli".override { 98 nativeBuildInputs = with pkgs; with darwin.apple_sdk.frameworks; [ 99 glib 100 libsecret 101 pkg-config 102 ] ++ lib.optionals stdenv.isDarwin [ 103 AppKit 104 Security 105 ]; 106 buildInputs = with pkgs; [ 107 nodePackages.node-gyp-build 108 nodePackages.node-pre-gyp 109 nodejs 110 ]; 111 }; 112 113 coc-imselect = super.coc-imselect.override { 114 meta.broken = since "10"; 115 }; 116 117 jshint = super.jshint.override { 118 buildInputs = [ pkgs.phantomjs2 ]; 119 }; 120 121 dat = super.dat.override { 122 buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ]; 123 meta.broken = since "12"; 124 }; 125 126 # NOTE: this is a stub package to fetch npm dependencies for 127 # ../../applications/video/epgstation 128 epgstation = super."epgstation-../../applications/video/epgstation".override (drv: { 129 meta = drv.meta // { 130 broken = true; # not really broken, see the comment above 131 }; 132 }); 133 134 bitwarden-cli = super."@bitwarden/cli".override (drv: { 135 name = "bitwarden-cli-${drv.version}"; 136 meta.mainProgram = "bw"; 137 }); 138 139 flood = super.flood.override { 140 buildInputs = [ self.node-pre-gyp ]; 141 meta.mainProgram = "flood"; 142 }; 143 144 expo-cli = super."expo-cli".override (attrs: { 145 # The traveling-fastlane-darwin optional dependency aborts build on Linux. 146 dependencies = builtins.filter (d: d.packageName != "@expo/traveling-fastlane-${if stdenv.isLinux then "darwin" else "linux"}") attrs.dependencies; 147 }); 148 149 "@electron-forge/cli" = super."@electron-forge/cli".override { 150 buildInputs = [ self.node-pre-gyp self.rimraf ]; 151 }; 152 153 git-ssb = super.git-ssb.override { 154 buildInputs = [ self.node-gyp-build ]; 155 meta.broken = since "10"; 156 }; 157 158 hsd = super.hsd.override { 159 buildInputs = [ self.node-gyp-build pkgs.unbound ]; 160 }; 161 162 ijavascript = super.ijavascript.override (oldAttrs: { 163 preRebuild = '' 164 export NPM_CONFIG_ZMQ_EXTERNAL=true 165 ''; 166 buildInputs = oldAttrs.buildInputs ++ [ self.node-gyp-build pkgs.zeromq ]; 167 }); 168 169 insect = super.insect.override (drv: { 170 nativeBuildInputs = drv.nativeBuildInputs or [] ++ [ pkgs.psc-package self.pulp ]; 171 }); 172 173 intelephense = super.intelephense.override { 174 meta.license = pkgs.lib.licenses.unfree; 175 }; 176 177 jsonplaceholder = super.jsonplaceholder.override (drv: { 178 buildInputs = [ nodejs ]; 179 postInstall = '' 180 exe=$out/bin/jsonplaceholder 181 mkdir -p $out/bin 182 cat >$exe <<EOF 183 #!${pkgs.runtimeShell} 184 exec -a jsonplaceholder ${nodejs}/bin/node $out/lib/node_modules/jsonplaceholder/index.js 185 EOF 186 chmod a+x $exe 187 ''; 188 }); 189 190 makam = super.makam.override { 191 buildInputs = [ pkgs.nodejs pkgs.makeWrapper ]; 192 postFixup = '' 193 wrapProgram "$out/bin/makam" --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nodejs ]} 194 ${ 195 if stdenv.isLinux 196 then "patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\"" 197 else "" 198 } 199 ''; 200 }; 201 202 markdownlint-cli = super.markdownlint-cli.override { 203 meta.mainProgram = "markdownlint"; 204 }; 205 206 node-gyp = super.node-gyp.override { 207 nativeBuildInputs = [ pkgs.makeWrapper ]; 208 # Teach node-gyp to use nodejs headers locally rather that download them form https://nodejs.org. 209 # This is important when build nodejs packages in sandbox. 210 postInstall = '' 211 wrapProgram "$out/bin/node-gyp" \ 212 --set npm_config_nodedir ${nodejs} 213 ''; 214 }; 215 216 node-inspector = super.node-inspector.override { 217 buildInputs = [ self.node-pre-gyp ]; 218 meta.broken = since "10"; 219 }; 220 221 node2nix = super.node2nix.override { 222 buildInputs = [ pkgs.makeWrapper ]; 223 # We need to apply a patch to the source, but buildNodePackage doesn't allow patches. 224 # So we pin the patched commit instead. The commit actually contains two other newer commits 225 # since the last (1.9.0) release, but actually this is a good thing since one of them is a 226 # Hydra-specific fix. 227 src = applyPatches { 228 src = fetchFromGitHub { 229 owner = "svanderburg"; 230 repo = "node2nix"; 231 rev = "node2nix-1.9.0"; 232 sha256 = "0l4wp1131nhl9c14cn8bwawb8f77h1nfbnswgi5lp5m3kzkb27jn"; 233 }; 234 235 patches = [ 236 # remove node_ name prefix 237 (fetchpatch { 238 url = "https://github.com/svanderburg/node2nix/commit/b54d45207427ff46e90f16f2f32771fdc8bff5a4.patch"; 239 sha256 = "sha256-ubUdF0q3l4xxqZ7f9EiQEUQzyqxi9Q6zsRPETHlfzh8="; 240 }) 241 # set meta platform 242 (fetchpatch { 243 url = "https://github.com/svanderburg/node2nix/commit/58736093161f2d237c17e75a96529b018cd0ac64.patch"; 244 sha256 = "0sif7803c9g6gjmmdniw5qxrq5igiz9nqdmdrcf1hxfi5x43a32h"; 245 }) 246 # Extract common logic from composePackage to a shell function 247 (fetchpatch { 248 url = "https://github.com/svanderburg/node2nix/commit/e4c951971df6c9f9584c7252971c13b55c369916.patch"; 249 sha256 = "0w8fcyr12g2340rn06isv40jkmz2khmak81c95zpkjgipzx7hp7w"; 250 }) 251 ]; 252 }; 253 postInstall = '' 254 wrapProgram "$out/bin/node2nix" --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.nix ]} 255 ''; 256 }; 257 258 node-red = super.node-red.override { 259 buildInputs = [ self.node-pre-gyp ]; 260 }; 261 262 mermaid-cli = super."@mermaid-js/mermaid-cli".override ( 263 if stdenv.isDarwin 264 then {} 265 else { 266 nativeBuildInputs = [ pkgs.makeWrapper ]; 267 prePatch = '' 268 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 269 ''; 270 postInstall = '' 271 wrapProgram $out/bin/mmdc \ 272 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 273 ''; 274 }); 275 276 pnpm = super.pnpm.override { 277 nativeBuildInputs = [ pkgs.makeWrapper ]; 278 279 preRebuild = '' 280 sed 's/"link:/"file:/g' --in-place package.json 281 ''; 282 283 postInstall = let 284 pnpmLibPath = pkgs.lib.makeBinPath [ 285 nodejs.passthru.python 286 nodejs 287 ]; 288 in '' 289 for prog in $out/bin/*; do 290 wrapProgram "$prog" --prefix PATH : ${pnpmLibPath} 291 done 292 ''; 293 }; 294 295 postcss-cli = super.postcss-cli.override { 296 nativeBuildInputs = [ pkgs.makeWrapper ]; 297 postInstall = '' 298 wrapProgram "$out/bin/postcss" \ 299 --prefix NODE_PATH : ${self.postcss}/lib/node_modules \ 300 --prefix NODE_PATH : ${self.autoprefixer}/lib/node_modules 301 ''; 302 passthru.tests = { 303 simple-execution = pkgs.callPackage ./package-tests/postcss-cli.nix { 304 inherit (self) postcss-cli; 305 }; 306 }; 307 meta.mainProgram = "postcss"; 308 }; 309 310 prisma = super.prisma.override rec { 311 nativeBuildInputs = [ pkgs.makeWrapper ]; 312 version = "3.5.0"; 313 src = fetchurl { 314 url = "https://registry.npmjs.org/prisma/-/prisma-${version}.tgz"; 315 sha512 = "sha512-WEYQ+H98O0yigG+lI0gfh4iyBChvnM6QTXPDtY9eFraLXAmyb6tf/T2mUdrUAU1AEvHLVzQA5A+RpONZlQozBg=="; 316 }; 317 dependencies = [ rec { 318 name = "_at_prisma_slash_engines"; 319 packageName = "@prisma/engines"; 320 version = "3.5.0-38.78a5df6def6943431f4c022e1428dbc3e833cf8e"; 321 src = fetchurl { 322 url = "https://registry.npmjs.org/@prisma/engines/-/engines-${version}.tgz"; 323 sha512 = "sha512-MqZUrxuLlIbjB3wu8LrRJOKcvR4k3dunKoI4Q2bPfAwLQY0XlpsLZ3TRVW1c32ooVk939p6iGNkaCUo63Et36g=="; 324 }; 325 }]; 326 postInstall = with pkgs; '' 327 wrapProgram "$out/bin/prisma" \ 328 --set PRISMA_MIGRATION_ENGINE_BINARY ${prisma-engines}/bin/migration-engine \ 329 --set PRISMA_QUERY_ENGINE_BINARY ${prisma-engines}/bin/query-engine \ 330 --set PRISMA_QUERY_ENGINE_LIBRARY ${lib.getLib prisma-engines}/lib/libquery_engine.node \ 331 --set PRISMA_INTROSPECTION_ENGINE_BINARY ${prisma-engines}/bin/introspection-engine \ 332 --set PRISMA_FMT_BINARY ${prisma-engines}/bin/prisma-fmt 333 ''; 334 }; 335 336 pulp = super.pulp.override { 337 # tries to install purescript 338 npmFlags = "--ignore-scripts"; 339 340 nativeBuildInputs = [ pkgs.makeWrapper ]; 341 postInstall = '' 342 wrapProgram "$out/bin/pulp" --suffix PATH : ${pkgs.lib.makeBinPath [ 343 pkgs.purescript 344 ]} 345 ''; 346 }; 347 348 reveal-md = super.reveal-md.override ( 349 lib.optionalAttrs (!stdenv.isDarwin) { 350 nativeBuildInputs = [ pkgs.makeWrapper ]; 351 prePatch = '' 352 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 353 ''; 354 postInstall = '' 355 wrapProgram $out/bin/reveal-md \ 356 --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium 357 ''; 358 } 359 ); 360 361 ssb-server = super.ssb-server.override { 362 buildInputs = [ pkgs.automake pkgs.autoconf self.node-gyp-build ]; 363 meta.broken = since "10"; 364 }; 365 366 stf = super.stf.override { 367 meta.broken = since "10"; 368 }; 369 370 tedicross = super."tedicross-git+https://github.com/TediCross/TediCross.git#v0.8.7".override { 371 nativeBuildInputs = [ pkgs.makeWrapper ]; 372 postInstall = '' 373 makeWrapper '${nodejs}/bin/node' "$out/bin/tedicross" \ 374 --add-flags "$out/lib/node_modules/tedicross/main.js" 375 ''; 376 }; 377 378 tsun = super.tsun.overrideAttrs (oldAttrs: { 379 buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ]; 380 postInstall = '' 381 wrapProgram "$out/bin/tsun" \ 382 --prefix NODE_PATH : ${self.typescript}/lib/node_modules 383 ''; 384 }); 385 386 typescript-language-server = super.typescript-language-server.override { 387 nativeBuildInputs = [ pkgs.makeWrapper ]; 388 postInstall = '' 389 wrapProgram "$out/bin/typescript-language-server" \ 390 --prefix PATH : ${pkgs.lib.makeBinPath [ self.typescript ]} 391 ''; 392 }; 393 394 teck-programmer = super.teck-programmer.override { 395 buildInputs = [ pkgs.libusb1 ]; 396 }; 397 398 vega-cli = super.vega-cli.override { 399 nativeBuildInputs = [ pkgs.pkg-config ]; 400 buildInputs = with pkgs; [ 401 super.node-pre-gyp 402 pixman 403 cairo 404 pango 405 libjpeg 406 ]; 407 }; 408 409 vega-lite = super.vega-lite.override { 410 postInstall = '' 411 cd node_modules 412 for dep in ${self.vega-cli}/lib/node_modules/vega-cli/node_modules/*; do 413 if [[ ! -d $dep ]]; then 414 ln -s "${self.vega-cli}/lib/node_modules/vega-cli/node_modules/$dep" 415 fi 416 done 417 ''; 418 passthru.tests = { 419 simple-execution = pkgs.callPackage ./package-tests/vega-lite.nix { 420 inherit (self) vega-lite; 421 }; 422 }; 423 }; 424 425 webtorrent-cli = super.webtorrent-cli.override { 426 buildInputs = [ self.node-gyp-build ]; 427 }; 428 429 joplin = super.joplin.override { 430 nativeBuildInputs = [ pkgs.pkg-config ]; 431 buildInputs = with pkgs; [ 432 # required by sharp 433 # https://sharp.pixelplumbing.com/install 434 vips 435 436 libsecret 437 self.node-gyp-build 438 self.node-pre-gyp 439 ] ++ lib.optionals stdenv.isDarwin [ 440 darwin.apple_sdk.frameworks.AppKit 441 darwin.apple_sdk.frameworks.Security 442 ]; 443 }; 444 445 thelounge = super.thelounge.override { 446 buildInputs = [ self.node-pre-gyp ]; 447 postInstall = '' 448 echo /var/lib/thelounge > $out/lib/node_modules/thelounge/.thelounge_home 449 ''; 450 }; 451 452 yaml-language-server = super.yaml-language-server.override { 453 nativeBuildInputs = [ pkgs.makeWrapper ]; 454 postInstall = '' 455 wrapProgram "$out/bin/yaml-language-server" \ 456 --prefix NODE_PATH : ${self.prettier}/lib/node_modules 457 ''; 458 }; 459 460 wavedrom-cli = super.wavedrom-cli.override { 461 nativeBuildInputs = [ pkgs.pkg-config self.node-pre-gyp ]; 462 # These dependencies are required by 463 # https://github.com/Automattic/node-canvas. 464 buildInputs = with pkgs; [ 465 pixman 466 cairo 467 pango 468 ]; 469 }; 470 }; 471in self