summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-04-08 17:14:31 +0200
committerJan Tojnar <jtojnar@gmail.com>2021-04-08 17:14:31 +0200
commit625ce6c7f66c0b2ccae30f95cdd9e48feed8561c (patch)
treec0c5a9d3510dc4dfa3008b9c35dbfea234894e81 /pkgs/development
parent97490e67836cda5e181caf0a49f1e2d7ca31949f (diff)
parentbf6abedefbebbec8f54cda97bd33bc06c5f46ed5 (diff)
downloadnixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.tar
nixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.tar.gz
nixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.tar.bz2
nixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.tar.lz
nixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.tar.xz
nixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.tar.zst
nixpkgs-625ce6c7f66c0b2ccae30f95cdd9e48feed8561c.zip
Merge branch 'staging-next' into staging
In python-packages.nix, resolve conflict between 50d604314e736d24dc7aa6749b5482c859147b17 and 187d0371ab3220ee40da1f616e4c48d85ac28986.
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/go/1.15.nix4
-rw-r--r--pkgs/development/compilers/reason/default.nix8
-rw-r--r--pkgs/development/interpreters/erlang/R23.nix4
-rw-r--r--pkgs/development/interpreters/ruby/default.nix6
-rw-r--r--pkgs/development/interpreters/ruby/patchsets.nix2
-rw-r--r--pkgs/development/libraries/pipewire/default.nix10
-rw-r--r--pkgs/development/libraries/science/math/mkl/default.nix172
-rw-r--r--pkgs/development/libraries/science/math/mkl/test/default.nix18
-rw-r--r--pkgs/development/libraries/x264/default.nix6
-rw-r--r--pkgs/development/ocaml-modules/merlin-extend/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/ocamlnet/default.nix8
-rw-r--r--pkgs/development/ocaml-modules/sqlite3/default.nix5
-rw-r--r--pkgs/development/python-modules/aiodiscover/default.nix51
-rw-r--r--pkgs/development/python-modules/async-dns/default.nix52
-rw-r--r--pkgs/development/python-modules/aws-adfs/default.nix4
-rw-r--r--pkgs/development/python-modules/awslambdaric/default.nix35
-rw-r--r--pkgs/development/python-modules/boto3/default.nix4
-rw-r--r--pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--pkgs/development/python-modules/fido2/default.nix10
-rw-r--r--pkgs/development/python-modules/gdown/default.nix3
-rw-r--r--pkgs/development/python-modules/homepluscontrol/default.nix43
-rw-r--r--pkgs/development/python-modules/internetarchive/default.nix7
-rw-r--r--pkgs/development/python-modules/localimport/default.nix23
-rw-r--r--pkgs/development/python-modules/makefun/default.nix32
-rw-r--r--pkgs/development/python-modules/nodepy-runtime/default.nix47
-rw-r--r--pkgs/development/python-modules/pubnub/default.nix17
-rw-r--r--pkgs/development/python-modules/pysmappee/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-raises/default.nix30
-rw-r--r--pkgs/development/python-modules/pywebview/default.nix40
-rw-r--r--pkgs/development/python-modules/requests-aws4auth/default.nix5
-rw-r--r--pkgs/development/python-modules/ronin/default.nix34
-rw-r--r--pkgs/development/python-modules/screenlogicpy/default.nix28
-rw-r--r--pkgs/development/python-modules/solo-python/default.nix3
-rw-r--r--pkgs/development/python-modules/wakeonlan/default.nix47
-rw-r--r--pkgs/development/python-modules/xknx/default.nix4
-rw-r--r--pkgs/development/python-modules/yalexs/default.nix58
-rw-r--r--pkgs/development/ruby-modules/gem-config/default.nix6
-rw-r--r--pkgs/development/tools/analysis/radare2/cutter.nix63
-rw-r--r--pkgs/development/tools/analysis/radare2/default.nix186
-rwxr-xr-xpkgs/development/tools/analysis/radare2/update.py53
-rw-r--r--pkgs/development/tools/analysis/rizin/cutter.nix46
-rw-r--r--pkgs/development/tools/analysis/rizin/default.nix71
-rw-r--r--pkgs/development/tools/build-managers/gradle/default.nix54
-rw-r--r--pkgs/development/tools/build-managers/rebar3/default.nix43
-rw-r--r--pkgs/development/tools/build-managers/sbt-extras/default.nix6
-rw-r--r--pkgs/development/tools/continuous-integration/jenkins/default.nix4
-rw-r--r--pkgs/development/tools/continuous-integration/laminar/default.nix2
-rw-r--r--pkgs/development/tools/cue/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-feature/default.nix24
49 files changed, 978 insertions, 416 deletions
diff --git a/pkgs/development/compilers/go/1.15.nix b/pkgs/development/compilers/go/1.15.nix
index d44f28f8929..7f7870b7e06 100644
--- a/pkgs/development/compilers/go/1.15.nix
+++ b/pkgs/development/compilers/go/1.15.nix
@@ -11,7 +11,7 @@ let
 
   inherit (lib) optionals optionalString;
 
-  version = "1.15.10";
+  version = "1.15.11";
 
   go_bootstrap = buildPackages.callPackage ./bootstrap.nix { };
 
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://dl.google.com/go/go${version}.src.tar.gz";
-    sha256 = "0rfx20y13cflv68nn8jci1fx34vfdn7qgyavm5hivd0h15pcmny1";
+    sha256 = "1rb1s130yqy80kcl140k5a53xhvw4fmrpmclvqygcv67si0j8nzj";
   };
 
   # perl is used for testing go vet
diff --git a/pkgs/development/compilers/reason/default.nix b/pkgs/development/compilers/reason/default.nix
index 2807ddb6b5f..2293c83cc02 100644
--- a/pkgs/development/compilers/reason/default.nix
+++ b/pkgs/development/compilers/reason/default.nix
@@ -3,14 +3,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "ocaml${ocaml.version}-reason-${version}";
-  version = "3.6.2";
+  pname = "ocaml${ocaml.version}-reason";
+  version = "3.7.0";
 
   src = fetchFromGitHub {
     owner = "facebook";
     repo = "reason";
-    rev = "6017d6dd930f4989177c3f7c3c20cffbaabaa49a";
-    sha256 = "17wkcl3r0ckhlki9fk0mcwbnd7kpkqm1h0xjw2j2x1097n470df0";
+    rev = "daa11255cb4716ce1c370925251021bd6e3bd974";
+    sha256 = "0m6ldrci1a4j0qv1cbwh770zni3al8qxsphl353rv19f6rblplhs";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/interpreters/erlang/R23.nix b/pkgs/development/interpreters/erlang/R23.nix
index 8c07c09f221..0e8e402ab3b 100644
--- a/pkgs/development/interpreters/erlang/R23.nix
+++ b/pkgs/development/interpreters/erlang/R23.nix
@@ -3,6 +3,6 @@
 # How to obtain `sha256`:
 # nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
 mkDerivation {
-  version = "23.2.6";
-  sha256 = "sha256-G930sNbr8h5ryI/IE+J6OKhR5ij68ZhGo1YIEjSOwGU=";
+  version = "23.3.1";
+  sha256 = "1nx9yv3l8hf37js7pqs536ywy786mxhkqba1jsmy1b3yc6xki1mq";
 }
diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix
index 337411f6c28..4b185f038a1 100644
--- a/pkgs/development/interpreters/ruby/default.nix
+++ b/pkgs/development/interpreters/ruby/default.nix
@@ -265,10 +265,10 @@ in {
   };
 
   ruby_3_0 = generic {
-    version = rubyVersion "3" "0" "0" "";
+    version = rubyVersion "3" "0" "1" "";
     sha256 = {
-      src = "0a4fmxafxvkg1m738g2lmkhipwnmd96kzqy1m9kvk3n1l50x2gm1";
-      git = "0fvnxv97m94nridlc5nvvrlg53pr5g042dkfc5ysd327s7xj4cjp";
+      src = "09vpnxxcxc46qv40xbxr9xkdpbgb0imdy25l2vpsxxlr47djb61n";
+      git = "0vricyhnnczcbsgvz65pdhi9yx1i34zarbjlc5y5mcmj01y9r7ar";
     };
   };
 }
diff --git a/pkgs/development/interpreters/ruby/patchsets.nix b/pkgs/development/interpreters/ruby/patchsets.nix
index 2a26af52a40..964e0a4e28a 100644
--- a/pkgs/development/interpreters/ruby/patchsets.nix
+++ b/pkgs/development/interpreters/ruby/patchsets.nix
@@ -11,7 +11,7 @@
     "${patchSet}/patches/ruby/2.7/head/railsexpress/02-improve-gc-stats.patch"
     "${patchSet}/patches/ruby/2.7/head/railsexpress/03-more-detailed-stacktrace.patch"
   ];
