nodePackages: make it easy to add meta.mainProgram to packages
This was accomplish by moving the current overrides overlay out of ./default.nix into to a seperate file ./overrides.nix, and composing that overlay an overlay ,`mainProgramOverrides`, (defined in ./default.nix) which uses the contents of a new file ./main-programs.nix to create overrides that add `meta.mainProgram` to packages. The following changes were also made to existing overrides: * `self` and `super` where changed to `final` and `prev` respectively * Existing additions of `mainProgram` were moved to ./main-programs.nix * References to `pkgs.lib` were changed to `lib` * References to `pkgs.nodejs` were changed to `nodejs` * References to `nodePackages` were changed to `final` * References to `pkgs.callPackage` were changed to `callPackage` Finally `meta.mainProgram` was added to all packages that provide a single executable whose name differs from the package's name, for packages available on `{aarch64,x86_64}-darwin` and `x86_64-linux`.
This commit is contained in:
parent
745739f280
commit
31673e9aee
@ -1,540 +1,23 @@
|
||||
{ pkgs, nodejs, stdenv, applyPatches, fetchFromGitHub, fetchpatch, fetchurl, nixosTests }:
|
||||
{ pkgs, lib, nodejs, stdenv}:
|
||||
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
since = version: pkgs.lib.versionAtLeast nodejs.version version;
|
||||
before = version: pkgs.lib.versionOlder nodejs.version version;
|
||||
super = import ./composition.nix {
|
||||
inherit (lib) composeManyExtensions extends makeExtensible mapAttrs;
|
||||
|
||||
nodePackages = final: import ./composition.nix {
|
||||
inherit pkgs nodejs;
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
};
|
||||
self = super // {
|
||||
"@angular/cli" = super."@angular/cli".override {
|
||||
prePatch = ''
|
||||
export NG_CLI_ANALYTICS=false
|
||||
'';
|
||||
};
|
||||
|
||||
"@electron-forge/cli" = super."@electron-forge/cli".override {
|
||||
buildInputs = [ self.node-pre-gyp self.rimraf ];
|
||||
};
|
||||
|
||||
autoprefixer = super.autoprefixer.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/autoprefixer" \
|
||||
--prefix NODE_PATH : ${self.postcss}/lib/node_modules
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = pkgs.callPackage ./package-tests/autoprefixer.nix { inherit (self) autoprefixer; };
|
||||
};
|
||||
};
|
||||
|
||||
aws-azure-login = super.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 = pkgs.lib.platforms.linux; };
|
||||
});
|
||||
|
||||
bitwarden-cli = super."@bitwarden/cli".override (oldAttrs: {
|
||||
name = "bitwarden-cli";
|
||||
meta = oldAttrs.meta // { mainProgram = "bw"; };
|
||||
});
|
||||
|
||||
bower2nix = super.bower2nix.override {
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
for prog in bower2nix fetch-bower; do
|
||||
wrapProgram "$out/bin/$prog" --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.git pkgs.nix ]}
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
carbon-now-cli = super.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 = super.coc-imselect.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
dat = super.dat.override (oldAttrs: {
|
||||
buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
|
||||
meta = oldAttrs.meta // { broken = since "12"; };
|
||||
});
|
||||
|
||||
deltachat-desktop = super."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 = super."epgstation-../../applications/video/epgstation".override (oldAttrs: {
|
||||
buildInputs = [ self.node-pre-gyp self.node-gyp-build ];
|
||||
meta = oldAttrs.meta // { platforms = pkgs.lib.platforms.none; };
|
||||
});
|
||||
|
||||
# NOTE: this is a stub package to fetch npm dependencies for
|
||||
# ../../applications/video/epgstation/client
|
||||
epgstation-client = super."epgstation-client-../../applications/video/epgstation/client".override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { platforms = pkgs.lib.platforms.none; };
|
||||
});
|
||||
|
||||
expo-cli = super."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 = super.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 = super.flood.override (oldAttrs: {
|
||||
buildInputs = [ self.node-pre-gyp ];
|
||||
meta = oldAttrs.meta // { mainProgram = "flood"; };
|
||||
});
|
||||
|
||||
git-ssb = super.git-ssb.override (oldAttrs: {
|
||||
buildInputs = [ self.node-gyp-build ];
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
hsd = super.hsd.override {
|
||||
buildInputs = [ self.node-gyp-build pkgs.unbound ];
|
||||
};
|
||||
|
||||
hyperspace-cli = super."@hyperspace/cli".override {
|
||||
nativeBuildInputs = with pkgs; [
|
||||
makeWrapper
|
||||
libtool
|
||||
autoconf
|
||||
automake
|
||||
];
|
||||
buildInputs = with pkgs; [
|
||||
nodePackages.node-gyp-build
|
||||
nodejs
|
||||
];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/hyp" --prefix PATH : ${
|
||||
pkgs.lib.makeBinPath [ pkgs.nodejs ]
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
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 (oldAttrs: {
|
||||
nativeBuildInputs = oldAttrs.nativeBuildInputs or [] ++ [ pkgs.psc-package self.pulp ];
|
||||
});
|
||||
|
||||
intelephense = super.intelephense.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { license = pkgs.lib.licenses.unfree; };
|
||||
});
|
||||
|
||||
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
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.AppKit
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
];
|
||||
};
|
||||
|
||||
jsonplaceholder = super.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 = super.makam.override {
|
||||
buildInputs = [ pkgs.nodejs pkgs.makeWrapper ];
|
||||
postFixup = ''
|
||||
wrapProgram "$out/bin/makam" --prefix PATH : ${pkgs.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 ""
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
manta = super.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
|
||||
'';
|
||||
};
|
||||
|
||||
markdownlint-cli = super.markdownlint-cli.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { mainProgram = "markdownlint"; };
|
||||
});
|
||||
|
||||
mdctl-cli = super."@medable/mdctl-cli".override {
|
||||
nativeBuildInputs = with pkgs; with darwin.apple_sdk.frameworks; [
|
||||
glib
|
||||
libsecret
|
||||
pkg-config
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
AppKit
|
||||
Security
|
||||
];
|
||||
buildInputs = with pkgs; [
|
||||
nodePackages.node-gyp-build
|
||||
nodePackages.node-pre-gyp
|
||||
nodejs
|
||||
];
|
||||
};
|
||||
|
||||
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
|
||||
'';
|
||||
});
|
||||
|
||||
near-cli = super.near-cli.override {
|
||||
nativeBuildInputs = with pkgs; [
|
||||
libusb1
|
||||
nodePackages.prebuild-install
|
||||
nodePackages.node-gyp-build
|
||||
pkg-config
|
||||
];
|
||||
};
|
||||
|
||||
node-gyp = super.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 = super.node-inspector.override (oldAttrs: {
|
||||
buildInputs = [ self.node-pre-gyp ];
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
node-red = super.node-red.override {
|
||||
buildInputs = [ self.node-pre-gyp ];
|
||||
};
|
||||
|
||||
node2nix = super.node2nix.override {
|
||||
buildInputs = [ 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 : ${pkgs.lib.makeBinPath [ pkgs.nix ]}
|
||||
'';
|
||||
};
|
||||
|
||||
parcel = super.parcel.override {
|
||||
buildInputs = [ self.node-gyp-build ];
|
||||
preRebuild = ''
|
||||
sed -i -e "s|#!/usr/bin/env node|#! ${pkgs.nodejs}/bin/node|" node_modules/node-gyp-build/bin.js
|
||||
'';
|
||||
};
|
||||
|
||||
pnpm = super.pnpm.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
|
||||
preRebuild = ''
|
||||
sed 's/"link:/"file:/g' --in-place package.json
|
||||
'';
|
||||
|
||||
postInstall = let
|
||||
pnpmLibPath = pkgs.lib.makeBinPath [
|
||||
nodejs.passthru.python
|
||||
nodejs
|
||||
];
|
||||
in ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" --prefix PATH : ${pnpmLibPath}
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
postcss-cli = super.postcss-cli.override (oldAttrs: {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/postcss" \
|
||||
--prefix NODE_PATH : ${self.postcss}/lib/node_modules \
|
||||
--prefix NODE_PATH : ${self.autoprefixer}/lib/node_modules
|
||||
ln -s '${self.postcss}/lib/node_modules/postcss' "$out/lib/node_modules/postcss"
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = pkgs.callPackage ./package-tests/postcss-cli.nix {
|
||||
inherit (self) postcss-cli;
|
||||
};
|
||||
};
|
||||
meta = oldAttrs.meta // {
|
||||
mainProgram = "postcss";
|
||||
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 = super.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 (self) prisma;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pulp = super.pulp.override {
|
||||
# tries to install purescript
|
||||
npmFlags = "--ignore-scripts";
|
||||
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/pulp" --suffix PATH : ${pkgs.lib.makeBinPath [
|
||||
pkgs.purescript
|
||||
]}
|
||||
'';
|
||||
};
|
||||
|
||||
reveal-md = super.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 = super.ssb-server.override (oldAttrs: {
|
||||
buildInputs = [ pkgs.automake pkgs.autoconf self.node-gyp-build ];
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
stf = super.stf.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { broken = since "10"; };
|
||||
});
|
||||
|
||||
tailwindcss = super.tailwindcss.override {
|
||||
plugins = [ ];
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
nodePath=""
|
||||
for p in "$out" "${self.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 = pkgs.callPackage ./package-tests/tailwindcss.nix { inherit (self) tailwindcss; };
|
||||
};
|
||||
};
|
||||
|
||||
teck-programmer = super.teck-programmer.override {
|
||||
nativeBuildInputs = [ self.node-gyp-build ];
|
||||
buildInputs = [ pkgs.libusb1 ];
|
||||
};
|
||||
|
||||
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"
|
||||
'';
|
||||
};
|
||||
|
||||
thelounge = super.thelounge.override (oldAttrs: {
|
||||
buildInputs = [ self.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 = super.thelounge-plugin-closepms.override {
|
||||
nativeBuildInputs = [ self.node-pre-gyp ];
|
||||
};
|
||||
|
||||
thelounge-theme-flat-blue = super.thelounge-theme-flat-blue.override {
|
||||
nativeBuildInputs = [ self.node-pre-gyp ];
|
||||
};
|
||||
|
||||
thelounge-theme-flat-dark = super.thelounge-theme-flat-dark.override {
|
||||
nativeBuildInputs = [ self.node-pre-gyp ];
|
||||
};
|
||||
|
||||
triton = super.triton.override {
|
||||
nativeBuildInputs = [ pkgs.installShellFiles ];
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd triton --bash <($out/bin/triton completion)
|
||||
'';
|
||||
};
|
||||
|
||||
ts-node = super.ts-node.override (oldAttrs: {
|
||||
buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/ts-node" \
|
||||
--prefix NODE_PATH : ${self.typescript}/lib/node_modules
|
||||
'';
|
||||
});
|
||||
|
||||
tsun = super.tsun.override (oldAttrs: {
|
||||
buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/tsun" \
|
||||
--prefix NODE_PATH : ${self.typescript}/lib/node_modules
|
||||
'';
|
||||
});
|
||||
|
||||
typescript = super.typescript.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { mainProgram = "tsc"; };
|
||||
});
|
||||
|
||||
typescript-language-server = super.typescript-language-server.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/typescript-language-server" \
|
||||
--suffix PATH : ${pkgs.lib.makeBinPath [ self.typescript ]}
|
||||
'';
|
||||
};
|
||||
|
||||
uppy-companion = super."@uppy/companion".override {
|
||||
name = "uppy-companion";
|
||||
};
|
||||
|
||||
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 {
|
||||
postInstall = ''
|
||||
cd node_modules
|
||||
for dep in ${self.vega-cli}/lib/node_modules/vega-cli/node_modules/*; do
|
||||
if [[ ! -d $dep ]]; then
|
||||
ln -s "${self.vega-cli}/lib/node_modules/vega-cli/node_modules/$dep"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
passthru.tests = {
|
||||
simple-execution = pkgs.callPackage ./package-tests/vega-lite.nix {
|
||||
inherit (self) vega-lite;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
wavedrom-cli = super.wavedrom-cli.override {
|
||||
nativeBuildInputs = [ pkgs.pkg-config self.node-pre-gyp ];
|
||||
# These dependencies are required by
|
||||
# https://github.com/Automattic/node-canvas.
|
||||
buildInputs = with pkgs; [
|
||||
pixman
|
||||
cairo
|
||||
pango
|
||||
];
|
||||
};
|
||||
|
||||
webtorrent-cli = super.webtorrent-cli.override {
|
||||
buildInputs = [ self.node-gyp-build ];
|
||||
};
|
||||
|
||||
yaml-language-server = super.yaml-language-server.override {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/yaml-language-server" \
|
||||
--prefix NODE_PATH : ${self.prettier}/lib/node_modules
|
||||
'';
|
||||
};
|
||||
};
|
||||
in self
|
||||
mainProgramOverrides = final: prev:
|
||||
mapAttrs (pkgName: mainProgram:
|
||||
prev.${pkgName}.override (oldAttrs: {
|
||||
meta = oldAttrs.meta // { inherit mainProgram; };
|
||||
})
|
||||
) (import ./main-programs.nix);
|
||||
|
||||
extensions = composeManyExtensions [
|
||||
mainProgramOverrides
|
||||
(import ./overrides.nix { inherit pkgs nodejs; })
|
||||
];
|
||||
in
|
||||
makeExtensible (extends extensions nodePackages)
|
||||
|
74
pkgs/development/node-packages/main-programs.nix
Normal file
74
pkgs/development/node-packages/main-programs.nix
Normal file
@ -0,0 +1,74 @@
|
||||
# Use this file to add `meta.mainProgram` to packages in `nodePackages`, that don't provide an
|
||||
# executable that matches that packages name, so that they'll work with `nix run`.
|
||||
{
|
||||
# Packages that provide multiple executables where one is clearly the `mainProgram`.
|
||||
typescript = "tsc";
|
||||
|
||||
# Packages that provide a single executable whose name differs from the package's `name`.
|
||||
"@angular/cli" = "ng";
|
||||
"@antora/cli" = "antora";
|
||||
"@astrojs/language-server" = "astro-ls";
|
||||
"@bitwarden/cli" = "bw";
|
||||
"@commitlint/cli" = "commitlint";
|
||||
"@gitbeaker/cli" = "gitbeaker";
|
||||
"@google/clasp" = "clasp";
|
||||
"@hyperspace/cli" = "hyp";
|
||||
"@medable/mdctl-cli" = "mdctl";
|
||||
"@mermaid-js/mermaid-cli" = "mmdc";
|
||||
"@nerdwallet/shepherd" = "shepherd";
|
||||
"@nestjs/cli" = "nest";
|
||||
"@prisma/language-server" = "prisma-language-server";
|
||||
"@tailwindcss/language-server" = "tailwindcss-language-server";
|
||||
"@uppy/companion" = "companion";
|
||||
"@vue/cli" = "vue";
|
||||
"@webassemblyjs/repl" = "wasm";
|
||||
"@webassemblyjs/wasm-strip" = "wasm-strip";
|
||||
"@webassemblyjs/wasm-text-gen" = "wasmgen";
|
||||
"@webassemblyjs/wast-refmt" = "wast-refmt";
|
||||
balanceofsatoshis = "bos";
|
||||
carbon-now-cli = "carbon-now";
|
||||
cdk8s-cli = "cdk8s";
|
||||
cdktf-cli = "cdktf";
|
||||
clean-css-cli = "cleancss";
|
||||
clipboard-cli = "clipboard";
|
||||
clubhouse-cli = "club";
|
||||
conventional-changelog-cli = "conventional-changelog";
|
||||
cpy-cli = "cpy";
|
||||
dockerfile-language-server-nodejs = "docker-langserver";
|
||||
fast-cli = "fast";
|
||||
fauna-shell = "fauna";
|
||||
firebase-tools = "firebase";
|
||||
fkill-cli = "fkill";
|
||||
fleek-cli = "fleek";
|
||||
git-run = "gr";
|
||||
gitmoji-cli = "gitmoji";
|
||||
graphql-cli = "graphql";
|
||||
grunt-cli = "grunt";
|
||||
gulp-cli = "gulp";
|
||||
kaput-cli = "kaput";
|
||||
leetcode-cli = "leetcode";
|
||||
less = "lessc";
|
||||
lua-fmt = "luafmt";
|
||||
markdownlint-cli = "markdownlint";
|
||||
near-cli = "near";
|
||||
neovim = "neovim-node-host";
|
||||
parcel-bundler = "parcel";
|
||||
parsoid = "parse.js";
|
||||
poor-mans-t-sql-formatter-cli = "sqlformat";
|
||||
postcss-cli = "postcss";
|
||||
purescript-psa = "psa";
|
||||
react-native-cli = "react-native";
|
||||
react-tools = "jsx";
|
||||
remod-cli = "remod";
|
||||
s3http = "s3http.js";
|
||||
svelte-language-server = "svelteserver";
|
||||
teck-programmer = "teck-firmware-upgrade";
|
||||
uglify-js = "uglifyjs";
|
||||
undollar = "$";
|
||||
vsc-leetcode-cli = "leetcode";
|
||||
vscode-css-languageserver-bin = "css-languageserver";
|
||||
vscode-html-languageserver-bin = "html-languageserver";
|
||||
vscode-json-languageserver-bin = "json-languageserver";
|
||||
vue-language-server = "vls";
|
||||
webtorrent-cli = "webtorrent";
|
||||
}
|
532
pkgs/development/node-packages/overrides.nix
Normal file
532
pkgs/development/node-packages/overrides.nix
Normal file
@ -0,0 +1,532 @@
|
||||
# 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-pre-gyp final.rimraf ];
|
||||
};
|
||||
|
||||
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 {
|
||||
buildInputs = [ 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 ];
|
||||
};
|
||||
|
||||
hyperspace-cli = prev."@hyperspace/cli".override {
|
||||
nativeBuildInputs = with pkgs; [
|
||||
makeWrapper
|
||||
libtool
|
||||
autoconf
|
||||
automake
|
||||
];
|
||||
buildInputs = [ final.node-gyp-build nodejs ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/hyp" --prefix PATH : ${
|
||||
lib.makeBinPath [ nodejs ]
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
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 {
|
||||
buildInputs = [ nodejs pkgs.makeWrapper ];
|
||||
postFixup = ''
|
||||
wrapProgram "$out/bin/makam" --prefix PATH : ${lib.makeBinPath [ 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 ""
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
||||
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
|
||||
];
|
||||
};
|
||||
|
||||
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 {
|
||||
buildInputs = [ 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-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 (oldAttrs: {
|
||||
buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
wrapProgram "$out/bin/ts-node" \
|
||||
--prefix NODE_PATH : ${final.typescript}/lib/node_modules
|
||||
'';
|
||||
});
|
||||
|
||||
tsun = prev.tsun.override (oldAttrs: {
|
||||
buildInputs = oldAttrs.buildInputs ++ [ 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; [
|
||||
prev.node-pre-gyp
|
||||
pixman
|
||||
cairo
|
||||
pango
|
||||
libjpeg
|
||||
];
|
||||
};
|
||||
|
||||
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
|
||||
];
|
||||
};
|
||||
|
||||
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
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user