about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/vlang/default.nix44
-rw-r--r--pkgs/development/compilers/vlang/disable_vcreate_test.patch133
-rw-r--r--pkgs/development/go-modules/generic/default.nix3
-rw-r--r--pkgs/development/interpreters/dart/default.nix14
-rw-r--r--pkgs/development/libraries/glpng/default.nix3
-rw-r--r--pkgs/development/libraries/grpc/default.nix4
-rw-r--r--pkgs/development/libraries/rubberband/default.nix8
-rw-r--r--pkgs/development/libraries/science/math/primecount/default.nix33
-rw-r--r--pkgs/development/libraries/science/math/primesieve/default.nix23
-rw-r--r--pkgs/development/node-packages/default.nix555
-rw-r--r--pkgs/development/node-packages/main-programs.nix74
-rw-r--r--pkgs/development/node-packages/overrides.nix533
-rw-r--r--pkgs/development/ocaml-modules/labltk/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/otoml/default.nix8
-rw-r--r--pkgs/development/php-packages/memcached/default.nix2
-rw-r--r--pkgs/development/php-packages/openswoole/default.nix1
-rw-r--r--pkgs/development/php-packages/redis/default.nix2
-rw-r--r--pkgs/development/php-packages/snuffleupagus/default.nix2
-rw-r--r--pkgs/development/php-packages/swoole/default.nix1
-rw-r--r--pkgs/development/python-modules/aiobotocore/default.nix4
-rw-r--r--pkgs/development/python-modules/apispec/default.nix4
-rw-r--r--pkgs/development/python-modules/bitarray/default.nix6
-rw-r--r--pkgs/development/python-modules/browser-cookie3/default.nix4
-rw-r--r--pkgs/development/python-modules/casbin/default.nix4
-rw-r--r--pkgs/development/python-modules/chiavdf/default.nix4
-rw-r--r--pkgs/development/python-modules/datatable/default.nix3
-rw-r--r--pkgs/development/python-modules/django-auth-ldap/default.nix4
-rw-r--r--pkgs/development/python-modules/django-jinja2/default.nix4
-rw-r--r--pkgs/development/python-modules/fakeredis/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-restful/default.nix3
-rw-r--r--pkgs/development/python-modules/genshi/default.nix4
-rw-r--r--pkgs/development/python-modules/grpcio-status/default.nix4
-rw-r--r--pkgs/development/python-modules/grpcio-tools/default.nix4
-rw-r--r--pkgs/development/python-modules/gst-python/default.nix6
-rw-r--r--pkgs/development/python-modules/httpie/default.nix14
-rw-r--r--pkgs/development/python-modules/huggingface-hub/default.nix8
-rw-r--r--pkgs/development/python-modules/osmpythontools/default.nix7
-rw-r--r--pkgs/development/python-modules/pex/default.nix4
-rw-r--r--pkgs/development/python-modules/plugwise/default.nix4
-rw-r--r--pkgs/development/python-modules/proxmoxer/default.nix21
-rw-r--r--pkgs/development/python-modules/puremagic/default.nix4
-rw-r--r--pkgs/development/python-modules/pyTelegramBotAPI/default.nix4
-rw-r--r--pkgs/development/python-modules/pyautogui/default.nix4
-rw-r--r--pkgs/development/python-modules/pyglet/default.nix4
-rw-r--r--pkgs/development/python-modules/pymbolic/default.nix20
-rw-r--r--pkgs/development/python-modules/pynetdicom/default.nix3
-rw-r--r--pkgs/development/python-modules/pyrogram/default.nix4
-rw-r--r--pkgs/development/python-modules/pyscf/default.nix1
-rw-r--r--pkgs/development/python-modules/pyvips/default.nix26
-rw-r--r--pkgs/development/python-modules/qcs-api-client/default.nix4
-rw-r--r--pkgs/development/python-modules/reportengine/default.nix53
-rw-r--r--pkgs/development/python-modules/stripe/default.nix4
-rw-r--r--pkgs/development/python-modules/tempest/default.nix6
-rw-r--r--pkgs/development/python-modules/tensorflow-metadata/default.nix6
-rw-r--r--pkgs/development/python-modules/tesla-powerwall/default.nix42
-rw-r--r--pkgs/development/python-modules/timetagger/default.nix19
-rw-r--r--pkgs/development/python-modules/vallox-websocket-api/default.nix42
-rw-r--r--pkgs/development/python-modules/werkzeug/1.nix62
-rw-r--r--pkgs/development/python-modules/xmlschema/default.nix6
-rw-r--r--pkgs/development/tools/analysis/cargo-tarpaulin/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/buck/default.nix4
-rw-r--r--pkgs/development/tools/cocogitto/default.nix8
-rw-r--r--pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix46
-rw-r--r--pkgs/development/tools/cue/default.nix38
-rw-r--r--pkgs/development/tools/electron/generic.nix5
-rw-r--r--pkgs/development/tools/jmespath/default.nix22
-rw-r--r--pkgs/development/tools/rust/cargo-expand/default.nix6
67 files changed, 1150 insertions, 861 deletions
diff --git a/pkgs/development/compilers/vlang/default.nix b/pkgs/development/compilers/vlang/default.nix
index 065e4462f2efb..0601022df61be 100644
--- a/pkgs/development/compilers/vlang/default.nix
+++ b/pkgs/development/compilers/vlang/default.nix
@@ -2,22 +2,36 @@
 
 stdenv.mkDerivation rec {
   pname = "vlang";
-  version = "weekly.2021.51";
+  version = "weekly.2022.19";
 
   src = fetchFromGitHub {
     owner = "vlang";
     repo = "v";
     rev = version;
-    sha256 = "1jvq3fxckl2jidiigkvclacjxbg5k38268mck7bl1ky1yspgfrnq";
+    sha256 = "1bl91j3ip3i84jq3wg03sflllxv38sv4dc072r302rl2g9f4dbg6";
   };
 
+  # Required for bootstrap.
   vc = fetchFromGitHub {
     owner = "vlang";
     repo = "vc";
-    rev = "c8ed2cd82b247e94c33217dba35c420cfc02fef3";
-    sha256 = "1acgx1qp480jmsv1xvqy1zf7iyy90mvg9x1m1b0zrwx09wz4y1cq";
+    rev = "a298ad7069f6333ef8ab59a616654fc74e04c847";
+    sha256 = "168cgq6451hcgsxzyd8vq11g01642bs5kkwxqh6rz3rnc86ajic0";
   };
 
+  # Required for vdoc.
+  markdown = fetchFromGitHub {
+    owner = "vlang";
+    repo = "markdown";
+    rev = "bbbd324a361e404ce0682fc00666df3a7877b398";
+    sha256 = "0cawzizr3rjz81blpvxvxrcvcdai1adj66885ss390444qq1fnv7";
+  };
+
+  # vcreate_test.v requires git, so we must disable it.
+  patches = [
+    ./disable_vcreate_test.patch
+  ];
+
   propagatedBuildInputs = [ glfw freetype openssl ]
     ++ lib.optional stdenv.hostPlatform.isUnix upx;
 
@@ -26,19 +40,33 @@ stdenv.mkDerivation rec {
   makeFlags = [
     "local=1"
     "VC=${vc}"
-    # vlang seems to want to write to $HOME/.vmodules , so lets give
-    # it a writable HOME
-    "HOME=$TMPDIR"
   ];
 
+  prePatch = ''
+    export HOME=$(mktemp -d)
+    cp cmd/tools/vcreate_test.v $HOME/vcreate_test.v
+  '';
+
   installPhase = ''
     runHook preInstall
+
     mkdir -p $out/{bin,lib,share}
     cp -r examples $out/share
     cp -r {cmd,vlib,thirdparty} $out/lib
-    mv v $out/lib
+    cp v $out/lib
     ln -s $out/lib/v $out/bin/v
     wrapProgram $out/bin/v --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]}
+
+    mkdir -p $HOME/.vmodules;
+    ln -sf ${markdown} $HOME/.vmodules/markdown
+    $out/lib/v -v build-tools
+    $out/lib/v -v $out/lib/cmd/tools/vdoc
+    $out/lib/v -v $out/lib/cmd/tools/vast
+    $out/lib/v -v $out/lib/cmd/tools/vvet
+
+    # Return the pre-patch vcreate_test.v now that we no longer need the alteration.
+    cp $HOME/vcreate_test.v $out/lib/cmd/tools/vcreate_test.v
+
     runHook postInstall
   '';
 
