{ pkgs, nodejs, stdenv, applyPatches, fetchFromGitHub, fetchpatch, fetchurl, nixosTests }: 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 pkgs nodejs; inherit (stdenv.hostPlatform) system; }; self = super // { "@angular/cli" = super."@angular/cli".override { prePatch = '' export NG_CLI_ANALYTICS=false ''; }; 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 { meta.platforms = pkgs.lib.platforms.linux; 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 ''; }; 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 ''; }; deltachat-desktop = super."deltachat-desktop-../../applications/networking/instant-messengers/deltachat-desktop".override { meta.broken = true; # use the top-level package instead }; 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 ''; }; 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 ] } ''; # See: https://github.com/NixOS/nixpkgs/issues/142196 # [...]/@hyperspace/cli/node_modules/.bin/node-gyp-build: /usr/bin/env: bad interpreter: No such file or directory meta.broken = true; }; 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 ]; }; coc-imselect = super.coc-imselect.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 = super."@bitwarden/cli".override (drv: { name = "bitwarden-cli-${drv.version}"; meta.mainProgram = "bw"; }); flood = super.flood.override { buildInputs = [ self.node-pre-gyp ]; meta.mainProgram = "flood"; }; 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; }); "@electron-forge/cli" = super."@electron-forge/cli".override { buildInputs = [ self.node-pre-gyp self.rimraf ]; }; 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 ]; }); intelephense = super.intelephense.override { meta.license = pkgs.lib.licenses.unfree; }; jsonplaceholder = super.jsonplaceholder.override (drv: { buildInputs = [ nodejs ]; postInstall = '' exe=$out/bin/jsonplaceholder mkdir -p $out/bin cat >$exe < $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 = super.thelounge.meta // { maintainers = with lib.maintainers; [ winter ]; }; }; triton = super.triton.override { nativeBuildInputs = [ pkgs.installShellFiles ]; postInstall = '' installShellCompletion --cmd triton --bash <($out/bin/triton completion) ''; }; 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 ''; }; 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 ]; }; }; in self