summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/networking/cluster/starboard/default.nix6
-rw-r--r--pkgs/applications/networking/dnscontrol/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/zoom-us/default.nix17
-rw-r--r--pkgs/applications/video/jellyfin-mpv-shim/default.nix67
-rw-r--r--pkgs/applications/video/mpv/scripts/convert.nix24
-rw-r--r--pkgs/applications/video/mpv/scripts/convert.patch81
-rw-r--r--pkgs/development/beam-modules/elixir_ls.nix2
-rw-r--r--pkgs/development/beam-modules/hex/default.nix4
-rw-r--r--pkgs/development/libraries/eigen/2.0.nix11
-rw-r--r--pkgs/development/libraries/eigen/default.nix15
-rw-r--r--pkgs/development/libraries/lief/default.nix64
-rw-r--r--pkgs/development/libraries/opencascade-occt/default.nix4
-rw-r--r--pkgs/development/libraries/pupnp/default.nix6
-rw-r--r--pkgs/development/python-modules/css-html-js-minify/default.nix26
-rw-r--r--pkgs/development/python-modules/cxxfilt/default.nix33
-rw-r--r--pkgs/development/python-modules/deezer-python/default.nix47
-rw-r--r--pkgs/development/python-modules/httplib2/default.nix15
-rw-r--r--pkgs/development/python-modules/multimethod/default.nix31
-rw-r--r--pkgs/development/python-modules/pg8000/default.nix11
-rw-r--r--pkgs/development/python-modules/plugnplay/default.nix27
-rw-r--r--pkgs/development/python-modules/pycuda/default.nix12
-rw-r--r--pkgs/development/python-modules/pymavlink/default.nix13
-rw-r--r--pkgs/development/python-modules/slackclient/default.nix2
-rw-r--r--pkgs/development/python-modules/sphinx-material/default.nix41
-rw-r--r--pkgs/development/python-modules/viv-utils/default.nix49
-rw-r--r--pkgs/development/python-modules/vivisect/default.nix46
-rw-r--r--pkgs/development/python-modules/whois/default.nix5
-rw-r--r--pkgs/development/python-modules/woodblock/default.nix36
-rw-r--r--pkgs/development/tools/azcopy/default.nix6
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix4
-rw-r--r--pkgs/servers/home-assistant/default.nix1
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py5
-rw-r--r--pkgs/servers/sql/postgresql/ext/pgvector.nix29
-rw-r--r--pkgs/servers/sql/postgresql/packages.nix2
-rw-r--r--pkgs/tools/misc/chezmoi/default.nix6
-rw-r--r--pkgs/tools/misc/goreleaser/default.nix6
-rw-r--r--pkgs/tools/misc/pcb2gcode/default.nix4
-rw-r--r--pkgs/tools/misc/starship/default.nix6
-rw-r--r--pkgs/tools/misc/vector/default.nix6
-rw-r--r--pkgs/tools/networking/croc/default.nix6
-rw-r--r--pkgs/tools/networking/lychee/default.nix8
-rw-r--r--pkgs/tools/security/flare-floss/default.nix46
-rw-r--r--pkgs/tools/security/yarGen/default.nix15
-rw-r--r--pkgs/tools/text/dcs/default.nix48
-rw-r--r--pkgs/top-level/all-packages.nix14
-rw-r--r--pkgs/top-level/perl-packages.nix14
-rw-r--r--pkgs/top-level/python-packages.nix22
48 files changed, 777 insertions, 176 deletions
diff --git a/pkgs/applications/networking/cluster/starboard/default.nix b/pkgs/applications/networking/cluster/starboard/default.nix
index 1b83e982c78..1418f40e216 100644
--- a/pkgs/applications/networking/cluster/starboard/default.nix
+++ b/pkgs/applications/networking/cluster/starboard/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "starboard";
-  version = "0.10.0";
+  version = "0.10.1";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-hieenhe3HsMqg7dMhvOUcvVGzBedYXqJRxEUkw4DG6o=";
+    sha256 = "sha256-cDqZo0GTpvvkEiccP42u9X2ydHkSBuoD8Zfp+i+/qjo=";
   };
 
-  vendorSha256 = "sha256-Vj8t4v2o6x+tFLWy84W3tVaIf6WtFWXpvLQfeTbeGbM=";
+  vendorSha256 = "sha256-noK4fF9wCP1dYfDgmJVZehcF+eunzP+d9n1SiPO9UEU=";
 
   subPackages = [ "cmd/starboard" ];
 
diff --git a/pkgs/applications/networking/dnscontrol/default.nix b/pkgs/applications/networking/dnscontrol/default.nix
index 39073985fa1..cac662c9b6b 100644
--- a/pkgs/applications/networking/dnscontrol/default.nix
+++ b/pkgs/applications/networking/dnscontrol/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "dnscontrol";
-  version = "3.8.0";
+  version = "3.8.1";
 
   src = fetchFromGitHub {
     owner = "StackExchange";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-VSNvyigaGfGDbcng6ltdq+X35zT2tb2p4j/4KAjd1Yk=";
+    sha256 = "sha256-x002p7wPKbcmr4uE04mgKBagHQV/maEo99Y2Jr7xgK4=";
   };
 
-  vendorSha256 = "sha256-VU0uJDp5koVU+wDwr3ctrDY0R3vd/JmpA7gtWWpwpfw=";
+  vendorSha256 = "sha256-lR5+xVi/ROOFoRWyK0h/8uiSP/joQ9Zr9kMaQ+sWNhM=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix b/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix
index d10c5359e35..363d123dbe1 100644
--- a/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix
+++ b/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix
@@ -11,11 +11,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "jitsi-meet-electron";
-  version = "2.7.0";
+  version = "2.8.5";
 
   src = fetchurl {
     url = "https://github.com/jitsi/jitsi-meet-electron/releases/download/v${version}/jitsi-meet-x86_64.AppImage";
-    sha256 = "1g8was4anrsdpv4h11z544mi0v79him2xjyknixyrqfy87cbh97n";
+    sha256 = "0r3jj3qjx38l1g733vhrwcm2yg7ppp23ciz84x2kqq51mlzr84c6";
     name = "${pname}-${version}.AppImage";
   };
 
diff --git a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
index 67127a04978..fd15e77c8be 100644
--- a/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
+++ b/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -7,7 +7,6 @@
 , atk
 , cairo
 , dbus
-, dpkg
 , libGL
 , fontconfig
 , freetype
@@ -33,8 +32,8 @@ let
   version = "5.6.16775.0418";
   srcs = {
     x86_64-linux = fetchurl {
-      url = "https://zoom.us/client/${version}/zoom_amd64.deb";
-      sha256 = "1fmzwxq8jv5k1b2kvg1ij9g6cdp1hladd8vm3cxzd8fywdjcndim";
+      url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
+      sha256 = "twtxzniojgyLTx6Kda8Ej96uyw2JQB/jIhLdTgTqpCo=";
     };
   };
 