diff --git a/pkgs/development/compilers/vlang/disable_vcreate_test.patch b/pkgs/development/compilers/vlang/disable_vcreate_test.patch
new file mode 100644
index 0000000000000..85ed867c83ec1
--- /dev/null
+++ b/pkgs/development/compilers/vlang/disable_vcreate_test.patch
@@ -0,0 +1,133 @@
+diff --git a/cmd/tools/vcreate_test.v b/cmd/tools/vcreate_test.v
+index 3d07f4773..de8a202df 100644
+--- a/cmd/tools/vcreate_test.v
++++ b/cmd/tools/vcreate_test.v
+@@ -2,127 +2,6 @@ import os
+ 
+ const test_path = 'vcreate_test'
+ 
+-fn init_and_check() ? {
+-	os.execute_or_exit('${os.quoted_path(@VEXE)} init')
+-
+-	assert os.read_file('vcreate_test.v') ? == [
+-		'module main\n',
+-		'fn main() {',
+-		"	println('Hello World!')",
+-		'}',
+-		'',
+-	].join_lines()
+-
+-	assert os.read_file('v.mod') ? == [
+-		'Module {',
+-		"	name: 'vcreate_test'",
+-		"	description: ''",
+-		"	version: ''",
+-		"	license: ''",
+-		'	dependencies: []',
+-		'}',
+-		'',
+-	].join_lines()
+-
+-	assert os.read_file('.gitignore') ? == [
+-		'# Binaries for programs and plugins',
+-		'main',
+-		'vcreate_test',
+-		'*.exe',
+-		'*.exe~',
+-		'*.so',
+-		'*.dylib',
+-		'*.dll',
+-		'vls.log',
+-		'',
+-	].join_lines()
+-
+-	assert os.read_file('.gitattributes') ? == [
+-		'*.v linguist-language=V text=auto eol=lf',
+-		'*.vv linguist-language=V text=auto eol=lf',
+-		'*.vsh linguist-language=V text=auto eol=lf',
+-		'**/v.mod linguist-language=V text=auto eol=lf',
+-		'',
+-	].join_lines()
+-
+-	assert os.read_file('.editorconfig') ? == [
+-		'[*]',
+-		'charset = utf-8',
+-		'end_of_line = lf',
+-		'insert_final_newline = true',
+-		'trim_trailing_whitespace = true',
+-		'',
+-		'[*.v]',
+-		'indent_style = tab',
+-		'indent_size = 4',
+-		'',
+-	].join_lines()
+-}
+-
+ fn test_v_init() ? {
+-	dir := os.join_path(os.temp_dir(), test_path)
+-	os.rmdir_all(dir) or {}
+-	os.mkdir(dir) or {}
+-	defer {
+-		os.rmdir_all(dir) or {}
+-	}
+-	os.chdir(dir) ?
+-
+-	init_and_check() ?
+-}
+-
+-fn test_v_init_in_git_dir() ? {
+-	dir := os.join_path(os.temp_dir(), test_path)
+-	os.rmdir_all(dir) or {}
+-	os.mkdir(dir) or {}
+-	defer {
+-		os.rmdir_all(dir) or {}
+-	}
+-	os.chdir(dir) ?
+-	os.execute_or_exit('git init .')
+-	init_and_check() ?
+-}
+-
+-fn test_v_init_no_overwrite_gitignore() ? {
+-	dir := os.join_path(os.temp_dir(), test_path)
+-	os.rmdir_all(dir) or {}
+-	os.mkdir(dir) or {}
+-	os.write_file('$dir/.gitignore', 'blah') ?
+-	defer {
+-		os.rmdir_all(dir) or {}
+-	}
+-	os.chdir(dir) ?
+-
+-	os.execute_or_exit('${os.quoted_path(@VEXE)} init')
+-
+-	assert os.read_file('.gitignore') ? == 'blah'
+-}
+-
+-fn test_v_init_no_overwrite_gitattributes_and_editorconfig() ? {
+-	git_attributes_content := '*.v linguist-language=V text=auto eol=lf'
+-	editor_config_content := '[*]
+-charset = utf-8
+-end_of_line = lf
+-insert_final_newline = true
+-trim_trailing_whitespace = true
+-
+-[*.v]
+-indent_style = tab
+-indent_size = 4
+-'
+-
+-	dir := os.join_path(os.temp_dir(), test_path)
+-	os.rmdir_all(dir) or {}
+-	os.mkdir(dir) or {}
+-	os.write_file('$dir/.gitattributes', git_attributes_content) ?
+-	os.write_file('$dir/.editorconfig', editor_config_content) ?
+-	defer {
+-		os.rmdir_all(dir) or {}
+-	}
+-	os.chdir(dir) ?
+-
+-	os.execute_or_exit('${os.quoted_path(@VEXE)} init')
+-
+-	assert os.read_file('.gitattributes') ? == git_attributes_content
+-	assert os.read_file('.editorconfig') ? == editor_config_content
++	println('vcreate_test disabled')
+ }
diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix
index 502a981596e7a..4dff2d82848d6 100644
--- a/pkgs/development/go-modules/generic/default.nix
+++ b/pkgs/development/go-modules/generic/default.nix
@@ -79,12 +79,11 @@ let
     GO111MODULE = "on";
 
     impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [
-      "GIT_PROXY_COMMAND" "SOCKS_SERVER"
+      "GIT_PROXY_COMMAND" "SOCKS_SERVER" "GOPROXY"
     ];
 
     configurePhase = args.modConfigurePhase or ''
       runHook preConfigure
-
       export GOCACHE=$TMPDIR/go-cache
       export GOPATH="$TMPDIR/go"
       cd "${modRoot}"
diff --git a/pkgs/development/interpreters/dart/default.nix b/pkgs/development/interpreters/dart/default.nix
index 0891bfd2d8ff0..bf5ab2dc98fc3 100644
--- a/pkgs/development/interpreters/dart/default.nix
+++ b/pkgs/development/interpreters/dart/default.nix
@@ -2,7 +2,7 @@
 , lib
 , fetchurl
 , unzip
-, version ? "2.15.1"
+, version ? "2.17.0"
 , sources ? let
     base = "https://storage.googleapis.com/dart-archive/channels";
     x86_64 = "x64";
@@ -10,28 +10,28 @@
     aarch64 = "arm64";
     # Make sure that if the user overrides version parameter they're
     # also need to override sources, to avoid mistakes
-    version = "2.15.1";
+    version = "2.17.0";
   in
   {
     "${version}-aarch64-darwin" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${aarch64}-release.zip";
-      sha256 = "sha256-DDE4DpA2m8wKkUZuQDn4NpXVvtaJ6sIHeKNjk3RbpYE=";
+      sha256 = "sha256-WXf0SdSEHMaJRfVFgKzb9SY4LBjf1xO5Oki/dzKMEMY=";
     };
     "${version}-x86_64-darwin" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${x86_64}-release.zip";
-      sha256 = "sha256-s6bkwh2m5KdRr/WxWXwItO9YaDpp/HI3xjnS2UHmN+I=";
+      sha256 = "sha256-PwaxUQHIUhRWCOy3IVdGtRyP9LtscqoUJPOZfevN7xs=";
     };
     "${version}-x86_64-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip";
-      sha256 = "sha256-D0XcqlO0CQtpsne4heqaTLOkFYnJEZET4bl4rVXOM18=";
+      sha256 = "sha256-V7j9lk5HyB1GeuuVsJmmcKt+j1ShzXTUW80f3HeRPYY=";
     };
     "${version}-i686-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${i686}-release.zip";
-      sha256 = "sha256-SRq5TtxS+bwCqVxa0U2Zhn8J1Wtm4Onq+3uQS+951sw=";
+      sha256 = "sha256-YWxFwbcGvssOSL4S5O4jqLzxdUHvbVd9i4cLNyFn/cs=";
     };
     "${version}-aarch64-linux" = fetchurl {
       url = "${base}/stable/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip";
-      sha256 = "sha256-iDbClCNDUsxT6K6koc4EQuu7dppTbOfzCVedpQIKI5U=";
+      sha256 = "sha256-BaHbD9hFhYd9YYCFg0bXxTx++JQzZn2zuF8/Ll+nA2s=";
     };
   }
 }:
diff --git a/pkgs/development/libraries/glpng/default.nix b/pkgs/development/libraries/glpng/default.nix
index 1194d988c073f..34c58774fb241 100644
--- a/pkgs/development/libraries/glpng/default.nix
+++ b/pkgs/development/libraries/glpng/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
     cmake
     pkg-config
   ];