-  "3.0.0" = ops useRailsExpress [
+  "3.0.1" = ops useRailsExpress [
     "${patchSet}/patches/ruby/3.0/head/railsexpress/01-improve-gc-stats.patch"
     "${patchSet}/patches/ruby/3.0/head/railsexpress/02-malloc-trim.patch"
   ];
diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix
index d685bde35ed..47a85c36c23 100644
--- a/pkgs/development/libraries/pipewire/default.nix
+++ b/pkgs/development/libraries/pipewire/default.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchFromGitLab
-, fetchpatch
 , removeReferencesTo
 , meson
 , ninja
@@ -43,7 +42,7 @@ let
 
   self = stdenv.mkDerivation rec {
     pname = "pipewire";
-    version = "0.3.24";
+    version = "0.3.25";
 
     outputs = [
       "out"
@@ -61,7 +60,7 @@ let
       owner = "pipewire";
       repo = "pipewire";
       rev = version;
-      hash = "sha256:PcY20FTtUtJYAwCscEs+HfkdwDksYPFZIVTVORP1ooI=";
+      hash = "sha256:EbXWcf6QLtbvm6/eXBI+PF2sTw2opYfmc+H/SMDEH1U=";
     };
 
     patches = [
@@ -75,11 +74,6 @@ let
       ./0070-installed-tests-path.patch
       # Add flag to specify configuration directory (different from the installation directory).
       ./0080-pipewire-config-dir.patch
-      # Fix JSON parser.
-      (fetchpatch {
-        url = "https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/34800dc0191a4ee7a329eeb361a6f2ccf4a75176.diff";
-        sha256 = "0dzxzr408qqzf0252nwg14709p1lb2k826i3kdzg6djq8w98d5aj";
-      })
     ];
 
     nativeBuildInputs = [
diff --git a/pkgs/development/libraries/science/math/mkl/default.nix b/pkgs/development/libraries/science/math/mkl/default.nix
index 34fea3162a9..1f60f4d9538 100644
--- a/pkgs/development/libraries/science/math/mkl/default.nix
+++ b/pkgs/development/libraries/science/math/mkl/default.nix
@@ -17,40 +17,57 @@
 let
   # Release notes and download URLs are here:
   # https://registrationcenter.intel.com/en/products/
-  version = "${year}.${spot}.${rel}";
+  version = "${mklVersion}.${rel}";
 
   # Darwin is pinned to 2019.3 because the DMG does not unpack; see here for details:
   # https://github.com/matthewbauer/undmg/issues/4
-  year = if stdenvNoCC.isDarwin then "2019" else "2020";
-  spot = if stdenvNoCC.isDarwin then "3" else "4";
-  rel = if stdenvNoCC.isDarwin then "199" else "304";
+  mklVersion = if stdenvNoCC.isDarwin then "2019.3" else "2021.1.1";
+  rel = if stdenvNoCC.isDarwin then "199" else "52";
 
-  # Replace `openmpSpot` by `spot` after 2020.
-  openmpSpot = if stdenvNoCC.isDarwin then spot else "3";
+  # Intel openmp uses its own versioning.
+  openmpVersion = if stdenvNoCC.isDarwin then "19.0.3" else "19.1.3";
+  openmpRel = "189";
 
-  rpm-ver = "${year}.${spot}-${rel}-${year}.${spot}-${rel}";
-
-  # Intel openmp uses its own versioning, but shares the spot release patch.
-  openmp = if stdenvNoCC.isDarwin then "19.0" else "19.1";
-  openmp-ver = "${openmp}.${openmpSpot}-${rel}-${openmp}.${openmpSpot}-${rel}";
+  # Thread Building Blocks release.
+  tbbRel = "119";
 
   shlibExt = stdenvNoCC.hostPlatform.extensions.sharedLibrary;
 
-in stdenvNoCC.mkDerivation {
+  oneapi-mkl = fetchurl {
+    url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-${mklVersion}-${mklVersion}-${rel}.x86_64.rpm";
+    hash = "sha256-G2Y7iX3UN2YUJhxcMM2KmhONf0ls9owpGlOo8hHOfqA=";
+  };
+
+  oneapi-mkl-common = fetchurl {
+    url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-common-${mklVersion}-${mklVersion}-${rel}.noarch.rpm";
+    hash = "sha256-HrMt2OcPIRxM8EL8SPjYTyuHJnC7RhPFUrvLhRH+7vc=";
+  };
+
+  oneapi-mkl-common-devel = fetchurl {
+    url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-common-devel-${mklVersion}-${mklVersion}-${rel}.noarch.rpm";
+    hash = "sha256-XDE2WFJzEcpujFmO2AvqQdipZMvKB6/G+ksBe2sE438=";
+  };
+
+  oneapi-mkl-devel = fetchurl {
+    url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-devel-${mklVersion}-${mklVersion}-${rel}.x86_64.rpm";
+    hash = "sha256-GhUJZ0Vr/ZXp10maie29/5ryU7zzX3F++wRCuuFcE0s=";
+  };
+
+  oneapi-openmp = fetchurl {
+    url = "https://yum.repos.intel.com/oneapi/intel-oneapi-openmp-${mklVersion}-${mklVersion}-${openmpRel}.x86_64.rpm";
+    hash = "sha256-yP2c4aQAFNRffjLoIZgWXLcNXbiez8smsgu2wXitefU=";
+  };
+
+  oneapi-tbb = fetchurl {
+    url = "https://yum.repos.intel.com/oneapi/intel-oneapi-tbb-${mklVersion}-${mklVersion}-${tbbRel}.x86_64.rpm";
+    hash = "sha256-K1BvhGoGVU2Zwy5vg2ZvJWBrSdh5uQwo0znt5039X0A=";
+  };
+
+in stdenvNoCC.mkDerivation ({
   pname = "mkl";
   inherit version;
 
-  src = if stdenvNoCC.isDarwin
-    then
-      (fetchurl {
-        url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15235/m_mkl_${version}.dmg";
-        sha256 = "14b3ciz7995sqcd6jz7hc8g2x4zwvqxmgxgni46vrlb7n523l62f";
-      })
-    else
-      (fetchurl {
-        url = "https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16917/l_mkl_${version}.tgz";
-        hash = "sha256-IxTUZTaXTb0I8qTk+emhVdx+eeJ5jHTn3fqtAKWRfqU=";
-      });
+  dontUnpack = stdenvNoCC.isLinux;
 
   nativeBuildInputs = [ validatePkgConfig ] ++ (if stdenvNoCC.isDarwin
     then
@@ -63,30 +80,15 @@ in stdenvNoCC.mkDerivation {
       tar xzvf $f
     done
   '' else ''
-    # Common stuff
-    rpmextract rpm/intel-mkl-core-${rpm-ver}.x86_64.rpm
-    rpmextract rpm/intel-mkl-common-c-${rpm-ver}.noarch.rpm
-    rpmextract rpm/intel-mkl-common-f-${rpm-ver}.noarch.rpm
-
-    # Dynamic libraries
-    rpmextract rpm/intel-mkl-cluster-rt-${rpm-ver}.x86_64.rpm
-    rpmextract rpm/intel-mkl-core-rt-${rpm-ver}.x86_64.rpm
-    rpmextract rpm/intel-mkl-gnu-f-rt-${rpm-ver}.x86_64.rpm
-    rpmextract rpm/intel-mkl-gnu-rt-${rpm-ver}.x86_64.rpm
-
-    # Intel OpenMP runtime
-    rpmextract rpm/intel-openmp-${openmp-ver}.x86_64.rpm
-  '' + (if enableStatic then ''
-    # Static libraries
-    rpmextract rpm/intel-mkl-cluster-${rpm-ver}.x86_64.rpm
-    rpmextract rpm/intel-mkl-gnu-${rpm-ver}.x86_64.rpm
-    rpmextract rpm/intel-mkl-gnu-f-${rpm-ver}.x86_64.rpm
-  '' else ''
-    # Take care of installing dynamic-only PkgConfig files during the installPhase
-  ''
-  );
+    rpmextract ${oneapi-mkl}
+    rpmextract ${oneapi-mkl-common}
+    rpmextract ${oneapi-mkl-common-devel}
+    rpmextract ${oneapi-mkl-devel}
+    rpmextract ${oneapi-openmp}
+    rpmextract ${oneapi-tbb}
+  '';
 
-  installPhase = ''
+  installPhase = if stdenvNoCC.isDarwin then ''
     for f in $(find . -name 'mkl*.pc') ; do
       bn=$(basename $f)
       substituteInPlace $f \
@@ -95,42 +97,54 @@ in stdenvNoCC.mkDerivation {
         --replace "lib/intel64_lin" "lib" \
         --replace "lib/intel64" "lib"
     done
-
     for f in $(find opt/intel -name 'mkl*iomp.pc') ; do
       substituteInPlace $f \
         --replace "../compiler/lib" "lib"
     done
-  '' +
-    (if stdenvNoCC.isDarwin then ''
-      mkdir -p $out/lib
 
-      cp -r compilers_and_libraries_${version}/mac/mkl/include $out/
+    mkdir -p $out/lib
+
+    cp -r compilers_and_libraries_${version}/mac/mkl/include $out/
 
-      cp -r compilers_and_libraries_${version}/licensing/mkl/en/license.txt $out/lib/
-      cp -r compilers_and_libraries_${version}/mac/compiler/lib/* $out/lib/
-      cp -r compilers_and_libraries_${version}/mac/mkl/lib/* $out/lib/
-      cp -r compilers_and_libraries_${version}/mac/tbb/lib/* $out/lib/
+    cp -r compilers_and_libraries_${version}/licensing/mkl/en/license.txt $out/lib/
+    cp -r compilers_and_libraries_${version}/mac/compiler/lib/* $out/lib/
+    cp -r compilers_and_libraries_${version}/mac/mkl/lib/* $out/lib/
+    cp -r compilers_and_libraries_${version}/mac/tbb/lib/* $out/lib/
 
-      mkdir -p $out/lib/pkgconfig
-      cp -r compilers_and_libraries_${version}/mac/mkl/bin/pkgconfig/* $out/lib/pkgconfig
+    mkdir -p $out/lib/pkgconfig
+    cp -r compilers_and_libraries_${version}/mac/mkl/bin/pkgconfig/* $out/lib/pkgconfig
   '' else ''
-      mkdir -p $out/lib
-      cp license.txt $out/lib/
+    for f in $(find . -name 'mkl*.pc') ; do
+      bn=$(basename $f)
+      substituteInPlace $f \
+        --replace $\{MKLROOT} "$out" \
+        --replace "lib/intel64" "lib"
 
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/include $out/
+      sed -r -i "s|^prefix=.*|prefix=$out|g" $f
+    done
 
-      mkdir -p $out/lib/pkgconfig
-  '') +
+    for f in $(find opt/intel -name 'mkl*iomp.pc') ; do
+      substituteInPlace $f --replace "../compiler/lib" "lib"
+    done
+
+    # License
+    install -Dm0655 -t $out/share/doc/mkl opt/intel/oneapi/mkl/2021.1.1/licensing/en/license.txt
+
+    # Dynamic libraries
+    install -Dm0755 -t $out/lib opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.so*
+    install -Dm0755 -t $out/lib opt/intel/oneapi/compiler/2021.1.1/linux/compiler/lib/intel64_lin/*.so*
+    install -Dm0755 -t $out/lib opt/intel/oneapi/tbb/2021.1.1/lib/intel64/gcc4.8/*.so*
+
+    # Headers
+    cp -r opt/intel/oneapi/mkl/${mklVersion}/include $out/
+  '' +
     (if enableStatic then ''
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/compiler/lib/intel64_lin/* $out/lib/
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/lib/intel64_lin/* $out/lib/
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/bin/pkgconfig/* $out/lib/pkgconfig
+      install -Dm0644 -t $out/lib opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.a
+      install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/2021.1.1/tools/pkgconfig/*.pc
     '' else ''
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/compiler/lib/intel64_lin/*.so* $out/lib/
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/lib/intel64_lin/*.so* $out/lib/
-      cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/bin/pkgconfig/*dynamic*.pc $out/lib/pkgconfig
+      cp opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.so* $out/lib
+      install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/2021.1.1/tools/pkgconfig/*dynamic*.pc
     '') + ''
-
     # Setup symlinks for blas / lapack
     ln -s $out/lib/libmkl_rt${shlibExt} $out/lib/libblas${shlibExt}
     ln -s $out/lib/libmkl_rt${shlibExt} $out/lib/libcblas${shlibExt}
@@ -159,13 +173,18 @@ in stdenvNoCC.mkDerivation {
   dontStrip = true;
   dontPatchELF = true;
 
-  passthru.tests.pkg-config = callPackage ./test { };
+  passthru.tests = {
+    pkg-config-dynamic-iomp = callPackage ./test { enableStatic = false; execution = "iomp"; };
+    pkg-config-static-iomp = callPackage ./test { enableStatic = true; execution = "iomp"; };
+    pkg-config-dynamic-seq = callPackage ./test { enableStatic = false; execution = "seq"; };
+    pkg-config-static-seq = callPackage ./test { enableStatic = true; execution = "seq"; };
+  };
 
   meta = with lib; {
-    description = "Intel Math Kernel Library";
+    description = "Intel OneAPI Math Kernel Library";
     longDescription = ''
-      Intel Math Kernel Library (Intel MKL) optimizes code with minimal effort
-      for future generations of Intel processors. It is compatible with your
+      Intel OneAPI Math Kernel Library (Intel oneMKL) optimizes code with minimal
+      effort for future generations of Intel processors. It is compatible with your
       choice of compilers, languages, operating systems, and linking and
       threading models.
     '';
@@ -174,4 +193,9 @@ in stdenvNoCC.mkDerivation {
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
     maintainers = with maintainers; [ bhipple ];
   };
-}
+} // lib.optionalAttrs stdenvNoCC.isDarwin {
+  src = fetchurl {
+    url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15235/m_mkl_${version}.dmg";
+    sha256 = "14b3ciz7995sqcd6jz7hc8g2x4zwvqxmgxgni46vrlb7n523l62f";
+  };
+})
diff --git a/pkgs/development/libraries/science/math/mkl/test/default.nix b/pkgs/development/libraries/science/math/mkl/test/default.nix
index 688c0ec7c39..cb3355260d1 100644
--- a/pkgs/development/libraries/science/math/mkl/test/default.nix
+++ b/pkgs/development/libraries/science/math/mkl/test/default.nix
@@ -1,6 +1,14 @@
-{ stdenv, pkg-config, mkl }:
+{ stdenv
+, pkg-config
+, mkl
 
-stdenv.mkDerivation {
+, enableStatic ? false
+, execution ? "seq"
+}:
+
+let
+  linkType = if enableStatic then "static" else "dynamic";
+in stdenv.mkDerivation {
   pname = "mkl-test";
   version = mkl.version;
 
@@ -8,19 +16,19 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ mkl ];
+  buildInputs = [ (mkl.override { inherit enableStatic; }) ];
 
   doCheck = true;
 
   buildPhase = ''
     # Check regular Nix build.
-    gcc $(pkg-config --cflags --libs mkl-dynamic-ilp64-seq) test.c -o test
+    gcc test.c -o test $(pkg-config --cflags --libs mkl-${linkType}-ilp64-${execution})
 
     # Clear flags to ensure that we are purely relying on options
     # provided by pkg-config.
     NIX_CFLAGS_COMPILE="" \
     NIX_LDFLAGS="" \
-      gcc $(pkg-config --cflags --libs mkl-dynamic-ilp64-seq) test.c -o test
+      gcc test.c -o test $(pkg-config --cflags --libs mkl-${linkType}-ilp64-${execution})
   '';
 
   installPhase = ''
diff --git a/pkgs/development/libraries/x264/default.nix b/pkgs/development/libraries/x264/default.nix
index 93d0b42a889..5b82c594b08 100644
--- a/pkgs/development/libraries/x264/default.nix
+++ b/pkgs/development/libraries/x264/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, lib, fetchurl, nasm }:
+{ stdenv, lib, fetchurl, nasm
+, enableShared ? !stdenv.hostPlatform.isStatic
+ }:
 
 stdenv.mkDerivation rec {
   pname = "x264";
@@ -28,7 +30,7 @@ stdenv.mkDerivation rec {
     export AS=$CC
   '';
 
-  configureFlags = [ "--enable-shared" ]
+  configureFlags = lib.optional enableShared "--enable-shared"
     ++ lib.optional (!stdenv.isi686) "--enable-pic"
     ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "--cross-prefix=${stdenv.cc.targetPrefix}";
 
diff --git a/pkgs/development/ocaml-modules/merlin-extend/default.nix b/pkgs/development/ocaml-modules/merlin-extend/default.nix
index 752fbc039fa..6d4fcad0977 100644
--- a/pkgs/development/ocaml-modules/merlin-extend/default.nix
+++ b/pkgs/development/ocaml-modules/merlin-extend/default.nix
@@ -4,6 +4,8 @@ buildDunePackage rec {
   pname = "merlin-extend";
   version = "0.6";
 
+  useDune2 = true;
+
   src = fetchurl {
     url = "https://github.com/let-def/merlin-extend/releases/download/v${version}/merlin-extend-v${version}.tbz";
     sha256 = "0hvc4mz92x3rl2dxwrhvhzwl4gilnyvvwcqgr45vmdpyjyp3dwn2";
diff --git a/pkgs/development/ocaml-modules/ocamlnet/default.nix b/pkgs/development/ocaml-modules/ocamlnet/default.nix
index 1da80a2202d..bdbbf1d8c67 100644
--- a/pkgs/development/ocaml-modules/ocamlnet/default.nix
+++ b/pkgs/development/ocaml-modules/ocamlnet/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, pkg-config, ncurses, ocaml, findlib, ocaml_pcre, camlzip
+{ stdenv, lib, fetchurl, pkg-config, which, ncurses, ocaml, findlib, ocaml_pcre, camlzip
 , gnutls, nettle
 }:
 
@@ -8,14 +8,14 @@ else
 
 stdenv.mkDerivation rec {
   name = "ocaml${ocaml.version}-ocamlnet-${version}";
-  version = "4.1.8";
+  version = "4.1.9";
 
   src = fetchurl {
     url = "http://download.camlcity.org/download/ocamlnet-${version}.tar.gz";
-    sha256 = "1x703mjqsv9nvffnkj5i36ij2s5zfvxxll2z1qj6a7p428b2yfnm";
+    sha256 = "1vlwxjxr946gdl61a1d7yk859cijq45f60dhn54ik3w4g6cx33pr";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ pkg-config which ];
   buildInputs = [ ncurses ocaml findlib ocaml_pcre camlzip gnutls nettle ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/sqlite3/default.nix b/pkgs/development/ocaml-modules/sqlite3/default.nix
index 1b8f9d629e3..90b469288c7 100644
--- a/pkgs/development/ocaml-modules/sqlite3/default.nix
+++ b/pkgs/development/ocaml-modules/sqlite3/default.nix
@@ -1,8 +1,9 @@
-{ lib, fetchurl, sqlite, pkg-config, buildDunePackage }:
+{ lib, fetchurl, sqlite, pkg-config, buildDunePackage, dune-configurator }:
 
 buildDunePackage rec {
   pname = "sqlite3";
   version = "5.0.2";
+  useDune2 = true;
   minimumOCamlVersion = "4.05";
 
   src = fetchurl {
@@ -11,7 +12,7 @@ buildDunePackage rec {
   };
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ sqlite ];
+  buildInputs = [ dune-configurator sqlite ];
 
   meta = with lib; {
     homepage = "http://mmottl.github.io/sqlite3-ocaml/";
diff --git a/pkgs/development/python-modules/aiodiscover/default.nix b/pkgs/development/python-modules/aiodiscover/default.nix
new file mode 100644
index 00000000000..923be510c45
--- /dev/null
+++ b/pkgs/development/python-modules/aiodiscover/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, async-dns
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, ifaddr
+, pyroute2
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "aiodiscover";
+  version = "1.3.2";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0qg2wm6ddsfai788chylr5ynrvakwg91q3dszz7dxzbkfdcxixj3";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "remove-entry_point.patch";
+      url = "https://github.com/bdraco/aiodiscover/commit/4c497fb7d4c8685a78209c710e92e0bd17f46bb2.patch";
+      sha256 = "0py9alhg6qdncbn6a04mrnjhs4j19kg759dv69knpqzryikcfa63";
+    })
+  ];
+
+  propagatedBuildInputs = [
+    async-dns
+    pyroute2
+    ifaddr
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py --replace '"pytest-runner>=5.2",' ""
+  '';
+
+  # Tests require access to /etc/resolv.conf
+  # pythonImportsCheck doesn't work as async-dns wants to create its CONFIG_DIR
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python module to discover hosts via ARP and PTR lookup";
+    homepage = "https://github.com/bdraco/aiodiscover";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/async-dns/default.nix b/pkgs/development/python-modules/async-dns/default.nix
new file mode 100644
index 00000000000..fdf240f5ba9
--- /dev/null
+++ b/pkgs/development/python-modules/async-dns/default.nix
@@ -0,0 +1,52 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, poetry-core
+, python
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "async-dns";
+  version = "1.1.9";
+  disabled = pythonOlder "3.6";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "gera2ld";
+    repo = "async_dns";
+    rev = "v${version}";
+    sha256 = "1z8j0s3dwcyavarhx41q75k1cmfzmwiqdh4svv3v15np26cywyag";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  patches = [
+    # Switch to poetry-core, https://github.com/gera2ld/async_dns/pull/22
+    # Can be remove for async-dns>1.1.9
+    (fetchpatch {
+      name = "switch-to-poetry-core.patch";
+      url = "https://github.com/gera2ld/async_dns/commit/25fee497aae3bde0ddf9f8804d249a27edbe607e.patch";
+      sha256 = "0w4zlppnp1a2q1wasc95ymqx3djswl32y5nw6fvz3nn8jg4gc743";
+    })
+  ];
+
+  checkPhase = ''
+    export HOME=$TMPDIR
+    # Test needs network access
+    rm tests/test_resolver.py
+    ${python.interpreter} -m unittest
+  '';
+
+  pythonImportsCheck = [ "async_dns" ];
+
+  meta = with lib; {
+    description = "Python DNS library";
+    homepage = "https://github.com/gera2ld/async_dns";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aws-adfs/default.nix b/pkgs/development/python-modules/aws-adfs/default.nix
index 2f9cd1a0b19..461ce9d90d9 100644
--- a/pkgs/development/python-modules/aws-adfs/default.nix
+++ b/pkgs/development/python-modules/aws-adfs/default.nix
@@ -44,7 +44,9 @@ buildPythonPackage rec {
 
   # Relax version constraint
   postPatch = ''
-    sed -i 's/coverage < 4/coverage/' setup.py
+    substituteInPlace setup.py \
+      --replace 'coverage < 4' 'coverage' \
+      --replace 'fido2>=0.8.1,<0.9.0' 'fido2>=0.8.1,<1.0.0'
   '';
 
   # Test suite writes files to $HOME/.aws/, or /homeless-shelter if unset
diff --git a/pkgs/development/python-modules/awslambdaric/default.nix b/pkgs/development/python-modules/awslambdaric/default.nix
new file mode 100644
index 00000000000..ff26bb6245d
--- /dev/null
+++ b/pkgs/development/python-modules/awslambdaric/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy27, pytestCheckHook, autoconf
+, automake, cmake, gcc, libtool, perl, simplejson }:
+
+buildPythonPackage rec {
+  pname = "awslambdaric";
+  version = "1.0.0";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "aws";
+    repo = "aws-lambda-python-runtime-interface-client";
+    rev = "v${version}";
+    sha256 = "13v1lsp3lxbqknvlb3gvljjf3wyrx5jg8sf9yfiaj1sm8pb8pmrf";
+  };
+
+  propagatedBuildInputs = [ simplejson ];
+
+  nativeBuildInputs = [ autoconf automake cmake libtool perl ];
+
+  buildInputs = [ gcc ];
+
+  dontUseCmakeConfigure = true;
+
+  checkInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "awslambdaric" "runtime_client" ];
+
+  meta = with lib; {
+    description = "AWS Lambda Runtime Interface Client for Python";
+    homepage = "https://github.com/aws/aws-lambda-python-runtime-interface-client";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ austinbutler ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index ee37ddd97b8..042b6501a43 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "boto3";
-  version = "1.17.45"; # N.B: if you change this, change botocore and awscli to a matching version
+  version = "1.17.46"; # N.B: if you change this, change botocore and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-7dMELrpeIZFKfQmcuKJfAJwMQqlSnJrE9bhSrVs6ys8=";
+    sha256 = "sha256-Xe4Vv5YepYTWgfrkLFADTIOXF+dFTD2pDLV6bFLpdTI=";
   };
 
   propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
diff --git a/pkgs/development/python-modules/botocore/default.nix b/pkgs/development/python-modules/botocore/default.nix
index 4aac44470e2..7301ef5ae48 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.20.45"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.20.46"; # N.B: if you change this, change boto3 and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-s6WbIcb0BNLF3LGiFphISlrBu+Y5ypey4PDhnFLC6+E=";
+    sha256 = "sha256-ULvD6TQcfaqCGduYw48mASoVHKiPomAUjlvzrcvLlUE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/fido2/default.nix b/pkgs/development/python-modules/fido2/default.nix
index 8689250dc6f..984a3743f0b 100644
--- a/pkgs/development/python-modules/fido2/default.nix
+++ b/pkgs/development/python-modules/fido2/default.nix
@@ -20,6 +20,16 @@ buildPythonPackage rec {
 
   checkInputs = [ mock pyfakefs ];
 
+  # Testing with `python setup.py test` doesn't work:
+  # https://github.com/Yubico/python-fido2/issues/108#issuecomment-763513576
+  checkPhase = ''
+    runHook preCheck
+
+    python -m unittest discover -v
+
+    runHook postCheck
+  '';
+
   pythonImportsCheck = [ "fido2" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/gdown/default.nix b/pkgs/development/python-modules/gdown/default.nix
index 9af10727285..8195bb0d403 100644
--- a/pkgs/development/python-modules/gdown/default.nix
+++ b/pkgs/development/python-modules/gdown/default.nix
@@ -5,6 +5,7 @@
 , requests
 , tqdm
 , setuptools
+, six
 }:
 
 buildPythonApplication rec {
@@ -16,7 +17,7 @@ buildPythonApplication rec {
     sha256 = "4b3a1301e57bfd8dce939bf25ef8fbb4b23967fd0f878eede328bdcc41386bac";
   };
 
-  propagatedBuildInputs = [ filelock requests tqdm setuptools ];
+  propagatedBuildInputs = [ filelock requests tqdm setuptools six ];
 
   checkPhase = ''
     $out/bin/gdown --help > /dev/null
diff --git a/pkgs/development/python-modules/homepluscontrol/default.nix b/pkgs/development/python-modules/homepluscontrol/default.nix
new file mode 100644
index 00000000000..680c4a5a726
--- /dev/null
+++ b/pkgs/development/python-modules/homepluscontrol/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, aiohttp
+, aioresponses
+, buildPythonPackage
+, fetchFromGitHub
+, pyjwt
+, pytestCheckHook
+, pythonOlder
+, yarl
+}:
+
+buildPythonPackage rec {
+  pname = "homepluscontrol";
+  version = "0.0.5";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "chemaaa";
+    repo = pname;
+    rev = version;
+    sha256 = "1nd3a7nhh1xb70cdh2h2bimwbffvpc3457smyzr9fqkjwfbcrr93";
+  };
+
+  propagatedBuildInputs = [
+    aiohttp
+    pyjwt
+    yarl
+  ];
+
+  checkInputs = [
+    aioresponses
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "homepluscontrol" ];
+
+  meta = with lib; {
+    description = "Python API to interact with the Legrand Eliot Home and Control";
+    homepage = "https://github.com/chemaaa/homepluscontrol";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/internetarchive/default.nix b/pkgs/development/python-modules/internetarchive/default.nix
index ca91ad954a4..0d1fb08e2a4 100644
--- a/pkgs/development/python-modules/internetarchive/default.nix
+++ b/pkgs/development/python-modules/internetarchive/default.nix
@@ -19,11 +19,11 @@
 
 buildPythonPackage rec {
   pname = "internetarchive";
-  version = "1.9.9";
+  version = "2.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a1614cbf35499d833e07699ddfd344764f86959fd5535aa9ce1203f57a77f970";
+    sha256 = "515e6646a2b917c15f2241670d21f14a014b9c67dc509aef4d4aca5a59cdda65";
   };
 
   propagatedBuildInputs = [
@@ -52,7 +52,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "A Python and Command-Line Interface to Archive.org";
     homepage = "https://github.com/jjjake/internetarchive";
-    license = licenses.agpl3;
+    changelog = "https://github.com/jjjake/internetarchive/raw/v${version}/HISTORY.rst";
+    license = licenses.agpl3Plus;
     maintainers = [ maintainers.marsam ];
   };
 }
diff --git a/pkgs/development/python-modules/localimport/default.nix b/pkgs/development/python-modules/localimport/default.nix
new file mode 100644
index 00000000000..3c41618d5b8
--- /dev/null
+++ b/pkgs/development/python-modules/localimport/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "localimport";
+  version = "1.7.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-p7ACOzJRwH9hICMcxtVt/r+twEoFsDxPKGuarFnFIbo=";
+  };
+
+  pythonImportsCheck = [ "localimport" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/NiklasRosenstein/py-localimport";
+    description = "Isolated import of Python modules";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/development/python-modules/makefun/default.nix b/pkgs/development/python-modules/makefun/default.nix
new file mode 100644
index 00000000000..1f5596a46cc
--- /dev/null
+++ b/pkgs/development/python-modules/makefun/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, setuptools_scm
+}:
+
+buildPythonPackage rec {
+  pname = "makefun";
+  version = "1.11.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "sha256-2qNQpILtWLVyREPGUUMhkem5ewyDdDh50JExccaigIU=";
+  };
+
+  nativeBuildInputs = [ setuptools_scm ];
+
+  # Disabling tests for now due to various (transitive) dependencies on modules
+  # from @smarie which are, as of yet, not part of nixpkgs. Also introduces
+  # a tricky dependency: makefun tests depend on pytest-cases, installing
+  # pytest-cases depends on makefun.
+  doCheck = false;
+
+  pythonImportsCheck = [ "makefun" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/smarie/python-makefun";
+    description = "Small library to dynamically create python functions";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ veehaitch ];
+  };
+}
diff --git a/pkgs/development/python-modules/nodepy-runtime/default.nix b/pkgs/development/python-modules/nodepy-runtime/default.nix
new file mode 100644
index 00000000000..5be806e4cef
--- /dev/null
+++ b/pkgs/development/python-modules/nodepy-runtime/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, localimport
+, pathlib2
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "nodepy-runtime";
+  version = "2.1.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-6tSsD76EpCZxkdulv1BcUZtIXGWLG6PuII25J8STygE=";
+  };
+
+  propagatedBuildInputs = [
+    localimport
+    pathlib2
+    six
+  ];
+
+  pythonImportsCheck = [
+    "nodepy"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/nodepy/nodepy";
+    description = "Runtime for Python inspired by Node.JS";
+    longDescription = ''
+      Node.py is a Python runtime and package manager compatible with CPython
+      2.7 and 3.3 – 3.6. It provides a separate import mechanism for modules
+      inspired by Node.js, bringing dependency management and ease of deployment
+      for Python applications up to par with other languages without virtual
+      environments.
+
+      Node.py comes with a built-in package manager that builds on Pip for
+      standard Python dependencies but also adds the capability to install
+      packages that are specifically developed for Node.py. To install the
+      dependencies of the package manager you must specify the [pm] install
+      extra.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/development/python-modules/pubnub/default.nix b/pkgs/development/python-modules/pubnub/default.nix
index 8914b9884c2..c2f1a9fb34d 100644
--- a/pkgs/development/python-modules/pubnub/default.nix
+++ b/pkgs/development/python-modules/pubnub/default.nix
@@ -13,16 +13,17 @@
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "5.1.0";
+  version = "5.1.1";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "python";
     rev = "v${version}";
-    sha256 = "0f6r439bfz58ddikqj5cx56vv7gxrpja9rcdg0j1mlng8ry581f3";
+    sha256 = "sha256-ir8f8A6XuN1ZQIYQbArChLzTlYu4ZKpkoOXQtSLOvKg=";
   };
 
   propagatedBuildInputs = [
+    aiohttp
     cbor2
     pycryptodomex
     requests
@@ -30,19 +31,15 @@ buildPythonPackage rec {
   ];
 
   checkInputs = [
-    aiohttp
-    pycryptodomex
     pytest-asyncio
     pytestCheckHook
     pytest-vcr
-
   ];
 
-  # Some tests don't pass with recent releases of tornado/twisted
-  pytestFlagsArray = [
-    "--ignore tests/integrational"
-    "--ignore tests/manual/asyncio"
-    "--ignore tests/manual/tornado/test_reconnections.py"
+  # Some tests don't pass with recent releases of twisted
+  disabledTestPaths = [
+    "tests/integrational"
+    "tests/manual/asyncio"
   ];
 
   pythonImportsCheck = [ "pubnub" ];
diff --git a/pkgs/development/python-modules/pysmappee/default.nix b/pkgs/development/python-modules/pysmappee/default.nix
index 626f55fc92a..a3517ea87ec 100644
--- a/pkgs/development/python-modules/pysmappee/default.nix
+++ b/pkgs/development/python-modules/pysmappee/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "pysmappee";
-  version = "0.2.18";
+  version = "0.2.23";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "smappee";
     repo = pname;
     rev = version;
-    sha256 = "sha256-DnRtKr8aGZ6rcN/wTpcFNaI+EJm07nObfWyBpLkQF38=";
+    sha256 = "sha256-vxCZzkngYnc+hD3gT1x7qAQTFjpmmgRU5F6cusNDNgk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pytest-raises/default.nix b/pkgs/development/python-modules/pytest-raises/default.nix
new file mode 100644
index 00000000000..7891437909e
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-raises/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-raises";
+  version = "0.11";
+
+  src = fetchFromGitHub {
+    owner = "Lemmons";
+    repo = pname;
+    rev = version;
+    sha256 = "0gbb4kml2qv7flp66i73mgb4qihdaybb6c96b5dw3mhydhymcsy2";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "pytest_raises" ];
+
+  meta = with lib; {
+    description = "An implementation of pytest.raises as a pytest.mark fixture";
+    homepage = "https://github.com/Lemmons/pytest-raises";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pywebview/default.nix b/pkgs/development/python-modules/pywebview/default.nix
index 545fb236732..a020517dcce 100644
--- a/pkgs/development/python-modules/pywebview/default.nix
+++ b/pkgs/development/python-modules/pywebview/default.nix
@@ -1,25 +1,53 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
-, importlib-resources, pytest, xvfb_run }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, importlib-resources
+, pyqtwebengine
+, pytest
+, pythonOlder
+, qt5
+, xvfb_run
+}:
 
 buildPythonPackage rec {
   pname = "pywebview";
-  version = "3.3.1";
+  version = "3.4";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "r0x0r";
     repo = "pywebview";
     rev = version;
-    sha256 = "015z7n0hdgkzn0p7aw1xsv6lwc260p8q67jx0zyd1zghnwyj8k79";
+    sha256 = "sha256-3JHwtw8oReolEl4k8cdt7GCVGNkfWWJN6EnZYHxzDO8=";
   };
 
-  propagatedBuildInputs = lib.optionals (pythonOlder "3.7") [ importlib-resources ];
+  nativeBuildInputs = [
+    qt5.wrapQtAppsHook
+  ];
 
-  checkInputs = [ pytest xvfb_run ];
+  propagatedBuildInputs = [
+    pyqtwebengine
+  ] ++ lib.optionals (pythonOlder "3.7") [ importlib-resources ];
+
+  checkInputs = [
+    pytest
+    xvfb_run
+  ];
 
   checkPhase = ''
+    # Cannot create directory /homeless-shelter/.... Error: FILE_ERROR_ACCESS_DENIED
+    export HOME=$TMPDIR
+    # QStandardPaths: XDG_RUNTIME_DIR not set
+    export XDG_RUNTIME_DIR=$HOME/xdg-runtime-dir
+
     pushd tests
+    substituteInPlace run.sh \
+      --replace "PYTHONPATH=.." "PYTHONPATH=$PYTHONPATH" \
+      --replace "pywebviewtest test_js_api.py::test_concurrent ''${PYTEST_OPTIONS}" "# skip flaky test_js_api.py::test_concurrent"
+
     patchShebangs run.sh
+    wrapQtApp run.sh
+
     xvfb-run -s '-screen 0 800x600x24' ./run.sh
     popd
   '';
diff --git a/pkgs/development/python-modules/requests-aws4auth/default.nix b/pkgs/development/python-modules/requests-aws4auth/default.nix
index a2e92283dc7..3267b0a7865 100644
--- a/pkgs/development/python-modules/requests-aws4auth/default.nix
+++ b/pkgs/development/python-modules/requests-aws4auth/default.nix
@@ -1,4 +1,5 @@
-{ lib, buildPythonPackage, fetchPypi, python, requests }:
+{ lib, buildPythonPackage, fetchPypi, python, requests, six }:
+
 with lib;
 buildPythonPackage rec {
   pname = "requests-aws4auth";
@@ -9,7 +10,7 @@ buildPythonPackage rec {
     sha256 = "9a4a5f4a61c49f098f5f669410308ac5b0ea2682fd511ee3a4f9ff73b5bb275a";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [ requests six ];
 
   # pypi package no longer contains tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/ronin/default.nix b/pkgs/development/python-modules/ronin/default.nix
new file mode 100644
index 00000000000..c9b0a0d2561
--- /dev/null
+++ b/pkgs/development/python-modules/ronin/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, blessings
+, colorama
+, glob2
+}:
+
+buildPythonPackage rec {
+  pname = "ronin";
+  version = "1.1.1";
+
+  src = fetchPypi {
+    inherit version pname;
+    hash = "sha256-5gZ8S0NR4JzKBIdi/xYtVmFg9ObbCSkT7sz+OKWnK/U=";
+  };
+
+  propagatedBuildInputs = [
+    blessings
+    colorama
+    glob2
+  ];
+
+  pythonImportsCheck = [
+    "ronin"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/tliron/ronin/";
+    description = "A straightforward but powerful build system based on Ninja and Python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/development/python-modules/screenlogicpy/default.nix b/pkgs/development/python-modules/screenlogicpy/default.nix
new file mode 100644
index 00000000000..100c487acee
--- /dev/null
+++ b/pkgs/development/python-modules/screenlogicpy/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "screenlogicpy";
+  version = "0.3.0";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0gn2mf2n2g1ffdbijrydgb7dgd60lkvckblx6s86kxlkrp1wqgrq";
+  };
+
+  # Project doesn't publish tests
+  # https://github.com/dieselrabbit/screenlogicpy/issues/8
+  doCheck = false;
+  pythonImportsCheck = [ "screenlogicpy" ];
+
+  meta = with lib; {
+    description = "Python interface for Pentair Screenlogic devices";
+    homepage = "https://github.com/dieselrabbit/screenlogicpy";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/solo-python/default.nix b/pkgs/development/python-modules/solo-python/default.nix
index 72546642009..8d84ce34eb9 100644
--- a/pkgs/development/python-modules/solo-python/default.nix
+++ b/pkgs/development/python-modules/solo-python/default.nix
@@ -60,5 +60,8 @@
     homepage = "https://github.com/solokeys/solo-python";
     maintainers = with maintainers; [ wucke13 ];
     license = with licenses; [ asl20 mit ];
+    # solo-python v0.0.27 does not support fido2 >= v0.9
+    # https://github.com/solokeys/solo-python/issues/110
+    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/wakeonlan/default.nix b/pkgs/development/python-modules/wakeonlan/default.nix
index 86d405a33ef..340a407ab3f 100644
--- a/pkgs/development/python-modules/wakeonlan/default.nix
+++ b/pkgs/development/python-modules/wakeonlan/default.nix
@@ -1,26 +1,45 @@
-{ lib, fetchPypi, buildPythonPackage, setuptools_scm, pytest, mock }:
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+, poetry-core
+, pytestCheckHook
+, pythonOlder
+}:
 
 buildPythonPackage rec {
   pname = "wakeonlan";
-  version = "1.1.6";
+  version = "2.0.0";
+  disabled = pythonOlder "3.6";
+  format = "pyproject";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "5e6013a17004809e676c150689abd94bcc0f12a37ad3fbce1f6270968f95ffa9";
+  src = fetchFromGitHub {
+    owner = "remcohaszing";
+    repo = "pywakeonlan";
+    rev = version;
+    sha256 = "0p9jyiv0adcymbnmbay72g9phlbhsr4kmrwxscbdjq81gcmxsi0y";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "setuptools-scm ~= 1.15.7" "setuptools-scm"
-  '';
+  nativeBuildInputs = [
+    poetry-core
+  ];
 
-  checkInputs = [ pytest mock ];
+  checkInputs = [
+    pytestCheckHook
+  ];
 
-  nativeBuildInputs = [ setuptools_scm ];
+  patches = [
+    # Switch to poetry-core, https://github.com/remcohaszing/pywakeonlan/pull/19
+    (fetchpatch {
+      name = "switch-to-poetry-core.patch";
+      url = "https://github.com/remcohaszing/pywakeonlan/commit/6aa5050ed94ef718dfcd0b946546b6a738f47ee3.patch";
+      sha256 = "1xzj2464ziwm7bp05bzbjwjp9whmgp1py3isr41d92qvnil86vm6";
+    })
+  ];
 
-  checkPhase = ''
-    py.test
-  '';
+  pytestFlagsArray = [ "test_wakeonlan.py" ];
+
+  pythonImportsCheck = [ "wakeonlan" ];
 
   meta = with lib; {
     description = "A small python module for wake on lan";
diff --git a/pkgs/development/python-modules/xknx/default.nix b/pkgs/development/python-modules/xknx/default.nix
index 8ad4df26208..a181a674188 100644
--- a/pkgs/development/python-modules/xknx/default.nix
+++ b/pkgs/development/python-modules/xknx/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "xknx";
-  version = "0.17.5";
+  version = "0.18.0";
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "XKNX";
     repo = pname;
     rev = version;
-    sha256 = "sha256-oLm1Bh58mKwbQf9FloqEnypzANikxgdFpAB99h/Mb9U=";
+    sha256 = "sha256-8g8DrFvhecdPsfiw+uKnfJOrLQeuFUziK2Jl3xKmrf4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/yalexs/default.nix b/pkgs/development/python-modules/yalexs/default.nix
new file mode 100644
index 00000000000..c65c88b88d5
--- /dev/null
+++ b/pkgs/development/python-modules/yalexs/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, aiofiles
+, aiohttp
+, aioresponses
+, aiounittest
+, asynctest
+, buildPythonPackage
+, fetchFromGitHub
+, pubnub
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, requests
+, requests-mock
+}:
+
+buildPythonPackage rec {
+  pname = "yalexs";
+  version = "1.1.10";
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1qmxiafqmh51i3l30pajaqj5h0kziq4d37fn6hl58429bb85dpp9";
+  };
+
+  propagatedBuildInputs = [
+    aiofiles
+    aiohttp
+    pubnub
+    python-dateutil
+    requests
+  ];
+
+  checkInputs = [
+    aioresponses
+    aiounittest
+    asynctest
+    pytestCheckHook
+    requests-mock
+  ];
+
+  postPatch = ''
+    # Not used requirement
+    substituteInPlace setup.py --replace '"vol",' ""
+  '';
+
+  pythonImportsCheck = [ "yalexs" ];
+
+  meta = with lib; {
+    description = "Python API for Yale Access (formerly August) Smart Lock and Doorbell";
+    homepage = "https://github.com/bdraco/yalexs";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix
index 5c13e00c5ef..99c535fa338 100644
--- a/pkgs/development/ruby-modules/gem-config/default.nix
+++ b/pkgs/development/ruby-modules/gem-config/default.nix
@@ -25,7 +25,7 @@
 , cairo, re2, rake, gobject-introspection, gdk-pixbuf, zeromq, czmq, graphicsmagick, libcxx
 , file, libvirt, glib, vips, taglib, libopus, linux-pam, libidn, protobuf, fribidi, harfbuzz
 , bison, flex, pango, python3, patchelf, binutils, freetds, wrapGAppsHook, atk
-, bundler, libsass, libselinux ? null, libsepol ? null
+, bundler, libsass, libselinux ? null, libsepol ? null, shared-mime-info
 }@args:
 
 let
@@ -164,6 +164,10 @@ in
     '';
   };
 
+  mimemagic = attrs: {
+    FREEDESKTOP_MIME_TYPES_PATH = "${shared-mime-info}/share/mime/packages/freedesktop.org.xml";
+  };
+
   mini_magick = attrs: {
     postInstall = ''
       installPath=$(cat $out/nix-support/gem-meta/install-path)
diff --git a/pkgs/development/tools/analysis/radare2/cutter.nix b/pkgs/development/tools/analysis/radare2/cutter.nix
deleted file mode 100644
index 6d9543e3836..00000000000
--- a/pkgs/development/tools/analysis/radare2/cutter.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ fetchFromGitHub, lib, mkDerivation
-# nativeBuildInputs
-, qmake, pkg-config
-# Qt
-, qtbase, qtsvg, qtwebengine
-# buildInputs
-, r2-for-cutter
-, python3
-, wrapQtAppsHook }:
-
-mkDerivation rec {
-  pname = "radare2-cutter";
-  version = "1.12.0";
-
-  src = fetchFromGitHub {
-    owner = "radareorg";
-    repo = "cutter";
-    rev = "v${version}";
-    sha256 = "0ljj3j3apbbw628n2nyrxpbnclixx20bqjxm0xwggqzz9vywsar0";
-  };
-
-  postUnpack = "export sourceRoot=$sourceRoot/src";
-
-  # Remove this "very helpful" helper file intended for discovering r2,
-  # as it's a doozy of harddcoded paths and unexpected behavior.
-  # Happily Nix has everything all set so we don't need it,
-  # other than as basis for the qmakeFlags set below.
-  postPatch = ''
-    substituteInPlace Cutter.pro \
-      --replace "include(lib_radare2.pri)" ""
-  '';
-
-  nativeBuildInputs = [ qmake pkg-config python3 wrapQtAppsHook ];
-  propagatedBuildInputs = [ python3.pkgs.pyside2 ];
-  buildInputs = [ qtbase qtsvg qtwebengine r2-for-cutter python3 ];
-
-  qmakeFlags = with python3.pkgs; [
-    "CONFIG+=link_pkg-config"
-    "PKGCONFIG+=r_core"
-    # Leaving this enabled doesn't break build but generates errors
-    # at runtime (to console) about being unable to load needed bits.
-    # Disable until can be looked at.
-    "CUTTER_ENABLE_JUPYTER=false"
-    # Enable support for Python plugins
-    "CUTTER_ENABLE_PYTHON=true"
-    "CUTTER_ENABLE_PYTHON_BINDINGS=true"
-    "SHIBOKEN_EXTRA_OPTIONS+=-I${r2-for-cutter}/include/libr"
-  ];
-
-  preBuild = ''
-    export NIX_LDFLAGS="$NIX_LDFLAGS $(pkg-config --libs python3-embed)"
-    qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH")
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = with lib; {
-    description = "A Qt and C++ GUI for radare2 reverse engineering framework";
-    homepage = src.meta.homepage;
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ mic92 dtzWill ];
-  };
-}
diff --git a/pkgs/development/tools/analysis/radare2/default.nix b/pkgs/development/tools/analysis/radare2/default.nix
index 287321804e2..f5ce1bbde76 100644
--- a/pkgs/development/tools/analysis/radare2/default.nix
+++ b/pkgs/development/tools/analysis/radare2/default.nix
@@ -1,9 +1,21 @@
-{lib, stdenv, fetchFromGitHub
+{ lib
+, stdenv
+, fetchFromGitHub
 , buildPackages
 , pkg-config
-, libusb-compat-0_1, readline, libewf, perl, zlib, openssl
-, libuv, file, libzip, xxHash
-, gtk2 ? null, vte ? null, gtkdialog ? null
+, libusb-compat-0_1
+, readline
+, libewf
+, perl
+, zlib
+, openssl
+, libuv
+, file
+, libzip
+, xxHash
+, gtk2 ? null
+, vte ? null
+, gtkdialog ? null
 , python3 ? null
 , ruby ? null
 , lua ? null
@@ -21,108 +33,84 @@ assert pythonBindings -> python3 != null;
 let
   inherit (lib) optional;
 
-  generic = {
-    version_commit, # unused
-    gittap,
-    gittip,
-    rev,
-    version,
-    sha256,
-    cs_ver,
-    cs_sha256
-  }:
-    stdenv.mkDerivation {
-      pname = "radare2";
-      inherit version;
+  #<generated>
+  # DO NOT EDIT! Automatically generated by ./update.py
+  gittap = "5.1.1";
+  gittip = "a86f8077fc148abd6443384362a3717cd4310e64";
+  rev = "5.1.1";
+  version = "5.1.1";
+  sha256 = "0hv9x31iabasj12g8f04incr1rbcdkxi3xnqn3ggp8gl4h6pf2f3";
+  cs_ver = "4.0.2";
+  cs_sha256 = "0y5g74yjyliciawpn16zhdwya7bd3d7b1cccpcccc2wg8vni1k2w";
+  #</generated>
+in
+stdenv.mkDerivation {
+  pname = "radare2";
+  inherit version;
 
-      src = fetchFromGitHub {
-        owner = "radare";
-        repo = "radare2";
-        inherit rev sha256;
-      };
+  src = fetchFromGitHub {
+    owner = "radare";
+    repo = "radare2";
+    inherit rev sha256;
+  };
 
-      postPatch = let
-        capstone = fetchFromGitHub {
-          owner = "aquynh";
-          repo = "capstone";
-          # version from $sourceRoot/shlr/Makefile
-          rev = cs_ver;
-          sha256 = cs_sha256;
-        };
-      in ''
-        mkdir -p build/shlr
-        cp -r ${capstone} capstone-${cs_ver}
-        chmod -R +w capstone-${cs_ver}
-        # radare 3.3 compat for radare2-cutter
-        (cd shlr && ln -s ../capstone-${cs_ver} capstone)
-        tar -czvf shlr/capstone-${cs_ver}.tar.gz capstone-${cs_ver}
-      '';
+  postPatch =
+    let
+      capstone = fetchFromGitHub {
+        owner = "aquynh";
+        repo = "capstone";
+        # version from $sourceRoot/shlr/Makefile
+        rev = cs_ver;
+        sha256 = cs_sha256;
+      };
+    in
+    ''
+      mkdir -p build/shlr
+      cp -r ${capstone} capstone-${cs_ver}
+      chmod -R +w capstone-${cs_ver}
+      tar -czvf shlr/capstone-${cs_ver}.tar.gz capstone-${cs_ver}
+    '';
 
-      postInstall = ''
-        install -D -m755 $src/binr/r2pm/r2pm $out/bin/r2pm
-      '';
+  postInstall = ''
+    install -D -m755 $src/binr/r2pm/r2pm $out/bin/r2pm
+  '';
 
-      WITHOUT_PULL="1";
-      makeFlags = [
-        "GITTAP=${gittap}"
-        "GITTIP=${gittip}"
-        "RANLIB=${stdenv.cc.bintools.bintools}/bin/${stdenv.cc.bintools.targetPrefix}ranlib"
-      ];
-      configureFlags = [
-        "--with-sysmagic"
-        "--with-syszip"
-        "--with-sysxxhash"
-        "--with-openssl"
-      ];
+  WITHOUT_PULL = "1";
+  makeFlags = [
+    "GITTAP=${gittap}"
+    "GITTIP=${gittip}"
+    "RANLIB=${stdenv.cc.bintools.bintools}/bin/${stdenv.cc.bintools.targetPrefix}ranlib"
+  ];
+  configureFlags = [
+    "--with-sysmagic"
+    "--with-syszip"
+    "--with-sysxxhash"
+    "--with-openssl"
+  ];
 
-      enableParallelBuilding = true;
-      depsBuildBuild = [ buildPackages.stdenv.cc ];
+  enableParallelBuilding = true;
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
 
-      nativeBuildInputs = [ pkg-config ];
-      buildInputs = [ file readline libusb-compat-0_1 libewf perl zlib openssl libuv ]
-        ++ optional useX11 [ gtkdialog vte gtk2 ]
-        ++ optional rubyBindings [ ruby ]
-        ++ optional pythonBindings [ python3 ]
-        ++ optional luaBindings [ lua ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ file readline libusb-compat-0_1 libewf perl zlib openssl libuv ]
+    ++ optional useX11 [ gtkdialog vte gtk2 ]
+    ++ optional rubyBindings [ ruby ]
+    ++ optional pythonBindings [ python3 ]
+    ++ optional luaBindings [ lua ];
 
-      propagatedBuildInputs = [
-        # radare2 exposes r_lib which depends on these libraries
-        file # for its list of magic numbers (`libmagic`)
-        libzip
-        xxHash
-      ];
+  propagatedBuildInputs = [
+    # radare2 exposes r_lib which depends on these libraries
+    file # for its list of magic numbers (`libmagic`)
+    libzip
+    xxHash
+  ];
 
-      meta = {
-        description = "unix-like reverse engineering framework and commandline tools";
-        homepage = "http://radare.org/";
-        license = lib.licenses.gpl2Plus;
-        maintainers = with lib.maintainers; [ raskin makefu mic92 ];
-        platforms = with lib.platforms; linux;
-        inherit version;
-      };
-  };
-in {
-  #<generated>
-  # DO NOT EDIT! Automatically generated by ./update.py
-  radare2 = generic {
-    version_commit = "25741";
-    gittap = "5.1.1";
-    gittip = "a86f8077fc148abd6443384362a3717cd4310e64";
-    rev = "5.1.1";
-    version = "5.1.1";
-    sha256 = "0hv9x31iabasj12g8f04incr1rbcdkxi3xnqn3ggp8gl4h6pf2f3";
-    cs_ver = "4.0.2";
-    cs_sha256 = "0y5g74yjyliciawpn16zhdwya7bd3d7b1cccpcccc2wg8vni1k2w";
-  };
-  r2-for-cutter = generic {
-    version_commit = "24959";
-    gittap = "4.5.1";
-    gittip = "293cf5ae65ba4e28828095dcae212955593ba255";
-    rev = "4.5.1";
-    version = "4.5.1";
-    sha256 = "0qigy1px0jy74c5ig73dc2fqjcy6vcy76i25dx9r3as6zfpkkaxj";
-    cs_ver = "4.0.2";
-    cs_sha256 = "0y5g74yjyliciawpn16zhdwya7bd3d7b1cccpcccc2wg8vni1k2w";
+  meta = {
+    description = "unix-like reverse engineering framework and commandline tools";
+    homepage = "http://radare.org/";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ raskin makefu mic92 ];
+    platforms = with lib.platforms; linux;
+    inherit version;
   };
-  #</generated>
 }
diff --git a/pkgs/development/tools/analysis/radare2/update.py b/pkgs/development/tools/analysis/radare2/update.py
index a9a0a234317..ede0a6058a9 100755
--- a/pkgs/development/tools/analysis/radare2/update.py
+++ b/pkgs/development/tools/analysis/radare2/update.py
@@ -48,24 +48,6 @@ def get_radare2_rev() -> str:
     raise RuntimeError(f"No release found at {feed_url}")
 
 
-def get_cutter_version() -> str:
-    version_expr = """
-(with import <nixpkgs> {}; lib.getVersion (qt5.callPackage <radare2/cutter.nix> {}))
-"""
-    return sh("nix", "eval", "--raw", version_expr.strip(), "-I", "radare2={0}".format(SCRIPT_DIR))
-
-
-def get_r2_cutter_rev() -> str:
-    version = get_cutter_version()
-    url = f"https://api.github.com/repos/radareorg/cutter/contents?ref=v{version}"
-    with urllib.request.urlopen(url) as response:
-        data = json.load(response)  # type: ignore
-    for entry in data:
-        if entry["name"] == "radare2":
-            return entry["sha"]
-    raise Exception("no radare2 submodule found in github.com/radareorg/cutter")
-
-
 def git(dirname: str, *args: str) -> str:
     return sh("git", "-C", dirname, *args)
 
@@ -94,43 +76,23 @@ def get_repo_info(dirname: str, rev: str) -> Dict[str, str]:
     )
 
 
-def write_package_expr(version: str, info: Dict[str, str]) -> str:
-    return f"""generic {{
-    version_commit = "{info["version_commit"]}";
-    gittap = "{info["gittap"]}";
-    gittip = "{info["gittip"]}";
-    rev = "{info["rev"]}";
-    version = "{version}";
-    sha256 = "{info["sha256"]}";
-    cs_ver = "{info["cs_ver"]}";
-    cs_sha256 = "{info["cs_sha256"]}";
-  }}"""
-
-
 def main() -> None:
-    radare2_rev = get_radare2_rev()
-    r2_cutter_rev = get_r2_cutter_rev()
+    version = get_radare2_rev()
 
     with tempfile.TemporaryDirectory() as dirname:
         git(
             dirname,
             "clone",
             "--branch",
-            radare2_rev,
+            version,
             "https://github.com/radare/radare2",
             ".",
         )
         nix_file = str(SCRIPT_DIR.joinpath("default.nix"))
 
-        radare2_info = get_repo_info(dirname, radare2_rev)
-
-        git(dirname, "fetch", r2_cutter_rev)
-        git(dirname, "checkout", r2_cutter_rev)
+        info = get_repo_info(dirname, version)
 
         timestamp = git(dirname, "log", "-n1", "--format=%at")
-        r2_cutter_version = datetime.fromtimestamp(int(timestamp)).strftime("%Y-%m-%d")
-
-        r2_cutter_info = get_repo_info(dirname, r2_cutter_rev)
 
         in_block = False
         with fileinput.FileInput(nix_file, inplace=True) as f:
@@ -140,8 +102,13 @@ def main() -> None:
                     print(
                         f"""  #<generated>
   # DO NOT EDIT! Automatically generated by ./update.py
-  radare2 = {write_package_expr(radare2_rev, radare2_info)};
-  r2-for-cutter = {write_package_expr(r2_cutter_version, r2_cutter_info)};
+  gittap = "{info["gittap"]}";
+  gittip = "{info["gittip"]}";
+  rev = "{info["rev"]}";
+  version = "{version}";
+  sha256 = "{info["sha256"]}";
+  cs_ver = "{info["cs_ver"]}";
+  cs_sha256 = "{info["cs_sha256"]}";
   #</generated>"""
                     )
                 elif "#</generated>" in l:
diff --git a/pkgs/development/tools/analysis/rizin/cutter.nix b/pkgs/development/tools/analysis/rizin/cutter.nix
new file mode 100644
index 00000000000..14d815f04b1
--- /dev/null
+++ b/pkgs/development/tools/analysis/rizin/cutter.nix
@@ -0,0 +1,46 @@
+{ fetchFromGitHub, lib, mkDerivation
+# nativeBuildInputs
+, qmake, pkg-config, cmake
+# Qt
+, qtbase, qtsvg, qtwebengine, qttools
+# buildInputs
+, rizin
+, python3
+, wrapQtAppsHook
+}:
+
+mkDerivation rec {
+  pname = "cutter";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "rizinorg";
+    repo = "cutter";
+    rev = "v${version}";
+    sha256 = "sha256-uIN/NR+swu9Ie0wP2aBhw5WBvTe9NDmzSs+lQMCeavc=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake qmake pkg-config python3 wrapQtAppsHook ];
+  propagatedBuildInputs = [ python3.pkgs.pyside2 ];
+  buildInputs = [ qtbase qttools qtsvg qtwebengine rizin python3 ];
+
+  cmakeFlags = [
+    "-DCUTTER_USE_BUNDLED_RIZIN=OFF"
+    "-DCUTTER_ENABLE_PYTHON=ON"
+    "-DCUTTER_ENABLE_PYTHON_BINDINGS=ON"
+  ];
+
+  preBuild = ''
+    qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH")
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Free and Open Source Reverse Engineering Platform powered by rizin";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ mic92 dtzWill ];
+  };
+}
diff --git a/pkgs/development/tools/analysis/rizin/default.nix b/pkgs/development/tools/analysis/rizin/default.nix
new file mode 100644
index 00000000000..bbcc432ea99
--- /dev/null
+++ b/pkgs/development/tools/analysis/rizin/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, libusb-compat-0_1
+, readline
+, libewf
+, perl
+, zlib
+, openssl
+, libuv
+, file
+, libzip
+, lz4
+, xxHash
+, meson
+, cmake
+, ninja
+, capstone
+, tree-sitter
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rizin";
+  version = "0.1.2";
+
+  src = fetchurl {
+    url = "https://github.com/rizinorg/rizin/releases/download/v${version}/rizin-src-${version}.tar.xz";
+    sha256 = "sha256-npUp8wJiKAaQKSigXtndhJLTJ4+pyFqa0FwDLBqR/sE=";
+  };
+
+  mesonFlags = [
+    "-Duse_sys_capstone=true"
+    "-Duse_sys_magic=true"
+    "-Duse_sys_libzip=true"
+    "-Duse_sys_zlib=true"
+    "-Duse_sys_xxhash=true"
+    "-Duse_sys_lz4=true"
+    "-Duse_sys_openssl=true"
+    "-Duse_sys_tree_sitter=true"
+  ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkg-config meson ninja cmake ];
+
+  buildInputs = [
+    file
+    libzip
+    capstone
+    readline
+    libusb-compat-0_1
+    libewf
+    perl
+    zlib
+    lz4
+    openssl
+    libuv
+    tree-sitter
+    xxHash
+  ];
+
+  meta = {
+    description = "UNIX-like reverse engineering framework and command-line toolset.";
+    homepage = "https://rizin.re/";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ raskin makefu mic92 ];
+    platforms = with lib.platforms; linux;
+    inherit version;
+  };
+}
diff --git a/pkgs/development/tools/build-managers/gradle/default.nix b/pkgs/development/tools/build-managers/gradle/default.nix
index b27d75b7801..993bd668463 100644
--- a/pkgs/development/tools/build-managers/gradle/default.nix
+++ b/pkgs/development/tools/build-managers/gradle/default.nix
@@ -1,6 +1,15 @@
 { lib, stdenv, fetchurl, unzip, jdk, java ? jdk, makeWrapper }:
 
-rec {
+let
+  gradleSpec = { version, nativeVersion, sha256 }: rec {
+    inherit nativeVersion;
+    name = "gradle-${version}";
+    src = fetchurl {
+      inherit sha256;
+      url = "https://services.gradle.org/distributions/${name}-bin.zip";
+    };
+  };
+in rec {
   gradleGen = {name, src, nativeVersion} : stdenv.mkDerivation {
     inherit name src nativeVersion;
 
@@ -52,35 +61,30 @@ rec {
     };
   };
 
+  # NOTE: Gradle 7 is a release candidate, so point to 6.8.
   gradle_latest = gradle_6_8;
 
-  gradle_6_8 = gradleGen rec {
-    name = "gradle-6.8.3";
-    nativeVersion = "0.22-milestone-9";
+  gradle_7 = gradleGen (gradleSpec {
+    version = "7.0-rc-2";
+    nativeVersion = "0.22-milestone-11";
+    sha256 = "0gzvigyvwwizx90vnzhdnbm5rdaki11inxna11s4y67xkn8hrnx5";
+  });
 
-    src = fetchurl {
-      url = "https://services.gradle.org/distributions/${name}-bin.zip";
-      sha256 = "01fjrk5nfdp6mldyblfmnkq2gv1rz1818kzgr0k2i1wzfsc73akz";
-    };
-  };
+  gradle_6_8 = gradleGen (gradleSpec {
+    version = "6.8.3";
+    nativeVersion = "0.22-milestone-9";
+    sha256 = "01fjrk5nfdp6mldyblfmnkq2gv1rz1818kzgr0k2i1wzfsc73akz";
+  });
 
-  gradle_5_6 = gradleGen rec {
-    name = "gradle-5.6.4";
+  gradle_5_6 = gradleGen (gradleSpec {
+    version = "5.6.4";
     nativeVersion = "0.18";
+    sha256 = "1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d";
+  });
 
-    src = fetchurl {
-      url = "https://services.gradle.org/distributions/${name}-bin.zip";
-      sha256 = "1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d";
-    };
-  };
-
-  gradle_4_10 = gradleGen rec {
-    name = "gradle-4.10.3";
+  gradle_4_10 = gradleGen (gradleSpec {
+    version = "4.10.3";
     nativeVersion = "0.14";
-
-    src = fetchurl {
-      url = "https://services.gradle.org/distributions/${name}-bin.zip";
-      sha256 = "0vhqxnk0yj3q9jam5w4kpia70i4h0q4pjxxqwynh3qml0vrcn9l6";
-    };
-  };
+    sha256 = "0vhqxnk0yj3q9jam5w4kpia70i4h0q4pjxxqwynh3qml0vrcn9l6";
+  });
 }
diff --git a/pkgs/development/tools/build-managers/rebar3/default.nix b/pkgs/development/tools/build-managers/rebar3/default.nix
index 0c6450766b1..c2b10d823a3 100644
--- a/pkgs/development/tools/build-managers/rebar3/default.nix
+++ b/pkgs/development/tools/build-managers/rebar3/default.nix
@@ -3,7 +3,7 @@
   tree }:
 
 let
-  version = "3.14.2";
+  version = "3.14.4";
 
   # Dependencies should match the ones in:
   # https://github.com/erlang/rebar3/blob/${version}/rebar.lock
@@ -12,27 +12,27 @@ let
   bbmustache = fetchHex {
     pkg = "bbmustache";
     version = "1.10.0";
-    sha256 = "43effa3fd4bb9523157af5a9e2276c493495b8459fc8737144aa186cb13ce2ee";
+    sha256 = "1vp27jqnq65a8iqp7j4z8nw9ad29dhky5agmg8aj75dvshzzmvs3";
   };
   certifi = fetchHex {
     pkg = "certifi";
-    version = "2.5.2";
-    sha256 = "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040";
+    version = "2.5.3";
+    sha256 = "040w1scglvqhcvc1ifdnlcyrbwr0smi00w4xi8h03c99775nllgd";
   };
   cf = fetchHex {
     pkg = "cf";
     version = "0.3.1";
-    sha256 = "315e8d447d3a4b02bcdbfa397ad03bbb988a6e0aa6f44d3add0f4e3c3bf97672";
+    sha256 = "0wknz4xkqkhgvlx4vx5619p8m65v7g87lfgsvfy04jrsgm28spii";
   };
   cth_readable = fetchHex {
     pkg = "cth_readable";
-    version = "1.4.9";
-    sha256 = "b4c6ababdb046c5f2fbb3c22f030b4c5a679083956dcdd29c1df0cb30b18da24";
+    version = "1.5.0";
+    sha256 = "0z58b6frqdnhyzrmbdf6x78l3izbbh5z5i3am8hqc253r7xwv0dx";
   };
   erlware_commons = fetchHex {
     pkg = "erlware_commons";
-    version = "1.3.1";
-    sha256 = "7aada93f368d0a0430122e39931b7fb4ac9e94dbf043cdc980ad4330fd9cd166";
+    version = "1.4.0";
+    sha256 = "1rp2vkgzqm6sax7fc13rh9x6qzxsgg718dnv7l0kmarvyifcyphq";
   };
   eunit_formatters = fetchHex {
     pkg = "eunit_formatters";
@@ -46,29 +46,26 @@ let
   };
   parse_trans = fetchHex {
     pkg = "parse_trans";
-    version = "3.3.0";
-    sha256 = "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960";
+    version = "3.3.1";
+    sha256 = "12w8ai6b5s6b4hnvkav7hwxd846zdd74r32f84nkcmjzi1vrbk87";
   };
+
   providers = fetchHex {
     pkg = "providers";
     version = "1.8.1";
-    sha256 = "e45745ade9c476a9a469ea0840e418ab19360dc44f01a233304e118a44486ba0";
+    sha256 = "183b9128l4af60rs40agqh6kc6db33j4027ad6jajxn4x6nlamz4";
   };
+
   relx = fetchHex {
     pkg = "relx";
-    version = "4.1.0";
-    sha256 = "b94a3f96697a479ee5217a853345e0f4977bdf40d3c040af0d3d80fadad82af4";
+    version = "4.3.0";
+    sha256 = "0h044arh41sr92r1nlg176shavlv7pvw17alwklhszgwlr4hk3kk";
   };
+
   ssl_verify_fun = fetchHex {
     pkg = "ssl_verify_fun";
     version = "1.1.6";
-    sha256 = "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680";
-  };
-
-  hex_core = fetchHex {
-    pkg = "hex_core";
-    version = "0.7.1";
-    sha256 = "05c60411511b6dc79affcd99a93e67d71e1b9d6abcb28ba75cd4ebc8585b8d02";
+    sha256 = "1026l1z1jh25z8bfrhaw0ryk5gprhrpnirq877zqhg253x3x5c5x";
   };
 in
 stdenv.mkDerivation rec {
@@ -81,7 +78,7 @@ stdenv.mkDerivation rec {
     owner = "erlang";
     repo = pname;
     rev = version;
-    sha256 = "02gz6xs8j5rm14r6dndcpdm8q3rl4mcj363gnnx4y5xvvfnv9bfa";
+    sha256 = "09bnqwli93sq1pcz4h88ks7qg7k8yrjy9fd46yyp8xdl7i4irwy2";
   };
 
   bootstrapper = ./rebar3-nix-bootstrap;
@@ -104,8 +101,6 @@ stdenv.mkDerivation rec {
     cp --no-preserve=mode -R ${relx} _checkouts/relx
     cp --no-preserve=mode -R ${ssl_verify_fun} _checkouts/ssl_verify_fun
 
-    cp --no-preserve=mode -R ${hex_core} _checkouts/hex_core
-
     # Bootstrap script expects the dependencies in _build/default/lib
     # TODO: Make it accept checkouts?
     for i in _checkouts/* ; do
diff --git a/pkgs/development/tools/build-managers/sbt-extras/default.nix b/pkgs/development/tools/build-managers/sbt-extras/default.nix
index d4d4c755276..b49e5f7558a 100644
--- a/pkgs/development/tools/build-managers/sbt-extras/default.nix
+++ b/pkgs/development/tools/build-managers/sbt-extras/default.nix
@@ -3,14 +3,14 @@
 
 stdenv.mkDerivation rec {
   pname = "sbt-extras";
-  rev = "b430596eb8566a59793ea0b8ddd2c693505e801f";
-  version = "2021-03-29";
+  rev = "a76f1f15e6ec39d886f8bf07d5bdfaf70cdc62d8";
+  version = "2021-04-06";
 
   src = fetchFromGitHub {
     owner = "paulp";
     repo = "sbt-extras";
     inherit rev;
-    sha256 = "0r0ysv7dzrlmj3c82fv60i2490ky7q70jlv40q7zdmm5q2wp7y63";
+    sha256 = "0zmhn8nvzrbw047g5z4q2slp0wdg6pvfh2pqnpwcq1hscf7dvz8f";
   };
 
   dontBuild = true;
diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix
index 9807866f1bd..669dc846e10 100644
--- a/pkgs/development/tools/continuous-integration/jenkins/default.nix
+++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "jenkins";
-  version = "2.277.1";
+  version = "2.277.2";
 
   src = fetchurl {
     url = "http://mirrors.jenkins.io/war-stable/${version}/jenkins.war";
-    sha256 = "0lficvngxzl7q088n3ssnnhjicd0xxr0k3n0inz7pvjj27dl35rr";
+    sha256 = "08lv5v5kxp9ln798gjmh8j9a8r8xc471fbhiz2l7gxncpxn50ga2";
   };
 
   buildCommand = ''
diff --git a/pkgs/development/tools/continuous-integration/laminar/default.nix b/pkgs/development/tools/continuous-integration/laminar/default.nix
index 9d78f57425a..5b492ee67b3 100644
--- a/pkgs/development/tools/continuous-integration/laminar/default.nix
+++ b/pkgs/development/tools/continuous-integration/laminar/default.nix
@@ -28,7 +28,7 @@ let
     sha256 = "1jh4h12qchsba03dx03mrvs4r8g9qfjn56xm56jqzgqf7r209xq9";
   };
 in stdenv.mkDerivation rec {
-  name = "laminar";
+  pname = "laminar";
   version = "1.0";
   src = fetchurl {
     url = "https://github.com/ohwgiles/laminar/archive/${version}.tar.gz";
diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix
index 28660732ea4..c974286ab99 100644
--- a/pkgs/development/tools/cue/default.nix
+++ b/pkgs/development/tools/cue/default.nix
@@ -2,15 +2,15 @@
 
 buildGoModule rec {
   pname = "cue";
-  version = "0.2.2";
+  version = "0.3.0";
 
   src = fetchgit {
     url = "https://cue.googlesource.com/cue";
     rev = "v${version}";
-    sha256 = "1crl5fldczc3jkwf7gvwvghckr6gfinfslzca4ps1098lbq83zcq";
+    sha256 = "1h3809xgmn7dr57i3cnifr7r555i3zh3kfsv0gxa9nd7068w19xm";
   };
 
-  vendorSha256 = "0l6slaji9nh16jqp1nvib95h2db1xyjh6knk5hj2zaa1rks4b092";
+  vendorSha256 = "10kvss23a8a6q26a7h1bqc3i0nskm2halsvc9wdv9zf9qsz7zjkp";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/rust/cargo-feature/default.nix b/pkgs/development/tools/rust/cargo-feature/default.nix
new file mode 100644
index 00000000000..94b5000b9b6
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-feature/default.nix
@@ -0,0 +1,24 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-feature";
+  version = "0.5.2";
+
+  src = fetchFromGitHub {
+    owner = "Riey";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0n5kzh756ghfs3cydlcn9mfvpgwy1cjg41h0nd9dbi5cr1fp9x1n";
+  };
+
+  cargoSha256 = "0nvl5smibl81b826xcsrjx8p89lcfpj7wqdsvywnj7jd3p5ag03n";
+
+  meta = with lib; {
+    description = "Allows conveniently modify features of crate";
+    homepage = "https://github.com/Riey/cargo-feature";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ riey ];
+  };
+}
+