b1b63b66c9
This commit combines several individual PRs which would have resulted in merge conflicts in the generated JSON files. Instead, the "generate.sh" script is only ran once. Due to "makam" not building on MacOS in the form it was originally added in the PR I made some adjustments to this diff. List of added packages: - nodePackages.clubhouse-cli: init at 2.1.0 - nodePackages.makam: init at 0.7.17 - nodePackages.inliner: init at 1.13.1 - nodePackages.sass: init at 1.27.0 - nodePackages.undollar: init at 1.0.0 Co-authoring is used to preserve contributions. Co-authored-by: Changlin Li <mail@changlinli.com> Co-authored-by: Pasquale <p3dimaria@hotmail.it> Co-authored-by: Teodoro Freund <teodoro.freund@tweag.io> Co-authored-by: Tobias Mayer <tobim@fastmail.fm> Co-authored-by: vladki <vlad@kirillov.im>
255 lines
8.4 KiB
Nix
255 lines
8.4 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 ];
|
|
};
|
|
|
|
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";
|
|
};
|
|
|
|
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";
|
|
};
|
|
|
|
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
|
|
'';
|
|
});
|
|
|
|
stf = super.stf.override {
|
|
meta.broken = since "10";
|
|
};
|
|
|
|
vega-cli = super.vega-cli.override {
|
|
nativeBuildInputs = [ pkgs.pkgconfig ];
|
|
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
|