+
   buildInputs = [
     libGL
     libpng
@@ -30,7 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://repo.or.cz/glpng.git/blob_plain/HEAD:/glpng.htm";
-    description = "PNG loader for OpenGL";
+    description = "PNG loader library for OpenGL";
     license = licenses.mit;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.unix;
diff --git a/pkgs/development/libraries/grpc/default.nix b/pkgs/development/libraries/grpc/default.nix
index f55e2c2f6e453..d7576594adcf1 100644
--- a/pkgs/development/libraries/grpc/default.nix
+++ b/pkgs/development/libraries/grpc/default.nix
@@ -20,7 +20,7 @@
 
 stdenv.mkDerivation rec {
   pname = "grpc";
-  version = "1.45.2"; # N.B: if you change this, please update:
+  version = "1.46.1"; # N.B: if you change this, please update:
     # pythonPackages.grpcio-tools
     # pythonPackages.grpcio-status
 
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     owner = "grpc";
     repo = "grpc";
     rev = "v${version}";
-    sha256 = "sha256-l2r1NdbfwViXfLcwbfUgLueqfAVnLzI+gdEarlkIqkI=";
+    sha256 = "sha256-jci45jCcm2EN+tw7KCU9tOVB0jIADitQWoUlvyutRqw=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/libraries/rubberband/default.nix b/pkgs/development/libraries/rubberband/default.nix
index 1e70d6e0dbedc..5cb5da3224fe1 100644
--- a/pkgs/development/libraries/rubberband/default.nix
+++ b/pkgs/development/libraries/rubberband/default.nix
@@ -1,16 +1,16 @@
 { lib, stdenv, fetchurl, pkg-config, libsamplerate, libsndfile, fftw
-, vamp-plugin-sdk, ladspaH }:
+, vamp-plugin-sdk, ladspaH, meson, ninja }:
 
 stdenv.mkDerivation rec {
   pname = "rubberband";
-  version = "1.9.0";
+  version = "2.0.2";
 
   src = fetchurl {
     url = "https://breakfastquay.com/files/releases/${pname}-${version}.tar.bz2";
-    sha256 = "4f5b9509364ea876b4052fc390c079a3ad4ab63a2683aad09662fb905c2dc026";
+    sha256 = "sha256-uerAJ+eXeJrplhHJ6urxw6RMyAT5yKBEGg0dJvPWvfk=";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config meson ninja ];
   buildInputs = [ libsamplerate libsndfile fftw vamp-plugin-sdk ladspaH ];
   makeFlags = [ "AR:=$(AR)" ];
 
diff --git a/pkgs/development/libraries/science/math/primecount/default.nix b/pkgs/development/libraries/science/math/primecount/default.nix
deleted file mode 100644
index e1390ce6416ed..0000000000000
--- a/pkgs/development/libraries/science/math/primecount/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, cmake, primesieve }:
-
-stdenv.mkDerivation rec {
-  pname = "primecount";
-  version = "7.2";
-
-  nativeBuildInputs = [ cmake ];
-
-  buildInputs = [ primesieve ];
-
-  src = fetchFromGitHub {
-    owner = "kimwalisch";
-    repo = "primecount";
-    rev = "v${version}";
-    sha256 = "sha256-/Cb/HkD4UQ9gXsRpvRiEuQBoRd0THxNHsBaAAa+CqQo=";
-  };
-
-  cmakeFlags = [
-    "-DBUILD_STATIC_LIBS=OFF"
-    "-DBUILD_SHARED_LIBS=ON"
-    "-DBUILD_TESTS=ON"
-    "-DBUILD_PRIMECOUNT=ON"
-    "-DBUILD_LIBPRIMESIEVE=ON"
-  ];
-
-  meta = with lib; {
-    description = "Fast prime counting function implementations";
-    homepage = "https://github.com/kimwalisch/primecount";
-    license = licenses.bsd2;
-    platforms = platforms.unix;
-    maintainers = teams.sage.members;
-  };
-}
diff --git a/pkgs/development/libraries/science/math/primesieve/default.nix b/pkgs/development/libraries/science/math/primesieve/default.nix
deleted file mode 100644
index 0cf263218a3bc..0000000000000
--- a/pkgs/development/libraries/science/math/primesieve/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, cmake }:
-
-stdenv.mkDerivation rec {
-  pname = "primesieve";
-  version = "7.8";
-
-  nativeBuildInputs = [ cmake ];
-
-  src = fetchFromGitHub {
-    owner = "kimwalisch";
-    repo = "primesieve";
-    rev = "v${version}";
-    sha256 = "sha256-M35CP/xEyC7mEh84kaGsgfsDI9fnanHraNPgTvpqimI=";
-  };
-
-  meta = with lib; {
-    description = "Fast C/C++ prime number generator";
-    homepage = "https://primesieve.org/";
-    license = licenses.bsd2;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ abbradar ];
-  };
-}
diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix
index b681c3b357037..0fcd508012e8a 100644
--- a/pkgs/development/node-packages/default.nix
+++ b/pkgs/development/node-packages/default.nix
@@ -1,544 +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
-      '';
-    };
-
-    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 ]
-        }
-      '';
-    };
-
-    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";
-    };
-
-    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: {
-      buildInputs = [ self.node-pre-gyp self.node-gyp-build ];
-      meta = drv.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 (drv: {
-      meta = drv.meta // {
-        platforms = pkgs.lib.platforms.none;
-      };
-    });
-
-    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 <<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 {
-      meta.mainProgram = "markdownlint";
-    };
-
-    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}
-      '';
-    };
-
-    near-cli = super.near-cli.override {
-      nativeBuildInputs = with pkgs; [
-        libusb1
-        nodePackages.prebuild-install
-        nodePackages.node-gyp-build
-        pkg-config
-      ];
-    };
-
-    node-inspector = super.node-inspector.override {
-      buildInputs = [ self.node-pre-gyp ];
-      meta.broken = since "10";
-    };
-
-    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 ]}
-      '';
-    };
-
-    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 = pkgs.lib.makeBinPath [
-          nodejs.passthru.python
-          nodejs
-        ];
-      in ''
-        for prog in $out/bin/*; do
-          wrapProgram "$prog" --prefix PATH : ${pnpmLibPath}
-        done
-      '';
-    };
-
-    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
-      '';
-    };
-
-    postcss-cli = super.postcss-cli.override {
-      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 = {
-        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 {
-      buildInputs = [ pkgs.automake pkgs.autoconf self.node-gyp-build ];
-      meta.broken = since "10";
-    };
-
-    stf = super.stf.override {
-      meta.broken = since "10";
-    };
-
-    tailwindcss = super.tailwindcss.overrideAttrs (oldAttrs: {
-      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; };
-      };
-    });
-
-    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-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 ];
-    };
-
-    tsun = super.tsun.overrideAttrs (oldAttrs: {
-      buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ];
-      postInstall = ''
-        wrapProgram "$out/bin/tsun" \
-        --prefix NODE_PATH : ${self.typescript}/lib/node_modules
-      '';
-    });
-
-    ts-node = super.ts-node.overrideAttrs (oldAttrs: {
-      buildInputs = oldAttrs.buildInputs ++ [ pkgs.makeWrapper ];
-      postInstall = ''
-        wrapProgram "$out/bin/ts-node" \
-        --prefix NODE_PATH : ${self.typescript}/lib/node_modules
-      '';
-    });
-
-    typescript = super.typescript.overrideAttrs (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 ]}
-      '';
-    };
-
-    teck-programmer = super.teck-programmer.override {
-      nativeBuildInputs = [ self.node-gyp-build ];
-      buildInputs = [ pkgs.libusb1 ];
-    };
-
-    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;
-          };
-        };
-    };
-
-    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
-      ] ++ lib.optionals stdenv.isDarwin [
-        darwin.apple_sdk.frameworks.AppKit
-        darwin.apple_sdk.frameworks.Security
-      ];
-    };
-
-    thelounge = super.thelounge.override {
-      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 = 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
+  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)
diff --git a/pkgs/development/node-packages/main-programs.nix b/pkgs/development/node-packages/main-programs.nix
new file mode 100644
index 0000000000000..bb9498a4cc96e
--- /dev/null
+++ b/pkgs/development/node-packages/main-programs.nix
@@ -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";
+}
diff --git a/pkgs/development/node-packages/overrides.nix b/pkgs/development/node-packages/overrides.nix
new file mode 100644
index 0000000000000..7ddb3448601f3
--- /dev/null
+++ b/pkgs/development/node-packages/overrides.nix
@@ -0,0 +1,533 @@
+# 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-gyp-build ];
+  };
+
+  "@hyperspace/cli" = prev."@hyperspace/cli".override {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    buildInputs = [ final.node-gyp-build ];
+    postInstall = ''wrapProgram "$out/bin/hyp" --prefix PATH : ${ lib.makeBinPath [ nodejs ] }'';
+  };
+  hyperspace-cli = final."@hyperspace/cli";
+
+  "@medable/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
+    ];
+  };
+  mdctl-cli = final."@medable/mdctl-cli";
+
+  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 {
+    nativeBuildInputs = [ 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 ];
+  };
+
+  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 {
+    nativeBuildInputs = [ 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
+    '';
+  };
+
+  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 {
+    nativeBuildInputs = [ 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-plugin-giphy = prev.thelounge-plugin-giphy.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 {
+    nativeBuildInputs = [ pkgs.makeWrapper ];
+    postInstall = ''
+      wrapProgram "$out/bin/ts-node" \
+      --prefix NODE_PATH : ${final.typescript}/lib/node_modules
+    '';
+  };
+
+  tsun = prev.tsun.override {
+    nativeBuildInputs = [ 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; [
+      final.node-pre-gyp
+      pixman
+      cairo
+      pango
+      libjpeg
+    ] ++ lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.CoreText
+    ];
+  };
+
+  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
+    ] ++ lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.CoreText
+    ];
+  };
+
+  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
+    '';
+  };
+}
diff --git a/pkgs/development/ocaml-modules/labltk/default.nix b/pkgs/development/ocaml-modules/labltk/default.nix
index 56e79ffc59046..90bd678f287f1 100644
--- a/pkgs/development/ocaml-modules/labltk/default.nix
+++ b/pkgs/development/ocaml-modules/labltk/default.nix
@@ -42,6 +42,10 @@ let
     version = "8.06.11";
     sha256 = "1zjpg9jvs6i9jvbgn6zgispwqiv8rxvaszxcx9ha9fax3wzhv9qy";
   };
+  "4.14" = mkNewParam {
+    version = "8.06.12";
+    sha256 = "sha256:17fmb13l18isgwr38hg9r5a0nayf2hhw6acj5153cy1sygsdg3b5";
+  };
  };
  param = params . ${lib.versions.majorMinor ocaml.version}
    or (throw "labltk is not available for OCaml ${ocaml.version}");
diff --git a/pkgs/development/ocaml-modules/otoml/default.nix b/pkgs/development/ocaml-modules/otoml/default.nix
index c3f53fc611e5a..d69df70f772f0 100644
--- a/pkgs/development/ocaml-modules/otoml/default.nix
+++ b/pkgs/development/ocaml-modules/otoml/default.nix
@@ -1,4 +1,6 @@
-{ lib, fetchFromGitHub, buildDunePackage
+{ lib
+, fetchFromGitHub
+, buildDunePackage
 , menhir
 , menhirLib
 , uutf
@@ -6,7 +8,7 @@
 
 buildDunePackage rec {
   pname = "otoml";
-  version = "0.9.0";
+  version = "1.0.1";
 
   useDune2 = true;
 
@@ -16,7 +18,7 @@ buildDunePackage rec {
     owner = "dmbaturin";
     repo = pname;
     rev = version;
-    sha256 = "0l0c60rzgk11y8xq05kr8q9hkzb3c8vi995mq84x98ys73wb42j3";
+    sha256 = "sha256-2WGuq4ZLbLvfG6WZ3iimiSMqMYHCuruZc1EttZ/5rBE=";
   };
 
   strictDeps = true;
diff --git a/pkgs/development/php-packages/memcached/default.nix b/pkgs/development/php-packages/memcached/default.nix
index 5e56882c9d24e..9724904d52b35 100644
--- a/pkgs/development/php-packages/memcached/default.nix
+++ b/pkgs/development/php-packages/memcached/default.nix
@@ -13,8 +13,6 @@ buildPecl rec {
 
   internalDeps = [
     php.extensions.session
-  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
-    php.extensions.hash
   ];
 
   configureFlags = [
diff --git a/pkgs/development/php-packages/openswoole/default.nix b/pkgs/development/php-packages/openswoole/default.nix
index 49379dfd54133..d43ed40f8cee5 100644
--- a/pkgs/development/php-packages/openswoole/default.nix
+++ b/pkgs/development/php-packages/openswoole/default.nix
@@ -9,7 +9,6 @@ buildPecl {
   sha256 = "sha256-Rhoa4ny86dwB3e86/1W30AlDGRUDYjK8RusquKF5Izg=";
 
   buildInputs = [ pcre2 ] ++ lib.optionals (!stdenv.isDarwin) [ valgrind ];
-  internalDeps = lib.optionals (lib.versionOlder php.version "7.4") [ php.extensions.hash ];
 
   meta = with lib; {
     changelog = "https://pecl.php.net/package/openswoole/${version}";
diff --git a/pkgs/development/php-packages/redis/default.nix b/pkgs/development/php-packages/redis/default.nix
index 070112ba65520..e4b16dd991a72 100644
--- a/pkgs/development/php-packages/redis/default.nix
+++ b/pkgs/development/php-packages/redis/default.nix
@@ -10,8 +10,6 @@ buildPecl {
     session
   ] ++ lib.optionals (lib.versionOlder php.version "8.0") [
     json
-  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
-    hash
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/php-packages/snuffleupagus/default.nix b/pkgs/development/php-packages/snuffleupagus/default.nix
index 4318a49a8aa5d..7a1c401b93aae 100644
--- a/pkgs/development/php-packages/snuffleupagus/default.nix
+++ b/pkgs/development/php-packages/snuffleupagus/default.nix
@@ -22,8 +22,6 @@ buildPecl rec {
 
   internalDeps = with php.extensions; [
     session
-  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
-    hash
   ];
 
   patches = [
diff --git a/pkgs/development/php-packages/swoole/default.nix b/pkgs/development/php-packages/swoole/default.nix
index 201b78e496631..fb69c18710a78 100644
--- a/pkgs/development/php-packages/swoole/default.nix
+++ b/pkgs/development/php-packages/swoole/default.nix
@@ -7,7 +7,6 @@ buildPecl {
   sha256 = "sha256-SnhDRC7/a7BTHn87c6YCz/R8jI6aES1ibSD6YAl6R+I=";
 
   buildInputs = [ pcre2 ] ++ lib.optionals (!stdenv.isDarwin) [ valgrind ];
-  internalDeps = lib.optionals (lib.versionOlder php.version "7.4") [ php.extensions.hash ];
 
   doCheck = true;
   checkTarget = "tests";
diff --git a/pkgs/development/python-modules/aiobotocore/default.nix b/pkgs/development/python-modules/aiobotocore/default.nix
index df800eb475521..199495494ab45 100644
--- a/pkgs/development/python-modules/aiobotocore/default.nix
+++ b/pkgs/development/python-modules/aiobotocore/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "aiobotocore";
-  version = "2.2.0";
+  version = "2.3.0";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-cTV5OcMCJnDXu5SDMZQUekTr/OJLFkPk5E/twe5zSbo=";
+    sha256 = "sha256-/D09YGFBC8GU0J7FReMLRGnV90dw+TespfaqReYqG/4=";
   };
 
   # relax version constraints: aiobotocore works with newer botocore versions
diff --git a/pkgs/development/python-modules/apispec/default.nix b/pkgs/development/python-modules/apispec/default.nix
index 0c1458488109c..9ad41715a2316 100644
--- a/pkgs/development/python-modules/apispec/default.nix
+++ b/pkgs/development/python-modules/apispec/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "apispec";
-  version = "5.2.1";
+  version = "5.2.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-z3VMQ5pW3xLwFJ/FaQpCJ3TprDOV+2eYiCwX+8OinS0=";
+    hash = "sha256-bqZULh6//p/ZW6Ae8/UTUerGwgCpdFYsdHMFm5zSCqc=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/bitarray/default.nix b/pkgs/development/python-modules/bitarray/default.nix
index d5806d77112d5..79ac6475ae6a0 100644
--- a/pkgs/development/python-modules/bitarray/default.nix
+++ b/pkgs/development/python-modules/bitarray/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "bitarray";
-  version = "2.4.1";
+  version = "2.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-+uygP5eemSzHb3QGr365eVyxEbjYlpyJGgMr10l8h9o=";
+    sha256 = "sha256-jTj2B1EAgJmmWdWs+zXvQVAYPv/Vsr+mwQGZJw3fTJw=";
   };
 
   checkPhase = ''
@@ -23,7 +23,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Efficient arrays of booleans";
     homepage = "https://github.com/ilanschnell/bitarray";
-    changelog = "https://github.com/ilanschnell/bitarray/blob/master/CHANGE_LOG";
+    changelog = "https://github.com/ilanschnell/bitarray/raw/${version}/CHANGE_LOG";
     license = licenses.psfl;
     maintainers = [ maintainers.bhipple ];
   };
diff --git a/pkgs/development/python-modules/browser-cookie3/default.nix b/pkgs/development/python-modules/browser-cookie3/default.nix
index 163c0e4a15ad6..a452c310e43dd 100644
--- a/pkgs/development/python-modules/browser-cookie3/default.nix
+++ b/pkgs/development/python-modules/browser-cookie3/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "browser-cookie3";
-  version = "0.14.0";
+  version = "0.14.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kWYMl/JZxonLfT0u/13bXz0MlC36jssWWq/i05FDpOA=";
+    hash = "sha256-2cMWFyHK+7M99Z9O7PiKue37c5XVBe/n88AF5ax7A2s=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/casbin/default.nix b/pkgs/development/python-modules/casbin/default.nix
index f09b2ab66307e..f38d9aa634ad9 100644
--- a/pkgs/development/python-modules/casbin/default.nix
+++ b/pkgs/development/python-modules/casbin/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "casbin";
-  version = "1.16.3";
+  version = "1.16.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "pycasbin";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-7URIk76iQ1u59RM1VeqO5qqTg+0kCPtsP+2Y5CxCZ3I=";
+    sha256 = "sha256-/zIx1GlzAnQf0t2d8ME+bi2CZGj6Qr9f5Z4afrQD8FY=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/chiavdf/default.nix b/pkgs/development/python-modules/chiavdf/default.nix
index a4bd20f9cd6a8..819b6fdcda39c 100644
--- a/pkgs/development/python-modules/chiavdf/default.nix
+++ b/pkgs/development/python-modules/chiavdf/default.nix
@@ -14,12 +14,12 @@
 
 buildPythonPackage rec {
   pname = "chiavdf";
-  version = "1.0.6";
+  version = "1.0.7";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Ri7j/T0nnZFml4kC0qIQkyYRJBPZMhTYxolW/A25030=";
+    hash = "sha256-956517eGqRSLg+Y4ybmASiZoypgpYn/D9lbPA4Rcfts=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/datatable/default.nix b/pkgs/development/python-modules/datatable/default.nix
index 3d3279bb2b3e3..2ebb488aba77f 100644
--- a/pkgs/development/python-modules/datatable/default.nix
+++ b/pkgs/development/python-modules/datatable/default.nix
@@ -6,6 +6,7 @@
 , llvm
 , pytestCheckHook
 , typesentry
+, isPy310
 }:
 
 buildPythonPackage rec {
@@ -63,6 +64,6 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ abbradar ];
     # uses custom build system and adds -Wunused-variable -Werror
     # warning: ‘dt::expr::doc_first’ defined but not used [-Wunused-variable]
-    broken = true;
+    broken = isPy310;
   };
 }
diff --git a/pkgs/development/python-modules/django-auth-ldap/default.nix b/pkgs/development/python-modules/django-auth-ldap/default.nix
index ffd4796f2a570..b3596e1e44447 100644
--- a/pkgs/development/python-modules/django-auth-ldap/default.nix
+++ b/pkgs/development/python-modules/django-auth-ldap/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "django-auth-ldap";
-  version = "4.0.0";
+  version = "4.1.0";
   format = "pyproject";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "276f79e624ce083ce13f161387f65ff1c0efe83ef8a42f2b9830d43317b15239";
+    sha256 = "sha256-d/dJ07F4B86OtWqcnI5XRv8xZWf4HVumE0ldnHSVqUk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/django-jinja2/default.nix b/pkgs/development/python-modules/django-jinja2/default.nix
index 039a75aacee24..305e153ce602a 100644
--- a/pkgs/development/python-modules/django-jinja2/default.nix
+++ b/pkgs/development/python-modules/django-jinja2/default.nix
@@ -4,7 +4,7 @@
 
 buildPythonPackage rec {
   pname = "django-jinja";
-  version = "2.10.0";
+  version = "2.10.2";
 
   meta = {
     description = "Simple and nonobstructive jinja2 integration with Django";
@@ -14,7 +14,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ae6a3fdf1ffa7a9ef6fd2f0a59c1a68c96b29f7f00f5166375658ef392f1ed32";
+    sha256 = "sha256-v9+7VcH1pnnWmtV11VDEcH04ZjQAkVLv4BQInzxNFBI=";
   };
 
   buildInputs = [ django pytz tox ];
diff --git a/pkgs/development/python-modules/fakeredis/default.nix b/pkgs/development/python-modules/fakeredis/default.nix
index f5a28fa383999..a75f2e3da959f 100644
--- a/pkgs/development/python-modules/fakeredis/default.nix
+++ b/pkgs/development/python-modules/fakeredis/default.nix
@@ -16,14 +16,14 @@
 
 buildPythonPackage rec {
   pname = "fakeredis";
-  version = "1.7.4";
+  version = "1.7.5";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-aWl//usJk5BzYF7qyX9SS8yrrgQmV1eldcf8kjCHqmU=";
+    hash = "sha256-STdcYwmB3UBF2akuJwn81Edskfkn4CKEk+76Yl5wUTM=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/flask-restful/default.nix b/pkgs/development/python-modules/flask-restful/default.nix
index 25f02b87c9e78..cefedfe7fc371 100644
--- a/pkgs/development/python-modules/flask-restful/default.nix
+++ b/pkgs/development/python-modules/flask-restful/default.nix
@@ -10,6 +10,7 @@
 , pythonOlder
 , pytz
 , six
+, werkzeug
 }:
 
 buildPythonPackage rec {
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     hash = "sha256-zOxlC4NdSBkhOMhTKa4Dc15s7VjpstnCFG1shMBvpT4=";
   };
 
-  patches = [
+  patches = lib.optionals (lib.versionAtLeast werkzeug.version "2.1.0") [
     ./werkzeug-2.1.0-compat.patch
   ];
 
diff --git a/pkgs/development/python-modules/genshi/default.nix b/pkgs/development/python-modules/genshi/default.nix
index be6abbd836443..6dd458fefb4f1 100644
--- a/pkgs/development/python-modules/genshi/default.nix
+++ b/pkgs/development/python-modules/genshi/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "Genshi";
-  version = "0.7.6";
+  version = "0.7.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-NKLOi4DoQ/Ygxbe35ZqqNip2zpdkpvEQMig+2UWMOlk=";
+    sha256 = "sha256-wQBSCGLNaQhdEO4ah+kSief1n2s9m9Yiv1iygE5rmqs=";
   };
 
   # FAIL: test_sanitize_remove_script_elem (genshi.filters.tests.html.HTMLSanitizerTestCase)
diff --git a/pkgs/development/python-modules/grpcio-status/default.nix b/pkgs/development/python-modules/grpcio-status/default.nix
index 173353fc9f2f3..4e72e19392ff9 100644
--- a/pkgs/development/python-modules/grpcio-status/default.nix
+++ b/pkgs/development/python-modules/grpcio-status/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "grpcio-status";
-  version = "1.45.0";
+  version = "1.46.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-S6rY6Ow8RHiOA4wk49fccCWeBroJ9ApbgXhThWO6Plo=";
+    sha256 = "700ad7bdc2da6b1d873ae9abffd957b3df6b74c8ca4b34c50bf1b062ae10a620";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/grpcio-tools/default.nix b/pkgs/development/python-modules/grpcio-tools/default.nix
index b3794e8b9d434..b8bc4c9b5403c 100644
--- a/pkgs/development/python-modules/grpcio-tools/default.nix
+++ b/pkgs/development/python-modules/grpcio-tools/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "grpcio-tools";
-  version = "1.45.0";
+  version = "1.46.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-oBbPwh4NkbOwNtPU+WjR/eqGXfoDUkyx++yoRxn9RaI=";
+    sha256 = "d54d80a4cfd7da002893711af613c9c9358dddfdd27feea44eb902c495b09105";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/python-modules/gst-python/default.nix b/pkgs/development/python-modules/gst-python/default.nix
index c02e3b593b82c..e14223c1fd6db 100644
--- a/pkgs/development/python-modules/gst-python/default.nix
+++ b/pkgs/development/python-modules/gst-python/default.nix
@@ -5,7 +5,7 @@
 , ninja
 
 , pkg-config
-, python3
+, python
 , pygobject3
 , gobject-introspection
 , gst-plugins-base
@@ -32,7 +32,7 @@ buildPythonPackage rec {
     meson
     ninja
     pkg-config
-    python3
+    python
     gobject-introspection
     gst-plugins-base
   ];
@@ -43,7 +43,7 @@ buildPythonPackage rec {
   ];
 
   mesonFlags = [
-    "-Dpygi-overrides-dir=${placeholder "out"}/${python3.sitePackages}/gi/overrides"
+    "-Dpygi-overrides-dir=${placeholder "out"}/${python.sitePackages}/gi/overrides"
   ];
 
   doCheck = true;
diff --git a/pkgs/development/python-modules/httpie/default.nix b/pkgs/development/python-modules/httpie/default.nix
index 4f852bb3c25e8..143822de63b97 100644
--- a/pkgs/development/python-modules/httpie/default.nix
+++ b/pkgs/development/python-modules/httpie/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchFromGitHub
 , installShellFiles
@@ -82,6 +83,19 @@ buildPythonPackage rec {
     "httpie"
   ];
 
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    # flaky
+    "tests/test_plugins_cli.py"
+  ];
+
+  disabledTests = [
+    # flaky
+    "test_stdin_read_warning"
+  ] ++ lib.optionals stdenv.isDarwin [
+    # flaky
+    "test_daemon_runner"
+  ];
+
   meta = with lib; {
     description = "A command line HTTP client whose goal is to make CLI human-friendly";
     homepage = "https://httpie.org/";
diff --git a/pkgs/development/python-modules/huggingface-hub/default.nix b/pkgs/development/python-modules/huggingface-hub/default.nix
index 3bbc8ad2669e9..d0eba93fb85d7 100644
--- a/pkgs/development/python-modules/huggingface-hub/default.nix
+++ b/pkgs/development/python-modules/huggingface-hub/default.nix
@@ -14,13 +14,13 @@
 
 buildPythonPackage rec {
   pname = "huggingface-hub";
-  version = "0.4.0";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     owner = "huggingface";
     repo = "huggingface_hub";
-    rev = "v${version}";
-    sha256 = "sha256-rrkubNy60e/1VcGacYQang4yWxUzIBGySxZyq6G1arw=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-jR4aqMAAQJ5a7pOe3RpCtLgdm5JVVSPsBQtube6FeqM=";
   };
 
   nativeBuildInputs = [ packaging ];
@@ -41,7 +41,7 @@ buildPythonPackage rec {
    meta = with lib; {
     homepage = "https://github.com/huggingface/huggingface_hub";
     description = "Download and publish models and other files on the huggingface.co hub";
-    changelog = "https://github.com/huggingface/huggingface_hub/releases/tag/${version}";
+    changelog = "https://github.com/huggingface/huggingface_hub/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/development/python-modules/osmpythontools/default.nix b/pkgs/development/python-modules/osmpythontools/default.nix
index 23755583470aa..53c4dc1457e68 100644
--- a/pkgs/development/python-modules/osmpythontools/default.nix
+++ b/pkgs/development/python-modules/osmpythontools/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname = "osmpythontools";
-  version = "0.3.3";
+  version = "0.3.4";
 
   src = fetchFromGitHub {
     owner = "mocnik-science";
     repo = "osm-python-tools";
-    rev = "v.${version}";
-    sha256 = "sha256-335zo/kOX4OpUwHas2aaPibY6zNmDaaHJpolbTQWqKk=";
+    rev = "v${version}";
+    sha256 = "sha256-7r42b/B9h7cMgM+wFS0Fink/3WjUNvz+PwLn3C5hawc=";
   };
 
   propagatedBuildInputs = [
@@ -54,6 +54,7 @@ buildPythonPackage rec {
     '';
     homepage = "https://github.com/mocnik-science/osm-python-tools";
     license = licenses.gpl3Only;
+    changelog = "https://raw.githubusercontent.com/mocnik-science/osm-python-tools/v${version}/version-history.md";
     maintainers = with maintainers; [ das-g ];
   };
 }
diff --git a/pkgs/development/python-modules/pex/default.nix b/pkgs/development/python-modules/pex/default.nix
index 2098a1d10cf63..a6d665651655d 100644
--- a/pkgs/development/python-modules/pex/default.nix
+++ b/pkgs/development/python-modules/pex/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pex";
-  version = "2.1.85";
+  version = "2.1.87";
   format = "flit";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ABRidGtJikMIHItT21MJdiIqpA26IUN1aFMNyRVKyDA=";
+    hash = "sha256-LPOHpylnWxwEdPT3oJjbn8NkTY9tE/pMyGE8Dy7nwrU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/plugwise/default.nix b/pkgs/development/python-modules/plugwise/default.nix
index b2c8bef9d4955..7bbfbdb27d3b2 100644
--- a/pkgs/development/python-modules/plugwise/default.nix
+++ b/pkgs/development/python-modules/plugwise/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "plugwise";
-  version = "0.18.2";
+  version = "0.18.3";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "python-plugwise";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-l97GF5dZlwps2mhw84A+8IBmTmvnaJ/5MeWYdeAu4Zw=";
+    sha256 = "sha256-aNlPOgUChLFkPPZtb3o4A49uoSBjxKaq3WtuupHlmi8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/proxmoxer/default.nix b/pkgs/development/python-modules/proxmoxer/default.nix
index 33b233bd60969..9684fe84ba0fc 100644
--- a/pkgs/development/python-modules/proxmoxer/default.nix
+++ b/pkgs/development/python-modules/proxmoxer/default.nix
@@ -11,14 +11,16 @@
 
 buildPythonPackage rec {
   pname = "proxmoxer";
-  version = "1.3.0";
-  disabled = pythonOlder "3.6";
+  version = "1.3.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = version;
-    sha256 = "sha256-3EpId20WVVjXA/wxwy1peyHPcXdiT3fprABkcNBpZtE=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-FY0JLDBoKmh85VoKh3UuPPRbMAIjs3l/fZM4owniH1c=";
   };
 
   propagatedBuildInputs = [
@@ -32,9 +34,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Tests require openssh_wrapper which is outdated and not available
-  pytestFlagsArray = [ "tests/paramiko_tests.py" ];
-  pythonImportsCheck = [ "proxmoxer" ];
+  pytestFlagsArray = [
+    # Tests require openssh_wrapper which is outdated and not available
+    "tests/paramiko_tests.py"
+  ];
+
+  pythonImportsCheck = [
+    "proxmoxer"
+  ];
 
   meta = with lib; {
     description = "Python wrapper for Proxmox API v2";
diff --git a/pkgs/development/python-modules/puremagic/default.nix b/pkgs/development/python-modules/puremagic/default.nix
index fbc1bd69370e1..aac505dd8f39a 100644
--- a/pkgs/development/python-modules/puremagic/default.nix
+++ b/pkgs/development/python-modules/puremagic/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "puremagic";
-  version = "1.13";
+  version = "1.14";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-yaHw/pOqWLUtYoM3l/JB0JToLXdi04n0BSccRdbCVDw=";
+    sha256 = "sha256-PV3ybMfsmuu/hCoJEVovqF3FnqZBT6VoVyxEd115bLw=";
   };
 
   # test data not included on pypi
diff --git a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
index 36f25fce9d14a..13678edc8656a 100644
--- a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
+++ b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pyTelegramBotAPI";
-  version = "4.5.0";
+  version = "4.5.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Jonbb26MbK/LKztFkB7IlaHQm98DPYn4lYK4ikDPpaE=";
+    hash = "sha256-ClzdkvH1uz1qh/q3prfn8n0eosY3y3mUscbb4EKbmJQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyautogui/default.nix b/pkgs/development/python-modules/pyautogui/default.nix
index 08ab81ba93d35..a7b35bc5710eb 100644
--- a/pkgs/development/python-modules/pyautogui/default.nix
+++ b/pkgs/development/python-modules/pyautogui/default.nix
@@ -1,14 +1,10 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, python3Packages
-, pkgs
-, fetchzip
 , mouseinfo
 , pygetwindow
 , pymsgbox
 , pyperclip
-, pyrect
 , pyscreeze
 , pytweening
 , tkinter
diff --git a/pkgs/development/python-modules/pyglet/default.nix b/pkgs/development/python-modules/pyglet/default.nix
index db436983f3afc..029061b801082 100644
--- a/pkgs/development/python-modules/pyglet/default.nix
+++ b/pkgs/development/python-modules/pyglet/default.nix
@@ -18,13 +18,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.5.23";
+  version = "1.5.24";
   pname = "pyglet";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-3ukgIDzzBhWcUDurti84eHJocIl39clF0oM3WUt5fEY=";
+    sha256 = "sha256-W0pNXlrVSUbjFJLqxn9ykuUaZXckRkGidxgPkKAZKo4=";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/pymbolic/default.nix b/pkgs/development/python-modules/pymbolic/default.nix
index 9d6d799fc32e4..44aa012d57d04 100644
--- a/pkgs/development/python-modules/pymbolic/default.nix
+++ b/pkgs/development/python-modules/pymbolic/default.nix
@@ -2,17 +2,21 @@
 , buildPythonPackage
 , fetchPypi
 , matchpy
-, pytools
 , pytestCheckHook
+, pythonOlder
+, pytools
 }:
 
 buildPythonPackage rec {
   pname = "pymbolic";
   version = "2022.1";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-tS9FHdC5gD4D3jMgrzt85XIwcAYcbSMcACFvbaQlkBI=";
+    hash = "sha256-tS9FHdC5gD4D3jMgrzt85XIwcAYcbSMcACFvbaQlkBI=";
   };
 
   propagatedBuildInputs = [
@@ -24,10 +28,20 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  postPatch = ''
+    # pytest is a test requirement not a run-time one
+      substituteInPlace setup.py \
+        --replace '"pytest>=2.3",' ""
+  '';
+
+  pythonImportsCheck = [
+    "pymbolic"
+  ];
+
   meta = with lib; {
     description = "A package for symbolic computation";
     homepage = "https://documen.tician.de/pymbolic/";
     license = licenses.mit;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/pynetdicom/default.nix b/pkgs/development/python-modules/pynetdicom/default.nix
index 32c93b50e55e2..52860b00174b7 100644
--- a/pkgs/development/python-modules/pynetdicom/default.nix
+++ b/pkgs/development/python-modules/pynetdicom/default.nix
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pydicom";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-/JWQUtFBW4uqCbs/nUxj1pRBfTCXV4wcqTkqvzpdFrM=";
+    hash = "sha256-/JWQUtFBW4uqCbs/nUxj1pRBfTCXV4wcqTkqvzpdFrM=";
   };
 
   propagatedBuildInputs = [
@@ -41,6 +41,7 @@ buildPythonPackage rec {
     "TestEchoSCP"
     "TestEchoSCPCLI"
     "TestEventHandlingAcceptor"
+    "TestEventHandlingRequestor"
     "TestFindSCP"
     "TestFindSCPCLI"
     "TestGetSCP"
diff --git a/pkgs/development/python-modules/pyrogram/default.nix b/pkgs/development/python-modules/pyrogram/default.nix
index 2a55491ac0d71..37e6467c4a793 100644
--- a/pkgs/development/python-modules/pyrogram/default.nix
+++ b/pkgs/development/python-modules/pyrogram/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "pyrogram";
-  version = "2.0.19";
+  version = "2.0.23";
 
   disabled = pythonOlder "3.7";
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pyrogram";
     repo = "pyrogram";
     rev = "v${version}";
-    hash = "sha256-HcUawiKlPS0zqB5kEScfV82xnLG0n62owzK5upOLn4I=";
+    hash = "sha256-+qJfqC6jLfrPwXl6zR7b21jY/s9leWeBxVgMa1IDRg4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pyscf/default.nix b/pkgs/development/python-modules/pyscf/default.nix
index d08289d7573d5..5b2f3941b2b40 100644
--- a/pkgs/development/python-modules/pyscf/default.nix
+++ b/pkgs/development/python-modules/pyscf/default.nix
@@ -1,5 +1,4 @@
 { buildPythonPackage
-, python3
 , lib
 , fetchFromGitHub
 , cmake
diff --git a/pkgs/development/python-modules/pyvips/default.nix b/pkgs/development/python-modules/pyvips/default.nix
index 3974767856677..4742143edad1f 100644
--- a/pkgs/development/python-modules/pyvips/default.nix
+++ b/pkgs/development/python-modules/pyvips/default.nix
@@ -1,18 +1,26 @@
-{ buildPythonPackage, fetchFromGitHub, pytestCheckHook, glib, vips, cffi
-, pkgconfig, lib }:
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, glib
+, vips
+, cffi
+, pkgconfig  # from pythonPackages
+, pkg-config  # from pkgs
+, lib }:
 
 buildPythonPackage rec {
   pname = "pyvips";
-  version = "2.1.16";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "libvips";
     repo = "pyvips";
     rev = "v${version}";
-    sha256 = "sha256-8CeQbx3f2i0lEU0wxPeUwHlUGtzOztzTOdFNjIDy8s0=";
+    sha256 = "sha256-qMVoVzqXALhPWVKLzu+VqihHPN7J+pMhKnXdb+ow0zw=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig pkg-config ];
 
   buildInputs = [ glib vips ];
 
@@ -20,6 +28,14 @@ buildPythonPackage rec {
 
   checkInputs = [ pytestCheckHook ];
 
+  postPatch = ''
+    substituteInPlace pyvips/__init__.py \
+      --replace 'libvips.so.42' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
+      --replace 'libvips.42.dylib' '${lib.getLib vips}/lib/libvips${stdenv.hostPlatform.extensions.sharedLibrary}' \
+      --replace 'libgobject-2.0.so.0' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
+      --replace 'libgobject-2.0.dylib' '${glib.out}/lib/libgobject-2.0${stdenv.hostPlatform.extensions.sharedLibrary}' \
+  '';
+
   pythonImportsCheck = [ "pyvips" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/qcs-api-client/default.nix b/pkgs/development/python-modules/qcs-api-client/default.nix
index 41412e16f8fcf..92aaabb4e1ab0 100644
--- a/pkgs/development/python-modules/qcs-api-client/default.nix
+++ b/pkgs/development/python-modules/qcs-api-client/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "qcs-api-client";
-  version = "0.20.10";
+  version = "0.20.12";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "qcs-api-client-python";
     rev = "v${version}";
-    hash = "sha256-pBC8pFrk6iNYPS3/LKaVo+ds2okN56bxzvffEfs6SrU=";
+    hash = "sha256-4462T2WIBdWjtd51YfslYZOcJg9f0nrSOKTi2ed6WvI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/reportengine/default.nix b/pkgs/development/python-modules/reportengine/default.nix
new file mode 100644
index 0000000000000..6168f62d463d4
--- /dev/null
+++ b/pkgs/development/python-modules/reportengine/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flit
+, jinja2
+, ruamel-yaml
+, matplotlib
+, pandas
+, pandoc
+, pygments
+, blessings
+, curio
+, hypothesis
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "reportengine";
+  version = "0.30.dev0";
+  format = "pyproject";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "eb612994b7f364e872301b4569b544648e95e587d803284ddb5610efc8f2170f";
+  };
+
+  nativeBuildInputs = [ flit ];
+
+  propagatedBuildInputs = [
+    jinja2
+    ruamel-yaml
+    matplotlib
+    pandas
+    pygments
+    blessings
+    curio
+  ];
+
+  checkInputs = [
+    hypothesis
+    pandoc
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "reportengine" ];
+
+  meta = with lib; {
+    description = "A framework for declarative data analysis";
+    homepage = "https://github.com/NNPDF/reportengine/";
+    license = with licenses; [ gpl2Only ];
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/pkgs/development/python-modules/stripe/default.nix b/pkgs/development/python-modules/stripe/default.nix
index b47f3917b9258..3e21c225ed853 100644
--- a/pkgs/development/python-modules/stripe/default.nix
+++ b/pkgs/development/python-modules/stripe/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "stripe";
-  version = "2.76.0";
+  version = "3.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/T/Gk1w7YYmWcZFge2846+SQAFpZC00NQ/vjq6Rd7Kg=";
+    hash = "sha256-/rQA1woPv6VN9+Y3bI+bh2Ud7Zd81qAu4yxmGmB+JZo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/tempest/default.nix b/pkgs/development/python-modules/tempest/default.nix
index 39f7a82cd9ec8..5a88c7e1222be 100644
--- a/pkgs/development/python-modules/tempest/default.nix
+++ b/pkgs/development/python-modules/tempest/default.nix
@@ -24,7 +24,7 @@
 , hacking
 , oslotest
 , bash
-, python3
+, python
 }:
 
 buildPythonApplication rec {
@@ -76,8 +76,8 @@ buildPythonApplication rec {
     # Tests expect these applications available as such.
     mkdir -p bin
     export PATH="$PWD/bin:$PATH"
-    printf '#!${bash}/bin/bash\nexec ${python3.interpreter} -m tempest.cmd.main "$@"\n' > bin/tempest
-    printf '#!${bash}/bin/bash\nexec ${python3.interpreter} -m tempest.cmd.subunit_describe_calls "$@"\n' > bin/subunit-describe-calls
+    printf '#!${bash}/bin/bash\nexec ${python.interpreter} -m tempest.cmd.main "$@"\n' > bin/tempest
+    printf '#!${bash}/bin/bash\nexec ${python.interpreter} -m tempest.cmd.subunit_describe_calls "$@"\n' > bin/subunit-describe-calls
     chmod +x bin/*
 
     stestr --test-path tempest/tests run -e <(echo "
diff --git a/pkgs/development/python-modules/tensorflow-metadata/default.nix b/pkgs/development/python-modules/tensorflow-metadata/default.nix
index b39f1211d0cac..bdf6cc08aa64f 100644
--- a/pkgs/development/python-modules/tensorflow-metadata/default.nix
+++ b/pkgs/development/python-modules/tensorflow-metadata/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "tensorflow-metadata";
-  version = "1.7.0";
+  version = "1.8.0";
 
   src = fetchFromGitHub {
     owner = "tensorflow";
     repo = "metadata";
-    rev = "v${version}";
-    sha256 = "sha256-CQlLEVNcD9u2pojz8r1eLzYzc9i2hjdZfzfYSQ/8Q4k=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-IaLr6XYEy1EcyWi5GWzDFa7TeVZ59v8Wj5qkNdVbOqw=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/tesla-powerwall/default.nix b/pkgs/development/python-modules/tesla-powerwall/default.nix
new file mode 100644
index 0000000000000..a2a7b48937455
--- /dev/null
+++ b/pkgs/development/python-modules/tesla-powerwall/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, requests
+, pytestCheckHook
+, responses
+}:
+
+buildPythonPackage rec {
+  pname = "tesla-powerwall";
+  version = "0.3.17";
+
+  format = "setuptools";
+
+  src = fetchPypi {
+    pname = "tesla_powerwall";
+    inherit version;
+    sha256 = "09351e408e8e3cc03414944c1a487ef2178300829559e80835026acb84330cfd";
+  };
+
+  propagatedBuildInputs = [
+    requests
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    responses
+  ];
+
+  pytestFlagsArray = [
+    "tests/unit"
+  ];
+
+  pythonImportsCheck = [ "tesla_powerwall" ];
+
+  meta = {
+    description = "API for Tesla Powerwall";
+    homepage = "https://github.com/jrester/tesla_powerwall";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/timetagger/default.nix b/pkgs/development/python-modules/timetagger/default.nix
index 806687361585f..2158cac9fa3b2 100644
--- a/pkgs/development/python-modules/timetagger/default.nix
+++ b/pkgs/development/python-modules/timetagger/default.nix
@@ -1,13 +1,18 @@
 { lib
-, python3Packages
+, buildPythonPackage
 , fetchFromGitHub
+, asgineer
+, itemdb
+, jinja2
+, markdown
+, pscript
+, pyjwt
+, uvicorn
 , pytestCheckHook
 , requests
-, pytest
-, pythonOlder
 }:
 
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "timetagger";
   version = "22.4.2";
 
@@ -18,7 +23,7 @@ python3Packages.buildPythonPackage rec {
     sha256 = "sha256-CWY+5O4Y1dvKQNy1Cclqj4+U6q5vVVj9hZq41MYqXKs=";
   };
 
-  propagatedBuildInputs = with python3Packages; [
+  propagatedBuildInputs = [
     asgineer
     itemdb
     jinja2
@@ -35,12 +40,8 @@ python3Packages.buildPythonPackage rec {
   checkInputs = [
     pytestCheckHook
     requests
-    pytest
   ];
 
-  # fails with `No module named pytest` on python version 3.10
-  doCheck = pythonOlder "3.10";
-
   meta = with lib; {
     homepage = "https://timetagger.app";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/python-modules/vallox-websocket-api/default.nix b/pkgs/development/python-modules/vallox-websocket-api/default.nix
new file mode 100644
index 0000000000000..53af2f0dd9fcd
--- /dev/null
+++ b/pkgs/development/python-modules/vallox-websocket-api/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, construct
+, websockets
+, asynctest
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "vallox-websocket-api";
+  version = "2.11.0";
+
+  disabled = pythonOlder "3.6";
+
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "yozik04";
+    repo = "vallox_websocket_api";
+    rev = version;
+    hash = "sha256-wZiPrPl9ESp43PFdRPvqB2nOg+ogfaArunZOR3Q9cvs=";
+  };
+
+  propagatedBuildInputs = [
+    construct
+    websockets
+  ];
+
+  checkInputs = [
+    asynctest
+    pytestCheckHook
+  ];
+
+  meta = {
+    description = "Async API for Vallox ventilation units";
+    homepage = "https://github.com/yozik04/vallox_websocket_api";
+    license = lib.licenses.lgpl3Only;
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/development/python-modules/werkzeug/1.nix b/pkgs/development/python-modules/werkzeug/1.nix
deleted file mode 100644
index ae7ce1f2b90a7..0000000000000
--- a/pkgs/development/python-modules/werkzeug/1.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ lib, stdenv, buildPythonPackage, fetchPypi
-, itsdangerous, hypothesis
-, pytestCheckHook, requests
-, pytest-timeout
-, isPy3k
- }:
-
-buildPythonPackage rec {
-  pname = "Werkzeug";
-  version = "1.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c";
-  };
-
-  propagatedBuildInputs = [ itsdangerous ];
-  checkInputs = [ pytestCheckHook requests hypothesis pytest-timeout ];
-
-  postPatch = ''
-    # ResourceWarning causes tests to fail
-    rm tests/test_routing.py
-  '';
-
-  disabledTests = [
-    "test_save_to_pathlib_dst"
-    "test_cookie_maxsize"
-    "test_cookie_samesite_attribute"
-    "test_cookie_samesite_invalid"
-    "test_range_parsing"
-    "test_content_range_parsing"
-    "test_http_date_lt_1000"
-    "test_best_match_works"
-    "test_date_to_unix"
-    "test_easteregg"
-
-    # Seems to be a problematic test-case:
-    #
-    # > warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))
-    # E pytest.PytestUnraisableExceptionWarning: Exception ignored in: <_io.FileIO [closed]>
-    # E
-    # E Traceback (most recent call last):
-    # E   File "/nix/store/cwv8aj4vsqvimzljw5dxsxy663vjgibj-python3.9-Werkzeug-1.0.1/lib/python3.9/site-packages/werkzeug/formparser.py", line 318, in parse_multipart_headers
-    # E     return Headers(result)
-    # E ResourceWarning: unclosed file <_io.FileIO name=11 mode='rb+' closefd=True>
-    "test_basic_routing"
-    "test_merge_slashes_match"
-    "test_merge_slashes_build"
-    "TestMultiPart"
-    "TestHTTPUtility"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "test_get_machine_id"
-  ];
-
-  meta = with lib; {
-    homepage = "https://palletsprojects.com/p/werkzeug/";
-    description = "A WSGI utility library for Python";
-    license = licenses.bsd3;
-    maintainers = [ ];
-  };
-}
-
diff --git a/pkgs/development/python-modules/xmlschema/default.nix b/pkgs/development/python-modules/xmlschema/default.nix
index 8616463915e64..4e47ef7b6dc5b 100644
--- a/pkgs/development/python-modules/xmlschema/default.nix
+++ b/pkgs/development/python-modules/xmlschema/default.nix
@@ -8,7 +8,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.10.0";
+  version = "1.11.0";
   pname = "xmlschema";
 
   disabled = pythonOlder "3.6";
@@ -16,8 +16,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "sissaschool";
     repo = "xmlschema";
-    rev = "v${version}";
-    sha256 = "sha256-er6+/2fZTw+CDIwCGqTNoXi7KJ3XOsbcWYaH8A2SSgo=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-WnX4MmrHHELzUcUnP34A+kK0x4ARm6qrEN7+KQk9/Ts=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix b/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix
index c0609118fc85d..615b2677103af 100644
--- a/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix
+++ b/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/xd009642/tarpaulin";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ hugoreeves ];
+    platforms = lib.platforms.x86_64;
   };
 }
diff --git a/pkgs/development/tools/build-managers/buck/default.nix b/pkgs/development/tools/build-managers/buck/default.nix
index 0b893ea808a4e..1602b8083414d 100644
--- a/pkgs/development/tools/build-managers/buck/default.nix
+++ b/pkgs/development/tools/build-managers/buck/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "buck";
-  version = "2021.01.12.01";
+  version = "2021.05.05.01";
 
   src = fetchFromGitHub {
     owner = "facebook";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-NFiMQ+cG93R10LlkfUMzZ4TnV0uO5G+8S5TiMI6hU5o=";
+    sha256 = "sha256-mASJCLxW7320MXYUUWYfaxs9AbSdltxlae8OQsPUZJc=";
   };
 
   patches = [ ./pex-mtime.patch ];
diff --git a/pkgs/development/tools/cocogitto/default.nix b/pkgs/development/tools/cocogitto/default.nix
index 127aebccf5a58..793beb43b9909 100644
--- a/pkgs/development/tools/cocogitto/default.nix
+++ b/pkgs/development/tools/cocogitto/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cocogitto";
-  version = "4.1.0";
+  version = "5.1.0";
 
   src = fetchFromGitHub {
     owner = "oknozor";
     repo = pname;
     rev = version;
-    sha256 = "sha256-g7NBtqr7Mx7ALzij4hfoVXN3izbu4ShXYhHPYw9qnWk=";
+    sha256 = "sha256-q2WJKAXpIO+VsOFrjdyEx06yis8f2SkCuB0blUgqq0M=";
   };
 
-  cargoSha256 = "sha256-kXspbXySY5ridLUvAjv49Rm0RGt1fNsfNw9a3vd4hyI=";
+  cargoSha256 = "sha256-UArYBcUkXPYlNRLQBMwNhsd3bNgLeEwtJdzepMTt2no=";
 
   # Test depend on git configuration that would likly exist in a normal user enviroment
   # and might be failing to create the test repository it works in.
@@ -29,8 +29,6 @@ rustPlatform.buildRustPackage rec {
 
     wrapProgram $out/bin/cog \
       --prefix PATH : "${lib.makeBinPath [ git ]}"
-    wrapProgram $out/bin/coco \
-      --prefix PATH : "${lib.makeBinPath [ git ]}"
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix b/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix
deleted file mode 100644
index 3b9de427bde0d..0000000000000
--- a/pkgs/development/tools/continuous-integration/buildkite-agent/generic.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib, buildGoPackage, makeWrapper, coreutils, git, openssh, bash, gnused, gnugrep
-, src, version, hasBootstrapScript, postPatch ? ""
-, ... }:
-let
-  goPackagePath = "github.com/buildkite/agent";
-in
-buildGoPackage {
-  pname = "buildkite-agent";
-  inherit version;
-
-  inherit goPackagePath src postPatch;
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  postInstall = ''
-    ${lib.optionalString hasBootstrapScript ''
-    # Install bootstrap.sh
-    mkdir -p $out/libexec/buildkite-agent
-    cp $NIX_BUILD_TOP/go/src/${goPackagePath}/templates/bootstrap.sh $out/libexec/buildkite-agent
-    sed -e "s|#!/bin/bash|#!${bash}/bin/bash|g" -i $out/libexec/buildkite-agent/bootstrap.sh
-    ''}
-
-    # Fix binary name
-    mv $out/bin/{agent,buildkite-agent}
-
-    # These are runtime dependencies
-    wrapProgram $out/bin/buildkite-agent \
-      ${lib.optionalString hasBootstrapScript "--set BUILDKITE_BOOTSTRAP_SCRIPT_PATH $out/libexec/buildkite-agent/bootstrap.sh"} \
-      --prefix PATH : '${lib.makeBinPath [ openssh git coreutils gnused gnugrep ]}'
-  '';
-
-  meta = with lib; {
-    description = "Build runner for buildkite.com";
-    longDescription = ''
-      The buildkite-agent is a small, reliable, and cross-platform build runner
-      that makes it easy to run automated builds on your own infrastructure.
-      It’s main responsibilities are polling buildkite.com for work, running
-      build jobs, reporting back the status code and output log of the job,
-      and uploading the job's artifacts.
-    '';
-    homepage = "https://buildkite.com/docs/agent";
-    license = licenses.mit;
-    maintainers = with maintainers; [ pawelpacana zimbatm rvl ];
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix
index 21370ab9b5a39..d159a329e539d 100644
--- a/pkgs/development/tools/cue/default.nix
+++ b/pkgs/development/tools/cue/default.nix
@@ -1,35 +1,51 @@
-{ buildGoModule, fetchFromGitHub, lib }:
+{ buildGoModule, fetchFromGitHub, lib, installShellFiles, testers, cue }:
 
 buildGoModule rec {
   pname = "cue";
-  version = "0.4.2";
+  version = "0.4.3";
 
   src = fetchFromGitHub {
     owner = "cue-lang";
     repo = "cue";
     rev = "v${version}";
-    sha256 = "sha256-6HD3wcBo21Dep4ckx+oDWAC4nuTvCzlp0bwQxZox2b4=";
+    sha256 = "sha256-v9MYrijnbtJpTgRZ4hmkaekisOyujldGewCRNbkVzWw=";
   };
 
-  vendorSha256 = "sha256-tY9iwQW6cB1FgLAmkDNMrvIxR+i4aGYhNs4tepI654o=";
+  postPatch = ''
+    # Disable script tests
+    rm -f cmd/cue/cmd/script_test.go
+  '';
+
+  vendorSha256 = "sha256-jTfV8DJlr5LxS3HjOEBkVzBvZKiySrmINumXSUIq2mI=";
+
+  excludedPackages = [ "internal/ci/updatetxtar" "internal/cmd/embedpkg" "internal/cmd/qgo" "pkg/gen" ];
 
-  checkPhase = "go test ./...";
+  nativeBuildInputs = [ installShellFiles ];
 
-  subPackages = [ "cmd/cue" ];
+  ldflags = [ "-s" "-w" "-X cuelang.org/go/cmd/cue/cmd.version=${version}" ];
 
-  ldflags = [
-    "-s" "-w" "-X cuelang.org/go/cmd/cue/cmd.version=${version}"
-  ];
+  postInstall = ''
+    # Completions
+    installShellCompletion --cmd cue \
+      --bash <($out/bin/cue completion bash) \
+      --fish <($out/bin/cue completion fish) \
+      --zsh <($out/bin/cue completion zsh)
+  '';
 
   doInstallCheck = true;
   installCheckPhase = ''
     $out/bin/cue eval - <<<'a: "all good"' > /dev/null
   '';
 
-  meta = {
+  passthru.tests.version = testers.testVersion {
+    package = cue;
+    command = "cue version";
+  };
+
+  meta = with lib;  {
     description = "A data constraint language which aims to simplify tasks involving defining and using data";
     homepage = "https://cuelang.org/";
-    maintainers = [];
     license = lib.licenses.asl20;
+    maintainers = with maintainers; [ aaronjheng ];
   };
 }
diff --git a/pkgs/development/tools/electron/generic.nix b/pkgs/development/tools/electron/generic.nix
index 05d9facf60be0..72cce135e04e3 100644
--- a/pkgs/development/tools/electron/generic.nix
+++ b/pkgs/development/tools/electron/generic.nix
@@ -63,6 +63,7 @@ let
   electronLibPath = with lib; makeLibraryPath (
     [ libuuid at-spi2-atk at-spi2-core libappindicator-gtk3 ]
     ++ optionals (versionAtLeast version "9.0.0") [ libdrm mesa ]
+    ++ optionals (versionOlder version "10.0.0") [ libXScrnSaver ]
     ++ optionals (versionAtLeast version "11.0.0") [ libxkbcommon ]
     ++ optionals (versionAtLeast version "12.0.0") [ libxshmfence ]
     ++ optionals (versionAtLeast version "17.0.0") [ libglvnd ]
@@ -95,9 +96,7 @@ let
         $out/lib/electron/electron \
         ${lib.optionalString (lib.versionAtLeast version "15.0.0") "$out/lib/electron/chrome_crashpad_handler" }
 
-      wrapProgram $out/lib/electron/electron \
-        --prefix LD_PRELOAD : ${lib.makeLibraryPath [ libXScrnSaver ]}/libXss.so.1 \
-        "''${gappsWrapperArgs[@]}"
+      wrapProgram $out/lib/electron/electron "''${gappsWrapperArgs[@]}"
     '';
   };
 
diff --git a/pkgs/development/tools/jmespath/default.nix b/pkgs/development/tools/jmespath/default.nix
index c9510a35d10f8..6224a2def078a 100644
--- a/pkgs/development/tools/jmespath/default.nix
+++ b/pkgs/development/tools/jmespath/default.nix
@@ -1,18 +1,24 @@
-{ lib, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "jmespath";
-  version = "0.2.2";
-  rev = version;
-
-  goPackagePath = "github.com/jmespath/go-jmespath";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
-    inherit rev;
     owner = "jmespath";
     repo = "go-jmespath";
-    sha256 = "0f4j0m44limnjd6q5fk152g6jq2a5cshcdms4p3a1br8pl9wp5fb";
+    rev = "v${version}";
+    sha256 = "sha256-djA/7TCmAqCsht28b1itoiWd8Mtdsn/5uLxyT23K/qM=";
   };
+
+  vendorSha256 = "sha256-Q12muprcKB7fCxemESb4sGPyYIdmgOt3YXVUln7oabw=";
+
+  excludedPackages = [
+    "./internal/testify"
+  ];
+
+  ldflags = [ "-s" "-w" ];
+
   meta = with lib; {
     description = "A JMESPath implementation in Go";
     homepage = "https://github.com/jmespath/go-jmespath";
diff --git a/pkgs/development/tools/rust/cargo-expand/default.nix b/pkgs/development/tools/rust/cargo-expand/default.nix
index de75edf5e7305..d448b9a88f863 100644
--- a/pkgs/development/tools/rust/cargo-expand/default.nix
+++ b/pkgs/development/tools/rust/cargo-expand/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-expand";
-  version = "1.0.19";
+  version = "1.0.21";
 
   src = fetchFromGitHub {
     owner = "dtolnay";
     repo = pname;
     rev = version;
-    sha256 = "sha256-+LKZ0pbSlqY8rbz96HZ59XYKsSJDMOrJMxblXNj74Yw=";
+    sha256 = "sha256-hxG7e5JBDv79eA7IQEdU8kpvE0B69Gqc+aPdCoc6Uf4=";
   };
 
-  cargoSha256 = "sha256-ZEHc67jgLSZV6JH5/owAGTxxnbnYnx2fIUf0mQ14qvg=";
+  cargoSha256 = "sha256-7CMNJb/HGHPP4CIBEYK+2HC/JAce25qGI86NkSvyxos=";
 
   buildInputs = lib.optional stdenv.isDarwin libiconv;