@@ -71,21 +70,17 @@ in stdenv.mkDerivation rec {
   inherit version;
   src = srcs.${stdenv.hostPlatform.system};
 
+  dontUnpack = true;
+
   nativeBuildInputs = [
-    dpkg
     makeWrapper
   ];
 
-  unpackCmd = ''
-    mkdir out
-    dpkg -x $curSrc out
-  '';
-
   installPhase = ''
     runHook preInstall
     mkdir $out
-    mv usr/* $out/
-    mv opt $out/
+    tar -C $out -xf ${src}
+    mv $out/usr/* $out/
     runHook postInstall
   '';
 
diff --git a/pkgs/applications/video/jellyfin-mpv-shim/default.nix b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
index 346841eabf1..651234be8e4 100644
--- a/pkgs/applications/video/jellyfin-mpv-shim/default.nix
+++ b/pkgs/applications/video/jellyfin-mpv-shim/default.nix
@@ -1,37 +1,29 @@
 { lib
 , buildPythonApplication
-, copyDesktopItems
 , fetchPypi
-, makeDesktopItem
-, flask
 , jellyfin-apiclient-python
 , jinja2
 , mpv
 , pillow
-, pydantic
-, pyqtwebengine
 , pystray
 , python-mpv-jsonipc
 , pywebview
-, qt5
 , tkinter
-, werkzeug
 }:
 
 buildPythonApplication rec {
   pname = "jellyfin-mpv-shim";
-  version = "1.10.4";
+  version = "2.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-QMyb69S8Ln4X0oUuLpL6vtgxJwq8f+Q4ReNckrN4E+E=";
+    sha256 = "sha256-NXDLqQzCUfDPoKNPrmIn5FMedMKYxtDhkawRE2lg/vI=";
   };
 
   propagatedBuildInputs = [
     jellyfin-apiclient-python
     mpv
     pillow
-    pydantic
     python-mpv-jsonipc
 
     # gui dependencies
@@ -41,28 +33,6 @@ buildPythonApplication rec {
     # display_mirror dependencies
     jinja2
     pywebview
-
-    # desktop dependencies
-    flask
-    pyqtwebengine
-    werkzeug
-  ];
-
-  nativeBuildInputs = [
-    copyDesktopItems
-    qt5.wrapQtAppsHook
-  ];
-
-  desktopItems = [
-    (makeDesktopItem {
-      name = "Jellyfin Desktop";
-      exec = "jellyfin-desktop";
-      icon = "jellyfin-desktop";
-      desktopName = "jellyfin-desktop";
-      comment = "MPV-based desktop and cast client for Jellyfin";
-      genericName = "MPV-based desktop and cast client for Jellyfin";
-      categories = "Video;AudioVideo;TV;Player";
-    })
   ];
 
   # override $HOME directory:
@@ -82,24 +52,33 @@ buildPythonApplication rec {
       --replace "notify_updates: bool = True" "notify_updates: bool = False"
   '';
 
-  postInstall = ''
-    mkdir -p $out/share/pixmaps
-    cp jellyfin_mpv_shim/integration/jellyfin-256.png $out/share/pixmaps/jellyfin-desktop.png
-  '';
-
-  postFixup = ''
-    wrapQtApp $out/bin/jellyfin-desktop
-    wrapQtApp $out/bin/jellyfin-mpv-desktop
-  '';
-
   # no tests
   doCheck = false;
   pythonImportsCheck = [ "jellyfin_mpv_shim" ];
 
   meta = with lib; {
-    homepage = "https://github.com/jellyfin/jellyfin-desktop";
+    homepage = "https://github.com/jellyfin/jellyfin-mpv-shim";
     description = "Allows casting of videos to MPV via the jellyfin mobile and web app";
-    license = licenses.gpl3;
+    longDescription = ''
+      Jellyfin MPV Shim is a client for the Jellyfin media server which plays media in the
+      MPV media player. The application runs in the background and opens MPV only
+      when media is cast to the player. The player supports most file formats, allowing you
+      to prevent needless transcoding of your media files on the server. The player also has
+      advanced features, such as bulk subtitle updates and launching commands on events.
+    '';
+    license = with licenses; [
+      # jellyfin-mpv-shim
+      gpl3Only
+      mit
+
+      # shader-pack licenses (github:iwalton3/default-shader-pack)
+      # KrigBilateral, SSimDownscaler, NNEDI3
+      gpl3Plus
+      # Anime4K, FSRCNNX
+      mit
+      # Static Grain
+      unlicense
+    ];
     maintainers = with maintainers; [ jojosch ];
   };
 }
diff --git a/pkgs/applications/video/mpv/scripts/convert.nix b/pkgs/applications/video/mpv/scripts/convert.nix
index 2ff335b083a..40a1050cd32 100644
--- a/pkgs/applications/video/mpv/scripts/convert.nix
+++ b/pkgs/applications/video/mpv/scripts/convert.nix
@@ -12,15 +12,17 @@ stdenvNoCC.mkDerivation {
 
   patches = [ ./convert.patch ];
 
-  postPatch =
-    let
-      t = k: v: '' 'local ${k} = "${v}"' '';
-      subs = var: orig: repl: "--replace " + t var orig + t var repl;
-    in ''
-      substituteInPlace convert_script.lua \
-        ${subs "NOTIFY_CMD" "notify-send" "${libnotify}/bin/notify-send"} \
-        ${subs "YAD_CMD" "yad" "${yad}/bin/yad"} \
-        ${subs "MKVMERGE_CMD" "mkvmerge" "${mkvtoolnix-cli}/bin/mkvmerge"}
+  postPatch = ''
+    substituteInPlace convert_script.lua \
+      --replace 'mkvpropedit_exe = "mkvpropedit"' \
+                'mkvpropedit_exe = "${mkvtoolnix-cli}/bin/mkvpropedit"' \
+      --replace 'mkvmerge_exe = "mkvmerge"' \
+                'mkvmerge_exe = "${mkvtoolnix-cli}/bin/mkvmerge"' \
+      --replace 'yad_exe = "yad"' \
+                'yad_exe = "${yad}/bin/yad"' \
+      --replace 'notify_send_exe = "notify-send"' \
+                'notify_send_exe = "${libnotify}/bin/notify-send"' \
+
   '';
 
   dontBuild = true;
@@ -38,9 +40,7 @@ stdenvNoCC.mkDerivation {
       When this script is loaded into mpv, you can hit Alt+W to mark the beginning
       and Alt+W again to mark the end of the clip. Then a settings window opens.
     '';
+    # author was asked to add a license https://gist.github.com/Zehkul/25ea7ae77b30af959be0#gistcomment-3715700
     license = licenses.unfree;
-    # script crashes mpv. See https://github.com/NixOS/nixpkgs/issues/113202
-    broken = true;
   };
 }
-
diff --git a/pkgs/applications/video/mpv/scripts/convert.patch b/pkgs/applications/video/mpv/scripts/convert.patch
index 82171210b41..d3a891bb34c 100644
--- a/pkgs/applications/video/mpv/scripts/convert.patch
+++ b/pkgs/applications/video/mpv/scripts/convert.patch
@@ -1,17 +1,45 @@
---- convert/convert_script.lua	2016-03-18 19:30:49.675401969 +0100
-+++ convert_script.lua	2016-03-19 01:18:00.801897043 +0100
-@@ -3,6 +3,10 @@
+diff --git "a/Convert Script \342\200\223 README.md" "b/Convert Script \342\200\223 README.md"
+index 8e062c1..6e0d798 100644
+--- "a/Convert Script \342\200\223 README.md"	
++++ "b/Convert Script \342\200\223 README.md"	
+@@ -68,7 +68,7 @@ and set some options in ``mpv/lua-settings/convert_script.conf`` or with ``--scr
+     If you don’t want to upgrade your yad. Features like appending segments won’t be available. 
+ 
+     libvpx_fps
+-    Default: --oautofps
++    Default: ""
+     FPS settings (or any other settings really) for libvpx encoding. Set it to --ofps=24000/1001 for example. 
+ 
+-Warning: Some of these options aren’t very robust and setting them to bogus values will break the script. 
+\ No newline at end of file
++Warning: Some of these options aren’t very robust and setting them to bogus values will break the script. 
+diff --git a/convert_script.lua b/convert_script.lua
+index 17d3100..90f88ec 100644
+--- a/convert_script.lua
++++ b/convert_script.lua
+@@ -3,6 +3,12 @@ local msg = require 'mp.msg'
  local opt = require 'mp.options'
  local utils = require 'mp.utils'
  
-+local NOTIFY_CMD = "notify-send"
-+local YAD_CMD = "yad"
-+local MKVMERGE_CMD = "mkvmerge"
++-- executables
++local mkvpropedit_exe = "mkvpropedit"
++local mkvmerge_exe = "mkvmerge"
++local yad_exe = "yad"
++local notify_send_exe = "notify-send"
 +
  -- default options, convert_script.conf is read
  local options = {
      bitrate_multiplier = 0.975,			-- to make sure the file won’t go over the target file size, set it to 1 if you don’t care
-@@ -247,12 +247,12 @@
+@@ -14,7 +20,7 @@ local options = {
+     libvpx_options = "--ovcopts-add=cpu-used=0,auto-alt-ref=1,lag-in-frames=25,quality=good",
+     libvpx_vp9_options = "",
+     legacy_yad = false,				-- if you don’t want to upgrade to at least yad 0.18
+-    libvpx_fps = "--oautofps",			-- --ofps=24000/1001 for example
++    libvpx_fps = "",			-- --ofps=24000/1001 for example
+     audio_bitrate = 112,			-- mpv default, in kbps
+ }
+ 
+@@ -247,12 +253,12 @@ function encode(enc)
      if string.len(vf) > 0 then
          vf = vf .. ","
      end
@@ -26,42 +54,49 @@
      local audio_file = ""
      for index, param in pairs(audio_file_table) do
          audio_file = audio_file .. " --audio-file='" .. string.gsub(tostring(param), "'", "'\\''") .. "'"
-@@ -354,9 +358,9 @@
+@@ -354,9 +360,9 @@ function encode(enc)
      if ovc == "gif" then
          full_command = full_command .. ' --vf-add=lavfi=graph=\\"framestep=' .. framestep .. '\\" && convert ' 
          .. tmpfolder .. '/*.png -set delay ' .. delay .. ' -loop 0 -fuzz ' .. fuzz .. '% ' .. dither .. ' -layers optimize '
 -        .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && notify-send "Gif done") & disown'
-+        .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && ' .. NOTIFY_CMD .. ' "Gif done") & disown'
++        .. full_output_path .. ' && rm -rf ' .. tmpfolder .. ' && ' .. notify_send_exe .. ' "Gif done") & disown'
      else
 -        full_command = full_command .. ' && notify-send "Encoding done"; mkvpropedit '
-+        full_command = full_command .. ' && ' .. NOTIFY_CMD .. ' "Encoding done"; mkvpropedit '
++        full_command = full_command .. ' && ' .. notify_send_exe .. ' "Encoding done"; ' .. mkvpropedit_exe .. ' '
          .. full_output_path .. ' -s title="' .. metadata_title .. '") & disown'
      end
      
-@@ -409,7 +413,7 @@
+@@ -409,7 +415,7 @@ function encode_copy(enc)
      sep = ",+"
      
      if enc then
 -        local command = "mkvmerge '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path
-+        local command = MKVMERGE_CMD .. " '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path
++        local command = mkvmerge_exe .. " '" .. video .. "' " .. mkvmerge_parts .. " -o " .. full_output_path
          msg.info(command)
          os.execute(command)
          clear()
-@@ -508,7 +512,7 @@
+@@ -508,7 +514,7 @@ function call_gui ()
      end
      
      
 -    local yad_command = [[LC_NUMERIC=C yad --title="Convert Script" --center --form --fixed --always-print-result \
-+    local yad_command = [[LC_NUMERIC=C ]] .. YAD_CMD .. [[ --title="Convert Script" --center --form --fixed --always-print-result \
++    local yad_command = [[LC_NUMERIC=C ]] .. yad_exe .. [[ --title="Convert Script" --center --form --fixed --always-print-result \
      --name "convert script" --class "Convert Script" --field="Resize to height:NUM" "]] .. scale_sav		--yad_table 1
      .. [[" --field="Resize to width instead:CHK" ]] .. resize_to_width_instead .. " "				--yad_table 2
      if options.legacy_yad then
-@@ -543,7 +547,7 @@
-     yad_command = yad_command .. [[ --button="Crop:1" --button="gtk-cancel:2" --button="gtk-ok:0"; ret=$? && echo $ret]]
-     
-     if gif_dialog then
--        yad_command = [[echo $(LC_NUMERIC=C yad --title="Gif settings" --name "convert script" --class "Convert Script" \
-+        yad_command = [[echo $(LC_NUMERIC=C ]] .. YAD_CMD .. [[ --title="Gif settings" --name "convert script" --class "Convert Script" \
-         --center --form --always-print-result --separator="…" \
-         --field="Fuzz Factor:NUM" '1!0..100!0.5!1' \
-         --field="Framestep:NUM" '3!1..3!1' \
+@@ -524,7 +530,7 @@ function call_gui ()
+         yad_command = yad_command
+         .. [[--field="2pass:CHK" "false" ]]									--yad_table 5
+         .. [[--field="Encode options::CBE" '! --ovcopts=b=2000,cpu-used=0,auto-alt-ref=1,lag-in-frames=25,quality=good,threads=4' ]]	--yad_table 6
+-        .. [[--field="Output format::CBE" ' --ovc=libx264! --oautofps --of=webm --ovc=libvpx' ]]		
++        .. [[--field="Output format::CBE" ' --ovc=libx264! --of=webm --ovc=libvpx' ]]
+         .. [[--field="Simple:FBTN" 'bash -c "echo \"simple\" && kill -s SIGUSR1 \"$YAD_PID\""' ]]
+         advanced = true
+     else
+@@ -734,4 +740,4 @@ mp.set_key_bindings({
+ 
+ mp.add_key_binding("alt+w", "convert_script", convert_script_hotkey_call)
+ 
+-mp.register_event("tick", tick)
+\ No newline at end of file
++mp.register_event("tick", tick)
diff --git a/pkgs/development/beam-modules/elixir_ls.nix b/pkgs/development/beam-modules/elixir_ls.nix
index 916a150c1f9..b61db92584d 100644
--- a/pkgs/development/beam-modules/elixir_ls.nix
+++ b/pkgs/development/beam-modules/elixir_ls.nix
@@ -9,7 +9,7 @@ mixRelease rec {
   src = fetchFromGitHub {
     owner = "elixir-lsp";
     repo = "elixir-ls";
-    rev = "v{version}";
+    rev = "v${version}";
     sha256 = "0d0hqc35hfjkpm88vz21mnm2a9rxiqfrdi83whhhh6d2ba216b7s";
     fetchSubmodules = true;
   };
diff --git a/pkgs/development/beam-modules/hex/default.nix b/pkgs/development/beam-modules/hex/default.nix
index 640b499c3ad..836740a7933 100644
--- a/pkgs/development/beam-modules/hex/default.nix
+++ b/pkgs/development/beam-modules/hex/default.nix
@@ -8,13 +8,13 @@ let
 
   pkg = self: stdenv.mkDerivation rec {
     pname = "hex";
-    version = "0.21.1";
+    version = "0.21.2";
 
     src = fetchFromGitHub {
       owner = "hexpm";
       repo = "hex";
       rev = "v${version}";
-      sha256 = "3V7hp+gK+ixEX+v9vkzQ5y81LN+CSzOIlSkCJB2RFb8=";
+      sha256 = "18vwrc5b7pyi3nifmx5hd5wbz8fy3h6sfvkmskjg5acmz66fys0g";
     };
 
     setupHook = writeText "setupHook.sh" ''
diff --git a/pkgs/development/libraries/eigen/2.0.nix b/pkgs/development/libraries/eigen/2.0.nix
index a2b1ba47e2d..a1633594636 100644
--- a/pkgs/development/libraries/eigen/2.0.nix
+++ b/pkgs/development/libraries/eigen/2.0.nix
@@ -6,19 +6,18 @@ stdenv.mkDerivation rec {
 
   src = fetchFromGitLab {
     owner = "libeigen";
-    repo = "eigen";
+    repo = pname;
     rev = version;
-    sha256 = "0d4knrcz04pxmxaqs5r3wv092950kl1z9wsw87vdzi9kgvc6wl0b";
+    hash = "sha256-C1Bu2H4zxd/2QVzz9AOdoCSRwOYjF41Vr/0S8Fm2kzQ=";
   };
 
   nativeBuildInputs = [ cmake ];
 
   meta = with lib; {
+    homepage = "https://eigen.tuxfamily.org";
     description = "C++ template library for linear algebra: vectors, matrices, and related algorithms";
     license = licenses.lgpl3Plus;
-    homepage = "https://eigen.tuxfamily.org";
-    maintainers = with lib.maintainers; [ sander raskin ];
-    branch = "2";
-    platforms = with lib.platforms; unix;
+    maintainers = with maintainers; [ sander raskin ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/libraries/eigen/default.nix b/pkgs/development/libraries/eigen/default.nix
index 079269521c7..a16cb628008 100644
--- a/pkgs/development/libraries/eigen/default.nix
+++ b/pkgs/development/libraries/eigen/default.nix
@@ -1,4 +1,8 @@
-{ lib, stdenv, fetchFromGitLab, cmake }:
+{ lib
+, stdenv
+, fetchFromGitLab
+, cmake
+}:
 
 stdenv.mkDerivation rec {
   pname = "eigen";
@@ -6,9 +10,9 @@ stdenv.mkDerivation rec {
 
   src = fetchFromGitLab {
     owner = "libeigen";
-    repo = "eigen";
+    repo = pname;
     rev = version;
-    sha256 = "1i3cvg8d70dk99fl3lrv3wqhfpdnm5kx01fl7r2bz46sk9bphwm1";
+    hash = "sha256-oXJ4V5rakL9EPtQF0Geptl0HMR8700FdSrOB09DbbMQ=";
   };
 
   patches = [
@@ -18,11 +22,10 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake ];
 
   meta = with lib; {
+    homepage = "https://eigen.tuxfamily.org";
     description = "C++ template library for linear algebra: vectors, matrices, and related algorithms";
     license = licenses.lgpl3Plus;
-    homepage = "https://eigen.tuxfamily.org";
+    maintainers = with maintainers; [ sander raskin ];
     platforms = platforms.unix;
-    maintainers = with lib.maintainers; [ sander raskin ];
-    inherit version;
   };
 }
diff --git a/pkgs/development/libraries/lief/default.nix b/pkgs/development/libraries/lief/default.nix
index 953eee3b8bd..872327ed4b8 100644
--- a/pkgs/development/libraries/lief/default.nix
+++ b/pkgs/development/libraries/lief/default.nix
@@ -1,8 +1,64 @@
-{ lib, fetchzip }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, python
+, cmake
+}:
 
-fetchzip {
-  url = "https://github.com/lief-project/LIEF/releases/download/0.9.0/LIEF-0.9.0-Linux.tar.gz";
-  sha256 = "1c47hwd00bp4mqd4p5b6xjfl89c3wwk9ccyc3a2gk658250g2la6";
+let
+  pyEnv = python.withPackages (ps: [ ps.setuptools ]);
+in
+stdenv.mkDerivation rec {
+  pname = "lief";
+  version = "0.11.4";
+
+  src = fetchFromGitHub {
+    owner = "lief-project";
+    repo = "LIEF";
+    rev = version;
+    sha256 = "DgsTrJ2+zdXJK6CdDOan7roakaaxQiwrVeiQnzJnk0A=";
+  };
+
+  outputs = [ "out" "py" ];
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  # Not a propagatedBuildInput because only the $py output needs it; $out is
+  # just the library itself (e.g. C/C++ headers).
+  buildInputs = [
+    python
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  buildPhase = ''
+    runHook preBuild
+
+    substituteInPlace setup.py \
+      --replace 'cmake_args = []' "cmake_args = [ \"-DCMAKE_INSTALL_PREFIX=$prefix\" ]"
+    ${pyEnv.interpreter} setup.py --sdk build --parallel=$NIX_BUILD_CORES
+
+    runHook postBuild
+  '';
+
+  # I was unable to find a way to build the library itself and have it install
+  # to $out, while also installing the Python bindings to $py without building
+  # the project twice (using cmake), so this is the best we've got. It uses
+  # something called CPack to create the tarball, but it's not obvious to me
+  # *how* that happens, or how to intercept it to just get the structured
+  # library output.
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out $py/nix-support
+    echo "${python}" >> $py/nix-support/propagated-build-inputs
+    tar xf build/*.tar.gz --directory $out --strip-components 1
+    ${pyEnv.interpreter} setup.py install --skip-build --root=/ --prefix=$py
+
+    runHook postInstall
+  '';
 
   meta = with lib; {
     description = "Library to Instrument Executable Formats";
diff --git a/pkgs/development/libraries/opencascade-occt/default.nix b/pkgs/development/libraries/opencascade-occt/default.nix
index 59c1f0ef7db..f2a9833d77d 100644
--- a/pkgs/development/libraries/opencascade-occt/default.nix
+++ b/pkgs/development/libraries/opencascade-occt/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "opencascade-occt";
-  version = "7.5.0";
+  version = "7.5.1";
   commit = "V${builtins.replaceStrings ["."] ["_"] version}";
 
   src = fetchurl {
     name = "occt-${commit}.tar.gz";
     url = "https://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=${commit};sf=tgz";
-    sha256 = "0bpzpaqki3k6i7xmhan0f1c1fr05smpcmgrp4vh572j61lwpq1r3";
+    sha256 = "sha256-1whKU+7AMVYabfs15x8MabohKonn5oM54ZEtxF93wAo=";
   };
 
   nativeBuildInputs = [ cmake ninja ];
diff --git a/pkgs/development/libraries/pupnp/default.nix b/pkgs/development/libraries/pupnp/default.nix
index de62bde1877..4b80b7ba5a7 100644
--- a/pkgs/development/libraries/pupnp/default.nix
+++ b/pkgs/development/libraries/pupnp/default.nix
@@ -6,15 +6,15 @@
 
 stdenv.mkDerivation rec {
   pname = "libupnp";
-  version = "1.14.4";
+  version = "1.14.6";
 
   outputs = [ "out" "dev" ];
 
   src = fetchFromGitHub {
-    owner = "mrjimenez";
+    owner = "pupnp";
     repo = "pupnp";
     rev = "release-${version}";
-    sha256 = "sha256-4VuTbcEjr9Ffrowb3eOtXFU8zPNu1NXS531EOZpI07A=";
+    sha256 = "1f9861q5dicp6rx3jnp1j788xfjfaf3k4620p9r0b0k0lj2gk38c";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/css-html-js-minify/default.nix b/pkgs/development/python-modules/css-html-js-minify/default.nix
new file mode 100644
index 00000000000..d05941e1cfb
--- /dev/null
+++ b/pkgs/development/python-modules/css-html-js-minify/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "css-html-js-minify";
+  version = "2.5.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "4a9f11f7e0496f5284d12111f3ba4ff5ff2023d12f15d195c9c48bd97013746c";
+  };
+
+  doCheck = false; # Tests are useless and broken
+
+  pythonImportsCheck = [ "css_html_js_minify" ];
+
+  meta = with lib; {
+    description = "StandAlone Async cross-platform Minifier for the Web";
+    homepage = "https://github.com/juancarlospaco/css-html-js-minify";
+    license = with licenses; [ gpl3Plus lgpl3Plus mit ];
+    maintainers = with maintainers; [ FlorianFranzen ];
+  };
+}
diff --git a/pkgs/development/python-modules/cxxfilt/default.nix b/pkgs/development/python-modules/cxxfilt/default.nix
new file mode 100644
index 00000000000..580d698d8da
--- /dev/null
+++ b/pkgs/development/python-modules/cxxfilt/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, gcc-unwrapped
+}:
+buildPythonPackage rec {
+  pname = "cxxfilt";
+  version = "0.2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ef6810e76d16c95c11b96371e2d8eefd1d270ec03f9bcd07590e8dcc2c69e92b";
+  };
+
+  postPatch = ''
+    substituteInPlace cxxfilt/__init__.py \
+      --replace "find_any_library('stdc++', 'c++')" '"${lib.getLib gcc-unwrapped}/lib/libstdc++.so"'
+  '';
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "cxxfilt"
+  ];
+
+  meta = with lib; {
+    description = "Demangling C++ symbols in Python / interface to abi::__cxa_demangle ";
+    homepage = "https://github.com/afq984/python-cxxfilt";
+    license = licenses.bsd2;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/deezer-python/default.nix b/pkgs/development/python-modules/deezer-python/default.nix
new file mode 100644
index 00000000000..cff9a666691
--- /dev/null
+++ b/pkgs/development/python-modules/deezer-python/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, requests
+, tornado
+, poetry-core
+, pytestCheckHook
+, pytest-cov
+, pytest-vcr
+}:
+
+buildPythonPackage rec {
+  pname = "deezer-python";
+  version = "2.2.2";
+  disabled = pythonOlder "3.6";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "browniebroke";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1l8l4lxlqsj921gk1mxcilp11jx31addiyd9pk604aldgqma709y";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-cov
+    pytest-vcr
+  ];
+
+  propagatedBuildInputs = [
+    requests
+    tornado
+  ];
+
+  meta = with lib; {
+    description = "A friendly Python wrapper around the Deezer API";
+    homepage = "https://github.com/browniebroke/deezer-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ synthetica ];
+  };
+}
diff --git a/pkgs/development/python-modules/httplib2/default.nix b/pkgs/development/python-modules/httplib2/default.nix
index 39bfdbfe7b2..40cd705f090 100644
--- a/pkgs/development/python-modules/httplib2/default.nix
+++ b/pkgs/development/python-modules/httplib2/default.nix
@@ -1,5 +1,4 @@
-{ stdenv
-, lib
+{ lib
 , buildPythonPackage
 , fetchFromGitHub
 , isPy27
@@ -30,6 +29,11 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ pyparsing ];
 
+  pythonImportsCheck = [ "httplib2" ];
+
+  # Don't run tests for Python 2.7
+  doCheck = !isPy27;
+
   checkInputs = [
     mock
     pytest-forked
@@ -40,12 +44,9 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Don't run tests for Python 2.7 or Darwin
-  # Nearly 50% of the test suite requires local network access
-  # which isn't allowed on sandboxed Darwin builds
-  doCheck = !(isPy27 || stdenv.isDarwin);
   pytestFlagsArray = [ "--ignore python2" ];
-  pythonImportsCheck = [ "httplib2" ];
+
+  __darwinAllowLocalNetworking = true;
 
   meta = with lib; {
     description = "A comprehensive HTTP client library";
diff --git a/pkgs/development/python-modules/multimethod/default.nix b/pkgs/development/python-modules/multimethod/default.nix
new file mode 100644
index 00000000000..ded279cd860
--- /dev/null
+++ b/pkgs/development/python-modules/multimethod/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pytest-cov
+}:
+buildPythonPackage rec {
+  pname = "multimethod";
+  version = "1.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "b9c6f85ecf187f14a3951fff319643e1fac3086d757dec64f2469e1fd136b65d";
+  };
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-cov
+  ];
+
+  pythomImportsCheck = [
+    "multimethod"
+  ];
+
+  meta = with lib; {
+    description = "Multiple argument dispatching";
+    homepage = "https://github.com/coady/multimethod";
+    license = licenses.asl20;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/pg8000/default.nix b/pkgs/development/python-modules/pg8000/default.nix
index efa4c3005fc..a03452d7862 100644
--- a/pkgs/development/python-modules/pg8000/default.nix
+++ b/pkgs/development/python-modules/pg8000/default.nix
@@ -8,19 +8,22 @@
 
 buildPythonPackage rec {
   pname = "pg8000";
-  version = "1.19.0";
+  version = "1.19.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-EexwwLIOpECAfiyGmUDxSE7qk9cbQ1gHtjhW3YK3RN0=";
+    sha256 = "sha256-RMu008kS8toWfKAr+YoAQPfpMmDk7xFMKNXWFSAS6gc=";
   };
 
-  propagatedBuildInputs = [passlib scramp ];
+  propagatedBuildInputs = [
+    passlib
+    scramp
+  ];
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "scramp==1.3.0" "scramp>=1.3.0"
+      --replace "scramp==1.4.0" "scramp>=1.4.0"
   '';
 
   # Tests require a running PostgreSQL instance
diff --git a/pkgs/development/python-modules/plugnplay/default.nix b/pkgs/development/python-modules/plugnplay/default.nix
new file mode 100644
index 00000000000..259fe96028a
--- /dev/null
+++ b/pkgs/development/python-modules/plugnplay/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+buildPythonPackage rec {
+  pname = "plugnplay";
+  version = "0.5.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "877e2d2500a45aaf31e5175f9f46182088d3e2d64c1c6b9ff6c778ae0ee594c8";
+  };
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "plugnplay"
+  ];
+
+  meta = with lib; {
+    description = "A Generic plug-in system for python applications";
+    homepage = "https://github.com/daltonmatos/plugnplay";
+    license = licenses.gpl2Only;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/pycuda/default.nix b/pkgs/development/python-modules/pycuda/default.nix
index 1db5df28e32..5bf9114d693 100644
--- a/pkgs/development/python-modules/pycuda/default.nix
+++ b/pkgs/development/python-modules/pycuda/default.nix
@@ -1,4 +1,5 @@
 { buildPythonPackage
+, addOpenGLRunpath
 , fetchPypi
 , fetchFromGitHub
 , Mako
@@ -40,6 +41,13 @@ buildPythonPackage rec {
     ln -s ${compyte} $out/${python.sitePackages}/pycuda/compyte
   '';
 
+  postFixup = ''
+    find $out/lib -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
+      echo "setting opengl runpath for $lib..."
+      addOpenGLRunpath "$lib"
+    done
+  '';
+
   # Requires access to libcuda.so.1 which is provided by the driver
   doCheck = false;
 
@@ -47,6 +55,10 @@ buildPythonPackage rec {
     py.test
   '';
 
+  nativeBuildInputs = [
+    addOpenGLRunpath
+  ];
+
   propagatedBuildInputs = [
     numpy
     pytools
diff --git a/pkgs/development/python-modules/pymavlink/default.nix b/pkgs/development/python-modules/pymavlink/default.nix
index cf8c9513002..2f39be79821 100644
--- a/pkgs/development/python-modules/pymavlink/default.nix
+++ b/pkgs/development/python-modules/pymavlink/default.nix
@@ -2,22 +2,27 @@
 
 buildPythonPackage rec {
   pname = "pymavlink";
-  version = "2.4.14";
+  version = "2.4.15";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3bc3709c735ebb3f98f19e96c8887868f4671077d4808076cfc5445912633881";
+    sha256 = "106va20k0ahy0l2qvxf8k5pvqkgdmxbgzd9kij9fkrahlba5mx3v";
   };
 
   propagatedBuildInputs = [ future lxml ];
 
-  # No tests included in PyPI tarball
+  # No tests included in PyPI tarball. We cannot use the GitHub tarball because
+  # we would like to use the same commit of the mavlink messages repo as
+  # included in the PyPI tarball, and there is no easy way to determine what
+  # commit is included.
   doCheck = false;
 
+  pythonImportsCheck = [ "pymavlink" ];
+
   meta = with lib; {
     description = "Python MAVLink interface and utilities";
     homepage = "https://github.com/ArduPilot/pymavlink";
-    license = licenses.lgpl3;
+    license = with licenses; [ lgpl3Only mit ];
     maintainers = with maintainers; [ lopsided98 ];
   };
 }
diff --git a/pkgs/development/python-modules/slackclient/default.nix b/pkgs/development/python-modules/slackclient/default.nix
index 4a3c2927218..cf7b161261e 100644
--- a/pkgs/development/python-modules/slackclient/default.nix
+++ b/pkgs/development/python-modules/slackclient/default.nix
@@ -18,7 +18,7 @@
 }:
 
 buildPythonPackage rec {
-  pname = "python-slackclient";
+  pname = "slackclient";
   version = "2.9.3";
 
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/sphinx-material/default.nix b/pkgs/development/python-modules/sphinx-material/default.nix
new file mode 100644
index 00000000000..aa6dc0d6bf1
--- /dev/null
+++ b/pkgs/development/python-modules/sphinx-material/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, beautifulsoup4
+, python-slugify
+, unidecode
+, css-html-js-minify
+, lxml
+}:
+
+buildPythonPackage rec {
+  pname = "sphinx-material";
+  version = "0.0.32";
+
+  src = fetchPypi {
+    pname = "sphinx_material";
+    inherit version;
+    sha256 = "ec02825a1bbe8b662fe624c11b87f1cd8d40875439b5b18c38649cf3366201fa";
+  };
+
+  propagatedBuildInputs = [
+    sphinx
+    beautifulsoup4
+    python-slugify
+    unidecode
+    css-html-js-minify
+    lxml
+  ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [ "sphinx_material" ];
+
+  meta = with lib; {
+    description = "A material-based, responsive theme inspired by mkdocs-material";
+    homepage = "https://bashtage.github.io/sphinx-material";
+    license = licenses.mit;
+    maintainers = with maintainers; [ FlorianFranzen ];
+  };
+}
diff --git a/pkgs/development/python-modules/viv-utils/default.nix b/pkgs/development/python-modules/viv-utils/default.nix
new file mode 100644
index 00000000000..e94c96f72b0
--- /dev/null
+++ b/pkgs/development/python-modules/viv-utils/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, isPy3k
+, fetchFromGitHub
+, funcy
+, pefile
+, vivisect
+, intervaltree
+, setuptools
+}:
+buildPythonPackage rec {
+  pname = "viv-utils";
+  version = "0.3.17";
+  disabled = isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "williballenthin";
+    repo = "viv-utils";
+    rev = "v${version}";
+    sha256 = "wZWp6PMn1to/jP6lzlY/x0IhS/0w0Ys7AdklNQ+Vmyc=";
+  };
+
+  # argparse is provided by Python itself
+  preBuild = ''
+    sed '/"argparse",/d' -i setup.py
+  '';
+
+  propagatedBuildInputs = [
+    funcy
+    pefile
+    vivisect
+    intervaltree
+    setuptools
+  ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "viv_utils"
+  ];
+
+  meta = with lib; {
+    description = "Utilities for working with vivisect";
+    homepage = "https://github.com/williballenthin/viv-utils";
+    license = licenses.asl20;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/vivisect/default.nix b/pkgs/development/python-modules/vivisect/default.nix
new file mode 100644
index 00000000000..0d86f2ffbd9
--- /dev/null
+++ b/pkgs/development/python-modules/vivisect/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+, pyasn1
+, pyasn1-modules
+, cxxfilt
+, msgpack
+, pycparser
+}:
+buildPythonPackage rec {
+  pname = "vivisect";
+  version = "0.1.0";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ed5e8c24684841d30dc7b41f2bee87c0198816a453417ae2e130b7845ccb2629";
+  };
+
+  propagatedBuildInputs = [
+    pyasn1
+    pyasn1-modules
+    cxxfilt
+    msgpack
+    pycparser
+  ];
+
+  preBuild = ''
+    sed "s@==.*'@'@" -i setup.py
+  '';
+
+  # requires another repo for test files
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "vivisect"
+  ];
+
+  meta = with lib; {
+    description = "Pure python disassembler, debugger, emulator, and static analysis framework";
+    homepage = "https://github.com/vivisect/vivisect";
+    license = licenses.asl20;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/development/python-modules/whois/default.nix b/pkgs/development/python-modules/whois/default.nix
index 759bc0cd8ee..ef69283e6db 100644
--- a/pkgs/development/python-modules/whois/default.nix
+++ b/pkgs/development/python-modules/whois/default.nix
@@ -1,19 +1,18 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, pytestCheckHook
 , inetutils
 }:
 
 buildPythonPackage rec {
   pname = "whois";
-  version = "0.9.7";
+  version = "0.9.13";
 
   src = fetchFromGitHub {
     owner = "DannyCork";
     repo = "python-whois";
     rev = version;
-    sha256 = "1rbc4xif4dn455vc8dhxdvwszrb0nik5q9fy12db6mxfx6zikb7z";
+    sha256 = "0y2sfs6nkr2j2crrn81wkfdzn9aphb3iaddya5zd2midlgdqq7bw";
   };
 
   # whois is needed
diff --git a/pkgs/development/python-modules/woodblock/default.nix b/pkgs/development/python-modules/woodblock/default.nix
new file mode 100644
index 00000000000..7497ad15489
--- /dev/null
+++ b/pkgs/development/python-modules/woodblock/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, click
+, multimethod
+, numpy
+}:
+buildPythonPackage rec {
+  pname = "woodblock";
+  version = "0.1.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "c0347ece920b7009d94551983a01f42db02920ca8d7b0ff36d24a337e2c937f7";
+  };
+
+  propagatedBuildInputs = [
+    click
+    multimethod
+    numpy
+  ];
+
+  # no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "woodblock"
+  ];
+
+  meta = with lib; {
+    description = "A framework to generate file carving test data";
+    homepage = "https://github.com/fkie-cad/woodblock";
+    license = licenses.mit;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/development/tools/azcopy/default.nix b/pkgs/development/tools/azcopy/default.nix
index 6b94ed0a93f..0be3f5c0b7e 100644
--- a/pkgs/development/tools/azcopy/default.nix
+++ b/pkgs/development/tools/azcopy/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "azure-storage-azcopy";
-  version = "10.9.0";
+  version = "10.10.0";
 
   src = fetchFromGitHub {
     owner = "Azure";
     repo = "azure-storage-azcopy";
     rev = "v${version}";
-    sha256 = "sha256-IVbvBqp/7Y3La0pP6gbWl0ATfEvkCuR4J9ChTDPNhB0=";
+    sha256 = "sha256-gWU219QlV+24RxnTHqQzQeGZHzVwmBXNKU+3QI6WvHI=";
   };
 
   subPackages = [ "." ];
 
-  vendorSha256 = "sha256-mj1TvNuFFPJGAJCBTQtU5WWPhHbiXUxRiMZQ/XvEy0U=";
+  vendorSha256 = "sha256-d965Rt8W74bsIZAZPZLe3twuUpp4wrnNc0qwjsKikOE=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index e46a97b6fa9..65d304fb90b 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -90,7 +90,7 @@
     "blueprint" = ps: with ps; [ ];
     "bluesound" = ps: with ps; [ xmltodict ];
     "bluetooth_le_tracker" = ps: with ps; [ ]; # missing inputs: pygatt[GATTTOOL]
-    "bluetooth_tracker" = ps: with ps; [ bt_proximity ]; # missing inputs: pybluez
+    "bluetooth_tracker" = ps: with ps; [ bt_proximity pybluez ];
     "bme280" = ps: with ps; [ smbus-cffi ]; # missing inputs: i2csense
     "bme680" = ps: with ps; [ bme680 smbus-cffi ];
     "bmp280" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-bmp280
@@ -750,7 +750,7 @@
     "sky_hub" = ps: with ps; [ ]; # missing inputs: pyskyqhub
     "skybeacon" = ps: with ps; [ ]; # missing inputs: pygatt[GATTTOOL]
     "skybell" = ps: with ps; [ skybellpy ];
-    "slack" = ps: with ps; [ ]; # missing inputs: slackclient
+    "slack" = ps: with ps; [ slackclient ];
     "sleepiq" = ps: with ps; [ sleepyq ];
     "slide" = ps: with ps; [ ]; # missing inputs: goslide-api
     "sma" = ps: with ps; [ pysma ];
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 76791c58661..e34fe3a734b 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -362,6 +362,7 @@ in with py.pkgs; buildPythonApplication rec {
     "sleepiq"
     "sma"
     "sensor"
+    "slack"
     "smarttub"
     "smtp"
     "smappee"
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index eeb117a984e..b6ff5662f9e 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -124,7 +124,10 @@ def name_to_attr_path(req: str, packages: Dict[str, Dict[str, str]]) -> Optional
     for name in names:
         # treat "-" and "_" equally
         name = re.sub("[-_]", "[-_]", name)
-        pattern = re.compile("^python\\d\\.\\d-{}-\\d".format(name), re.I)
+        # python(minor).(major)-(pname)-(version or unstable-date)
+        # we need the version qualifier, or we'll have multiple matches
+        # (e.g. pyserial and pyserial-asyncio when looking for pyserial)
+        pattern = re.compile("^python\\d\\.\\d-{}-(?:\\d|unstable-.*)".format(name), re.I)
         for attr_path, package in packages.items():
             if pattern.match(package["name"]):
                 attr_paths.add(attr_path)
diff --git a/pkgs/servers/sql/postgresql/ext/pgvector.nix b/pkgs/servers/sql/postgresql/ext/pgvector.nix
new file mode 100644
index 00000000000..a5c0f558c46
--- /dev/null
+++ b/pkgs/servers/sql/postgresql/ext/pgvector.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "pgvector";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "ankane";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "03i8rq9wp9j2zdba82q31lzbrqpnhrqc8867pxxy3z505fxsvfzb";
+  };
+
+  buildInputs = [ postgresql ];
+
+  installPhase = ''
+    install -D -t $out/lib vector.so
+    install -D -t $out/share/postgresql/extension vector-*.sql
+    install -D -t $out/share/postgresql/extension vector.control
+  '';
+
+  meta = with lib; {
+    description = "Open-source vector similarity search for PostgreSQL";
+    homepage = "https://github.com/ankane/pgvector";
+    license = licenses.postgresql;
+    platforms = postgresql.meta.platforms;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/pkgs/servers/sql/postgresql/packages.nix b/pkgs/servers/sql/postgresql/packages.nix
index e8b2f4130a5..e2d655bdb37 100644
--- a/pkgs/servers/sql/postgresql/packages.nix
+++ b/pkgs/servers/sql/postgresql/packages.nix
@@ -25,6 +25,8 @@ self: super: {
 
     pgroonga = super.callPackage ./ext/pgroonga.nix { };
 
+    pgvector = super.callPackage ./ext/pgvector.nix { };
+
     plpgsql_check = super.callPackage ./ext/plpgsql_check.nix { };
 
     plr = super.callPackage ./ext/plr.nix { };
diff --git a/pkgs/tools/misc/chezmoi/default.nix b/pkgs/tools/misc/chezmoi/default.nix
index f6c6b1aecc5..cec900189c4 100644
--- a/pkgs/tools/misc/chezmoi/default.nix
+++ b/pkgs/tools/misc/chezmoi/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "chezmoi";
-  version = "2.0.9";
+  version = "2.0.10";
 
   src = fetchFromGitHub {
     owner = "twpayne";
     repo = "chezmoi";
     rev = "v${version}";
-    sha256 = "sha256-yDd9u9cwC+bjB0ZQW0EgEDaHmWwkUprwXIiVrOVP2nk=";
+    sha256 = "sha256-WVG4rww9Wd1H6zw5lRBErX9VwnA21dhvith9BQFYqxw=";
   };
 
-  vendorSha256 = "sha256-c6YIWpC8sQA/gbgD2vuuFvwccEE00aUrj6gcPpJsn0k=";
+  vendorSha256 = "sha256-khYcNP3xAXeQR9vaghkGq8x6KB1k5hLEcE7Zx8H+CfA=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/misc/goreleaser/default.nix b/pkgs/tools/misc/goreleaser/default.nix
index 8732ee66ef6..6b92ecc5ef2 100644
--- a/pkgs/tools/misc/goreleaser/default.nix
+++ b/pkgs/tools/misc/goreleaser/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "goreleaser";
-  version = "0.162.0";
+  version = "0.163.1";
 
   src = fetchFromGitHub {
     owner = "goreleaser";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-nhl6GATzFsfEQjKVxz65REn9QTvOH49omU00ZCfO6CY=";
+    sha256 = "sha256-2SDy/Mk4TkXkJKF1gFW7/FH4Y31TE2X38I0r/Ng/BjU=";
   };
 
-  vendorSha256 = "sha256-zq/RIOK/Hs1GJ2yLE7pe0UoDuR6LGUrPQAuQzrTvuKs=";
+  vendorSha256 = "sha256-+Qdxnd+IhBNfZ0R2lCfPGJSjpTw1TA6uPjykCfrYtMk=";
 
   buildFlagsArray = [
     "-ldflags="
diff --git a/pkgs/tools/misc/pcb2gcode/default.nix b/pkgs/tools/misc/pcb2gcode/default.nix
index 6d385169975..d7f6a3d8739 100644
--- a/pkgs/tools/misc/pcb2gcode/default.nix
+++ b/pkgs/tools/misc/pcb2gcode/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pcb2gcode";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "pcb2gcode";
     repo = "pcb2gcode";
     rev = "v${version}";
-    sha256 = "sha256-BELugmnnedqXTnSwiQN3XbqkWKTKF27ElQAwrEWNSao=";
+    sha256 = "sha256-blbfpMBe7X3OrNbBiz8fNzKcS/bbViQUTXtdxZpXPBk=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
diff --git a/pkgs/tools/misc/starship/default.nix b/pkgs/tools/misc/starship/default.nix
index c589590abcf..1e3eae78701 100644
--- a/pkgs/tools/misc/starship/default.nix
+++ b/pkgs/tools/misc/starship/default.nix
@@ -11,13 +11,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "starship";
-  version = "0.51.0";
+  version = "0.52.1";
 
   src = fetchFromGitHub {
     owner = "starship";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1bmnwvjhw2ba7yqn9if83d57b8qbrbqgy2br8q2drz4ylk0gjirg";
+    sha256 = "sha256-BX+NUF7mgZyrloj3h9YcG2r6ZZWO20hXQYbBvaK34JQ=";
   };
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optionals stdenv.isLinux [ pkg-config ];
@@ -32,7 +32,7 @@ rustPlatform.buildRustPackage rec {
     done
   '';
 
-  cargoSha256 = "1d4ca8yzx437x53i7z2kddv9db89zy6ywbgl6y1cwwd6wscbrxcq";
+  cargoSha256 = "sha256-8xqbPkdIVfAkeG1WZFq56N0rcF+uh2FeMKzz4FgMFYs=";
 
   preCheck = ''
     HOME=$TMPDIR
diff --git a/pkgs/tools/misc/vector/default.nix b/pkgs/tools/misc/vector/default.nix
index 04eb29ca1e1..0c4085d8296 100644
--- a/pkgs/tools/misc/vector/default.nix
+++ b/pkgs/tools/misc/vector/default.nix
@@ -18,16 +18,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "vector";
-  version = "0.12.2";
+  version = "0.13.0";
 
   src = fetchFromGitHub {
     owner = "timberio";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-LutCzpJo47wvEze7bAObRVraNhVuQFc9NQ79NzKA9CM=";
+    sha256 = "sha256-Sur5QfPIoJXkcYdyNlIHOvmV2yBedhNm7UinmaFEc2E=";
   };
 
-  cargoSha256 = "sha256-GU5p9DB5Bk8eQc1B/WA87grbVJVcT1ELJ0WzmRYgDzc=";
+  cargoSha256 = "sha256-1Xm1X1pfx9J0tBck2WA+zt2OxtQsqustcWPazsPyKPY=";
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl protobuf rdkafka ]
     ++ lib.optional stdenv.isDarwin [ Security libiconv coreutils CoreServices ];
diff --git a/pkgs/tools/networking/croc/default.nix b/pkgs/tools/networking/croc/default.nix
index 8e9097f2f99..187c07b040b 100644
--- a/pkgs/tools/networking/croc/default.nix
+++ b/pkgs/tools/networking/croc/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "croc";
-  version = "8.6.12";
+  version = "9.1.0";
 
   src = fetchFromGitHub {
     owner = "schollz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Oad0JpeeCpIHfH9e1pTKtrnvZ+eFx3dR5GP6g6piFS0=";
+    sha256 = "sha256-teH4Y6PrUSE7Rxw0WV7Ka+CB44nwYXy9q09wOAhC8Bc=";
   };
 
-  vendorSha256 = "sha256-LYMZFaCNlJg+9Hoh2VbY6tMHv6oT7r+JHBcQYpOceRQ=";
+  vendorSha256 = "sha256-HPUvL22BrVH9/j41VFaystZWs0LO6KNIf2cNYqKxWnY=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/lychee/default.nix b/pkgs/tools/networking/lychee/default.nix
index 40353ea278c..72f5b6f57fd 100644
--- a/pkgs/tools/networking/lychee/default.nix
+++ b/pkgs/tools/networking/lychee/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "lychee";
-  version = "0.5.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "lycheeverse";
     repo = pname;
-    rev = "v${version}";
-    sha256 = "03dsp0384mwr51dkqfl25xba0m17sppabiz7slhxcig89b0ksykm";
+    rev = version;
+    sha256 = "0kpwpbv0dqb0p4bxjlcjas6x1n91rdsvy2psrc1nyr1sh6gb1q5j";
   };
 
-  cargoSha256 = "08y2wpm2qgm2jsy257b2p2anxy4q3bj2kfdr5cnb6wnaz9g4ypq2";
+  cargoSha256 = "1b915zkg41n3azk4hhg6fgc83n7iq8p7drvdyil2m2a4qdjvp9r3";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/tools/security/flare-floss/default.nix b/pkgs/tools/security/flare-floss/default.nix
new file mode 100644
index 00000000000..954dd07d6ab
--- /dev/null
+++ b/pkgs/tools/security/flare-floss/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, python2
+, fetchFromGitHub
+}:
+python2.pkgs.buildPythonPackage rec {
+  pname = "flare-floss";
+  version = "1.7.0";
+
+  src = fetchFromGitHub {
+    owner = "fireeye";
+    repo = "flare-floss";
+    rev = "v${version}";
+    sha256 = "GMOA1+qM2A/Qw33kOTIINEvjsfqjWQWBXHNemh3IK8w=";
+  };
+
+  propagatedBuildInputs = with python2.pkgs; [
+    pyyaml
+    simplejson
+    tabulate
+    vivisect
+    plugnplay
+    viv-utils
+    enum34
+  ];
+
+  checkInputs = [
+    python2.pkgs.pytestCheckHook
+  ];
+
+  disabledTests = [
+    # test data is in a submodule
+    "test_main"
+  ];
+
+  pythonImportsCheck = [
+    "floss"
+    "floss.plugins"
+  ];
+
+  meta = with lib; {
+    description = "Automatically extract obfuscated strings from malware";
+    homepage = "https://github.com/fireeye/flare-floss";
+    license = licenses.asl20;
+    maintainers = teams.determinatesystems.members;
+  };
+}
diff --git a/pkgs/tools/security/yarGen/default.nix b/pkgs/tools/security/yarGen/default.nix
index 1beb68e0bd7..1cbf736bd26 100644
--- a/pkgs/tools/security/yarGen/default.nix
+++ b/pkgs/tools/security/yarGen/default.nix
@@ -1,6 +1,7 @@
 { lib
 , python3
 , fetchFromGitHub
+, fetchpatch
 }:
 python3.pkgs.buildPythonApplication rec {
   pname = "yarGen";
@@ -14,18 +15,24 @@ python3.pkgs.buildPythonApplication rec {
     sha256 = "6PJNAeeLAyUlZcIi0g57sO1Ex6atn7JhbK9kDbNrZ6A=";
   };
 
+  patches = [
+    # https://github.com/Neo23x0/yarGen/pull/33
+    (fetchpatch {
+      name = "use-built-in-scandir.patch";
+      url = "https://github.com/Neo23x0/yarGen/commit/cae14ac8efeb5536885792cae99d1d0f7fb6fde3.patch";
+      sha256 = "0z6925r7n1iysld5c8li5nkm1dbxg8j7pn0626a4vic525vf8ndl";
+    })
+  ];
+
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out/bin
-    chmod +x yarGen.py
-    mv yarGen.py $out/bin/yargen
+    install -Dt "$out/bin" yarGen.py
 
     runHook postInstall
   '';
 
   propagatedBuildInputs = with python3.pkgs; [
-    scandir
     pefile
     lxml
   ];
diff --git a/pkgs/tools/text/dcs/default.nix b/pkgs/tools/text/dcs/default.nix
new file mode 100644
index 00000000000..610b494439c
--- /dev/null
+++ b/pkgs/tools/text/dcs/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, python3Packages
+, perl
+, zopfli
+, stdenv
+}:
+buildGoModule {
+  pname = "dcs";
+  version = "unstable-2021-04-07";
+
+  src = fetchFromGitHub {
+    owner = "Debian";
+    repo = "dcs";
+    rev = "da46accc4d55e9bfde1a6852ac5a9e730fcbbb2c";
+    sha256 = "N+6BXlKn1YTlh0ZdPNWa0nuJNcQtlUIc9TocM8cbzQk=";
+  };
+
+  vendorSha256 = "l2mziuisx0HzuP88rS5M+Wha6lu8P036wJYZlmzjWfs=";
+
+  # Depends on dcs binaries
+  doCheck = false;
+
+  nativeBuildInputs = [
+    python3Packages.slimit
+    (perl.withPackages (p: [ p.CSSMinifier ]))
+    zopfli
+  ];
+
+  postBuild = ''
+    make -C static -j$NIX_BUILD_CORES
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/dcs
+    cp -r cmd/dcs-web/templates $out/share/dcs
+    cp -r static $out/share/dcs
+  '';
+
+  meta = with lib; {
+    description = "Debian Code Search";
+    homepage = "https://github.com/Debian/dcs";
+    license = licenses.bsd3;
+    maintainers = teams.determinatesystems.members;
+    broken = stdenv.isAarch64;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 29858e94c9c..440bdb97fd7 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -404,6 +404,8 @@ in
 
   find-cursor = callPackage ../tools/X11/find-cursor { };
 
+  flare-floss = callPackage ../tools/security/flare-floss { };
+
   prefer-remote-fetch = import ../build-support/prefer-remote-fetch;
 
   global-platform-pro = callPackage ../development/tools/global-platform-pro/default.nix { };
@@ -2725,7 +2727,9 @@ in
 
   lexicon = callPackage ../tools/admin/lexicon { };
 
-  lief = callPackage ../development/libraries/lief {};
+  lief = callPackage ../development/libraries/lief {
+    python = python3;
+  };
 
   libnbd = callPackage ../development/libraries/libnbd { };
 
@@ -3780,6 +3784,8 @@ in
 
   dcraw = callPackage ../tools/graphics/dcraw { };
 
+  dcs = callPackage ../tools/text/dcs { };
+
   dcfldd = callPackage ../tools/system/dcfldd { };
 
   debianutils = callPackage ../tools/misc/debianutils { };
@@ -12648,6 +12654,8 @@ in
 
   csslint = callPackage ../development/web/csslint { };
 
+  css-html-js-minify = with python3Packages; toPythonApplication css-html-js-minify;
+
   cvise = python3Packages.callPackage ../development/tools/misc/cvise {
     inherit (llvmPackages_11) llvm clang-unwrapped;
   };
@@ -29056,9 +29064,7 @@ in
 
   aspino = callPackage ../applications/science/logic/aspino {};
 
-  beluga = callPackage ../applications/science/logic/beluga {
-    ocamlPackages = ocaml-ng.ocamlPackages_4_07;
-  };
+  beluga = callPackage ../applications/science/logic/beluga {};
 
   boogie = dotnetPackages.Boogie;
 
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index a3123546607..9db246eae43 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -4481,6 +4481,20 @@ let
     propagatedBuildInputs = [ Clone ];
   };
 
+  CSSMinifier = buildPerlPackage {
+    pname = "CSS-Minifier";
+    version = "0.01";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PM/PMICHAUX/CSS-Minifier-0.01.tar.gz";
+      sha256 = "0Kk0m46LfoOrcM+IVM+7Qv8pwfbHyCmPIlfdIaoMf+8=";
+    };
+    meta = with lib; {
+      description = "Perl extension for minifying CSS";
+      license = licenses.artistic1;
+      maintainers = teams.determinatesystems.members;
+    };
+  };
+
   CSSMinifierXS = buildPerlModule {
     pname = "CSS-Minifier-XS";
     version = "0.09";
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 12f579dc055..e0553a459b1 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1566,6 +1566,8 @@ in {
 
   cssmin = callPackage ../development/python-modules/cssmin { };
 
+  css-html-js-minify = callPackage ../development/python-modules/css-html-js-minify { };
+
   css-parser = callPackage ../development/python-modules/css-parser { };
 
   cssselect2 = callPackage ../development/python-modules/cssselect2 { };
@@ -1603,6 +1605,8 @@ in {
 
   cx_oracle = callPackage ../development/python-modules/cx_oracle { };
 
+  cxxfilt = callPackage ../development/python-modules/cxxfilt { };
+
   cycler = callPackage ../development/python-modules/cycler { };
 
   cymem = callPackage ../development/python-modules/cymem { };
@@ -1719,6 +1723,8 @@ in {
 
   deeptoolsintervals = callPackage ../development/python-modules/deeptoolsintervals { };
 
+  deezer-python = callPackage ../development/python-modules/deezer-python { };
+
   defcon = callPackage ../development/python-modules/defcon { };
 
   deform = callPackage ../development/python-modules/deform { };
@@ -3789,6 +3795,10 @@ in {
 
   license-expression = callPackage ../development/python-modules/license-expression { };
 
+  lief = (toPythonModule (pkgs.lief.override {
+    inherit python;
+  })).py;
+
   lightgbm = callPackage ../development/python-modules/lightgbm { };
 
   lightning = callPackage ../development/python-modules/lightning { };
@@ -4221,6 +4231,8 @@ in {
 
   multi_key_dict = callPackage ../development/python-modules/multi_key_dict { };
 
+  multimethod = callPackage ../development/python-modules/multimethod { };
+
   multipledispatch = callPackage ../development/python-modules/multipledispatch { };
 
   multiprocess = callPackage ../development/python-modules/multiprocess { };
@@ -4950,6 +4962,8 @@ in {
 
   pluginbase = callPackage ../development/python-modules/pluginbase { };
 
+  plugnplay = callPackage ../development/python-modules/plugnplay { };
+
   plugwise = callPackage ../development/python-modules/plugwise { };
 
   plum-py = callPackage ../development/python-modules/plum-py { };
@@ -7533,6 +7547,8 @@ in {
 
   sphinx-jinja = callPackage ../development/python-modules/sphinx-jinja { };
 
+  sphinx-material = callPackage ../development/python-modules/sphinx-material { };
+
   sphinx-navtree = callPackage ../development/python-modules/sphinx-navtree { };
 
   sphinx_pypi_upload = callPackage ../development/python-modules/sphinx_pypi_upload { };
@@ -8306,6 +8322,10 @@ in {
 
   vispy = callPackage ../development/python-modules/vispy { };
 
+  vivisect = callPackage ../development/python-modules/vivisect { };
+
+  viv-utils = callPackage ../development/python-modules/viv-utils { };
+
   vmprof = callPackage ../development/python-modules/vmprof { };
 
   vncdo = callPackage ../development/python-modules/vncdo { };
@@ -8456,6 +8476,8 @@ in {
 
   woob = callPackage ../development/python-modules/woob { };
 
+  woodblock = callPackage ../development/python-modules/woodblock { };
+
   word2vec = callPackage ../development/python-modules/word2vec { };
 
   wordcloud = callPackage ../development/python-modules/wordcloud { };