about summary refs log tree commit diff
path: root/pkgs/development/node-packages/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/node-packages/default.nix')
-rw-r--r--pkgs/development/node-packages/default.nix160
1 files changed, 160 insertions, 0 deletions
diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix
new file mode 100644
index 000000000000..2ceef0f477f2
--- /dev/null
+++ b/pkgs/development/node-packages/default.nix
@@ -0,0 +1,160 @@
+{ pkgs, nodejs, stdenv }:
+
+let
+  since = (version: pkgs.lib.versionAtLeast nodejs.version version);
+  before = (version: pkgs.lib.versionOlder nodejs.version version);
+  super = import ./composition.nix {
+    inherit pkgs nodejs;
+    inherit (stdenv.hostPlatform) system;
+  };
+  self = super // {
+    "@angular/cli" = super."@angular/cli".override {
+      prePatch = ''
+        export NG_CLI_ANALYTICS=false
+      '';
+    };
+    bower2nix = super.bower2nix.override {
+      buildInputs = [ pkgs.makeWrapper ];
+      postInstall = ''
+        for prog in bower2nix fetch-bower; do
+          wrapProgram "$out/bin/$prog" --prefix PATH : ${stdenv.lib.makeBinPath [ pkgs.git pkgs.nix ]}
+        done
+      '';
+    };
+
+    coc-imselect = super.coc-imselect.override {
+      meta.broken = since "10";
+    };
+
+    "fast-cli-1.x" = super."fast-cli-1.x".override {
+      meta.broken = since "10";
+    };
+
+    jshint = super.jshint.override {
+      buildInputs = [ pkgs.phantomjs2 ];
+    };
+
+    dat = super.dat.override {
+      buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
+      meta.broken = since "12";
+    };
+
+    bitwarden-cli = pkgs.lib.overrideDerivation super."@bitwarden/cli" (drv: {
+      name = "bitwarden-cli-${drv.version}";
+    });
+
+    ios-deploy = super.ios-deploy.override (drv: {
+      nativeBuildInputs = drv.nativeBuildInputs or [] ++ [ pkgs.buildPackages.rsync ];
+      preRebuild = ''
+        LD=$CC
+        tmp=$(mktemp -d)
+        ln -s /usr/bin/xcodebuild $tmp
+        export PATH="$PATH:$tmp"
+      '';
+      meta.platforms = [ pkgs.lib.platforms.darwin ];
+    });
+
+    fast-cli = super."fast-cli-1.x".override {
+      preRebuild = ''
+        # Simply ignore the phantomjs --version check. It seems to need a display but it is safe to ignore
+        sed -i -e "s|console.error('Error verifying phantomjs, continuing', err)|console.error('Error verifying phantomjs, continuing', err); return true;|" node_modules/phantomjs-prebuilt/lib/util.js
+      '';
+      buildInputs = [ pkgs.phantomjs2 ];
+    };
+
+    git-ssb = super.git-ssb.override {
+      buildInputs = [ self.node-gyp-build ];
+      meta.broken = since "10";
+    };
+
+    insect = super.insect.override (drv: {
+      nativeBuildInputs = drv.nativeBuildInputs or [] ++ [ pkgs.psc-package self.pulp ];
+    });
+
+    node-inspector = super.node-inspector.override {
+      buildInputs = [ self.node-pre-gyp ];
+      meta.broken = since "10";
+    };
+
+    node2nix = super.node2nix.override {
+      buildInputs = [ pkgs.makeWrapper ];
+      postInstall = ''
+        wrapProgram "$out/bin/node2nix" --prefix PATH : ${stdenv.lib.makeBinPath [ pkgs.nix ]}
+      '';
+    };
+
+    node-red = super.node-red.override {
+      meta.broken = since "10";
+    };
+
+    pnpm = super.pnpm.override {
+      nativeBuildInputs = [ pkgs.makeWrapper ];
+
+      preRebuild = ''
+        sed 's/"link:/"file:/g' --in-place package.json
+      '';
+
+      postInstall = let
+        pnpmLibPath = stdenv.lib.makeBinPath [
+          nodejs.passthru.python
+          nodejs
+        ];
+      in ''
+        for prog in $out/bin/*; do
+          wrapProgram "$prog" --prefix PATH : ${pnpmLibPath}
+        done
+      '';
+    };
+
+    pulp = super.pulp.override {
+      # tries to install purescript
+      npmFlags = "--ignore-scripts";
+
+      nativeBuildInputs = [ pkgs.makeWrapper ];
+      postInstall =  ''
+        wrapProgram "$out/bin/pulp" --suffix PATH : ${stdenv.lib.makeBinPath [
+          pkgs.purescript
+        ]}
+      '';
+    };
+
+    ssb-server = super.ssb-server.override {
+      buildInputs = [ pkgs.automake pkgs.autoconf self.node-gyp-build ];
+      meta.broken = since "10";
+    };
+
+    tedicross = super."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"
+      '';
+    };
+
+    stf = super.stf.override {
+      meta.broken = since "10";
+    };
+
+    webtorrent-cli = super.webtorrent-cli.override {
+      buildInputs = [ self.node-gyp-build ];
+    };
+
+    joplin = super.joplin.override {
+      nativeBuildInputs = [ pkgs.pkg-config ];
+      buildInputs = with pkgs; [
+        # required by sharp
+        # https://sharp.pixelplumbing.com/install
+        vips
+
+        self.node-pre-gyp
+      ];
+    };
+
+    thelounge = super.thelounge.override {
+      buildInputs = [ self.node-pre-gyp ];
+      postInstall = ''
+        echo /var/lib/thelounge > $out/lib/node_modules/thelounge/.thelounge_home
+      '';
+    };
+  };
+in self