summary refs log tree commit diff
path: root/pkgs/development/node-packages/overrides.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/node-packages/overrides.nix')
-rw-r--r--pkgs/development/node-packages/overrides.nix533
1 files changed, 533 insertions, 0 deletions
diff --git a/pkgs/development/node-packages/overrides.nix b/pkgs/development/node-packages/overrides.nix
new file mode 100644
index 00000000000..f5803b87c80
--- /dev/null
+++ b/pkgs/development/node-packages/overrides.nix
@@ -0,0 +1,533 @@
+# Do not use overrides in this file to add  `meta.mainProgram` to packges. Use `./main-programs.nix`
+# instead.
+{ pkgs, nodejs }:
+
+let
+  inherit (pkgs)
+    stdenv
+    lib
+    callPackage
+    fetchFromGitHub
+    fetchurl
+    nixosTests;
+
+  since = version: lib.versionAtLeast nodejs.version version;
+  before = version: lib.versionOlder nodejs.version version;
+in
+
+final: prev: {
+  "@angular/cli" = prev."@angular/cli".override {
+    prePatch = ''
+      export NG_CLI_ANALYTICS=false
+    '';
+  };
+
+  "@electron-forge/cli" = prev."@electron-forge/cli".override {
+    buildInputs = [ final.node-gyp-build ];
+  };
+
+  "@hyperspace/cli" = prev."@hyperspace/cli".override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    buildInputs = [ final.node-gyp-build ];
+    postInstall = ''wrapProgram "$out/bin/hyp" --prefix PATH : ${ lib.makeBinPath [ nodejs ] }'';
+  };
+  hyperspace-cli = final."@hyperspace/cli";
+
+  "@medable/mdctl-cli" = prev."@medable/mdctl-cli".override {
+    nativeBuildInputs = with pkgs; with darwin.apple_sdk.frameworks; [
+      glib
+      libsecret
+      pkg-config
+    ] ++ lib.optionals stdenv.isDarwin [
+      AppKit
+      Security
+    ];
+    buildInputs = [
+      final.node-gyp-build
+      final.node-pre-gyp
+      nodejs
+    ];
+  };
+  mdctl-cli = final."@medable/mdctl-cli";
+
+  autoprefixer = prev.autoprefixer.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/autoprefixer" \
+        --prefix NODE_PATH : ${final.postcss}/lib/node_modules
+    '';
+    passthru.tests = {
+      simple-execution = callPackage ./package-tests/autoprefixer.nix { inherit (final) autoprefixer; };
+    };
+  };
+
+  aws-azure-login = prev.aws-azure-login.override (oldAttrs: {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    prePatch = ''
+      export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+    '';
+    postInstall = ''
+      wrapProgram $out/bin/aws-azure-login \
+          --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium}/bin/chromium
+    '';
+    meta = oldAttrs.meta // { platforms = lib.platforms.linux; };
+  });
+
+  bitwarden-cli = prev."@bitwarden/cli".override {
+    name = "bitwarden-cli";
+  };
+
+  bower2nix = prev.bower2nix.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      for prog in bower2nix fetch-bower; do
+        wrapProgram "$out/bin/$prog" --prefix PATH : ${lib.makeBinPath [ pkgs.git pkgs.nix ]}
+      done
+    '';
+  };
+
+  carbon-now-cli = prev.carbon-now-cli.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    prePatch = ''
+      export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+    '';
+    postInstall = ''
+      wrapProgram $out/bin/carbon-now \
+        --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
+    '';
+  };
+
+  coc-imselect = prev.coc-imselect.override (oldAttrs: {
+    meta = oldAttrs.meta // { broken = since "10"; };
+  });
+
+  dat = prev.dat.override (oldAttrs: {
+    buildInputs = [ final.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
+    meta = oldAttrs.meta // { broken = since "12"; };
+  });
+
+  deltachat-desktop = prev."deltachat-desktop-../../applications/networking/instant-messengers/deltachat-desktop".override (oldAttrs: {
+    meta = oldAttrs.meta // { broken = true; }; # use the top-level package instead
+  });
+
+  # NOTE: this is a stub package to fetch npm dependencies for
+  # ../../applications/video/epgstation
+  epgstation = prev."epgstation-../../applications/video/epgstation".override (oldAttrs: {
+    buildInputs = [ final.node-pre-gyp final.node-gyp-build ];
+    meta = oldAttrs.meta // { platforms = lib.platforms.none; };
+  });
+
+  # NOTE: this is a stub package to fetch npm dependencies for
+  # ../../applications/video/epgstation/client
+  epgstation-client = prev."epgstation-client-../../applications/video/epgstation/client".override (oldAttrs: {
+    meta = oldAttrs.meta // { platforms = lib.platforms.none; };
+  });
+
+  expo-cli = prev."expo-cli".override (oldAttrs: {
+    # The traveling-fastlane-darwin optional dependency aborts build on Linux.
+    dependencies = builtins.filter (d: d.packageName != "@expo/traveling-fastlane-${if stdenv.isLinux then "darwin" else "linux"}") oldAttrs.dependencies;
+  });
+
+  fast-cli = prev.fast-cli.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    prePatch = ''
+      export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+    '';
+    postInstall = ''
+      wrapProgram $out/bin/fast \
+        --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
+    '';
+  };
+
+  flood = prev.flood.override {
+    buildInputs = [ final.node-pre-gyp ];
+  };
+
+  git-ssb = prev.git-ssb.override (oldAttrs: {
+    buildInputs = [ final.node-gyp-build ];
+    meta = oldAttrs.meta // { broken = since "10"; };
+  });
+
+  hsd = prev.hsd.override {
+    buildInputs = [ final.node-gyp-build pkgs.unbound ];
+  };
+
+  ijavascript = prev.ijavascript.override (oldAttrs: {
+    preRebuild = ''
+      export NPM_CONFIG_ZMQ_EXTERNAL=true
+    '';
+    buildInputs = oldAttrs.buildInputs ++ [ final.node-gyp-build pkgs.zeromq ];
+  });
+
+  insect = prev.insect.override (oldAttrs: {
+    nativeBuildInputs = oldAttrs.nativeBuildInputs or [] ++ [ pkgs.psc-package final.pulp ];
+  });
+
+  intelephense = prev.intelephense.override (oldAttrs: {
+    meta = oldAttrs.meta // { license = lib.licenses.unfree; };
+  });
+
+  joplin = prev.joplin.override {
+    nativeBuildInputs = [ pkgs.pkg-config ];
+    buildInputs = with pkgs; [
+      # required by sharp
+      # https://sharp.pixelplumbing.com/install
+      vips
+
+      libsecret
+      final.node-gyp-build
+      final.node-pre-gyp
+    ] ++ lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.AppKit
+      darwin.apple_sdk.frameworks.Security
+    ];
+  };
+
+  jsonplaceholder = prev.jsonplaceholder.override {
+    buildInputs = [ nodejs ];
+    postInstall = ''
+      exe=$out/bin/jsonplaceholder
+      mkdir -p $out/bin
+      cat >$exe <<EOF
+      #!${pkgs.runtimeShell}
+      exec -a jsonplaceholder ${nodejs}/bin/node $out/lib/node_modules/jsonplaceholder/index.js
+      EOF
+      chmod a+x $exe
+    '';
+  };
+
+  makam =  prev.makam.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postFixup = ''
+      wrapProgram "$out/bin/makam" --prefix PATH : ${lib.makeBinPath [ nodejs ]}
+      ${
+        if stdenv.isLinux
+          then "patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\""
+          else ""
+      }
+    '';
+  };
+
+  manta = prev.manta.override {
+    nativeBuildInputs = with pkgs; [ nodejs-14_x installShellFiles ];
+    postInstall = ''
+      # create completions, following upstream procedure https://github.com/joyent/node-manta/blob/v5.2.3/Makefile#L85-L91
+      completion_cmds=$(find ./bin -type f -printf "%f\n")
+
+      node ./lib/create_client.js
+      for cmd in $completion_cmds; do
+        installShellCompletion --cmd $cmd --bash <(./bin/$cmd --completion)
+      done
+    '';
+  };
+
+  mermaid-cli = prev."@mermaid-js/mermaid-cli".override (
+  if stdenv.isDarwin
+  then {}
+  else {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    prePatch = ''
+      export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+    '';
+    postInstall = ''
+      wrapProgram $out/bin/mmdc \
+      --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
+    '';
+  });
+
+  near-cli = prev.near-cli.override {
+    nativeBuildInputs = with pkgs; [
+      libusb1
+      final.prebuild-install
+      final.node-gyp-build
+      pkg-config
+    ];
+  };
+
+  node-gyp = prev.node-gyp.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    # Teach node-gyp to use nodejs headers locally rather that download them form https://nodejs.org.
+    # This is important when build nodejs packages in sandbox.
+    postInstall = ''
+      wrapProgram "$out/bin/node-gyp" \
+        --set npm_config_nodedir ${nodejs}
+    '';
+  };
+
+  node-inspector = prev.node-inspector.override (oldAttrs: {
+    buildInputs = [ final.node-pre-gyp ];
+    meta = oldAttrs.meta // { broken = since "10"; };
+  });
+
+  node-red = prev.node-red.override {
+    buildInputs = [ final.node-pre-gyp ];
+  };
+
+  node2nix = prev.node2nix.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    # We need to use master because of a fix that replaces git:// url to https://.
+    src = fetchFromGitHub {
+      owner = "svanderburg";
+      repo = "node2nix";
+      rev = "68f5735f9a56737e3fedceb182705985e3ab8799";
+      sha256 = "sha256-NK6gDTkGx0GG7yPTwgtFC4ttQZPfcLaLp8W8OOMO6bg=";
+    };
+
+    postInstall = ''
+      wrapProgram "$out/bin/node2nix" --prefix PATH : ${lib.makeBinPath [ pkgs.nix ]}
+    '';
+  };
+
+  parcel = prev.parcel.override {
+    buildInputs = [ final.node-gyp-build ];
+    preRebuild = ''
+      sed -i -e "s|#!/usr/bin/env node|#! ${nodejs}/bin/node|" node_modules/node-gyp-build/bin.js
+    '';
+  };
+
+  pnpm = prev.pnpm.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+
+    preRebuild = ''
+      sed 's/"link:/"file:/g' --in-place package.json
+    '';
+
+    postInstall = let
+      pnpmLibPath = lib.makeBinPath [
+        nodejs.passthru.python
+        nodejs
+      ];
+    in ''
+      for prog in $out/bin/*; do
+        wrapProgram "$prog" --prefix PATH : ${pnpmLibPath}
+      done
+    '';
+  };
+
+  postcss-cli = prev.postcss-cli.override (oldAttrs: {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/postcss" \
+        --prefix NODE_PATH : ${final.postcss}/lib/node_modules \
+        --prefix NODE_PATH : ${final.autoprefixer}/lib/node_modules
+      ln -s '${final.postcss}/lib/node_modules/postcss' "$out/lib/node_modules/postcss"
+    '';
+    passthru.tests = {
+      simple-execution = callPackage ./package-tests/postcss-cli.nix {
+        inherit (final) postcss-cli;
+      };
+    };
+    meta = oldAttrs.meta // { maintainers = with lib.maintainers; [ Luflosi ]; };
+  });
+
+  # To update prisma, please first update prisma-engines to the latest
+  # version. Then change the correct hash to this package. The PR should hold
+  # two commits: one for the engines and the other one for the node package.
+  prisma = prev.prisma.override rec {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+
+    inherit (pkgs.prisma-engines) version;
+
+    src = fetchurl {
+      url = "https://registry.npmjs.org/prisma/-/prisma-${version}.tgz";
+      sha512 = "sha512-l9MOgNCn/paDE+i1K2fp9NZ+Du4trzPTJsGkaQHVBufTGqzoYHuNk8JfzXuIn0Gte6/ZjyKj652Jq/Lc1tp2yw==";
+    };
+    postInstall = with pkgs; ''
+      wrapProgram "$out/bin/prisma" \
+        --set PRISMA_MIGRATION_ENGINE_BINARY ${prisma-engines}/bin/migration-engine \
+        --set PRISMA_QUERY_ENGINE_BINARY ${prisma-engines}/bin/query-engine \
+        --set PRISMA_QUERY_ENGINE_LIBRARY ${lib.getLib prisma-engines}/lib/libquery_engine.node \
+        --set PRISMA_INTROSPECTION_ENGINE_BINARY ${prisma-engines}/bin/introspection-engine \
+        --set PRISMA_FMT_BINARY ${prisma-engines}/bin/prisma-fmt
+    '';
+
+    passthru.tests = {
+      simple-execution = pkgs.callPackage ./package-tests/prisma.nix {
+        inherit (final) prisma;
+      };
+    };
+  };
+
+  pulp = prev.pulp.override {
+    # tries to install purescript
+    npmFlags = "--ignore-scripts";
+
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall =  ''
+      wrapProgram "$out/bin/pulp" --suffix PATH : ${lib.makeBinPath [
+        pkgs.purescript
+      ]}
+    '';
+  };
+
+  reveal-md = prev.reveal-md.override (
+    lib.optionalAttrs (!stdenv.isDarwin) {
+      nativeBuildInputs = [ pkgs.makeWrapper ];
+      prePatch = ''
+        export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
+      '';
+      postInstall = ''
+        wrapProgram $out/bin/reveal-md \
+        --set PUPPETEER_EXECUTABLE_PATH ${pkgs.chromium.outPath}/bin/chromium
+      '';
+    }
+  );
+
+  ssb-server = prev.ssb-server.override (oldAttrs: {
+    buildInputs = [ pkgs.automake pkgs.autoconf final.node-gyp-build ];
+    meta = oldAttrs.meta // { broken = since "10"; };
+  });
+
+  stf = prev.stf.override (oldAttrs: {
+    meta = oldAttrs.meta // { broken = since "10"; };
+  });
+
+  tailwindcss = prev.tailwindcss.override {
+    plugins = [ ];
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      nodePath=""
+      for p in "$out" "${final.postcss}" $plugins; do
+        nodePath="$nodePath''${nodePath:+:}$p/lib/node_modules"
+      done
+      wrapProgram "$out/bin/tailwind" \
+        --prefix NODE_PATH : "$nodePath"
+      wrapProgram "$out/bin/tailwindcss" \
+        --prefix NODE_PATH : "$nodePath"
+      unset nodePath
+    '';
+    passthru.tests = {
+      simple-execution = callPackage ./package-tests/tailwindcss.nix {
+        inherit (final) tailwindcss;
+      };
+    };
+  };
+
+  teck-programmer = prev.teck-programmer.override {
+    nativeBuildInputs = [ final.node-gyp-build ];
+    buildInputs = [ pkgs.libusb1 ];
+  };
+
+  tedicross = prev."tedicross-git+https://github.com/TediCross/TediCross.git#v0.8.7".override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      makeWrapper '${nodejs}/bin/node' "$out/bin/tedicross" \
+        --add-flags "$out/lib/node_modules/tedicross/main.js"
+    '';
+  };
+
+  thelounge = prev.thelounge.override (oldAttrs: {
+    buildInputs = [ final.node-pre-gyp ];
+    postInstall = ''
+      echo /var/lib/thelounge > $out/lib/node_modules/thelounge/.thelounge_home
+      patch -d $out/lib/node_modules/thelounge -p1 < ${./thelounge-packages-path.patch}
+    '';
+    passthru.tests = { inherit (nixosTests) thelounge; };
+    meta = oldAttrs.meta // { maintainers = with lib.maintainers; [ winter ]; };
+  });
+
+  thelounge-plugin-closepms = prev.thelounge-plugin-closepms.override {
+    nativeBuildInputs = [ final.node-pre-gyp ];
+  };
+
+  thelounge-plugin-giphy = prev.thelounge-plugin-giphy.override {
+    nativeBuildInputs = [ final.node-pre-gyp ];
+  };
+
+  thelounge-theme-flat-blue = prev.thelounge-theme-flat-blue.override {
+    nativeBuildInputs = [ final.node-pre-gyp ];
+  };
+
+  thelounge-theme-flat-dark = prev.thelounge-theme-flat-dark.override {
+    nativeBuildInputs = [ final.node-pre-gyp ];
+  };
+
+  triton = prev.triton.override {
+    nativeBuildInputs = [ pkgs.installShellFiles ];
+    postInstall = ''
+      installShellCompletion --cmd triton --bash <($out/bin/triton completion)
+    '';
+  };
+
+  ts-node = prev.ts-node.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/ts-node" \
+      --prefix NODE_PATH : ${final.typescript}/lib/node_modules
+    '';
+  };
+
+  tsun = prev.tsun.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/tsun" \
+      --prefix NODE_PATH : ${final.typescript}/lib/node_modules
+    '';
+  };
+
+  typescript-language-server = prev.typescript-language-server.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/typescript-language-server" \
+        --suffix PATH : ${lib.makeBinPath [ final.typescript ]}
+    '';
+  };
+
+  uppy-companion = prev."@uppy/companion".override {
+    name = "uppy-companion";
+  };
+
+  vega-cli = prev.vega-cli.override {
+    nativeBuildInputs = [ pkgs.pkg-config ];
+    buildInputs = with pkgs; [
+      final.node-pre-gyp
+      pixman
+      cairo
+      pango
+      libjpeg
+    ] ++ lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.CoreText
+    ];
+  };
+
+  vega-lite = prev.vega-lite.override {
+      postInstall = ''
+        cd node_modules
+        for dep in ${final.vega-cli}/lib/node_modules/vega-cli/node_modules/*; do
+          if [[ ! -d $dep ]]; then
+            ln -s "${final.vega-cli}/lib/node_modules/vega-cli/node_modules/$dep"
+          fi
+        done
+      '';
+      passthru.tests = {
+        simple-execution = callPackage ./package-tests/vega-lite.nix {
+          inherit (final) vega-lite;
+        };
+      };
+  };
+
+  wavedrom-cli = prev.wavedrom-cli.override {
+    nativeBuildInputs = [ pkgs.pkg-config final.node-pre-gyp ];
+    # These dependencies are required by
+    # https://github.com/Automattic/node-canvas.
+    buildInputs = with pkgs; [
+      pixman
+      cairo
+      pango
+    ] ++ lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.CoreText
+    ];
+  };
+
+  webtorrent-cli = prev.webtorrent-cli.override {
+    buildInputs = [ final.node-gyp-build ];
+  };
+
+  yaml-language-server = prev.yaml-language-server.override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/yaml-language-server" \
+      --prefix NODE_PATH : ${final.prettier}/lib/node_modules
+    '';
+  };
+}