nixpkgs/pkgs/development/node-packages/default.nix
Jonathan Ringer 9bb3fccb5b treewide: pkgs.pkgconfig -> pkgs.pkg-config, move pkgconfig to alias.nix
continuation of #109595

pkgconfig was aliased in 2018, however, it remained in
all-packages.nix due to its wide usage. This cleans
up the remaining references to pkgs.pkgsconfig and
moves the entry to aliases.nix.

python3Packages.pkgconfig remained unchanged because
it's the canonical name of the upstream package
on pypi.
2021-01-19 01:16:25 -08:00

278 lines
9.1 KiB
Nix

{ 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";
};
# NOTE: this is a stub package to fetch npm dependencies for
# ../../applications/video/epgstation
epgstation = super."epgstation-../../applications/video/epgstation".override (drv: {
meta = drv.meta // {
broken = true; # not really broken, see the comment above
};
});
bitwarden-cli = pkgs.lib.overrideDerivation super."@bitwarden/cli" (drv: {
name = "bitwarden-cli-${drv.version}";
});
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 ];
};
flood = super.flood.override {
buildInputs = [ self.node-pre-gyp ];
};
expo-cli = super."expo-cli".override (attrs: {
# 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"}") attrs.dependencies;
});
git-ssb = super.git-ssb.override {
buildInputs = [ self.node-gyp-build ];
meta.broken = since "10";
};
hsd = super.hsd.override {
buildInputs = [ self.node-gyp-build pkgs.unbound ];
};
ijavascript = super.ijavascript.override (oldAttrs: {
preRebuild = ''
export NPM_CONFIG_ZMQ_EXTERNAL=true
'';
buildInputs = oldAttrs.buildInputs ++ [ self.node-gyp-build pkgs.zeromq ];
});
insect = super.insect.override (drv: {
nativeBuildInputs = drv.nativeBuildInputs or [] ++ [ pkgs.psc-package self.pulp ];
});
makam = super.makam.override {
buildInputs = [ pkgs.nodejs pkgs.makeWrapper ];
postFixup = ''
wrapProgram "$out/bin/makam" --prefix PATH : ${stdenv.lib.makeBinPath [ pkgs.nodejs ]}
${
if stdenv.isLinux
then "patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2 \"$out/lib/node_modules/makam/makam-bin-linux64\""
else ""
}
'';
};
mirakurun = super.mirakurun.override rec {
nativeBuildInputs = with pkgs; [ makeWrapper ];
postInstall = let
runtimeDeps = [ nodejs ] ++ (with pkgs; [ bash which v4l_utils ]);
in
''
substituteInPlace $out/lib/node_modules/mirakurun/processes.json \
--replace "/usr/local" ""
# XXX: Files copied from the Nix store are non-writable, so they need
# to be given explicit write permissions
substituteInPlace $out/lib/node_modules/mirakurun/lib/Mirakurun/config.js \
--replace 'fs.copyFileSync("config/server.yml", path);' \
'fs.copyFileSync("config/server.yml", path); fs.chmodSync(path, 0o644);' \
--replace 'fs.copyFileSync("config/tuners.yml", path);' \
'fs.copyFileSync("config/tuners.yml", path); fs.chmodSync(path, 0o644);' \
--replace 'fs.copyFileSync("config/channels.yml", path);' \
'fs.copyFileSync("config/channels.yml", path); fs.chmodSync(path, 0o644);'
# XXX: The original mirakurun command uses PM2 to manage the Mirakurun
# server. However, we invoke the server directly and let systemd
# manage it to avoid complication. This is okay since no features
# unique to PM2 is currently being used.
makeWrapper ${nodejs}/bin/npm $out/bin/mirakurun \
--add-flags "start" \
--run "cd $out/lib/node_modules/mirakurun" \
--prefix PATH : ${pkgs.lib.makeBinPath runtimeDeps}
'';
};
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 {
buildInputs = [ self.node-pre-gyp ];
};
mermaid-cli = super."@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
'';
});
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";
};
stf = super.stf.override {
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"
'';
};
tsun = super.tsun.overrideAttrs (oldAttrs: {
buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ];
postInstall = ''
wrapProgram "$out/bin/tsun" \
--prefix NODE_PATH : ${self.typescript}/lib/node_modules
'';
});
typescript-language-server = super.typescript-language-server.override {
nativeBuildInputs = [ pkgs.makeWrapper ];
postInstall = ''
wrapProgram "$out/bin/typescript-language-server" \
--prefix PATH : ${stdenv.lib.makeBinPath [ self.typescript ]}
'';
};
vega-cli = super.vega-cli.override {
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = with pkgs; [
super.node-pre-gyp
pixman
cairo
pango
libjpeg
];
};
vega-lite = super.vega-lite.override {
# npx tries to install vega from scratch at vegalite runtime if it
# can't find it. We thus replace it with a direct call to the nix
# derivation. This might not be necessary anymore in future vl
# versions: https://github.com/vega/vega-lite/issues/6863.
postInstall = ''
substituteInPlace $out/lib/node_modules/vega-lite/bin/vl2pdf \
--replace "npx -p vega vg2pdf" "${self.vega-cli}/bin/vg2pdf"
substituteInPlace $out/lib/node_modules/vega-lite/bin/vl2svg \
--replace "npx -p vega vg2svg" "${self.vega-cli}/bin/vg2svg"
substituteInPlace $out/lib/node_modules/vega-lite/bin/vl2png \
--replace "npx -p vega vg2png" "${self.vega-cli}/bin/vg2png"
'';
};
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
libsecret
self.node-gyp-build
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