summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/audio/mopidy/local.nix4
-rw-r--r--pkgs/applications/audio/ncspot/default.nix6
-rw-r--r--pkgs/applications/audio/noisetorch/default.nix8
-rw-r--r--pkgs/applications/audio/noisetorch/embedlibrnnoise.patch13
-rw-r--r--pkgs/applications/audio/picard/default.nix4
-rw-r--r--pkgs/applications/editors/emacs/generic.nix18
-rw-r--r--pkgs/applications/editors/emacs/site-start.el19
-rw-r--r--pkgs/applications/editors/jetbrains/common.nix13
-rw-r--r--pkgs/applications/editors/jetbrains/default.nix25
-rw-r--r--pkgs/applications/editors/kdevelop5/kdev-php.nix4
-rw-r--r--pkgs/applications/editors/kdevelop5/kdev-python.nix4
-rwxr-xr-xpkgs/applications/editors/vscode/update-vscodium.sh2
-rw-r--r--pkgs/applications/graphics/paraview/default.nix5
-rw-r--r--pkgs/applications/graphics/xournalpp/default.nix10
-rw-r--r--pkgs/applications/misc/archivy/default.nix16
-rw-r--r--pkgs/applications/misc/dasel/default.nix4
-rw-r--r--pkgs/applications/misc/librecad/default.nix10
-rw-r--r--pkgs/applications/misc/moolticute/default.nix4
-rw-r--r--pkgs/applications/misc/tasknc/default.nix6
-rw-r--r--pkgs/applications/misc/ulauncher/default.nix4
-rw-r--r--pkgs/applications/misc/xdg-launch/default.nix57
-rw-r--r--pkgs/applications/networking/browsers/brave/default.nix5
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix17
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix27
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix34
-rw-r--r--pkgs/applications/networking/browsers/chromium/ungoogled.nix (renamed from pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix)1
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.py73
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json28
-rw-r--r--pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix86
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/common.nix345
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/default.nix214
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch17
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch13
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix92
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix6
-rwxr-xr-xpkgs/applications/networking/browsers/ungoogled-chromium/update.py121
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json46
-rw-r--r--pkgs/applications/networking/cluster/nomad/0.11.nix4
-rw-r--r--pkgs/applications/networking/cluster/nomad/0.12.nix4
-rw-r--r--pkgs/applications/networking/cluster/sonobuoy/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/terraform/default.nix6
-rw-r--r--pkgs/applications/networking/feedreaders/feeds/default.nix88
-rw-r--r--pkgs/applications/networking/feedreaders/feeds/listparser.nix31
-rw-r--r--pkgs/applications/networking/feedreaders/newsflash/default.nix10
-rw-r--r--pkgs/applications/networking/icemon/default.nix24
-rw-r--r--pkgs/applications/networking/instant-messengers/bluejeans/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/hipchat/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/signal-desktop/default.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix530
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/default.nix4
-rw-r--r--pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix4
-rw-r--r--pkgs/applications/networking/p2p/qbittorrent/default.nix23
-rw-r--r--pkgs/applications/networking/sync/onedrive/default.nix4
-rw-r--r--pkgs/applications/networking/syncplay/default.nix4
-rw-r--r--pkgs/applications/science/logic/cryptoverif/default.nix6
-rw-r--r--pkgs/applications/science/math/giac/default.nix4
-rw-r--r--pkgs/applications/science/math/maxima/default.nix4
-rw-r--r--pkgs/applications/science/math/nauty/default.nix2
-rw-r--r--pkgs/applications/science/math/pari/default.nix3
-rw-r--r--pkgs/applications/science/math/pynac/default.nix9
-rw-r--r--pkgs/applications/science/math/sage/default.nix65
-rw-r--r--pkgs/applications/science/math/sage/env-locations.nix2
-rw-r--r--pkgs/applications/science/math/sage/flask-oldsessions.nix36
-rw-r--r--pkgs/applications/science/math/sage/flask-openid.nix28
-rw-r--r--pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch21
-rw-r--r--pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch33
-rw-r--r--pkgs/applications/science/math/sage/patches/docutils-0.15.patch24
-rw-r--r--pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch30
-rw-r--r--pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch12
-rw-r--r--pkgs/applications/science/math/sage/patches/pari-stackwarn.patch20
-rw-r--r--pkgs/applications/science/math/sage/patches/pillow-update.patch39
-rw-r--r--pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch28
-rw-r--r--pkgs/applications/science/math/sage/patches/register-pretty-printer-earlier.patch36
-rw-r--r--pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch13
-rw-r--r--pkgs/applications/science/math/sage/patches/sagespawn-implicit-casting.patch13
-rw-r--r--pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch2
-rw-r--r--pkgs/applications/science/math/sage/patches/sympow-cache.patch14
-rw-r--r--pkgs/applications/science/math/sage/pybrial.nix25
-rw-r--r--pkgs/applications/science/math/sage/python-openid.nix40
-rw-r--r--pkgs/applications/science/math/sage/sage-env.nix25
-rw-r--r--pkgs/applications/science/math/sage/sage-src.nix136
-rw-r--r--pkgs/applications/science/math/sage/sage-with-env.nix8
-rw-r--r--pkgs/applications/science/math/sage/sage.nix1
-rw-r--r--pkgs/applications/science/math/sage/sagedoc.nix24
-rw-r--r--pkgs/applications/science/math/sage/sagelib.nix4
-rw-r--r--pkgs/applications/science/math/sage/sagenb.nix57
-rw-r--r--pkgs/applications/science/misc/simgrid/default.nix4
-rw-r--r--pkgs/applications/version-management/fossil/default.nix4
-rw-r--r--pkgs/applications/virtualization/docker-slim/default.nix5
-rw-r--r--pkgs/applications/virtualization/vpcs/default.nix27
-rw-r--r--pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch14
-rw-r--r--pkgs/applications/window-managers/i3/gaps.nix2
-rw-r--r--pkgs/applications/window-managers/i3/i3-resurrect.nix22
-rw-r--r--pkgs/applications/window-managers/i3/lock-color.nix4
-rw-r--r--pkgs/applications/window-managers/wayfire/applications.nix23
-rw-r--r--pkgs/applications/window-managers/wayfire/default.nix30
-rw-r--r--pkgs/applications/window-managers/wayfire/plugins.nix12
-rw-r--r--pkgs/applications/window-managers/wayfire/wcm.nix29
-rw-r--r--pkgs/applications/window-managers/wayfire/wf-config.nix23
-rw-r--r--pkgs/applications/window-managers/wayfire/wf-shell.nix30
-rw-r--r--pkgs/applications/window-managers/wayfire/wrapper.nix39
102 files changed, 1286 insertions, 1865 deletions
diff --git a/pkgs/applications/audio/mopidy/local.nix b/pkgs/applications/audio/mopidy/local.nix
index 43554280565..6cbb8424d35 100644
--- a/pkgs/applications/audio/mopidy/local.nix
+++ b/pkgs/applications/audio/mopidy/local.nix
@@ -5,11 +5,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Local";
-  version = "3.1.1";
+  version = "3.2.0";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "13m0iz14lyplnpm96gfpisqvv4n89ls30kmkg21z7v238lm0h19j";
+    sha256 = "14f78sb3wkg83dg3xcqlq77dh059zzcwry5l9ilyhnmvmyrkhqx0";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/audio/ncspot/default.nix b/pkgs/applications/audio/ncspot/default.nix
index 623682f4173..a1019880318 100644
--- a/pkgs/applications/audio/ncspot/default.nix
+++ b/pkgs/applications/audio/ncspot/default.nix
@@ -14,16 +14,16 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "ncspot";
-  version = "0.2.5";
+  version = "0.2.6";
 
   src = fetchFromGitHub {
     owner = "hrkfdn";
     repo = "ncspot";
     rev = "v${version}";
-    sha256 = "19jy1ma2viqnyfbqdpm4cf8mpdrc0xyxrk7sayx1b7dqmkxcyp5c";
+    sha256 = "0x40qzgw9zcih4q6mzclb7gqkw8h76hrmqzmg6nimpla29jcdxss";
   };
 
-  cargoSha256 = "0lgd4ff70qsjplm847hkx1hgs3kpwv2ahmgyhsld3mng3k7qfm09";
+  cargoSha256 = "1pfl7cblf7d4ci514vlkdh1ybgby71x4aszxmlsrqmn92bq56jys";
 
   cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ];
 
diff --git a/pkgs/applications/audio/noisetorch/default.nix b/pkgs/applications/audio/noisetorch/default.nix
index 1932f239cfd..1796927f529 100644
--- a/pkgs/applications/audio/noisetorch/default.nix
+++ b/pkgs/applications/audio/noisetorch/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "NoiseTorch";
-  version = "0.8.2";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "lawl";
     repo = "NoiseTorch";
     rev = version;
-    sha256 = "14i04rmraxbddcvk0k9c6ak9invln7002g5jms54kcjzv9p39hbf";
+    sha256 = "1a4g112h83m55pga8kq2a1wzxpycj59v4bygyjfyi1s09q1y97qg";
   };
 
-  patches = [ ./version.patch ./embedlibrnnoise.patch ];
+  patches = [ ./version.patch ];
 
   vendorSha256 = null;
 
@@ -21,6 +21,8 @@ buildGoModule rec {
 
   buildInputs = [ rnnoise-plugin ];
 
+  postPatch = "substituteInPlace main.go --replace 'librnnoise_ladspa/bin/ladspa/librnnoise_ladspa.so' '$RNNOISE_LADSPA_PLUGIN'";
+
   preBuild = ''
     export RNNOISE_LADSPA_PLUGIN="${rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
     go generate;
diff --git a/pkgs/applications/audio/noisetorch/embedlibrnnoise.patch b/pkgs/applications/audio/noisetorch/embedlibrnnoise.patch
deleted file mode 100644
index b1782efb8b3..00000000000
--- a/pkgs/applications/audio/noisetorch/embedlibrnnoise.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/scripts/embedlibrnnoise.go b/scripts/embedlibrnnoise.go
-index 43daf80..0b3004b 100644
---- a/scripts/embedlibrnnoise.go
-+++ b/scripts/embedlibrnnoise.go
-@@ -8,7 +8,7 @@ import (
- )
- 
- func main() {
--	b, err := ioutil.ReadFile("librnnoise_ladspa/bin/ladspa/librnnoise_ladspa.so")
-+	b, err := ioutil.ReadFile(os.Getenv("RNNOISE_LADSPA_PLUGIN"))
- 	if err != nil {
- 		fmt.Printf("Couldn't read librnnoise_ladspa.so: %v\n", err)
- 		os.Exit(1)
diff --git a/pkgs/applications/audio/picard/default.nix b/pkgs/applications/audio/picard/default.nix
index fb6f59d0ded..428a76ea617 100644
--- a/pkgs/applications/audio/picard/default.nix
+++ b/pkgs/applications/audio/picard/default.nix
@@ -12,13 +12,13 @@ let
   ;
 in pythonPackages.buildPythonApplication rec {
   pname = "picard";
-  version = "2.5.2";
+  version = "2.5.4";
 
   src = fetchFromGitHub {
     owner = "metabrainz";
     repo = pname;
     rev = "release-${version}";
-    sha256 = "193pk6fhrqar2ra8krj6xdd7sm5qfw0p708iazzwk4b8c8g0q72j";
+    sha256 = "11kx4wwl6d2yy0kijcsda0kz2494a7cywp3mzvbga1hcz78f2xv6";
   };
 
   nativeBuildInputs = [ gettext qt5.wrapQtAppsHook qt5.qtbase ]
diff --git a/pkgs/applications/editors/emacs/generic.nix b/pkgs/applications/editors/emacs/generic.nix
index a84cb41bf30..101dbdaa2e9 100644
--- a/pkgs/applications/editors/emacs/generic.nix
+++ b/pkgs/applications/editors/emacs/generic.nix
@@ -42,7 +42,12 @@ assert withXwidgets -> withGTK3 && webkitgtk != null;
 
 let
 
-in stdenv.mkDerivation {
+in stdenv.mkDerivation (lib.optionalAttrs nativeComp {
+  NATIVE_FULL_AOT = "1";
+  LIBRARY_PATH = "${lib.getLib stdenv.cc.libc}/lib";
+} // lib.optionalAttrs stdenv.isDarwin {
+  CFLAGS = "-DMAC_OS_X_VERSION_MAX_ALLOWED=101200";
+} // {
   inherit pname version patches;
 
   src = fetchurl {
@@ -88,10 +93,6 @@ in stdenv.mkDerivation {
     ""
   ];
 
-  CFLAGS = "-DMAC_OS_X_VERSION_MAX_ALLOWED=101200";
-
-  LIBRARY_PATH = if nativeComp then "${lib.getLib stdenv.cc.libc}/lib" else "";
-
   nativeBuildInputs = [ pkgconfig makeWrapper ]
     ++ lib.optionals srcRepo [ autoreconfHook texinfo ]
     ++ lib.optional (withX && (withGTK3 || withXwidgets)) wrapGAppsHook;
@@ -155,6 +156,11 @@ in stdenv.mkDerivation {
     mv nextstep/Emacs.app $out/Applications
   '' + lib.optionalString (nativeComp && withNS) ''
     ln -snf $out/lib/emacs/*/native-lisp $out/Applications/Emacs.app/Contents/native-lisp
+  '' + lib.optionalString nativeComp ''
+    mkdir -p $out/share/emacs/native-lisp
+    $out/bin/emacs --batch \
+      --eval "(add-to-list 'comp-eln-load-path \"$out/share/emacs/native-lisp\")" \
+      -f batch-native-compile $out/share/emacs/site-lisp/site-start.el
   '';
 
   postFixup = lib.concatStringsSep "\n" [
@@ -195,4 +201,4 @@ in stdenv.mkDerivation {
       separately.
     '';
   };
-}
+})
diff --git a/pkgs/applications/editors/emacs/site-start.el b/pkgs/applications/editors/emacs/site-start.el
index 86cad1132f6..01a6422d731 100644
--- a/pkgs/applications/editors/emacs/site-start.el
+++ b/pkgs/applications/editors/emacs/site-start.el
@@ -34,6 +34,25 @@ least specific (the system profile)"
       (setenv "EMACSLOADPATH" (when new-env-list
                                 (mapconcat 'identity new-env-list ":"))))))
 
+(let ((wrapper-site-lisp (getenv "emacsWithPackages_siteLispNative"))
+      (env-load-path (getenv "EMACSNATIVELOADPATH")))
+  (when wrapper-site-lisp
+    (setenv "emacsWithPackages_siteLispNative" nil))
+  (when (and wrapper-site-lisp env-load-path)
+    (let* ((env-list (split-string env-load-path ":"))
+           (new-env-list (delete wrapper-site-lisp env-list)))
+      (setenv "EMACSNATIVELOADPATH" (when new-env-list
+                                (mapconcat 'identity new-env-list ":"))))))
+
+;;; Set up native-comp load path.
+(when (featurep 'comp)
+  ;; Append native-comp subdirectories from `NIX_PROFILES'.
+  (setq comp-eln-load-path
+        (append (mapcar (lambda (profile-dir)
+                          (concat profile-dir "/share/emacs/native-lisp/"))
+                        (nix--profile-paths))
+                comp-eln-load-path)))
+
 ;;; Make `woman' find the man pages
 (defvar woman-manpath)
 (eval-after-load 'woman
diff --git a/pkgs/applications/editors/jetbrains/common.nix b/pkgs/applications/editors/jetbrains/common.nix
index 07776bebe42..43dbd137f78 100644
--- a/pkgs/applications/editors/jetbrains/common.nix
+++ b/pkgs/applications/editors/jetbrains/common.nix
@@ -1,5 +1,6 @@
-{ stdenv, lib, makeDesktopItem, makeWrapper, patchelf
+{ stdenv, lib, makeDesktopItem, makeWrapper, patchelf, writeText
 , coreutils, gnugrep, which, git, unzip, libsecret, libnotify
+, vmopts ? null
 }:
 
 { name, product, version, src, wmClass, jdk, meta }:
@@ -9,6 +10,11 @@ with stdenv.lib;
 let loName = toLower product;
     hiName = toUpper product;
     execName = concatStringsSep "-" (init (splitString "-" name));
+    vmoptsName = loName
+               + ( if (with stdenv.hostPlatform; (is32bit || isDarwin))
+                   then ""
+                   else "64" )
+               + ".vmoptions";
 in
 
 with stdenv; lib.makeOverridable mkDerivation rec {
@@ -26,6 +32,8 @@ with stdenv; lib.makeOverridable mkDerivation rec {
     '';
   };
 
+  vmoptsFile = optionalString (vmopts != null) (writeText vmoptsName vmopts);
+
   nativeBuildInputs = [ makeWrapper patchelf unzip ];
 
   patchPhase = lib.optionalString (!stdenv.isDarwin) ''
@@ -72,7 +80,8 @@ with stdenv; lib.makeOverridable mkDerivation rec {
       --set JDK_HOME "$jdk" \
       --set ${hiName}_JDK "$jdk" \
       --set ANDROID_JAVA_HOME "$jdk" \
-      --set JAVA_HOME "$jdk"
+      --set JAVA_HOME "$jdk" \
+      --set ${hiName}_VM_OPTIONS ${vmoptsFile}
 
     ln -s "$item/share/applications" $out/share
   '';
diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix
index 78e6ad30b71..9638bea60c9 100644
--- a/pkgs/applications/editors/jetbrains/default.nix
+++ b/pkgs/applications/editors/jetbrains/default.nix
@@ -2,12 +2,13 @@
 , python
 , jdk, cmake, libxml2, zlib, python3, ncurses5
 , dotnet-sdk_3
+, vmopts ? null
 }:
 
 with stdenv.lib;
 
 let
-  mkJetBrainsProduct = callPackage ./common.nix { };
+  mkJetBrainsProduct = callPackage ./common.nix { inherit vmopts; };
   # Sorted alphabetically
 
   buildClion = { name, version, src, license, description, wmClass, ... }:
@@ -48,7 +49,7 @@ let
 
           patchelf \
             --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}:$lldbLibPath" \
-            bin/lldb/linux/lib/python3.*/lib-dynload/zlib.cpython-*m-x86_64-linux-gnu.so
+            bin/lldb/linux/lib/python3.*/lib-dynload/zlib.cpython-*-x86_64-linux-gnu.so
 
           patchelf \
             --set-rpath "${lib.makeLibraryPath [ libxml2 zlib stdenv.cc.cc.lib python3 ]}:$lldbLibPath" \
@@ -268,12 +269,12 @@ in
 
   clion = buildClion rec {
     name = "clion-${version}";
-    version = "2020.2.5"; /* updated by script */
+    version = "2020.3"; /* updated by script */
     description  = "C/C++ IDE. New. Intelligent. Cross-platform";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
-      sha256 = "0j7gxh8wqshn2i1f22bl9099sx8a4092qwkp4fwny4649rbkfyrz"; /* updated by script */
+      sha256 = "0kqja2c5pz0f9idc52mv7iy2pqq2kfcx4q4x1ywfn3gq3d8n5j7z"; /* updated by script */
     };
     wmClass = "jetbrains-clion";
     update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
@@ -294,12 +295,12 @@ in
 
   goland = buildGoland rec {
     name = "goland-${version}";
-    version = "2020.2.3"; /* updated by script */
+    version = "2020.3"; /* updated by script */
     description = "Up and Coming Go IDE";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/go/${name}.tar.gz";
-      sha256 = "18mzlqibgc6lzwhbmyrni56464qhzla9mss27d45hv0mbv087jn0"; /* updated by script */
+      sha256 = "0hj1xm3c71y2z1jyv7j3xf2lcj2y0kyvsxd3jjyyhs31w1f3394j"; /* updated by script */
     };
     wmClass = "jetbrains-goland";
     update-channel = "GoLand RELEASE";
@@ -346,12 +347,12 @@ in
 
   phpstorm = buildPhpStorm rec {
     name = "phpstorm-${version}";
-    version = "2020.2.4"; /* updated by script */
+    version = "2020.3"; /* updated by script */
     description = "Professional IDE for Web and PHP developers";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
-      sha256 = "111dr1a6695msh13cd484yk671jnh2ps6q1k2dl0kmryk9dqnvhd"; /* updated by script */
+      sha256 = "1d5rx7p7lvjzgp57n980f2bfrj14p1f4hxmyvx5pzzd86q7hrcbq"; /* updated by script */
     };
     wmClass = "jetbrains-phpstorm";
     update-channel = "PhpStorm RELEASE";
@@ -359,12 +360,12 @@ in
 
   pycharm-community = buildPycharm rec {
     name = "pycharm-community-${version}";
-    version = "2020.2.5"; /* updated by script */
+    version = "2020.3"; /* updated by script */
     description = "PyCharm Community Edition";
     license = stdenv.lib.licenses.asl20;
     src = fetchurl {
       url = "https://download.jetbrains.com/python/${name}.tar.gz";
-      sha256 = "0jkc26y3v94jj8q7dxq1py59is2whh45b890iac5adg6x670z3s6"; /* updated by script */
+      sha256 = "1c2izsqx27g4jy46iskx5zg00pd8jaf9x1p0vya4l2v5r49dk4jb"; /* updated by script */
     };
     wmClass = "jetbrains-pycharm-ce";
     update-channel = "PyCharm RELEASE";
@@ -372,12 +373,12 @@ in
 
   pycharm-professional = buildPycharm rec {
     name = "pycharm-professional-${version}";
-    version = "2020.2.5"; /* updated by script */
+    version = "2020.3"; /* updated by script */
     description = "PyCharm Professional Edition";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/python/${name}.tar.gz";
-      sha256 = "04imfgr45gvicjjgqzdcdmbnbiszjma3s40k2pgqs5nn6wbrw3dd"; /* updated by script */
+      sha256 = "1kzgy90zcligwa9r6r11kx99z0zm93mrzy700y2jwslyzapd16d0"; /* updated by script */
     };
     wmClass = "jetbrains-pycharm";
     update-channel = "PyCharm RELEASE";
diff --git a/pkgs/applications/editors/kdevelop5/kdev-php.nix b/pkgs/applications/editors/kdevelop5/kdev-php.nix
index 524835402f4..23c8f0698cf 100644
--- a/pkgs/applications/editors/kdevelop5/kdev-php.nix
+++ b/pkgs/applications/editors/kdevelop5/kdev-php.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kdev-php";
-  version = "5.6.0";
+  version = "5.6.1";
 
   src = fetchurl {
     url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
-    sha256 = "1j5m9mhjzp2r4wdwnnnckms8ic536s6y0iyry2zdndbsy215hqlz";
+    sha256 = "0xjijkmp3drnfrx4gb4bwf8n1dgwk310c0mssm6drffwix7ljpbz";
   };
 
   nativeBuildInputs = [ cmake extra-cmake-modules ];
diff --git a/pkgs/applications/editors/kdevelop5/kdev-python.nix b/pkgs/applications/editors/kdevelop5/kdev-python.nix
index 9af12b386a0..041c25f1728 100644
--- a/pkgs/applications/editors/kdevelop5/kdev-python.nix
+++ b/pkgs/applications/editors/kdevelop5/kdev-python.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kdev-python";
-  version = "5.6.0";
+  version = "5.6.1";
 
   src = fetchurl {
     url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
-    sha256 = "1bm6jk7gkl4vi579x99mja4znrzzp15zk66ss600dn8aq11jrxv2";
+    sha256 = "1jma7j70imzxlyz8580m79jycif7zphga3zzfmqimn8syzz917hv";
   };
 
   cmakeFlags = [
diff --git a/pkgs/applications/editors/vscode/update-vscodium.sh b/pkgs/applications/editors/vscode/update-vscodium.sh
index 0ddab6063ca..5df4cafdee9 100755
--- a/pkgs/applications/editors/vscode/update-vscodium.sh
+++ b/pkgs/applications/editors/vscode/update-vscodium.sh
@@ -23,6 +23,6 @@ VSCODIUM_LINUX_URL="https://github.com/VSCodium/vscodium/releases/download/${VSC
 VSCODIUM_LINUX_SHA256=$(nix-prefetch-url ${VSCODIUM_LINUX_URL})
 sed -i "s/x86_64-linux = \".\{52\}\"/x86_64-linux = \"${VSCODIUM_LINUX_SHA256}\"/" "$ROOT/vscodium.nix"
 
-VSCODIUM_DARWIN_URL="https://github.com/VSCodium/vscodium/releases/download/${VSCODIUM_VER}/VSCodium-darwin-${VSCODIUM_VER}.zip"
+VSCODIUM_DARWIN_URL="https://github.com/VSCodium/vscodium/releases/download/${VSCODIUM_VER}/VSCodium-darwin-x64-${VSCODIUM_VER}.zip"
 VSCODIUM_DARWIN_SHA256=$(nix-prefetch-url ${VSCODIUM_DARWIN_URL})
 sed -i "s/x86_64-darwin = \".\{52\}\"/x86_64-darwin = \"${VSCODIUM_DARWIN_SHA256}\"/" "$ROOT/vscodium.nix"
diff --git a/pkgs/applications/graphics/paraview/default.nix b/pkgs/applications/graphics/paraview/default.nix
index b201f9dbf0d..d0c8d1c9ee9 100644
--- a/pkgs/applications/graphics/paraview/default.nix
+++ b/pkgs/applications/graphics/paraview/default.nix
@@ -66,7 +66,6 @@ mkDerivation rec {
     libGLU libGL
     libXt
     openmpi
-    (python3.withPackages (ps: with ps; [ numpy matplotlib mpi4py ]))
     tbb
     boost
     ffmpeg
@@ -78,6 +77,10 @@ mkDerivation rec {
     qtsvg
   ];
 
+  propagatedBuildInputs = [
+    (python3.withPackages (ps: with ps; [ numpy matplotlib mpi4py ]))
+  ];
+
   meta = with stdenv.lib; {
     homepage = "https://www.paraview.org/";
     description = "3D Data analysis and visualization application";
diff --git a/pkgs/applications/graphics/xournalpp/default.nix b/pkgs/applications/graphics/xournalpp/default.nix
index da453b42678..c21d0ed2054 100644
--- a/pkgs/applications/graphics/xournalpp/default.nix
+++ b/pkgs/applications/graphics/xournalpp/default.nix
@@ -4,7 +4,7 @@
 , cmake
 , gettext
 , wrapGAppsHook
-, pkgconfig
+, pkg-config
 
 , glib
 , gsettings-desktop-schemas
@@ -22,16 +22,16 @@
 
 stdenv.mkDerivation rec {
   pname = "xournalpp";
-  version = "1.0.19";
+  version = "1.0.20";
 
   src = fetchFromGitHub {
     owner = "xournalpp";
     repo = pname;
     rev = version;
-    sha256 = "05nx4cmrka6hwdn7r91yy4h46qpa9k7iy9dkgaq3hrkh9z3fxlkq";
+    sha256 = "1c7n03xm3m4lwcwxgplkn25i8c6s3i7rijbkcx86br1j4jadcs3k";
   };
 
-  nativeBuildInputs = [ cmake gettext pkgconfig wrapGAppsHook ];
+  nativeBuildInputs = [ cmake gettext pkg-config wrapGAppsHook ];
   buildInputs =
     [ glib
       gsettings-desktop-schemas
@@ -50,8 +50,6 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  enableParallelBuilding = true;
-
   meta = with stdenv.lib; {
     description = "Xournal++ is a handwriting Notetaking software with PDF annotation support";
     homepage    = "https://xournalpp.github.io/";
diff --git a/pkgs/applications/misc/archivy/default.nix b/pkgs/applications/misc/archivy/default.nix
index 09779f8876f..635cd9a991a 100644
--- a/pkgs/applications/misc/archivy/default.nix
+++ b/pkgs/applications/misc/archivy/default.nix
@@ -5,25 +5,25 @@ watchdog, wtforms }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "archivy";
-  version = "0.9.2";
+  version = "0.9.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5cb760da57dc9dcdd62c0af824993d1715ec7035915629b4046d8bf50442756c";
+    sha256 = "b6ff08a9ecd0a929663c36c73844ac5cb4dc847e69aae639a450c64d4320a506";
   };
 
   # Relax some dependencies
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace 'validators ==' 'validators >=' \
-      --replace 'elasticsearch ==' 'elasticsearch >=' \
-      --replace 'python-dotenv ==' 'python-dotenv >=' \
-      --replace 'beautifulsoup4 ==' 'beautifulsoup4 >=' \
       --replace 'WTForms ==' 'WTForms >=' \
-      --replace 'python_dotenv ==' 'python_dotenv >=' \
       --replace 'attrs == 20.2.0' 'attrs' \
+      --replace 'beautifulsoup4 ==' 'beautifulsoup4 >=' \
+      --replace 'elasticsearch ==' 'elasticsearch >=' \
+      --replace 'python_dotenv ==' 'python_dotenv >=' \
       --replace 'python_frontmatter == 0.5.0' 'python_frontmatter' \
-      --replace 'requests ==' 'requests >='
+      --replace 'requests ==' 'requests >=' \
+      --replace 'validators ==' 'validators >=' \
+      --replace 'watchdog ==' 'watchdog >='
   '';
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/misc/dasel/default.nix b/pkgs/applications/misc/dasel/default.nix
index 1cfc36d0c4c..cd2bd5383f9 100644
--- a/pkgs/applications/misc/dasel/default.nix
+++ b/pkgs/applications/misc/dasel/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "dasel";
-  version = "1.9.1";
+  version = "1.10.0";
 
   src = fetchFromGitHub {
     owner = "TomWright";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-W95lMULucXcCDqSDWtRoXZM+zh8mmXhoEeFIukPFI0o=";
+    sha256 = "1n2c6lcn4gad7w1zrh69rjdn5slnf6p7s5rkkkbpvs0jjwri11md";
   };
 
   vendorSha256 = "1il1vnv0v97qh8f47md5i6qaac2k8par0pd0z7zqg67vxq6gim85";
diff --git a/pkgs/applications/misc/librecad/default.nix b/pkgs/applications/misc/librecad/default.nix
index 0df0f86ef45..6f7967dfdfd 100644
--- a/pkgs/applications/misc/librecad/default.nix
+++ b/pkgs/applications/misc/librecad/default.nix
@@ -1,5 +1,6 @@
 { boost
 , fetchFromGitHub
+, fetchpatch
 , installShellFiles
 , mkDerivationWith
 , muparser
@@ -16,7 +17,7 @@ let
   stdenv = gcc8Stdenv;
 in
 
-# Doesn't build with gcc9
+  # Doesn't build with gcc9
 mkDerivationWith stdenv.mkDerivation rec {
   pname = "librecad";
   version = "2.2.0-rc1";
@@ -30,6 +31,13 @@ mkDerivationWith stdenv.mkDerivation rec {
 
   patches = [
     ./fix_qt_5_11_build.patch
+    (
+      fetchpatch {
+        # Fix missing app name and icon on Wayland.
+        url = "https://github.com/LibreCAD/LibreCAD/commit/a17f8281093403f0c7c36996232665ed21906688.patch";
+        sha256 = "1x46psh4bcx2hxck4l83ki43g1252vb033i2x94h4rpai9hww4d5";
+      }
+    )
   ];
 
   postPatch = ''
diff --git a/pkgs/applications/misc/moolticute/default.nix b/pkgs/applications/misc/moolticute/default.nix
index bc825b94fac..804ba33209a 100644
--- a/pkgs/applications/misc/moolticute/default.nix
+++ b/pkgs/applications/misc/moolticute/default.nix
@@ -9,13 +9,13 @@
 
 mkDerivation rec {
   pname = "moolticute";
-  version = "0.44.17";
+  version = "0.44.21";
 
   src = fetchFromGitHub {
     owner = "mooltipass";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1bqp99n8cqr7kjiffbs39v0dd280f50hid5py3c4zgc7aqj9k0bx";
+    sha256 = "1m3iy2v8mimyb25xisr7i4ga6qlggv1i2aji9qfgagns7ffp53nf";
   };
 
   outputs = [ "out" "udev" ];
diff --git a/pkgs/applications/misc/tasknc/default.nix b/pkgs/applications/misc/tasknc/default.nix
index 46378aec33a..9080bec753d 100644
--- a/pkgs/applications/misc/tasknc/default.nix
+++ b/pkgs/applications/misc/tasknc/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, makeWrapper, perl, ncurses5, taskwarrior }:
 
 stdenv.mkDerivation rec {
-  version = "2017-05-15";
+  version = "2020-12-17";
   pname = "tasknc";
 
   src = fetchFromGitHub {
     owner = "lharding";
     repo = "tasknc";
-    rev = "c41d0240e9b848e432f01de735f28de93b934ae7";
-    sha256 = "0f7l7fy06p33vw6f6sjnjxfhw951664pmwhjl573jvmh6gi2h1yr";
+    rev = "a182661fbcc097a933d5e8cce3922eb1734a563e";
+    sha256 = "0jrv2k1yizfdjndbl06lmy2bb62ky2rjdk308967j31c5kqqnw56";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/ulauncher/default.nix b/pkgs/applications/misc/ulauncher/default.nix
index f1439dc7d16..ba388e8038b 100644
--- a/pkgs/applications/misc/ulauncher/default.nix
+++ b/pkgs/applications/misc/ulauncher/default.nix
@@ -20,13 +20,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "ulauncher";
-  version = "5.8.0";
+  version = "5.8.1";
 
   disabled = python3Packages.isPy27;
 
   src = fetchurl {
     url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz";
-    sha256 = "1czxzcxix9iwv1sir1q64j5aavc7lzjjwqpisgdc1kidkwnk05zp";
+    sha256 = "1hgzfiwfk3dd50jmp184y754ydzmfv22qcv7z40gxj6pc67ahx3r";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/pkgs/applications/misc/xdg-launch/default.nix b/pkgs/applications/misc/xdg-launch/default.nix
new file mode 100644
index 00000000000..257b15387ba
--- /dev/null
+++ b/pkgs/applications/misc/xdg-launch/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, autoconf
+, automake
+, gettext
+, libtool
+, perl
+, pkg-config
+, glib
+, xorg
+}:
+stdenv.mkDerivation rec {
+  pname = "xdg-launch";
+  version = "1.10";
+
+  postPatch = ''
+    # fix gettext configuration
+    echo 'AM_GNU_GETTEXT_VERSION' >> configure.ac
+    echo 'AM_GNU_GETTEXT([external])' >> configure.ac
+
+    sed -i data/*.desktop \
+      -e "s,/usr/bin,/$out/bin,g"
+  '';
+
+  src = fetchFromGitHub {
+    owner = "bbidulock";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-WY1TAPnXAn5GOaP9aMHar761m1MkKm4vavLlWELWUu8=";
+  };
+
+  preConfigure = "./autogen.sh";
+
+  buildInputs = [
+    xorg.libX11
+    xorg.libXrandr
+    glib # can be optional
+  ];
+
+  nativeBuildInputs = [
+    autoconf
+    automake
+    gettext
+    libtool
+    perl # pod2man
+    pkg-config
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/bbidulock/xdg-launch";
+    description = "A command line XDG compliant launcher and tools";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.ck3d ];
+  };
+}
diff --git a/pkgs/applications/networking/browsers/brave/default.nix b/pkgs/applications/networking/browsers/brave/default.nix
index d76dd8b9daa..241df5f0a03 100644
--- a/pkgs/applications/networking/browsers/brave/default.nix
+++ b/pkgs/applications/networking/browsers/brave/default.nix
@@ -70,7 +70,6 @@ rpath = lib.makeLibraryPath [
   libXext
   libXfixes
   libXi
-  libxkbcommon
   libXrandr
   libXrender
   libXtst
@@ -89,11 +88,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "brave";
-  version = "1.17.73";
+  version = "1.18.70";
 
   src = fetchurl {
     url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
-    sha256 = "18bd6kgzfza5r0y2ggfy82pdpnfr2hzgjcfy9vxqq658z7q3jpqy";
+    sha256 = "08v9r41knmvi3vi27hs8rsjiyrxiidx24zzwz2gbclf4l42sk88j";
   };
 
   dontConfigure = true;
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index d3953da71d2..b9a42e825f3 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -1,4 +1,4 @@
-{ stdenv, mkChromiumDerivation, channel, enableWideVine }:
+{ stdenv, mkChromiumDerivation, channel, enableWideVine, ungoogled }:
 
 with stdenv.lib;
 
@@ -69,18 +69,25 @@ mkChromiumDerivation (base: rec {
   requiredSystemFeatures = [ "big-parallel" ];
 
   meta = {
-    description = "An open source web browser from Google";
+    description = "An open source web browser from Google"
+      + optionalString ungoogled ", with dependencies on Google web services removed";
     longDescription = ''
       Chromium is an open source web browser from Google that aims to build a
       safer, faster, and more stable way for all Internet users to experience
       the web. It has a minimalist user interface and provides the vast majority
       of source code for Google Chrome (which has some additional features).
     '';
-    homepage = "https://www.chromium.org/";
-    maintainers = with maintainers; [ primeos thefloweringash bendlas ]; # See README.md
+    homepage = if ungoogled
+      then "https://github.com/Eloston/ungoogled-chromium"
+      else "https://www.chromium.org/";
+    maintainers = with maintainers; if ungoogled
+      then [ squalus primeos ]
+      else [ primeos thefloweringash bendlas ];
     license = if enableWideVine then licenses.unfree else licenses.bsd3;
     platforms = platforms.linux;
-    hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
+    hydraPlatforms = if (channel == "stable" || channel == "ungoogled-chromium")
+      then ["aarch64-linux" "x86_64-linux"]
+      else [];
     timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
   };
 })
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index 0c16d0c9ec6..d754c2769c9 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -31,6 +31,7 @@
 , proprietaryCodecs ? true
 , cupsSupport ? true
 , pulseSupport ? false, libpulseaudio ? null
+, ungoogled ? false, ungoogled-chromium
 
 , channel
 , upstream-info
@@ -109,6 +110,10 @@ let
             result
        else result;
 
+  ungoogler = ungoogled-chromium {
+    inherit (upstream-info.deps.ungoogled-patches) rev sha256;
+  };
+
   base = rec {
     name = "${packageName}-unwrapped-${version}";
     inherit (upstream-info) version;
@@ -208,6 +213,10 @@ let
     '' + optionalString stdenv.isAarch64 ''
       substituteInPlace build/toolchain/linux/BUILD.gn \
         --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
+    '' + optionalString ungoogled ''
+      ${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
+      ${ungoogler}/utils/patches.py . ${ungoogler}/patches
+      ${ungoogler}/utils/domain_substitution.py apply -r ${ungoogler}/domain_regex.list -f ${ungoogler}/domain_substitution.list -c ./ungoogled-domsubcache.tar.gz .
     '';
 
     gnFlags = mkGnFlags ({
@@ -260,6 +269,24 @@ let
       use_system_minigbm = true;
       use_system_libdrm = true;
       system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
+    } // optionalAttrs ungoogled {
+      chrome_pgo_phase = 0;
+      enable_hangout_services_extension = false;
+      enable_js_type_check = false;
+      enable_mdns = false;
+      enable_nacl_nonsfi = false;
+      enable_one_click_signin = false;
+      enable_reading_list = false;
+      enable_remoting = false;
+      enable_reporting = false;
+      enable_service_discovery = false;
+      exclude_unwind_tables = true;
+      google_api_key = "";
+      google_default_client_id = "";
+      google_default_client_secret = "";
+      safe_browsing_mode = 0;
+      use_official_google_api_keys = false;
+      use_unofficial_version_number = false;
     } // (extraAttrs.gnFlags or {}));
 
     configurePhase = ''
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index e35e4d945dd..6e7c2307d64 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -15,6 +15,7 @@
 , enablePepperFlash ? false
 , enableWideVine ? false
 , enableVaapi ? false # Disabled by default due to unofficial support
+, ungoogled ? false # Whether to build chromium or ungoogled-chromium
 , cupsSupport ? true
 , pulseSupport ? config.pulseaudio or stdenv.isLinux
 , commandLineArgs ? ""
@@ -33,7 +34,7 @@ let
 
     mkChromiumDerivation = callPackage ./common.nix ({
       inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
-              cupsSupport pulseSupport;
+              cupsSupport pulseSupport ungoogled;
       gnChromium = gn.overrideAttrs (oldAttrs: {
         inherit (upstream-info.deps.gn) version;
         src = fetchgit {
@@ -42,24 +43,28 @@ let
       });
     });
 
-    browser = callPackage ./browser.nix { inherit channel enableWideVine; };
+    browser = callPackage ./browser.nix { inherit channel enableWideVine ungoogled; };
 
     plugins = callPackage ./plugins.nix {
       inherit enablePepperFlash;
     };
+
+    ungoogled-chromium = callPackage ./ungoogled.nix {};
   };
 
   pkgSuffix = if channel == "dev" then "unstable" else channel;
   pkgName = "google-chrome-${pkgSuffix}";
-  chromeSrc = fetchurl {
-    urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [
-      "https://dl.google.com/linux/chrome/deb/pool/main/g"
-      "http://95.31.35.30/chrome/pool/main/g"
-      "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
-      "http://repo.fdzh.org/chrome/deb/pool/main/g"
-    ];
-    sha256 = chromium.upstream-info.sha256bin64;
-  };
+  chromeSrc = if channel == "ungoogled-chromium"
+    then throw "Google Chrome is not supported for the ungoogled-chromium channel."
+    else fetchurl {
+      urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [
+        "https://dl.google.com/linux/chrome/deb/pool/main/g"
+        "http://95.31.35.30/chrome/pool/main/g"
+        "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
+        "http://repo.fdzh.org/chrome/deb/pool/main/g"
+      ];
+      sha256 = chromium.upstream-info.sha256bin64;
+    };
 
   mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
   widevineCdm = stdenv.mkDerivation {
@@ -113,7 +118,9 @@ let
     };
   };
 
-  suffix = if channel != "stable" then "-" + channel else "";
+  suffix = if (channel == "stable" || channel == "ungoogled-chromium")
+    then ""
+    else "-" + channel;
 
   sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
 
@@ -133,7 +140,8 @@ let
     else browser;
 
 in stdenv.mkDerivation {
-  name = "chromium${suffix}-${version}";
+  name = lib.optionalString ungoogled "ungoogled-"
+    + "chromium${suffix}-${version}";
   inherit version;
 
   buildInputs = [
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix b/pkgs/applications/networking/browsers/chromium/ungoogled.nix
index 17418c90af4..299b19f2f4f 100644
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix
+++ b/pkgs/applications/networking/browsers/chromium/ungoogled.nix
@@ -4,6 +4,7 @@
 , makeWrapper
 , patch
 }:
+
 { rev
 , sha256
 }:
diff --git a/pkgs/applications/networking/browsers/chromium/update.py b/pkgs/applications/networking/browsers/chromium/update.py
index 9e1f0aec598..b4d16fa149f 100755
--- a/pkgs/applications/networking/browsers/chromium/update.py
+++ b/pkgs/applications/networking/browsers/chromium/update.py
@@ -1,6 +1,9 @@
 #! /usr/bin/env nix-shell
 #! nix-shell -i python -p python3 nix nix-prefetch-git
 
+"""This script automatically updates chromium, google-chrome, chromedriver, and ungoogled-chromium
+via upstream-info.json."""
+
 import csv
 import json
 import re
@@ -19,41 +22,54 @@ BUCKET_URL = 'https://commondatastorage.googleapis.com/chromium-browser-official
 
 JSON_PATH = dirname(abspath(__file__)) + '/upstream-info.json'
 
+
 def load_json(path):
+    """Loads the given JSON file."""
     with open(path, 'r') as f:
         return json.load(f)
 
+
 def nix_prefetch_url(url, algo='sha256'):
+    """Prefetches the content of the given URL."""
     print(f'nix-prefetch-url {url}')
     out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url])
     return out.decode('utf-8').rstrip()
 
+
 def nix_prefetch_git(url, rev):
+    """Prefetches the requested Git revision of the given repository URL."""
     print(f'nix-prefetch-git {url} {rev}')
     out = subprocess.check_output(['nix-prefetch-git', '--quiet', '--url', url, '--rev', rev])
     return json.loads(out)
 
+
 def get_file_revision(revision, file_path):
+    """Fetches the requested Git revision of the given Chromium file."""
     url = f'https://raw.githubusercontent.com/chromium/chromium/{revision}/{file_path}'
     with urlopen(url) as http_response:
         return http_response.read()
 
+
 def get_matching_chromedriver(version):
+    """Gets the matching chromedriver version for the given Chromium version."""
     # See https://chromedriver.chromium.org/downloads/version-selection
     build = re.sub('.[0-9]+$', '', version)
     chromedriver_version_url = f'https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{build}'
     with urlopen(chromedriver_version_url) as http_response:
         chromedriver_version = http_response.read().decode()
         def get_chromedriver_url(system):
-            return f'https://chromedriver.storage.googleapis.com/{chromedriver_version}/chromedriver_{system}.zip'
+            return ('https://chromedriver.storage.googleapis.com/' +
+                    f'{chromedriver_version}/chromedriver_{system}.zip')
         return {
             'version': chromedriver_version,
             'sha256_linux': nix_prefetch_url(get_chromedriver_url('linux64')),
             'sha256_darwin': nix_prefetch_url(get_chromedriver_url('mac64'))
         }
 
-def get_channel_dependencies(channel):
-    deps = get_file_revision(channel['version'], 'DEPS')
+
+def get_channel_dependencies(version):
+    """Gets all dependencies for the given Chromium version."""
+    deps = get_file_revision(version, 'DEPS')
     gn_pattern = b"'gn_version': 'git_revision:([0-9a-f]{40})'"
     gn_commit = re.search(gn_pattern, deps).group(1).decode()
     gn = nix_prefetch_git('https://gn.googlesource.com/gn', gn_commit)
@@ -66,9 +82,39 @@ def get_channel_dependencies(channel):
         }
     }
 
+
+def get_latest_ungoogled_chromium_tag():
+    """Returns the latest ungoogled-chromium tag using the GitHub API."""
+    api_tag_url = 'https://api.github.com/repos/Eloston/ungoogled-chromium/tags?per_page=1'
+    with urlopen(api_tag_url) as http_response:
+        tag_data = json.load(http_response)
+        return tag_data[0]['name']
+
+
+def get_ungoogled_chromium_channel():
+    """Returns a dictionary for the ungoogled-chromium channel."""
+    latest_tag = get_latest_ungoogled_chromium_tag()
+    version = latest_tag.split('-')[0]
+    if version == last_channels['ungoogled-chromium']['version']:
+        # No update available -> keep the cached information (no refetching required):
+        return last_channels['ungoogled-chromium']
+    channel = {
+        'version': version,
+        'sha256': nix_prefetch_url(f'{BUCKET_URL}/chromium-{version}.tar.xz'),
+        'deps': get_channel_dependencies(version)
+    }
+    repo_url = 'https://github.com/Eloston/ungoogled-chromium.git'
+    channel['deps']['ungoogled-patches'] = {
+        'rev': latest_tag,
+        'sha256': nix_prefetch_git(repo_url, latest_tag)['sha256']
+    }
+    return channel
+
+
 channels = {}
 last_channels = load_json(JSON_PATH)
 
+
 print(f'GET {HISTORY_URL}', file=sys.stderr)
 with urlopen(HISTORY_URL) as resp:
     builds = csv.DictReader(iterdecode(resp, 'utf-8'))
@@ -92,30 +138,37 @@ with urlopen(HISTORY_URL) as resp:
 
         try:
             channel['sha256'] = nix_prefetch_url(f'{BUCKET_URL}/chromium-{build["version"]}.tar.xz')
-            channel['sha256bin64'] = nix_prefetch_url(f'{DEB_URL}/google-chrome-{suffix}/google-chrome-{suffix}_{build["version"]}-1_amd64.deb')
+            channel['sha256bin64'] = nix_prefetch_url(
+                f'{DEB_URL}/google-chrome-{suffix}/' +
+                f'google-chrome-{suffix}_{build["version"]}-1_amd64.deb')
         except subprocess.CalledProcessError:
             # This build isn't actually available yet.  Continue to
             # the next one.
             continue
 
-        channel['deps'] = get_channel_dependencies(channel)
+        channel['deps'] = get_channel_dependencies(channel['version'])
         if channel_name == 'stable':
             channel['chromedriver'] = get_matching_chromedriver(channel['version'])
 
         channels[channel_name] = channel
 
+
 with open(JSON_PATH, 'w') as out:
     def get_channel_key(item):
+        """Orders Chromium channels by their name."""
         channel_name = item[0]
         if channel_name == 'stable':
             return 0
-        elif channel_name == 'beta':
+        if channel_name == 'beta':
             return 1
-        elif channel_name == 'dev':
+        if channel_name == 'dev':
             return 2
-        else:
-            print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
-            sys.exit(1)
+        if channel_name == 'ungoogled-chromium':
+            return 3
+        print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
+        sys.exit(1)
+    # Get the special ungoogled-chromium channel:
+    channels['ungoogled-chromium'] = get_ungoogled_chromium_channel()
     sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
     json.dump(sorted_channels, out, indent=2)
     out.write('\n')
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index 3b64e601eba..2cd673e9c55 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -18,9 +18,9 @@
     }
   },
   "beta": {
-    "version": "88.0.4324.41",
-    "sha256": "06hnawylr7fl1zav6cyg1yfw2z04qrpnj4n3v07qx7ya6p8qyp2g",
-    "sha256bin64": "1iq4qd5x7ivypcxh47d6av45hyqdgga2s80idyhf1f51f660h2vc",
+    "version": "88.0.4324.50",
+    "sha256": "17v0qp05785xc4whsbw6fmf0x5ccjx2mk6n4qy6z2mx2yjjjfv8q",
+    "sha256bin64": "01cphbd56l7g3cdmrvwynkzrpx9h3v7pz6ac76sxlp6irjzhbnva",
     "deps": {
       "gn": {
         "version": "2020-11-05",
@@ -31,9 +31,9 @@
     }
   },
   "dev": {
-    "version": "89.0.4350.4",
-    "sha256": "1jh3r227j70imjzj0gm7cf1mv25zcdd2waa9qvim0p3g6wbdacmq",
-    "sha256bin64": "06963r7a1xc9vjlwgn0wgzqfj6mavfks20lzf49axw6izrxf8sbr",
+    "version": "89.0.4356.6",
+    "sha256": "1jq0wbaaz07kz2190rq3vl2b5spx3qfda4al9ygkm8man817d2nr",
+    "sha256bin64": "0dgvp2my328s4ah0hmp1hg1c3x21gkrz9mjvbfs54r2pjb7y5sbl",
     "deps": {
       "gn": {
         "version": "2020-11-05",
@@ -42,5 +42,21 @@
         "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9"
       }
     }
+  },
+  "ungoogled-chromium": {
+    "version": "87.0.4280.88",
+    "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy",
+    "deps": {
+      "gn": {
+        "version": "2020-09-09",
+        "url": "https://gn.googlesource.com/gn",
+        "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2",
+        "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk"
+      },
+      "ungoogled-patches": {
+        "rev": "87.0.4280.88-1",
+        "sha256": "0w2137w8hfcgl6f938hqnb4ffp33v5r8vdzxrvs814w7dszkiqgg"
+      }
+    }
   }
 }
diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
index 222b1b5b767..ab8a21c5b71 100644
--- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
+++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
@@ -91,19 +91,19 @@ let
   fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
 
   # Upstream source
-  version = "10.0.5";
+  version = "10.0.7";
 
   lang = "en-US";
 
   srcs = {
     x86_64-linux = fetchurl {
       url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
-      sha256 = "1cxh39x69m4lgqin5k5p67gs9g26w7cnlbdpjqi8dw47y0bpr9xw";
+      sha256 = "1phqsdf9lav0s111chlgyh4xiq2rm5zcxbx676i9711lkmc5l053";
     };
 
     i686-linux = fetchurl {
       url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
-      sha256 = "1cyg5ic7mrj6x1gxw5w609933d9ripa5b5gxyqnvnxfa23dkh608";
+      sha256 = "1nkppwdcjbrx8nh3d6qvvkgd5by6ja5ckjgpbkhavyy2pqlxyqk8";
     };
   };
 in
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix
deleted file mode 100644
index c23a8cead3a..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix
+++ /dev/null
@@ -1,86 +0,0 @@
-{ stdenv, mkChromiumDerivation, channel, enableWideVine }:
-
-with stdenv.lib;
-
-mkChromiumDerivation (base: rec {
-  name = "chromium-browser";
-  packageName = "chromium";
-  buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
-
-  outputs = ["out" "sandbox"];
-
-  sandboxExecutableName = "__chromium-suid-sandbox";
-
-  installPhase = ''
-    mkdir -p "$libExecPath"
-    cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
-    cp -v "$buildPath/icudtl.dat" "$libExecPath/"
-    cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
-    cp -v "$buildPath/chrome" "$libExecPath/$packageName"
-
-    # Swiftshader
-    # See https://stackoverflow.com/a/4264351/263061 for the find invocation.
-    if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then
-      echo "Swiftshader files found; installing"
-      mkdir -p "$libExecPath/swiftshader"
-      cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/"
-    else
-      echo "Swiftshader files not found"
-    fi
-
-    mkdir -p "$sandbox/bin"
-    cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}"
-
-    mkdir -vp "$out/share/man/man1"
-    cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
-
-    for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
-      num_and_suffix="''${icon_file##*logo_}"
-      icon_size="''${num_and_suffix%.*}"
-      expr "$icon_size" : "^[0-9][0-9]*$" || continue
-      logo_output_prefix="$out/share/icons/hicolor"
-      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
-      mkdir -vp "$logo_output_path"
-      cp -v "$icon_file" "$logo_output_path/$packageName.png"
-    done
-
-    # Install Desktop Entry
-    install -D chrome/installer/linux/common/desktop.template \
-      $out/share/applications/chromium-browser.desktop
-
-    substituteInPlace $out/share/applications/chromium-browser.desktop \
-      --replace "@@MENUNAME@@" "Chromium" \
-      --replace "@@PACKAGE@@" "chromium" \
-      --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium"
-
-    # Append more mime types to the end
-    sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \
-      $out/share/applications/chromium-browser.desktop
-
-    # See https://github.com/NixOS/nixpkgs/issues/12433
-    sed -i \
-      -e '/\[Desktop Entry\]/a\' \
-      -e 'StartupWMClass=chromium-browser' \
-      $out/share/applications/chromium-browser.desktop
-  '';
-
-  passthru = { inherit sandboxExecutableName; };
-
-  requiredSystemFeatures = [ "big-parallel" ];
-
-  meta = {
-    description = "An open source web browser from Google, with dependencies on Google web services removed";
-    longDescription = ''
-      Chromium is an open source web browser from Google that aims to build a
-      safer, faster, and more stable way for all Internet users to experience
-      the web. It has a minimalist user interface and provides the vast majority
-      of source code for Google Chrome (which has some additional features).
-    '';
-    homepage = "https://github.com/Eloston/ungoogled-chromium";
-    maintainers = with maintainers; [ squalus ];
-    license = if enableWideVine then licenses.unfree else licenses.bsd3;
-    platforms = platforms.linux;
-    hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
-    timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
-  };
-})
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix
deleted file mode 100644
index 17814c26caa..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix
+++ /dev/null
@@ -1,345 +0,0 @@
-{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, fetchurl
-
-# default dependencies
-, gnutar, bzip2, flac, speex, libopus
-, libevent, expat, libjpeg, snappy
-, libpng, libcap
-, xdg_utils, yasm, nasm, minizip, libwebp
-, libusb1, pciutils, nss, re2
-
-, python2Packages, perl, pkgconfig
-, nspr, systemd, kerberos
-, util-linux, alsaLib
-, bison, gperf
-, glib, gtk3, dbus-glib
-, glibc
-, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
-, protobuf, speechd, libXdamage, cups
-, ffmpeg, libxslt, libxml2, at-spi2-core
-, jre8
-, pipewire_0_2
-, libva
-
-# optional dependencies
-, libgcrypt ? null # gnomeSupport || cupsSupport
-, libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone
-
-# package customization
-, useOzone ? true
-, gnomeSupport ? false, gnome ? null
-, gnomeKeyringSupport ? false, libgnome-keyring3 ? null
-, proprietaryCodecs ? true
-, cupsSupport ? true
-, pulseSupport ? false, libpulseaudio ? null
-, ungoogled-chromium
-, ungoogled ? false
-
-, channel
-, upstream-info
-}:
-
-buildFun:
-
-with stdenv.lib;
-
-let
-  jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
-
-  # The additional attributes for creating derivations based on the chromium
-  # source tree.
-  extraAttrs = buildFun base;
-
-  githubPatch = commit: sha256: fetchpatch {
-    url = "https://github.com/chromium/chromium/commit/${commit}.patch";
-    inherit sha256;
-  };
-
-  mkGnFlags =
-    let
-      # Serialize Nix types into GN types according to this document:
-      # https://source.chromium.org/gn/gn/+/master:docs/language.md
-      mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
-      sanitize = value:
-        if value == true then "true"
-        else if value == false then "false"
-        else if isList value then "[${concatMapStringsSep ", " sanitize value}]"
-        else if isInt value then toString value
-        else if isString value then mkGnString value
-        else throw "Unsupported type for GN value `${value}'.";
-      toFlag = key: value: "${key}=${sanitize value}";
-    in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
-
-  # https://source.chromium.org/chromium/chromium/src/+/master:build/linux/unbundle/replace_gn_files.py
-  gnSystemLibraries = [
-    "ffmpeg"
-    "flac"
-    "libjpeg"
-    "libpng"
-    "libwebp"
-    "libxslt"
-    "opus"
-    "snappy"
-    "zlib"
-  ];
-
-  opusWithCustomModes = libopus.override {
-    withCustomModes = true;
-  };
-
-  defaultDependencies = [
-    bzip2 flac speex opusWithCustomModes
-    libevent expat libjpeg snappy
-    libpng libcap
-    xdg_utils minizip libwebp
-    libusb1 re2
-    ffmpeg libxslt libxml2
-    nasm
-  ];
-
-  # build paths and release info
-  packageName = extraAttrs.packageName or extraAttrs.name;
-  buildType = "Release";
-  buildPath = "out/${buildType}";
-  libExecPath = "$out/libexec/${packageName}";
-
-  versionRange = min-version: upto-version:
-    let inherit (upstream-info) version;
-        result = versionAtLeast version min-version && versionOlder version upto-version;
-        stable-version = (importJSON ./upstream-info.json).stable.version;
-    in if versionAtLeast stable-version upto-version
-       then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
-            result
-       else result;
-
-  ungoogler =
-    let versionEntry = (import ./ungoogled-src.nix)."${upstream-info.version}";
-    in ungoogled-chromium {
-      inherit (versionEntry) rev sha256;
-    };
-  base = rec {
-    name = "${packageName}-unwrapped-${version}";
-    inherit (upstream-info) version;
-    inherit channel packageName buildType buildPath;
-
-    src = fetchurl {
-      url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
-      inherit (upstream-info) sha256;
-    };
-
-    nativeBuildInputs = [
-      llvmPackages.lldClang.bintools
-      ninja which python2Packages.python perl pkgconfig
-      python2Packages.ply python2Packages.jinja2 nodejs
-      gnutar python2Packages.setuptools
-    ];
-
-    buildInputs = defaultDependencies ++ [
-      nspr nss systemd
-      util-linux alsaLib
-      bison gperf kerberos
-      glib gtk3 dbus-glib
-      libXScrnSaver libXcursor libXtst libGLU libGL
-      pciutils protobuf speechd libXdamage at-spi2-core
-      jre
-      pipewire_0_2
-      libva
-    ] ++ optional gnomeKeyringSupport libgnome-keyring3
-      ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
-      ++ optionals cupsSupport [ libgcrypt cups ]
-      ++ optional pulseSupport libpulseaudio
-      ++ optionals useOzone [ libdrm wayland mesa.drivers libxkbcommon ];
-
-    patches = [
-      ./patches/no-build-timestamps.patch # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed)
-      ./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags
-      # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
-    ];
-
-    postPatch = ''
-      # remove unused third-party
-      for lib in ${toString gnSystemLibraries}; do
-        if [ -d "third_party/$lib" ]; then
-          find "third_party/$lib" -type f \
-            \! -path "third_party/$lib/chromium/*" \
-            \! -path "third_party/$lib/google/*" \
-            \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
-            \! -regex '.*\.\(gn\|gni\|isolate\)' \
-            -delete
-        fi
-      done
-
-      # Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.):
-      substituteInPlace native_client/SConstruct --replace "#! -*- python -*-" ""
-      if [ -e third_party/harfbuzz-ng/src/src/update-unicode-tables.make ]; then
-        substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
-          --replace "/usr/bin/env -S make -f" "/usr/bin/make -f"
-      fi
-
-      # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
-      substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
-        --replace \
-          'return sandbox_binary;' \
-          'return base::FilePath(GetDevelSandboxPath());'
-
-      substituteInPlace services/audio/audio_sandbox_hook_linux.cc \
-        --replace \
-          '/usr/share/alsa/' \
-          '${alsaLib}/share/alsa/' \
-        --replace \
-          '/usr/lib/x86_64-linux-gnu/gconv/' \
-          '${glibc}/lib/gconv/' \
-        --replace \
-          '/usr/share/locale/' \
-          '${glibc}/share/locale/'
-
-      sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
-        chrome/browser/shell_integration_linux.cc
-
-      sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \
-        device/udev_linux/udev?_loader.cc
-
-      sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
-        gpu/config/gpu_info_collector_linux.cc
-
-      # Allow to put extensions into the system-path.
-      sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
-
-      patchShebangs .
-      # use our own nodejs
-      mkdir -p third_party/node/linux/node-linux-x64/bin
-      ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node
-
-      # Allow building against system libraries in official builds
-      sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py
-
-    '' + optionalString stdenv.isAarch64 ''
-      substituteInPlace build/toolchain/linux/BUILD.gn \
-        --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
-    '' + optionalString ungoogled ''
-      ${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
-      ${ungoogler}/utils/patches.py . ${ungoogler}/patches
-      ${ungoogler}/utils/domain_substitution.py apply -r ${ungoogler}/domain_regex.list -f ${ungoogler}/domain_substitution.list -c ./ungoogled-domsubcache.tar.gz .
-    '';
-
-    gnFlags = mkGnFlags ({
-      custom_toolchain = "//build/toolchain/linux/unbundle:default";
-      host_toolchain = "//build/toolchain/linux/unbundle:default";
-      is_official_build = true;
-
-      use_vaapi = !stdenv.isAarch64; # TODO: Remove once M88 is released
-      use_sysroot = false;
-      use_gnome_keyring = gnomeKeyringSupport;
-      use_gio = gnomeSupport;
-      # ninja: error: '../../native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-objcopy',
-      # needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it
-      enable_nacl = false;
-      # Enabling the Widevine component here doesn't affect whether we can
-      # redistribute the chromium package; the Widevine component is either
-      # added later in the wrapped -wv build or downloaded from Google.
-      enable_widevine = true;
-      use_cups = cupsSupport;
-      # Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture.
-      rtc_use_pipewire = true;
-
-      treat_warnings_as_errors = false;
-      clang_use_chrome_plugins = false;
-      blink_symbol_level = 0;
-      symbol_level = 0;
-      fieldtrial_testing_like_official_build = true;
-
-      # Google API keys, see:
-      #   http://www.chromium.org/developers/how-tos/api-keys
-      # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
-      # please get your own set of keys.
-      google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
-      google_default_client_id = "404761575300.apps.googleusercontent.com";
-      google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
-    } // optionalAttrs proprietaryCodecs {
-      # enable support for the H.264 codec
-      proprietary_codecs = true;
-      enable_hangout_services_extension = true;
-      ffmpeg_branding = "Chrome";
-    } // optionalAttrs pulseSupport {
-      use_pulseaudio = true;
-      link_pulseaudio = true;
-    } // optionalAttrs useOzone {
-      use_ozone = true;
-      use_xkbcommon = true;
-      use_glib = true;
-      use_gtk = true;
-      use_system_libwayland = true;
-      use_system_minigbm = true;
-      use_system_libdrm = true;
-      system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
-    } // optionalAttrs ungoogled {
-      chrome_pgo_phase = 0;
-      enable_hangout_services_extension = false;
-      enable_js_type_check = false;
-      enable_mdns = false;
-      enable_nacl_nonsfi = false;
-      enable_one_click_signin = false;
-      enable_reading_list = false;
-      enable_remoting = false;
-      enable_reporting = false;
-      enable_service_discovery = false;
-      exclude_unwind_tables = true;
-      google_api_key = "";
-      google_default_client_id = "";
-      google_default_client_secret = "";
-      safe_browsing_mode = 0;
-      use_official_google_api_keys = false;
-      use_unofficial_version_number = false;
-    } // (extraAttrs.gnFlags or {}));
-
-    configurePhase = ''
-      runHook preConfigure
-
-      # This is to ensure expansion of $out.
-      libExecPath="${libExecPath}"
-      python build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries}
-      ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
-
-      # Fail if `gn gen` contains a WARNING.
-      grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1
-
-      runHook postConfigure
-    '';
-
-    # Don't spam warnings about unknown warning options. This is useful because
-    # our Clang is always older than Chromium's and the build logs have a size
-    # of approx. 25 MB without this option (and this saves e.g. 66 %).
-    NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option";
-
-    buildPhase = let
-      buildCommand = target: ''
-        ninja -C "${buildPath}" -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES "${target}"
-        (
-          source chrome/installer/linux/common/installer.include
-          PACKAGE=$packageName
-          MENUNAME="Chromium"
-          process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1"
-        )
-      '';
-      targets = extraAttrs.buildTargets or [];
-      commands = map buildCommand targets;
-    in concatStringsSep "\n" commands;
-
-    postFixup = ''
-      # Make sure that libGLESv2 is found by dlopen (if using EGL).
-      chromiumBinary="$libExecPath/$packageName"
-      origRpath="$(patchelf --print-rpath "$chromiumBinary")"
-      patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
-    '';
-
-    passthru = {
-      updateScript = ./update.py;
-      chromiumDeps = {
-        gn = gnChromium;
-      };
-    };
-  };
-
-# Remove some extraAttrs we supplied to the base attributes already.
-in stdenv.mkDerivation (base // removeAttrs extraAttrs [
-  "name" "gnFlags" "buildTargets"
-] // { passthru = base.passthru // (extraAttrs.passthru or {}); })
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix
deleted file mode 100644
index b75d271ace5..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix
+++ /dev/null
@@ -1,214 +0,0 @@
-{ newScope, config, stdenv, fetchurl, makeWrapper
-, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
-, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
-, libva ? null
-, pipewire_0_2
-, gcc, nspr, nss, runCommand
-, lib
-
-# package customization
-# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper)
-, channel ? "stable"
-, gnomeSupport ? false, gnome ? null
-, gnomeKeyringSupport ? false
-, proprietaryCodecs ? true
-, enablePepperFlash ? false
-, enableWideVine ? false
-, enableVaapi ? false # Disabled by default due to unofficial support
-, ungoogled ? true
-, cupsSupport ? true
-, pulseSupport ? config.pulseaudio or stdenv.isLinux
-, commandLineArgs ? ""
-}:
-
-let
-  llvmPackages = llvmPackages_11;
-  stdenv = llvmPackages.stdenv;
-
-  callPackage = newScope chromium;
-
-  chromium = rec {
-    inherit stdenv llvmPackages;
-
-    upstream-info = (lib.importJSON ./upstream-info.json).${channel};
-
-    mkChromiumDerivation = callPackage ./common.nix ({
-      inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
-              cupsSupport pulseSupport;
-      inherit ungoogled;
-      gnChromium = gn.overrideAttrs (oldAttrs: {
-        inherit (upstream-info.deps.gn) version;
-        src = fetchgit {
-          inherit (upstream-info.deps.gn) url rev sha256;
-        };
-      });
-    });
-
-    browser = callPackage ./browser.nix { inherit channel enableWideVine; };
-
-    plugins = callPackage ./plugins.nix {
-      inherit enablePepperFlash;
-    };
-
-    ungoogled-chromium = callPackage ./ungoogled.nix {};
-  };
-
-  pkgSuffix = if channel == "dev" then "unstable" else channel;
-  pkgName = "google-chrome-${pkgSuffix}";
-  chromeSrc = fetchurl {
-    urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [
-      "https://dl.google.com/linux/chrome/deb/pool/main/g"
-      "http://95.31.35.30/chrome/pool/main/g"
-      "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
-      "http://repo.fdzh.org/chrome/deb/pool/main/g"
-    ];
-    sha256 = chromium.upstream-info.sha256bin64;
-  };
-
-  mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
-  widevineCdm = stdenv.mkDerivation {
-    name = "chrome-widevine-cdm";
-
-    src = chromeSrc;
-
-    phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
-
-    unpackCmd = let
-      widevineCdmPath =
-        if channel == "stable" then
-          "./opt/google/chrome/WidevineCdm"
-        else if channel == "beta" then
-          "./opt/google/chrome-beta/WidevineCdm"
-        else if channel == "dev" then
-          "./opt/google/chrome-unstable/WidevineCdm"
-        else
-          throw "Unknown chromium channel.";
-    in ''
-      # Extract just WidevineCdm from upstream's .deb file
-      ar p "$src" data.tar.xz | tar xJ "${widevineCdmPath}"
-
-      # Move things around so that we don't have to reference a particular
-      # chrome-* directory later.
-      mv "${widevineCdmPath}" ./
-
-      # unpackCmd wants a single output directory; let it take WidevineCdm/
-      rm -rf opt
-    '';
-
-    doCheck = true;
-    checkPhase = ''
-      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
-    '';
-
-    PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ];
-
-    patchPhase = ''
-      patchelf --set-rpath "$PATCH_RPATH" _platform_specific/linux_x64/libwidevinecdm.so
-    '';
-
-    installPhase = ''
-      mkdir -p $out/WidevineCdm
-      cp -a * $out/WidevineCdm/
-    '';
-
-    meta = {
-      platforms = [ "x86_64-linux" ];
-      license = lib.licenses.unfree;
-    };
-  };
-
-  suffix = if channel != "stable" then "-" + channel else "";
-
-  sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
-
-  version = chromium.browser.version;
-
-  # We want users to be able to enableWideVine without rebuilding all of
-  # chromium, so we have a separate derivation here that copies chromium
-  # and adds the unfree WidevineCdm.
-  chromiumWV = let browser = chromium.browser; in if enableWideVine then
-    runCommand (browser.name + "-wv") { version = browser.version; }
-      ''
-        mkdir -p $out
-        cp -a ${browser}/* $out/
-        chmod u+w $out/libexec/chromium
-        cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/
-      ''
-    else browser;
-
-in stdenv.mkDerivation {
-  name = "ungoogled-chromium${suffix}-${version}";
-  inherit version;
-
-  buildInputs = [
-    makeWrapper ed
-
-    # needed for GSETTINGS_SCHEMAS_PATH
-    gsettings-desktop-schemas glib gtk3
-
-    # needed for XDG_ICON_DIRS
-    gnome3.adwaita-icon-theme
-  ];
-
-  outputs = ["out" "sandbox"];
-
-  buildCommand = let
-    browserBinary = "${chromiumWV}/libexec/chromium/chromium";
-    getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")";
-    libPath = stdenv.lib.makeLibraryPath [ libva pipewire_0_2 ];
-
-  in with stdenv.lib; ''
-    mkdir -p "$out/bin"
-
-    eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
-      --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \
-      ${lib.optionalString enableVaapi "--add-flags --enable-accelerated-video-decode"} \
-      ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
-
-    ed -v -s "$out/bin/chromium" << EOF
-    2i
-
-    if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ]
-    then
-      export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}"
-    else
-      export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}"
-    fi
-
-  '' + lib.optionalString (libPath != "") ''
-    # To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not
-    # contain an empty section before or after a colon.
-    export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}${libPath}"
-  '' + ''
-
-    # libredirect causes chromium to deadlock on startup
-    export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | ${coreutils}/bin/tr ':' '\n' | ${gnugrep}/bin/grep -v /lib/libredirect\\\\.so$ | ${coreutils}/bin/tr '\n' ':')"
-
-    export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
-
-    # Mainly for xdg-open but also other xdg-* tools:
-    export PATH="${xdg_utils}/bin\''${PATH:+:}\$PATH"
-
-    .
-    w
-    EOF
-
-    ln -sv "${chromium.browser.sandbox}" "$sandbox"
-
-    ln -s "$out/bin/chromium" "$out/bin/chromium-browser"
-
-    mkdir -p "$out/share"
-    for f in '${chromium.browser}'/share/*; do # hello emacs */
-      ln -s -t "$out/share/" "$f"
-    done
-  '';
-
-  inherit (chromium.browser) packageName;
-  meta = chromium.browser.meta;
-  passthru = {
-    inherit (chromium) upstream-info browser;
-    mkDerivation = chromium.mkChromiumDerivation;
-    inherit chromeSrc sandboxExecutableName;
-    updateScript = ./update.py;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch b/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch
deleted file mode 100644
index 6b788f43d29..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig	2018-11-02 16:00:34.368933077 +0200
-+++ chromium-70.0.3538.67/build/compute_build_timestamp.py	2018-11-08 04:06:21.658105129 +0200
-@@ -94,6 +94,14 @@
-       'build_type', help='The type of build', choices=('official', 'default'))
-   args = argument_parser.parse_args()
- 
-+  # I don't trust LASTCHANGE magic, and I definelly want something deterministic here
-+  SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None)
-+  if SOURCE_DATE_EPOCH is not None:
-+    print(SOURCE_DATE_EPOCH)
-+    return 0
-+  else:
-+    raise RuntimeError("SOURCE_DATE_EPOCH not set")
-+
-   # The mtime of the revision in build/util/LASTCHANGE is stored in a file
-   # next to it. Read it, to get a deterministic time close to "now".
-   # That date is then modified as described at the top of the file so that
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch b/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch
deleted file mode 100644
index 32f0ae2fb5e..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn
-index ed0e2f5208b..5b431a030d5 100644
---- a/third_party/widevine/cdm/BUILD.gn
-+++ b/third_party/widevine/cdm/BUILD.gn
-@@ -14,7 +14,7 @@ buildflag_header("buildflags") {
- 
-   flags = [
-     "ENABLE_WIDEVINE=$enable_widevine",
--    "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm",
-+    "BUNDLE_WIDEVINE_CDM=true",
-     "ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component",
-   ]
- }
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix
deleted file mode 100644
index eef1c5ef38c..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{ stdenv, gcc
-, jshon
-, glib
-, nspr
-, nss
-, fetchzip
-, enablePepperFlash ? false
-
-, upstream-info
-}:
-
-with stdenv.lib;
-
-let
-  mkrpath = p: "${makeSearchPathOutput "lib" "lib64" p}:${makeLibraryPath p}";
-
-  # Generate a shell fragment that emits flags appended to the
-  # final makeWrapper call for wrapping the browser's main binary.
-  #
-  # Note that this is shell-escaped so that only the variable specified
-  # by the "output" attribute is substituted.
-  mkPluginInfo = { output ? "out", allowedVars ? [ output ]
-                 , flags ? [], envVars ? {}
-                 }: let
-    shSearch = ["'"] ++ map (var: "@${var}@") allowedVars;
-    shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars;
-    # We need to triple-escape "val":
-    #  * First because makeWrapper doesn't do any quoting of its arguments by
-    #    itself.
-    #  * Second because it's passed to the makeWrapper call separated by IFS but
-    #    not by the _real_ arguments, for example the Widevine plugin flags
-    #    contain spaces, so they would end up as separate arguments.
-    #  * Third in order to be correctly quoted for the "echo" call below.
-    shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'";
-    mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'";
-    mkFlag = flag: ["--add-flags" (shEsc flag)];
-    mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)];
-    envList = mapAttrsToList mkEnvVar envVars;
-    quoted = map mkSh (flatten ((map mkFlag flags) ++ envList));
-  in ''
-    mkdir -p "''$${output}/nix-support"
-    echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags"
-  '';
-
-  flash = stdenv.mkDerivation rec {
-    pname = "flashplayer-ppapi";
-    version = "32.0.0.465";
-
-    src = fetchzip {
-      url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
-      sha256 = "16qbc2s8dg2rwggphf8f5665iccc6lrvgz45bdwskg9pwg87hlj1";
-      stripRoot = false;
-    };
-
-    patchPhase = ''
-      chmod +x libpepflashplayer.so
-      patchelf --set-rpath "${mkrpath [ gcc.cc ]}" libpepflashplayer.so
-    '';
-
-    doCheck = true;
-    checkPhase = ''
-      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
-    '';
-
-    installPhase = ''
-      flashVersion="$(
-        "${jshon}/bin/jshon" -F manifest.json -e version -u
-      )"
-
-      install -vD libpepflashplayer.so "$out/lib/libpepflashplayer.so"
-
-      ${mkPluginInfo {
-        allowedVars = [ "out" "flashVersion" ];
-        flags = [
-          "--ppapi-flash-path=@out@/lib/libpepflashplayer.so"
-          "--ppapi-flash-version=@flashVersion@"
-        ];
-      }}
-    '';
-
-    dontStrip = true;
-
-    meta = {
-      license = stdenv.lib.licenses.unfree;
-      maintainers = with stdenv.lib.maintainers; [ taku0 ];
-      platforms = platforms.x86_64;
-    };
-  };
-
-in {
-  enabled = optional enablePepperFlash flash;
-}
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix
deleted file mode 100644
index 26f2f730a41..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "87.0.4280.88" = {
-    rev = "87.0.4280.88-1";
-    sha256 = "0w2137w8hfcgl6f938hqnb4ffp33v5r8vdzxrvs814w7dszkiqgg";
-  };
-}
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/update.py b/pkgs/applications/networking/browsers/ungoogled-chromium/update.py
deleted file mode 100755
index 9e1f0aec598..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/update.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#! /usr/bin/env nix-shell
-#! nix-shell -i python -p python3 nix nix-prefetch-git
-
-import csv
-import json
-import re
-import subprocess
-import sys
-
-from codecs import iterdecode
-from collections import OrderedDict
-from datetime import datetime
-from os.path import abspath, dirname
-from urllib.request import urlopen
-
-HISTORY_URL = 'https://omahaproxy.appspot.com/history?os=linux'
-DEB_URL = 'https://dl.google.com/linux/chrome/deb/pool/main/g'
-BUCKET_URL = 'https://commondatastorage.googleapis.com/chromium-browser-official'
-
-JSON_PATH = dirname(abspath(__file__)) + '/upstream-info.json'
-
-def load_json(path):
-    with open(path, 'r') as f:
-        return json.load(f)
-
-def nix_prefetch_url(url, algo='sha256'):
-    print(f'nix-prefetch-url {url}')
-    out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url])
-    return out.decode('utf-8').rstrip()
-
-def nix_prefetch_git(url, rev):
-    print(f'nix-prefetch-git {url} {rev}')
-    out = subprocess.check_output(['nix-prefetch-git', '--quiet', '--url', url, '--rev', rev])
-    return json.loads(out)
-
-def get_file_revision(revision, file_path):
-    url = f'https://raw.githubusercontent.com/chromium/chromium/{revision}/{file_path}'
-    with urlopen(url) as http_response:
-        return http_response.read()
-
-def get_matching_chromedriver(version):
-    # See https://chromedriver.chromium.org/downloads/version-selection
-    build = re.sub('.[0-9]+$', '', version)
-    chromedriver_version_url = f'https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{build}'
-    with urlopen(chromedriver_version_url) as http_response:
-        chromedriver_version = http_response.read().decode()
-        def get_chromedriver_url(system):
-            return f'https://chromedriver.storage.googleapis.com/{chromedriver_version}/chromedriver_{system}.zip'
-        return {
-            'version': chromedriver_version,
-            'sha256_linux': nix_prefetch_url(get_chromedriver_url('linux64')),
-            'sha256_darwin': nix_prefetch_url(get_chromedriver_url('mac64'))
-        }
-
-def get_channel_dependencies(channel):
-    deps = get_file_revision(channel['version'], 'DEPS')
-    gn_pattern = b"'gn_version': 'git_revision:([0-9a-f]{40})'"
-    gn_commit = re.search(gn_pattern, deps).group(1).decode()
-    gn = nix_prefetch_git('https://gn.googlesource.com/gn', gn_commit)
-    return {
-        'gn': {
-            'version': datetime.fromisoformat(gn['date']).date().isoformat(),
-            'url': gn['url'],
-            'rev': gn['rev'],
-            'sha256': gn['sha256']
-        }
-    }
-
-channels = {}
-last_channels = load_json(JSON_PATH)
-
-print(f'GET {HISTORY_URL}', file=sys.stderr)
-with urlopen(HISTORY_URL) as resp:
-    builds = csv.DictReader(iterdecode(resp, 'utf-8'))
-    for build in builds:
-        channel_name = build['channel']
-
-        # If we've already found a newer build for this channel, we're
-        # no longer interested in it.
-        if channel_name in channels:
-            continue
-
-        # If we're back at the last build we used, we don't need to
-        # keep going -- there's no new version available, and we can
-        # just reuse the info from last time.
-        if build['version'] == last_channels[channel_name]['version']:
-            channels[channel_name] = last_channels[channel_name]
-            continue
-
-        channel = {'version': build['version']}
-        suffix = 'unstable' if channel_name == 'dev' else channel_name
-
-        try:
-            channel['sha256'] = nix_prefetch_url(f'{BUCKET_URL}/chromium-{build["version"]}.tar.xz')
-            channel['sha256bin64'] = nix_prefetch_url(f'{DEB_URL}/google-chrome-{suffix}/google-chrome-{suffix}_{build["version"]}-1_amd64.deb')
-        except subprocess.CalledProcessError:
-            # This build isn't actually available yet.  Continue to
-            # the next one.
-            continue
-
-        channel['deps'] = get_channel_dependencies(channel)
-        if channel_name == 'stable':
-            channel['chromedriver'] = get_matching_chromedriver(channel['version'])
-
-        channels[channel_name] = channel
-
-with open(JSON_PATH, 'w') as out:
-    def get_channel_key(item):
-        channel_name = item[0]
-        if channel_name == 'stable':
-            return 0
-        elif channel_name == 'beta':
-            return 1
-        elif channel_name == 'dev':
-            return 2
-        else:
-            print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
-            sys.exit(1)
-    sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
-    json.dump(sorted_channels, out, indent=2)
-    out.write('\n')
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json b/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json
deleted file mode 100644
index 6343dd4b246..00000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-  "stable": {
-    "version": "87.0.4280.88",
-    "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy",
-    "sha256bin64": "0n3fm6wf8zfkv135d50xl8xxrnng3q55vyxkck1da8jyvh18bijb",
-    "deps": {
-      "gn": {
-        "version": "2020-09-09",
-        "url": "https://gn.googlesource.com/gn",
-        "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2",
-        "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk"
-      }
-    },
-    "chromedriver": {
-      "version": "87.0.4280.88",
-      "sha256_linux": "141mr2jiy3nslwd3s43m4i6plkv9wv5fgi78cn7mz0ac9x6fpcgx",
-      "sha256_darwin": "048hsqp6575r980m769lzznvxypmfcwn89f1d3ik751ymzmb5r78"
-    }
-  },
-  "beta": {
-    "version": "88.0.4324.27",
-    "sha256": "0mciiyh3sn2zrl8g6znylc2pm9sb0wzsclgavf7mmlknri5sjblc",
-    "sha256bin64": "0qf2j1j3p94s724rwh8fydpjn88cs9yxxhjf5axvqwi7q3h35cfx",
-    "deps": {
-      "gn": {
-        "version": "2020-11-05",
-        "url": "https://gn.googlesource.com/gn",
-        "rev": "53d92014bf94c3893886470a1c7c1289f8818db0",
-        "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9"
-      }
-    }
-  },
-  "dev": {
-    "version": "89.0.4343.0",
-    "sha256": "0jmc1l0lysl5zax98fjhzsfq3c1sqh3n3xscidafflx362wcfpwa",
-    "sha256bin64": "1v6xik8kf531y0g5xj0c8szjmak0qvh77kwkw7p7hqxqmnwwp06d",
-    "deps": {
-      "gn": {
-        "version": "2020-11-05",
-        "url": "https://gn.googlesource.com/gn",
-        "rev": "53d92014bf94c3893886470a1c7c1289f8818db0",
-        "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9"
-      }
-    }
-  }
-}
diff --git a/pkgs/applications/networking/cluster/nomad/0.11.nix b/pkgs/applications/networking/cluster/nomad/0.11.nix
index 6487a2edd7f..2fd7c0403a3 100644
--- a/pkgs/applications/networking/cluster/nomad/0.11.nix
+++ b/pkgs/applications/networking/cluster/nomad/0.11.nix
@@ -2,6 +2,6 @@
 
 callPackage ./generic.nix {
   inherit buildGoPackage;
-  version = "0.11.7";
-  sha256 = "sha256-wp1Je+I3iijD/pHHQtylMQhOiVhS6AT/y2/pUiLr0M4=";
+  version = "0.11.8";
+  sha256 = "1dhh07bifr02jh2lls8fv1d9ra67ymgh8qxqvpvm0cd0qdd469z1";
 }
diff --git a/pkgs/applications/networking/cluster/nomad/0.12.nix b/pkgs/applications/networking/cluster/nomad/0.12.nix
index 863f7cbed2f..0120887957a 100644
--- a/pkgs/applications/networking/cluster/nomad/0.12.nix
+++ b/pkgs/applications/networking/cluster/nomad/0.12.nix
@@ -2,6 +2,6 @@
 
 callPackage ./generic.nix {
   inherit buildGoPackage;
-  version = "0.12.7";
-  sha256 = "0y1nwmpc4fqgjyb19n1f2w4y5k7fy4p68v2vnnry11nj3im7ia14";
+  version = "0.12.9";
+  sha256 = "1a0ig6pb0z3qp7zk4jgz3h241bifmjlyqsfikyy3sxdnzj7yha27";
 }
diff --git a/pkgs/applications/networking/cluster/sonobuoy/default.nix b/pkgs/applications/networking/cluster/sonobuoy/default.nix
index be5cb51d450..668a229a62e 100644
--- a/pkgs/applications/networking/cluster/sonobuoy/default.nix
+++ b/pkgs/applications/networking/cluster/sonobuoy/default.nix
@@ -7,10 +7,8 @@ buildGoModule rec {
   pname = "sonobuoy";
   version = "0.19.0";
 
-  goPackagePath = "github.com/vmware-tanzu/sonobuoy";
-
   buildFlagsArray =
-    let t = goPackagePath;
+    let t = "github.com/vmware-tanzu/sonobuoy";
     in ''
       -ldflags=
         -s -X ${t}/pkg/buildinfo.Version=v${version}
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix
index d18ec94ba8c..6052f6882bc 100644
--- a/pkgs/applications/networking/cluster/terraform/default.nix
+++ b/pkgs/applications/networking/cluster/terraform/default.nix
@@ -157,9 +157,9 @@ in rec {
   });
 
   terraform_0_14 = pluggable (generic {
-    version = "0.14.2";
-    sha256 = "0j09bjdl1z836y3zdlgjcdah11wlnvsd5hmsagjsz9am04qlyfya";
-    vendorSha256 = "1iifjrnc79f4liyy4pgjbnarv2fx6vwlaqcv75crmyji40xv0w9s";
+    version = "0.14.3";
+    sha256 = "0w2j1phjv989bspbyvkhr25bdz1zjch3zggwk2lgjyk77mdw5h20";
+    vendorSha256 = "03dg703pw3h98vfvi2mnd2lw0mv6hlhvmc1l7ngrqdyv54cmihnp";
     patches = [ ./provider-path.patch ];
     passthru = { inherit plugins; };
   });
diff --git a/pkgs/applications/networking/feedreaders/feeds/default.nix b/pkgs/applications/networking/feedreaders/feeds/default.nix
new file mode 100644
index 00000000000..243999553e6
--- /dev/null
+++ b/pkgs/applications/networking/feedreaders/feeds/default.nix
@@ -0,0 +1,88 @@
+{ lib
+, callPackage
+, stdenv
+, fetchFromGitLab
+
+, appstream
+, gobject-introspection
+, meson
+, ninja
+, pkg-config
+, wrapGAppsHook
+
+, glib
+, gtk3
+, libhandy
+, listparser ? callPackage ./listparser.nix { }
+, webkitgtk
+, python3
+}:
+python3.pkgs.buildPythonApplication rec {
+  pname = "feeds";
+  version = "0.16.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = "gfeeds";
+    rev = version;
+    sha256 = "10hq06nx7lcm3dqq34qkxc6k6383mvjs7pxii9y9995d9kk5a49k";
+  };
+
+  format = "other";
+
+  nativeBuildInputs = [
+    appstream
+    glib # for glib-compile-schemas
+    gobject-introspection
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    libhandy
+    webkitgtk
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    beautifulsoup4
+    dateutil
+    feedparser
+    html5lib
+    listparser
+    lxml
+    pillow
+    pygments
+    pygobject3
+    pyreadability
+    pytz
+    requests
+  ];
+
+  # https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  passthru = {
+    inherit listparser;
+  };
+
+  meta = with lib; {
+    description = "An RSS/Atom feed reader for GNOME";
+    homepage = "https://gitlab.gnome.org/World/gfeeds";
+    license = licenses.gpl3Plus;
+    maintainers = [
+      maintainers.pbogdan
+    ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/feedreaders/feeds/listparser.nix b/pkgs/applications/networking/feedreaders/feeds/listparser.nix
new file mode 100644
index 00000000000..c67df416c5c
--- /dev/null
+++ b/pkgs/applications/networking/feedreaders/feeds/listparser.nix
@@ -0,0 +1,31 @@
+{ lib
+, python3
+}:
+python3.pkgs.buildPythonPackage rec {
+  pname = "listparser";
+  version = "0.18";
+
+  src = python3.pkgs.fetchPypi {
+    inherit pname version;
+    sha256 = "0hdqs1mmayw1r8yla43hgb4d9y3zqs5483vgf8j9ygczkd2wrq2b";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    requests
+    six
+  ];
+
+  checkPhase = ''
+    ${python3.interpreter} lptest.py
+  '';
+
+  meta = with lib; {
+    description = "A parser for subscription lists";
+    homepage = "https://github.com/kurtmckee/listparser";
+    license = licenses.lgpl3Plus;
+    maintainers = [
+      maintainers.pbogdan
+    ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/feedreaders/newsflash/default.nix b/pkgs/applications/networking/feedreaders/newsflash/default.nix
index 441a80fc071..e8a76b3d491 100644
--- a/pkgs/applications/networking/feedreaders/newsflash/default.nix
+++ b/pkgs/applications/networking/feedreaders/newsflash/default.nix
@@ -8,7 +8,7 @@
 , gdk-pixbuf
 , glib
 , gtk3
-, libhandy_0
+, libhandy
 , openssl
 , sqlite
 , webkitgtk
@@ -19,16 +19,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "newsflash";
-  version = "1.0.5";
+  version = "1.1.1";
 
   src = fetchFromGitLab {
     owner = "news-flash";
     repo = "news_flash_gtk";
     rev = version;
-    sha256 = "0kh1xqvxfz58gnrl8av0zkig9vcgmx9iaxw5p6gdm8a7gv18nvp3";
+    sha256 = "1z47h23g87dqmr9sfjl36fs5xjm2wj7z2bri9g0a4jcpwzl5awsd";
   };
 
-  cargoSha256 = "059sppidbxzjk8lmjq41d5qbymp9j9v2qr0jxd7xg9avr0klwc2s";
+  cargoSha256 = "0rnrdh9ganj63hf9j890yj9pahcgza95z7x020w72mbb4648hq26";
 
   patches = [
     ./no-post-install.patch
@@ -54,7 +54,7 @@ rustPlatform.buildRustPackage rec {
 
   buildInputs = [
     gtk3
-    libhandy_0
+    libhandy
     openssl
     sqlite
     webkitgtk
diff --git a/pkgs/applications/networking/icemon/default.nix b/pkgs/applications/networking/icemon/default.nix
new file mode 100644
index 00000000000..b757445eb08
--- /dev/null
+++ b/pkgs/applications/networking/icemon/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, mkDerivation, qtbase, cmake, extra-cmake-modules, icecream, libcap_ng, lzo, zstd, libarchive, wrapQtAppsHook }:
+
+mkDerivation rec {
+  pname = "icemon";
+  version = "3.3";
+
+  src = fetchFromGitHub {
+    owner = "icecc";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "09jnipr67dhawbxfn69yh7mmjrkylgiqmd0gmc2limd3z15d7pgc";
+  };
+
+  nativeBuildInputs = [ cmake extra-cmake-modules wrapQtAppsHook ];
+  buildInputs = [ icecream qtbase libcap_ng lzo zstd libarchive ];
+
+  meta = with lib; {
+    description = "Icecream GUI Monitor";
+    inherit (src.meta) homepage;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ emantor ];
+    platforms = with platforms; linux ++ darwin;
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/bluejeans/default.nix b/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
index 8b634834058..5e3f0bdb5d6 100644
--- a/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
+++ b/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
@@ -39,12 +39,12 @@
 
 stdenv.mkDerivation rec {
   pname = "bluejeans";
-  version = "2.17.0";
-  buildNumber = "11";
+  version = "2.19.0";
+  buildNumber = "61";
 
   src = fetchurl {
     url = "https://swdl.bluejeans.com/desktop-app/linux/${version}/BlueJeans_${version}.${buildNumber}.rpm";
-    sha256 = "1h5jbnp5bwy6bpma9a1ia08v7bpz09fm66jsip470k1r7vjjwa68";
+    sha256 = "163p67dqry256d454qzk4k4b692kz8s9fcvaxd6gi7zvnsd48ikr";
   };
 
   nativeBuildInputs = [ rpmextract makeWrapper ];
diff --git a/pkgs/applications/networking/instant-messengers/hipchat/default.nix b/pkgs/applications/networking/instant-messengers/hipchat/default.nix
index 7213332a549..63cbb69b187 100644
--- a/pkgs/applications/networking/instant-messengers/hipchat/default.nix
+++ b/pkgs/applications/networking/instant-messengers/hipchat/default.nix
@@ -43,7 +43,7 @@ in stdenv.mkDerivation {
   inherit version;
 
   src = fetchurl {
-    url = "https://atlassian.artifactoryonline.com/atlassian/hipchat-apt-client/pool/HipChat4-${version}-Linux.deb";
+    url = "https://atlassian.artifactoryonline.com/artifactory/hipchat-apt-client/pool/HipChat4-${version}-Linux.deb";
     sha256 = "03pz8wskafn848yvciq29kwdvqcgjrk6sjnm8nk9acl89xf0sn96";
   };
 
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
index 05d94b2ef71..44df5f6be68 100644
--- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -25,7 +25,7 @@ let
       else "");
 in stdenv.mkDerivation rec {
   pname = "signal-desktop";
-  version = "1.39.2"; # Please backport all updates to the stable channel.
+  version = "1.39.4"; # Please backport all updates to the stable channel.
   # All releases have a limited lifetime and "expire" 90 days after the release.
   # When releases "expire" the application becomes unusable until an update is
   # applied. The expiration date for the current release can be extracted with:
@@ -35,7 +35,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
-    sha256 = "15lv8jpnn2cx7hmb7pn32cvq6nqvzjflf77bbnvxva5hf9zjkma9";
+    sha256 = "11rjz0vawwyny4rpdqsqyfh8pi177xykm69xxcj6kgcncxaxg0vb";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix b/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
index 4a1472fde71..b7858ba14e9 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
@@ -1,665 +1,665 @@
 {
-  version = "78.5.1";
+  version = "78.6.0";
   sources = [
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/af/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/af/thunderbird-78.6.0.tar.bz2";
       locale = "af";
       arch = "linux-x86_64";
-      sha256 = "87cb38398aaa5af68e562a5fc6d20d3d3477d871979bd4a635c94c440e66a482";
+      sha256 = "7f8fd3a1f0e869ee03a4f120c88b606fbe4ae35d9865394fccd291caa9ae7069";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ar/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ar/thunderbird-78.6.0.tar.bz2";
       locale = "ar";
       arch = "linux-x86_64";
-      sha256 = "935efae7caa116e16c341d64634954d77cafbc5e28626b46f5385b8416060f51";
+      sha256 = "73e7beba4e5a2b9cd92ded3ee8e662be9a80d65d59790ed1d5401b5a61c8d147";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ast/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ast/thunderbird-78.6.0.tar.bz2";
       locale = "ast";
       arch = "linux-x86_64";
-      sha256 = "a5868dc7987529790910e638b64b15295a2d57e449fa515f4e17a4ab88a830e6";
+      sha256 = "890cda9e6a9582d43d61c9b4deb2241f46d34dbac5516d9a808dfbb472a22eec";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/be/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/be/thunderbird-78.6.0.tar.bz2";
       locale = "be";
       arch = "linux-x86_64";
-      sha256 = "af52b29567ce26159890f70fcdccd4cafd49c7fc75c620bb606727fd27b7049a";
+      sha256 = "b951394def900c975b2796e47d948c03c59f0fde445f22d1b9a0d89ae8b7dd83";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/bg/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/bg/thunderbird-78.6.0.tar.bz2";
       locale = "bg";
       arch = "linux-x86_64";
-      sha256 = "91856a4745a8bdefac7c2b0193766a4f0009378dfe941dbbe1afcae2ffae2337";
+      sha256 = "2440a8ea3a49d4fe7a84b0c6e67a98889bf98c5f828699bd980705c100a0e585";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/br/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/br/thunderbird-78.6.0.tar.bz2";
       locale = "br";
       arch = "linux-x86_64";
-      sha256 = "d5ba5fe368c99377a264d8574607335fc4317dad447bb38fdc6a5b53d2e95b49";
+      sha256 = "74b48030e64ff509379dd92d08734804006a8cc6176c69e387e03596138c48b0";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ca/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ca/thunderbird-78.6.0.tar.bz2";
       locale = "ca";
       arch = "linux-x86_64";
-      sha256 = "396a1d7b668c7f47b56d7cb41e6e914f03e9e517a14b4698abedb501037ef2c1";
+      sha256 = "4b951a13352db2cc90aadf94c1e57bc5b40660d82dab855aa80751bbce9aa3b8";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/cak/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/cak/thunderbird-78.6.0.tar.bz2";
       locale = "cak";
       arch = "linux-x86_64";
-      sha256 = "914b76ad8268db608be0595039a68189146ded384c23407ccbcd78a5e74e19ae";
+      sha256 = "bfb2ebc8a6b376603b9e310ad664a099725a29183c67b02ee13ecf3eb9a3bdac";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/cs/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/cs/thunderbird-78.6.0.tar.bz2";
       locale = "cs";
       arch = "linux-x86_64";
-      sha256 = "4b62702cabecfbb2567b19446f405936c9d948dad6f65a2e3f21809d4f2b1176";
+      sha256 = "de30e9d948ade3c82b7ebd58a3bbed5e880abcdb2d9c58f8e64d9d3d78bb336d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/cy/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/cy/thunderbird-78.6.0.tar.bz2";
       locale = "cy";
       arch = "linux-x86_64";
-      sha256 = "736d245bd7766ac8c611a6801b3769a84baf4abae94818e0cfcadde8521850ad";
+      sha256 = "b7d0bb95acb861c453d8649673d9e582920a6df6a9662b8a6f996636d54c68c2";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/da/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/da/thunderbird-78.6.0.tar.bz2";
       locale = "da";
       arch = "linux-x86_64";
-      sha256 = "53143b51b84ee74ee9131d3b3b80e2cf873e5a8c22478c87db34a9d2ac34607a";
+      sha256 = "2c4765b34f1d63a9eae942531b7f489150d6850f68487565082ea18c94f3ad0d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/de/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/de/thunderbird-78.6.0.tar.bz2";
       locale = "de";
       arch = "linux-x86_64";
-      sha256 = "2f3a4d8bf96e9653dd3883ac4399c650e87831d7df137358401966683d382e6c";
+      sha256 = "e29280a519f4eca06d4e5862085d8fb8cefb9577918ba953cdc6f63ffc44a6ed";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/dsb/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/dsb/thunderbird-78.6.0.tar.bz2";
       locale = "dsb";
       arch = "linux-x86_64";
-      sha256 = "81a3674dd2495da673a2fe3e3d200d7cadf83f9c67ff92bf2d607f6546bc2f38";
+      sha256 = "d638be5a999fd1b287628b449235e9995169c06c2cf46d1f7e6de282bf4357b8";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/el/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/el/thunderbird-78.6.0.tar.bz2";
       locale = "el";
       arch = "linux-x86_64";
-      sha256 = "651e8f535b2518bc4e56706cfb76da6d0e35d4fec031f8426cbefb404e4790d7";
+      sha256 = "34cbbca7eb8ecd5078d52d429b76ed0b5334398040d6e00aa5b5926bf8eeaba8";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/en-CA/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/en-CA/thunderbird-78.6.0.tar.bz2";
       locale = "en-CA";
       arch = "linux-x86_64";
-      sha256 = "775983115d98e3581db993f6202fdad1de6b23d38e5bb7edfd965ad6bc0ae425";
+      sha256 = "d50be05404a4b51e3a9c2fc4a73d75504f11e12a7ba7331ca43d5f078f462303";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/en-GB/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/en-GB/thunderbird-78.6.0.tar.bz2";
       locale = "en-GB";
       arch = "linux-x86_64";
-      sha256 = "d0a3569c76b85fdca01e5098cf279b08a63d2d9023e92cadf3f8dc136d76c619";
+      sha256 = "4d11d73b268369117861250f4fecd5c6d19a904145caaaeb7ee86c7eb9e63f9f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/en-US/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/en-US/thunderbird-78.6.0.tar.bz2";
       locale = "en-US";
       arch = "linux-x86_64";
-      sha256 = "4363d8fd759ac4f4783eeb76726c8cf22e5afb3c171f26fe5cca5ab194ab6959";
+      sha256 = "6691e528ac3fc88a023507e1172d67daac235fa1fce97e75e6fbd7072a493e0f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/es-AR/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/es-AR/thunderbird-78.6.0.tar.bz2";
       locale = "es-AR";
       arch = "linux-x86_64";
-      sha256 = "3a04a2e42935c97c7ef003e4a690c0433783b57ce56700f07ad8b590e48b4ad0";
+      sha256 = "2f45d7f6e42fdef4f8bb8ab815879157cd962c91afa352a35f8cbc3fcf52fd82";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/es-ES/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/es-ES/thunderbird-78.6.0.tar.bz2";
       locale = "es-ES";
       arch = "linux-x86_64";
-      sha256 = "f70a3feb09b79153d18e2a382017abbd6e015c78d4d55ff66f8b199b450172c4";
+      sha256 = "7bf50cefecce82e20c06441f003cc51eb7cc16d3a0e55a118213eee78e8b8494";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/et/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/et/thunderbird-78.6.0.tar.bz2";
       locale = "et";
       arch = "linux-x86_64";
-      sha256 = "c739f5306a2526baf74e57a029371390d02f8c119681b0f154481ae32c67c18c";
+      sha256 = "2b2c624808f75ae0d713ad37e9959ad518ae5702caa10845fb3aa8089e77bc9c";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/eu/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/eu/thunderbird-78.6.0.tar.bz2";
       locale = "eu";
       arch = "linux-x86_64";
-      sha256 = "9f95f4f1ec40e2732e053e68b31529b827f95876ad890d752f5380158f53b9e6";
+      sha256 = "3495821650563af2a62f36f928fb7503568de920211b9ef2f21904884d4fa3ef";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fa/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/fa/thunderbird-78.6.0.tar.bz2";
       locale = "fa";
       arch = "linux-x86_64";
-      sha256 = "e53dd458656ee9f39e996042016256949c974161c51b1bee63a401d90d59bace";
+      sha256 = "90b9ff389550e5801bc7ca7e1e4d7db5b281081bef2d0d30b7c2e9799e8cd0c9";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fi/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/fi/thunderbird-78.6.0.tar.bz2";
       locale = "fi";
       arch = "linux-x86_64";
-      sha256 = "b0a96b08e986e49ee6526ab098fb0d44700b3a2aa7f96205b318fdd4b938ef51";
+      sha256 = "cd5819b7ed9e3017cbef8e1ca33cb92e1804fc8ece9edf6a74133db90b61ee6f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/fr/thunderbird-78.6.0.tar.bz2";
       locale = "fr";
       arch = "linux-x86_64";
-      sha256 = "872da741245da7466de58d766a0362983d59a111a65a333881d3636defe00eb4";
+      sha256 = "82b382d1ea014a26a397c3fe06c586732df756104533c7450494ad43b11e43a5";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/fy-NL/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/fy-NL/thunderbird-78.6.0.tar.bz2";
       locale = "fy-NL";
       arch = "linux-x86_64";
-      sha256 = "d57862f51ec01e63ab77916ab352276b7f4992b089508dee0c9c5d389ab88d95";
+      sha256 = "3b4b0c4a23ad63f2d152eb8741a30fe4092c2d37d1bbb2cd56eb75c85d885f4a";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ga-IE/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ga-IE/thunderbird-78.6.0.tar.bz2";
       locale = "ga-IE";
       arch = "linux-x86_64";
-      sha256 = "bda41b8eff5a5004f753944c49f15ddbd1f76c19b0310481251e04ff64309597";
+      sha256 = "093b76080942d3e7584f7948dc65003c20878e8bf4bec4808669f012183cf97f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/gd/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/gd/thunderbird-78.6.0.tar.bz2";
       locale = "gd";
       arch = "linux-x86_64";
-      sha256 = "0671af342859574cb96dbe119d76d7ffa92a8c3fef11eee2a03f662ea71fb84a";
+      sha256 = "a726c67ab384b58c3a1ff84a3a1fe95f73219996e7e26f5dcdfe5dda30d34cdf";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/gl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/gl/thunderbird-78.6.0.tar.bz2";
       locale = "gl";
       arch = "linux-x86_64";
-      sha256 = "b458d6f79914fc4c551b3fa4444dc5ad4fa8d3310907a33a3480bf363bcdbfdb";
+      sha256 = "b731c512c61ece7b811d74e5f40cdae742207463799cccfa9906b43f58d5f2fb";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/he/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/he/thunderbird-78.6.0.tar.bz2";
       locale = "he";
       arch = "linux-x86_64";
-      sha256 = "146f2a8417827d2d6352f7cc20486ecca8fd1e0ad384d4eb2d8b2635edf2075f";
+      sha256 = "d15591239235d2f7debc8454e65c1e67101b8f32901fcc7543025986c524b156";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/hr/thunderbird-78.6.0.tar.bz2";
       locale = "hr";
       arch = "linux-x86_64";
-      sha256 = "5c510bd3a8f8015e5c8a7c0cff401e3557b0cdca83bff77d2384c8f75f287152";
+      sha256 = "003d02062016c8f13038e61f189b7ebb75753ffd9a55879e1f8fd3ee1c1f2a2f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hsb/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/hsb/thunderbird-78.6.0.tar.bz2";
       locale = "hsb";
       arch = "linux-x86_64";
-      sha256 = "605ae5746f0df98c7a561550da9cc938d0e06a222f422910ab118fa89d09e793";
+      sha256 = "2325fd29cadc8c824ddd90ba7d0975ca42c2d9964c62269f0361b5318274155f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hu/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/hu/thunderbird-78.6.0.tar.bz2";
       locale = "hu";
       arch = "linux-x86_64";
-      sha256 = "7d42f5e242e04d06bb9abd9bde8fe21571fa13f91b027369a048447d4de8526c";
+      sha256 = "15650cc17e75780f17927ced485a03a23dcf771dd7d8343b28acd0ae1f0e1f9e";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/hy-AM/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/hy-AM/thunderbird-78.6.0.tar.bz2";
       locale = "hy-AM";
       arch = "linux-x86_64";
-      sha256 = "74b0b31089be36c0538eb24c98e57123f24599b4122aac5b08c4eb914f6a8f7d";
+      sha256 = "c20a4f0ccf2bce093986e3758784190215bf19d31469f6bb51f5a494ed54fb03";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/id/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/id/thunderbird-78.6.0.tar.bz2";
       locale = "id";
       arch = "linux-x86_64";
-      sha256 = "291ad6b1fcdc537e723ee76cf0a40a3084bdf1ebec68fc3c8c54714618f5d790";
+      sha256 = "286eb0484f9a4b9c2d24dd836abcc07b00218a6c870535df1e4947482de1a79f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/is/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/is/thunderbird-78.6.0.tar.bz2";
       locale = "is";
       arch = "linux-x86_64";
-      sha256 = "188e2cab8e00421b8a5f9c9a174e8a529ab404a0f4f3976797e41848eb0abc4d";
+      sha256 = "b291df9b76800c56424ed8c9ad8e55be68f2606968abef2eb83ee3c86d56fc6f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/it/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/it/thunderbird-78.6.0.tar.bz2";
       locale = "it";
       arch = "linux-x86_64";
-      sha256 = "12daeb5314ae81a82ce95c35dc9e34d676fe8b666a84a38aea36367b52aa2c95";
+      sha256 = "51d112544b67c44d82b4d0f54bd35f0dfb485917ad72c09ce6136a8750e58eb0";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ja/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ja/thunderbird-78.6.0.tar.bz2";
       locale = "ja";
       arch = "linux-x86_64";
-      sha256 = "cdd41967d60abff6053f1736375cbbdb521bbdf5aa25110ca8e08bb365c853ca";
+      sha256 = "931815f8f2e0e3a9e3b9eb150fe8f0112b26537b02cc0c0c0dce9c14c1959ac9";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ka/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ka/thunderbird-78.6.0.tar.bz2";
       locale = "ka";
       arch = "linux-x86_64";
-      sha256 = "9548232d8df327e6282b5413d904d5742aadfa75574b1333a235df2097337032";
+      sha256 = "d51b241842f8da9d6cfc8307b11b73fe813d46a7d6cd9651c46e1af18201e89c";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/kab/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/kab/thunderbird-78.6.0.tar.bz2";
       locale = "kab";
       arch = "linux-x86_64";
-      sha256 = "ca35aa36ed5794661372e76f24dd6c98d11d35da76aff5396215ebe9331aa881";
+      sha256 = "935d2e485aff93ee91c20710c286cb591379f5fae1a34851454707710c75df88";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/kk/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/kk/thunderbird-78.6.0.tar.bz2";
       locale = "kk";
       arch = "linux-x86_64";
-      sha256 = "dd90fff1a4ee8380e03e59ef324298d1591833a021d14a11fdb2829cd3a934f3";
+      sha256 = "4534b9c69f44c197997283f455d4b692ff96df122e9d633288d2874b8657833b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ko/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ko/thunderbird-78.6.0.tar.bz2";
       locale = "ko";
       arch = "linux-x86_64";
-      sha256 = "4dae3766bf420a0cfb5473fa95356f0061b657a7ebfdc808b69a8e639564893b";
+      sha256 = "bb083026c53734d3956126a7bc11f1e02e122e463b0f8cb72757cc7cf94cb911";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/lt/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/lt/thunderbird-78.6.0.tar.bz2";
       locale = "lt";
       arch = "linux-x86_64";
-      sha256 = "de4b448d9651692bc4eb38447d94c94e37d93dae816edb5f3936d56a58aa41af";
+      sha256 = "a9cd61089e2898a3e27cd0d10d9295c295b579324a30ff58f7500c0dd9fa1977";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ms/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ms/thunderbird-78.6.0.tar.bz2";
       locale = "ms";
       arch = "linux-x86_64";
-      sha256 = "08593e72643de8f79b6d90a0c41d6031f915097d3f28f1e7e901c21caa0ab037";
+      sha256 = "f84ac7f403802271c2730979dd7da85ec976d970aa39c1f50215ba1902449245";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/nb-NO/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/nb-NO/thunderbird-78.6.0.tar.bz2";
       locale = "nb-NO";
       arch = "linux-x86_64";
-      sha256 = "21caa07be03725788c41fa527e7656a0467194e8a498de87f2455b571c4e14b2";
+      sha256 = "98fd61d91149b26750f06e12f64605ffe04f243d96c5ead0d11a2a600c4baa7d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/nl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/nl/thunderbird-78.6.0.tar.bz2";
       locale = "nl";
       arch = "linux-x86_64";
-      sha256 = "7c1c00a8e03d0a8e4fa9cdc3b4acce51215e9f273660e48ad76347e6003a1985";
+      sha256 = "44dbe77dbfb8d74c2c79052e1152e0da0a751d0cccea5b643c5019704454b0ac";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/nn-NO/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/nn-NO/thunderbird-78.6.0.tar.bz2";
       locale = "nn-NO";
       arch = "linux-x86_64";
-      sha256 = "103bc1307f47c20102e14362fcd6da696eb122fe77f680e70cd0849c9c03c47a";
+      sha256 = "e88e668c434b5b2469ef8268985015735ba5ff8639a1c670d1c9d42e1dd0b30b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pa-IN/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/pa-IN/thunderbird-78.6.0.tar.bz2";
       locale = "pa-IN";
       arch = "linux-x86_64";
-      sha256 = "388d01d0881573164816d7ddf6a08c17ad966616f1c8e8e429f821d2bb179a62";
+      sha256 = "388b87f10db2a0dc9c73580ccc5248c492d6274766e4350981f8289db39c95cf";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/pl/thunderbird-78.6.0.tar.bz2";
       locale = "pl";
       arch = "linux-x86_64";
-      sha256 = "160651e72037bb89ac62534714ce9ecbebdec0cf1f8a6127396c68ab531745f9";
+      sha256 = "cc0e7c7bf4fd33ab255b1bcca808e6ae84c9575b3555228f84da8dad83b02d2a";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pt-BR/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/pt-BR/thunderbird-78.6.0.tar.bz2";
       locale = "pt-BR";
       arch = "linux-x86_64";
-      sha256 = "6d2064a6ed4bb684384f7e79b61cfceb66a9a26900e9947b3666c36d6b8793cd";
+      sha256 = "a8b4b7db5ed2a45af8bc595c85f15f9ea78d2a790bb62a9e419b7b2c78616a66";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/pt-PT/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/pt-PT/thunderbird-78.6.0.tar.bz2";
       locale = "pt-PT";
       arch = "linux-x86_64";
-      sha256 = "2ccc7a3d9d845f1a3e2ad3869cbd4cefa10e44992c27444a599f6f1429070f32";
+      sha256 = "c4504cebf2b2c831ec94029605b3068ab1cf220d3cce33b085d658c20fbf4dc4";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/rm/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/rm/thunderbird-78.6.0.tar.bz2";
       locale = "rm";
       arch = "linux-x86_64";
-      sha256 = "05e45497c19d46292617de4f247f014f7b14a684f74bfd314caf408416dc5b19";
+      sha256 = "b1be40d4a3f6f26c9a06e3179244ae2ad9c9c259e76cdd695cb3f881e43de919";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ro/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ro/thunderbird-78.6.0.tar.bz2";
       locale = "ro";
       arch = "linux-x86_64";
-      sha256 = "bf01cf8c987e46f03236dbaab14aa551464019f471aa111299b6c7538e995f80";
+      sha256 = "305ecbe685a107461aa3dad94e7b74d9f32b343a3d9813cf7d570e0919d5d931";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/ru/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/ru/thunderbird-78.6.0.tar.bz2";
       locale = "ru";
       arch = "linux-x86_64";
-      sha256 = "a3cbdfa26ff487d0efdabfa9dc324b75ec1446964f1c0192afcd67565dfc4a51";
+      sha256 = "4d49f15c2c9e69a6156e89017c71f5cbda3114940bfdf273efd0e82dfcc3457b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/si/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/si/thunderbird-78.6.0.tar.bz2";
       locale = "si";
       arch = "linux-x86_64";
-      sha256 = "fb26eef7b0c5b233e41f8d4ad79f11aa7d0db21b155bf0d9284881cabb51f6e4";
+      sha256 = "9d108c3b3d54d12c5008f0d77c4a6741ab94c7fcfec1cb4ff59bb2730938d01f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sk/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/sk/thunderbird-78.6.0.tar.bz2";
       locale = "sk";
       arch = "linux-x86_64";
-      sha256 = "d462f2606bfd7f6e0e45334a68d266889f0f9f927f08d5b92c39329711a8c4cf";
+      sha256 = "a6e51284b554fd6a8970757d519870098baa26d3fd23561e335105ec5bf836ad";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/sl/thunderbird-78.6.0.tar.bz2";
       locale = "sl";
       arch = "linux-x86_64";
-      sha256 = "b6011aefaf1eb60c8849b4ecc7a7a6fa0a72def8ba690f5b7ca61de3e089c9a4";
+      sha256 = "99b80fb6efd174beaf885e3d5451557a353693158ef147c931aa4d8560966122";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sq/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/sq/thunderbird-78.6.0.tar.bz2";
       locale = "sq";
       arch = "linux-x86_64";
-      sha256 = "aeed36c0d6129dc58d496f8f6177a88950a4c4cfe2e4ac157fb389ea79488b11";
+      sha256 = "5bba738143daec5c687fedf566052c9d387a87520e510acdb963ae80c5d24b3c";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/sr/thunderbird-78.6.0.tar.bz2";
       locale = "sr";
       arch = "linux-x86_64";
-      sha256 = "f55cb398b3e6420acf6791d9ab5592b9915d299c5111ea917934b5729d22dd7f";
+      sha256 = "c18424e503d87ee7ea940a4d9551b9ec51a90b76b73180c89541872dbba27674";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/sv-SE/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/sv-SE/thunderbird-78.6.0.tar.bz2";
       locale = "sv-SE";
       arch = "linux-x86_64";
-      sha256 = "036b4f2b3d6cd24bcdcdbc1da1f44df2fba012f22ab96d0840a8c7ae0b945055";
+      sha256 = "d0eb7a8a1a6248e40142a62b61f9fe3e78bb8c277c9734d821358e0a075d5184";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/th/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/th/thunderbird-78.6.0.tar.bz2";
       locale = "th";
       arch = "linux-x86_64";
-      sha256 = "316ae39fb02b9ad1b28bbe7a21342e5e85dd7593978b4935b7be20253fe6b761";
+      sha256 = "04d3465fb8afcff051ce9a578901f3e9a8fbfab65f31cd7245b0b9321daa102f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/tr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/tr/thunderbird-78.6.0.tar.bz2";
       locale = "tr";
       arch = "linux-x86_64";
-      sha256 = "73811e185274d880abdb15503a928a537428460080245426a07cf1c01e38f1c6";
+      sha256 = "46acaf32f9f035dd320d4e28d6b36ef8ce2d8ff5f753cfb6a7b02f37e8edb09f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/uk/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/uk/thunderbird-78.6.0.tar.bz2";
       locale = "uk";
       arch = "linux-x86_64";
-      sha256 = "8ff9e333cf16a02e7888f297851b5a9316c5b57cf546f592f12d2aab6e3bed48";
+      sha256 = "60b0be6207532039958f03a81e5fdf070d15cd624a0583c4d8e87e0528ccd240";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/uz/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/uz/thunderbird-78.6.0.tar.bz2";
       locale = "uz";
       arch = "linux-x86_64";
-      sha256 = "899c0c8c886fbaa6a6609a500bb374797bd36272138a6fcdc6aca7c7b6a6fe66";
+      sha256 = "070963c90b858e9ab75cee1490671ec3f9f46190896eca554fde0ced205d0d44";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/vi/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/vi/thunderbird-78.6.0.tar.bz2";
       locale = "vi";
       arch = "linux-x86_64";
-      sha256 = "13afdad34f64a1c96f9612c10c8af880e9718ae10d8a1578bc397b238a936dbd";
+      sha256 = "9040ed756aa19c0e850391bd9fa148eb0fbca45b84eea888c874a9c93ee0428b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/zh-CN/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/zh-CN/thunderbird-78.6.0.tar.bz2";
       locale = "zh-CN";
       arch = "linux-x86_64";
-      sha256 = "00a1d01acabd210ba70ed6d0842ab5e1674109c7f39f561e8295d1ffd5f80a0d";
+      sha256 = "caba2b9f3fabf1231b947c578c9761a241178f732c110fcd4cf620146ce5002b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-x86_64/zh-TW/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-x86_64/zh-TW/thunderbird-78.6.0.tar.bz2";
       locale = "zh-TW";
       arch = "linux-x86_64";
-      sha256 = "19b84b15a6bbf593a342c874822764bd73022d2c846fe20a6d7d91aceeb1ee15";
+      sha256 = "b48378e3833a0710bca60cb9c87396f0163cf9cd6211725ea711e116557e5abc";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/af/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/af/thunderbird-78.6.0.tar.bz2";
       locale = "af";
       arch = "linux-i686";
-      sha256 = "4c1487a6b823a76d477085e66b377f536f2cfd95b4ddc6804b97c792af77c554";
+      sha256 = "b4ca4cd2535fb02c059db2783f2428634373730217d420530d7c2f6441191fe7";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ar/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ar/thunderbird-78.6.0.tar.bz2";
       locale = "ar";
       arch = "linux-i686";
-      sha256 = "d33576a1d8c346195a20c8a222281d682d14f604654ff173eb28ca8a9343574b";
+      sha256 = "29c287ff2ce37f3d4c23770f85aa220d7b9265df2b188aa38730fca68f8ea40b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ast/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ast/thunderbird-78.6.0.tar.bz2";
       locale = "ast";
       arch = "linux-i686";
-      sha256 = "09d68977bc121e562f3c697bd1d87b21250c8a0bcac013940e3806d4a69a749d";
+      sha256 = "e1267edf8d35bfaf1f2bab751b5235855ce9ab768acc607ff308021dc917cd8f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/be/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/be/thunderbird-78.6.0.tar.bz2";
       locale = "be";
       arch = "linux-i686";
-      sha256 = "bb58501c902788b2d1f8f308468aa57447a15979cab59dc89c27e3738748b6d9";
+      sha256 = "1359027429e2c1ed2535f0878105bc0485f52b569aa342246d380acd1df13e4f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/bg/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/bg/thunderbird-78.6.0.tar.bz2";
       locale = "bg";
       arch = "linux-i686";
-      sha256 = "373bd3548f518a4ae56e8a103b64eb76c3139b984a5af8013de56b133a0d44c0";
+      sha256 = "4e2d1a02d6ef6ee123c68db8ff299037cbfa017334599f5e3ac7114ee3e8874b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/br/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/br/thunderbird-78.6.0.tar.bz2";
       locale = "br";
       arch = "linux-i686";
-      sha256 = "40934c8ec7070ad29cb0111624de431a0cdeeff9c7c01d8781444e33f65acbca";
+      sha256 = "526e73827d595452c40bcd2066885d41a9497bf7d61043a5236d600cb9202e94";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ca/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ca/thunderbird-78.6.0.tar.bz2";
       locale = "ca";
       arch = "linux-i686";
-      sha256 = "fbce4213fe7564f2af3f980f5844961cac9a7ec2a30b23d7cdd4e5db6aa4ebaa";
+      sha256 = "73605bd265262a8f538b7d15b26915ecb030a76824a09192e7b2e897ac5affe5";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/cak/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/cak/thunderbird-78.6.0.tar.bz2";
       locale = "cak";
       arch = "linux-i686";
-      sha256 = "2aaf7ea23606be03f5f7168aaa4286760f236d084babd1f81540f8b62b37962c";
+      sha256 = "bbdcb9447938bc2ae8b4dc0a5a250cf82e316c7ef56abca2962f871abf9d1d4a";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/cs/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/cs/thunderbird-78.6.0.tar.bz2";
       locale = "cs";
       arch = "linux-i686";
-      sha256 = "880e36431f76161674fdb9f2902c9d5487bed528a198722458b7e6e76e80e9b5";
+      sha256 = "4052bda928576a30657dc4087bdded6ea2339e271bff36194bbd37e610f55d13";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/cy/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/cy/thunderbird-78.6.0.tar.bz2";
       locale = "cy";
       arch = "linux-i686";
-      sha256 = "eddb4dcac8063e5b245eb1c095c4ff98cb03714bf5b07f0366b89d670a9d95dd";
+      sha256 = "d3b337be4b64903d075f8e2269ff5f88831d5a88f24a56deead19ea534867d10";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/da/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/da/thunderbird-78.6.0.tar.bz2";
       locale = "da";
       arch = "linux-i686";
-      sha256 = "2425487caaab7979f504d37cf6b100c7cb030e8e5495b6723fa4f953348e4f40";
+      sha256 = "96080cee994410b59935c0baaa4d8bc0c592d1654242b00540b3b1997398951a";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/de/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/de/thunderbird-78.6.0.tar.bz2";
       locale = "de";
       arch = "linux-i686";
-      sha256 = "81df3e5ba46fe5959f785c06bef0b70daa55e8f8721cfff0bf55a76f7343b32f";
+      sha256 = "46b4c8b867fbc4f5ed288f0c503a776a256c229799601d7810ac51b73685d6a2";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/dsb/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/dsb/thunderbird-78.6.0.tar.bz2";
       locale = "dsb";
       arch = "linux-i686";
-      sha256 = "995d3aaf3df22aa3166f161b98113fc25b813dc7cee2743b2bdd6913b4a620c4";
+      sha256 = "f1b8576a1c5ed9dea2b92b10b03e2f16e17207c1f5dce4f83556b11a846de754";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/el/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/el/thunderbird-78.6.0.tar.bz2";
       locale = "el";
       arch = "linux-i686";
-      sha256 = "ad5162a76dba9c37e2542fa7ed08c63edce9955600e9b50889abb03e352ddf23";
+      sha256 = "01d559767ff8a2562b81c7e42007993065b4d46319fe4890e157a2450a34875f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/en-CA/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/en-CA/thunderbird-78.6.0.tar.bz2";
       locale = "en-CA";
       arch = "linux-i686";
-      sha256 = "c605520e5e65449855c355147f18b813f66d38dce52e8d3a23b90afbec5bcbf1";
+      sha256 = "99571e51cc28c9dbc5aab42fa5d5f7f680fdfa287f7f8b96c5548949155735a5";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/en-GB/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/en-GB/thunderbird-78.6.0.tar.bz2";
       locale = "en-GB";
       arch = "linux-i686";
-      sha256 = "63b0d984ee8296c5185ed1aab279a0ef065986d989edbd0a7683b9db6a6d94bb";
+      sha256 = "e515ef917801e0fa67b9d4821f7185b21e36b35b7df8bb43b6a917851bcae753";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/en-US/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/en-US/thunderbird-78.6.0.tar.bz2";
       locale = "en-US";
       arch = "linux-i686";
-      sha256 = "b5404037f2678d36acbb225f43d426a86db9a4828a69b1beaf44dc3b5264ae7e";
+      sha256 = "cee59a70210f9fc8672a914179c957d67556b068d8ce9387c01636e89e54aba9";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/es-AR/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/es-AR/thunderbird-78.6.0.tar.bz2";
       locale = "es-AR";
       arch = "linux-i686";
-      sha256 = "cefe0ff79bacc9c16fe649c0d7b4f932afca6ebb10c8426fac527485e92f4422";
+      sha256 = "e30605e7460ff80a1c26107d0393d7cd12ecfd95d55f256db6f808076d03c53d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/es-ES/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/es-ES/thunderbird-78.6.0.tar.bz2";
       locale = "es-ES";
       arch = "linux-i686";
-      sha256 = "de7c6685c4e73ee334faf83c809b2f45d55c971282ba99aecfd5d1c8b05577da";
+      sha256 = "0e2301dd592c06a2628aeba21f38fe4b422ed2690531c1487e958c6cea1b236c";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/et/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/et/thunderbird-78.6.0.tar.bz2";
       locale = "et";
       arch = "linux-i686";
-      sha256 = "e5174b12c61221436a5926224f61f218bfe762086f1d5bb814af5f7708592392";
+      sha256 = "d15684c68e9bef8902e9dcdb87bacda263953cc93ba7368b69fd318739b58fdf";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/eu/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/eu/thunderbird-78.6.0.tar.bz2";
       locale = "eu";
       arch = "linux-i686";
-      sha256 = "66bfbb4edc775117a6f048f52084fff9828633166ac6234a7c1dc0d67311677f";
+      sha256 = "4144e7de84ce0a6b39d8c29a96221532951c76679a8ac5a85aa07a62b99680d6";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fa/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/fa/thunderbird-78.6.0.tar.bz2";
       locale = "fa";
       arch = "linux-i686";
-      sha256 = "072163a9d1a94b1f5c297c794791b4bd3e7f7e6897e7f7615df59a9dd2232a52";
+      sha256 = "028ac9a6ad5d6e7360e597d961a7422238d96cda848042975ececec6f3a06aa3";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fi/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/fi/thunderbird-78.6.0.tar.bz2";
       locale = "fi";
       arch = "linux-i686";
-      sha256 = "9c269f267251bee9828acfd78d04bf149767dfe5247ae4f53ec5b0bd65c410ba";
+      sha256 = "ee5adee4c249edd9b61fcacc0a2150d4471a7897aa1057fe3ea04e16729de966";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/fr/thunderbird-78.6.0.tar.bz2";
       locale = "fr";
       arch = "linux-i686";
-      sha256 = "6ccfac2b5d96491c4d5dc7b00e4458617ca68fe07917941559534a31424c977c";
+      sha256 = "d5d0190541184198a6c628b3c79c7dc96ec911ab195ed3419f33c4817d401e01";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/fy-NL/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/fy-NL/thunderbird-78.6.0.tar.bz2";
       locale = "fy-NL";
       arch = "linux-i686";
-      sha256 = "1b470c45c9d52a8a84c59dbb4ed0e6966d124ffdc3ea865e4d02289bd39b346f";
+      sha256 = "c7b8ee6e8b66a6948f80f10e1ebf2d61c70e5be439f197953bff91f499fa8d51";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ga-IE/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ga-IE/thunderbird-78.6.0.tar.bz2";
       locale = "ga-IE";
       arch = "linux-i686";
-      sha256 = "a1cbb9a4c1bf91f920da9e4e0e39e6ecff0a8c87413898c1930ce69dadad9a26";
+      sha256 = "32a1d8ded34b26136b2884d24f31c5b08c965c10061758b87df9510395f8dc7e";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/gd/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/gd/thunderbird-78.6.0.tar.bz2";
       locale = "gd";
       arch = "linux-i686";
-      sha256 = "909be2cc362ed839f373eb22d27c5f3c569b1c82fc2ba5aaf270d605029d336c";
+      sha256 = "a65ff1d77deb34ed46bb84ab480afad20fcf417f39c714021ccd83b4a9d3212e";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/gl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/gl/thunderbird-78.6.0.tar.bz2";
       locale = "gl";
       arch = "linux-i686";
-      sha256 = "8ffadcffd16aca8befd4b9c230b7da750e6a694add7ee465227a0c3f31a5c655";
+      sha256 = "87660c561fc92396c1eeafb82e907fbc2670b6649e2c7f0bdc73714fefa3de55";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/he/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/he/thunderbird-78.6.0.tar.bz2";
       locale = "he";
       arch = "linux-i686";
-      sha256 = "a9242889345131a405d138d0ec8e470eb49c59ada18b1e8f78004f307ceb41b1";
+      sha256 = "1e5c7324c57de9e5e2a87dceb1d41994a74f55e108e8d97161e0fd428f6b197f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/hr/thunderbird-78.6.0.tar.bz2";
       locale = "hr";
       arch = "linux-i686";
-      sha256 = "eb1f5496811677e28b2ed034da40ebf1fef324673e0f3acb2c21f0db5c71f592";
+      sha256 = "cad204c16e1b8ee26809321aa27c73220e64bcd86d261474c636d088ade006e3";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hsb/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/hsb/thunderbird-78.6.0.tar.bz2";
       locale = "hsb";
       arch = "linux-i686";
-      sha256 = "643a2b11a0775a71a8fa6c25097cfe297e6bc190fb29eee18ddd3d16fb61d989";
+      sha256 = "9d3e8988b5e8a3f089a0334304e255a716bc24f4ec9b08dd6594b7ddb4daa3cd";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hu/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/hu/thunderbird-78.6.0.tar.bz2";
       locale = "hu";
       arch = "linux-i686";
-      sha256 = "61d91bed542a7e014a8d11e46e1b3d97e8bef1303bba397b3d4da0585b1e68af";
+      sha256 = "f46e9d49a74ccb2172c78e6e149149ff49c0be7c93336c62f8c17b30a1b1d15f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/hy-AM/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/hy-AM/thunderbird-78.6.0.tar.bz2";
       locale = "hy-AM";
       arch = "linux-i686";
-      sha256 = "2e6739d14a45529ed2a68abb8ed03ad901b4e7770efebd382f6e9626c86da036";
+      sha256 = "f3f7e033489907339055d0ef02abf4a423434248b1a10623736fdcf09a3edd79";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/id/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/id/thunderbird-78.6.0.tar.bz2";
       locale = "id";
       arch = "linux-i686";
-      sha256 = "8753bc4c7292cd0c6ee382bb5572e432222e7c39ed739904d91ed1ece5a8197e";
+      sha256 = "581cbae2f96a616d29d30eda0dad30992eaa7fe71f65c20af10f528d130d83d1";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/is/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/is/thunderbird-78.6.0.tar.bz2";
       locale = "is";
       arch = "linux-i686";
-      sha256 = "4f624262b72fce7d258b6f7c264f7d2266ebcfdd59fce895e4e85c72fa784637";
+      sha256 = "8653b1e05517a723a4113995e0e69a73fa59196f5625e2c1b0e51d9d60561646";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/it/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/it/thunderbird-78.6.0.tar.bz2";
       locale = "it";
       arch = "linux-i686";
-      sha256 = "6298ce45c4a659e47877302d61a50dfc7e0634e7c3e7036aeec49da5a2839073";
+      sha256 = "98faf75b5216cc75c2348962769fcdaa98ff59c4f4870b44cb6e7a69b7b5e9bc";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ja/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ja/thunderbird-78.6.0.tar.bz2";
       locale = "ja";
       arch = "linux-i686";
-      sha256 = "85a7b01f65c79b0e13c4f8a18f3950f0a250f380fc8756b8fb1709680a148554";
+      sha256 = "ad34916c36ac06eec4c1a900ff33639c6238e01c6426693261433b9bdf44ea91";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ka/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ka/thunderbird-78.6.0.tar.bz2";
       locale = "ka";
       arch = "linux-i686";
-      sha256 = "f7b18243b9985b54eb8684b62bad47b7b021eb959f467fec9876c866d92b1727";
+      sha256 = "c3468772b8667784814f6d323a74aef24f561cf3fbd2c5dfbfed16f73e7e7c6d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/kab/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/kab/thunderbird-78.6.0.tar.bz2";
       locale = "kab";
       arch = "linux-i686";
-      sha256 = "cc8eb77d0d0ea95a1e2b13db51da4f18a9500aeacee1cbe505da67f2b6a9b979";
+      sha256 = "1ba665c91e38df62809a601223238dc3c34a50c96e42e5792b145eb9aed3aef7";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/kk/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/kk/thunderbird-78.6.0.tar.bz2";
       locale = "kk";
       arch = "linux-i686";
-      sha256 = "6999faf34774806e1e4257a139dd97dd50a889a7729fef4f51a8b41bb4ad169e";
+      sha256 = "651fda1baa62acfae3f13bb65096368719461d206ce45b84a3ff5540e09d9e24";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ko/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ko/thunderbird-78.6.0.tar.bz2";
       locale = "ko";
       arch = "linux-i686";
-      sha256 = "42b0bf1ebfce252fdfca3ed8de9f227bbb054bf591e6155b716b18e9613a9cff";
+      sha256 = "49b82df2eaa66e658b4ff0f84af7b128a92eddce7e9ce129f0f28b8239367967";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/lt/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/lt/thunderbird-78.6.0.tar.bz2";
       locale = "lt";
       arch = "linux-i686";
-      sha256 = "6ffe9b52189579bee34604499649901be5c8be2a026eb70a33ac9eb4e3b21880";
+      sha256 = "6d263e236457576a0e853fd0b00711182c34c32436f65c8fc952aa2810fa500d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ms/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ms/thunderbird-78.6.0.tar.bz2";
       locale = "ms";
       arch = "linux-i686";
-      sha256 = "640942eb04d84d24bd28cf5e49e57497934810394b50693bad591cf3b783e1bf";
+      sha256 = "45b050930b8357e3a988701d46234ccdd43ba7b38e56b88d157dee6309c375c3";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/nb-NO/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/nb-NO/thunderbird-78.6.0.tar.bz2";
       locale = "nb-NO";
       arch = "linux-i686";
-      sha256 = "c0d35274192ae664314e91fd9364609cbbf142f8177d37210c9c49fdf8d31086";
+      sha256 = "23760a375705d8c3d22aaefab60c9a761fe73f5d6c97f3a3621312ba362f77ef";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/nl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/nl/thunderbird-78.6.0.tar.bz2";
       locale = "nl";
       arch = "linux-i686";
-      sha256 = "864ac834a0f44ce112deb107abce170802abaa63556f0aad88ee828bf3f8a98c";
+      sha256 = "8f006195886d26a519363c1a61940a53388952a67bae4fad07de50ab24ee21c5";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/nn-NO/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/nn-NO/thunderbird-78.6.0.tar.bz2";
       locale = "nn-NO";
       arch = "linux-i686";
-      sha256 = "e821eaf0388885e3b5e88001a2c4410cdf065059b79a3581c324f53d1cf59eb5";
+      sha256 = "85710ff8542c6d592a939a55300040633f5b8fa8587f5c6c0ba0c3c2c7e5e62e";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pa-IN/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/pa-IN/thunderbird-78.6.0.tar.bz2";
       locale = "pa-IN";
       arch = "linux-i686";
-      sha256 = "5a0afbf815683afd24c258ac66a45dc300028b4d41a9950784355645874459ed";
+      sha256 = "cc1120713915ba43b74e9a4daa5814cf83b32317bc1503061c233e5fe28f8214";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/pl/thunderbird-78.6.0.tar.bz2";
       locale = "pl";
       arch = "linux-i686";
-      sha256 = "cebdc0a0188edc63fce0b4fe0a4a3f22ab792ad486bd1e10e635ac8f641f1b5d";
+      sha256 = "bf3da9722d7c9602304f64c7b11aba83cb899a23c1ddd179d5eb431aca23301b";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pt-BR/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/pt-BR/thunderbird-78.6.0.tar.bz2";
       locale = "pt-BR";
       arch = "linux-i686";
-      sha256 = "7bbf9aa4d48bf84a7455dcebc6b7476e4c1ffa085c1771fbdf302f71d10e4825";
+      sha256 = "0104d48b2de1e26e3b66545a76b7892e2b1b17f56ebf8558353e031fb8741614";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/pt-PT/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/pt-PT/thunderbird-78.6.0.tar.bz2";
       locale = "pt-PT";
       arch = "linux-i686";
-      sha256 = "b84c28dfb5d677768a6e0f69c8ea63fcaf884839739789ac72f50e7b8884f8ca";
+      sha256 = "b376bc3cc3f87484c9f976f30a3049bd4873ec67982574ec570c5c96d7643285";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/rm/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/rm/thunderbird-78.6.0.tar.bz2";
       locale = "rm";
       arch = "linux-i686";
-      sha256 = "f34eea430a9e929c25ad961b1c92724c5539a46cbbfb9a97a5c7edca4996115a";
+      sha256 = "d68e60b06b03b5313a1ddc42464ee5a3ead106655860e1d2c359802875276778";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ro/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ro/thunderbird-78.6.0.tar.bz2";
       locale = "ro";
       arch = "linux-i686";
-      sha256 = "115cd666282822f35924d4de3b33fd0dd3d790d278bb35849ada579d43d5ac54";
+      sha256 = "051c01b3e2f69258e1d44599c6c485785c1624a67fa6548517ec242c69bf47fa";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/ru/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/ru/thunderbird-78.6.0.tar.bz2";
       locale = "ru";
       arch = "linux-i686";
-      sha256 = "961eb62e639f8f7c7c5695bd39df50fe4b3401e7aeade8281600779bb8edd374";
+      sha256 = "db0f48c765e7ec9c090e1d5f43f42faa5ac6cc9e4d593dbc6b8ff6f8f7210027";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/si/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/si/thunderbird-78.6.0.tar.bz2";
       locale = "si";
       arch = "linux-i686";
-      sha256 = "0887999609e47839a0f7600215c3083ce939fe13abc0c38cf701449224dbc87a";
+      sha256 = "fc104d206779b8b909f645a86151b193da0792c9af6360fbb4933d8224f23bb2";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sk/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/sk/thunderbird-78.6.0.tar.bz2";
       locale = "sk";
       arch = "linux-i686";
-      sha256 = "a3b9281efc4c0cd6cb454f2c5b97567b4d2c6567076cee188e85c30a45213f98";
+      sha256 = "d08d8fe02577ad931020fdfd45b673fd2b71e41d66c1532b8025012e493c869d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sl/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/sl/thunderbird-78.6.0.tar.bz2";
       locale = "sl";
       arch = "linux-i686";
-      sha256 = "141e9a41dba4c2a3eee4370d2db6e14f8805fee2d70c20ecbb9865b7a0dcaa77";
+      sha256 = "6907401bb3973911ece57b9b3bd56032b02c2c140ab79ec554f4574a7e2121cc";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sq/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/sq/thunderbird-78.6.0.tar.bz2";
       locale = "sq";
       arch = "linux-i686";
-      sha256 = "6a50fdac7993294937756a169b4b0ac7fe021611c5c6a730ea194ee7302c95dc";
+      sha256 = "bca13f569b5cd0e6a4bac8ae59a8f1b228010a95871763600080473f45ffe5a2";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/sr/thunderbird-78.6.0.tar.bz2";
       locale = "sr";
       arch = "linux-i686";
-      sha256 = "2ec4c2f367bceb3f05c75e55366cc66fae6593fc35c79d7bea57f34f93d79dba";
+      sha256 = "df9328979af4c36d553992e0928d63a6cfcf0a54541e091fe7bb57e2e934057f";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/sv-SE/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/sv-SE/thunderbird-78.6.0.tar.bz2";
       locale = "sv-SE";
       arch = "linux-i686";
-      sha256 = "4a9027f9aa74bd9c6e3cbf02ac1918f1b9dfbda57ed0344a99fccad9fa271f79";
+      sha256 = "a310b66e76a2062354d2ec10dbe0827188610618ac87f866010b418d26032a50";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/th/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/th/thunderbird-78.6.0.tar.bz2";
       locale = "th";
       arch = "linux-i686";
-      sha256 = "f394b18a364fa84ff5eeeee00c841248ba4095285833ce625b700fd500b9c0cc";
+      sha256 = "efb37f15a311d2c66678f42f13085e77eaf8819b2fe16ee52e3410dde5e85bee";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/tr/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/tr/thunderbird-78.6.0.tar.bz2";
       locale = "tr";
       arch = "linux-i686";
-      sha256 = "9f180c1b6b604fc597bf1ecb10e3521c70953cb70d4292105cb3bc7cbeb806c0";
+      sha256 = "4f9f9088ab91ebc3e4e022ba77cf8c168ab961c73317fccd07e987e38ec6eb57";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/uk/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/uk/thunderbird-78.6.0.tar.bz2";
       locale = "uk";
       arch = "linux-i686";
-      sha256 = "f828ac8f52bda71f913462e60fb7ea2221de4f824063b95b85709320a820db8a";
+      sha256 = "d9c527045270007c74e84d9f77ab6cbab2f07112d8688757920f5adbc5bbdf1d";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/uz/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/uz/thunderbird-78.6.0.tar.bz2";
       locale = "uz";
       arch = "linux-i686";
-      sha256 = "8d3dd4a1bbe008e4d346c22c01bafe988dde88fa6c9919c50194b9b155bc821f";
+      sha256 = "9ea90845e8668afff622f412f571b59e03e6c02d49a4e47cb99ab93f5da822dd";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/vi/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/vi/thunderbird-78.6.0.tar.bz2";
       locale = "vi";
       arch = "linux-i686";
-      sha256 = "4db40b3debca281c59e926bd0f9cb4e5cd2150bf27235f1178ed8e497616a031";
+      sha256 = "ccf4bd8c6269fb8ae15413923d556ecafb808ef205688dfb78379347a5bce5f4";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/zh-CN/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/zh-CN/thunderbird-78.6.0.tar.bz2";
       locale = "zh-CN";
       arch = "linux-i686";
-      sha256 = "399707f970a01e2f3c2eacc81f2f3bb33b1f49433c3ba6c49f4615b499f0c246";
+      sha256 = "22f0b4a72f995a9936fed178138d3e0c40fb3aefeda989c9ba83fc82a4296fcf";
     }
-    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.5.1/linux-i686/zh-TW/thunderbird-78.5.1.tar.bz2";
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/78.6.0/linux-i686/zh-TW/thunderbird-78.6.0.tar.bz2";
       locale = "zh-TW";
       arch = "linux-i686";
-      sha256 = "27ad21908069582a4a7641dc9a7d9acc69d4842382499cef2cee2f84d0fc3856";
+      sha256 = "b8c8633732641b8ab87bfc2a2867a95b817ce6d0fd0e8f569221bc51ac23e849";
     }
     ];
 }
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
index 58eae867487..ac8eb2f811b 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -71,13 +71,13 @@ assert waylandSupport -> gtk3Support == true;
 
 stdenv.mkDerivation rec {
   pname = "thunderbird";
-  version = "78.5.1";
+  version = "78.6.0";
 
   src = fetchurl {
     url =
       "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
     sha512 =
-      "202s2h9fsvg4chy93rgxdf4vlavf3wbp9vqgh0nrgk5wcdhz17144vhw1bmxia8hf99snq2a3ix6haidwl8d2n6l2nfsjzcnphhxd9z";
+      "0hx9gg3ngpvgshrz9j7ni4kh3chadqd5w5fpywjjw4naj0k53d0i9jjhq4p6fyvf6rb2g825ibqq794lr9drn6nrfndh5w1yn5lw69n";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix b/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
index 364aeac550e..8ef8740f4d2 100644
--- a/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
+++ b/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
@@ -3,12 +3,12 @@
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  version = "6.8.8";
+  version = "6.8.9";
   pname = "frostwire";
 
   src = fetchurl {
     url = "https://dl.frostwire.com/frostwire/${version}/frostwire-${version}.amd64.tar.gz";
-    sha256 = "0zxk0nv7m1k4n8n82h1rkh239a58s7j643lgqbw3qx45bdy4sf4k";
+    sha256 = "0f5vyliwncryj6hj5xx0dycxycxddsn28n6zixjrn56jajijyl6q";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/applications/networking/p2p/qbittorrent/default.nix b/pkgs/applications/networking/p2p/qbittorrent/default.nix
index 9b6a8bd707d..ac671729392 100644
--- a/pkgs/applications/networking/p2p/qbittorrent/default.nix
+++ b/pkgs/applications/networking/p2p/qbittorrent/default.nix
@@ -1,29 +1,32 @@
-{ mkDerivation, lib, fetchFromGitHub, pkgconfig
+{ mkDerivation, lib, fetchFromGitHub, makeWrapper, pkgconfig
 , boost, libtorrentRasterbar, qtbase, qttools, qtsvg
-, debugSupport ? false # Debugging
+, debugSupport ? false
 , guiSupport ? true, dbus ? null # GUI (disable to run headless)
 , webuiSupport ? true # WebUI
+, trackerSearch ? true, python3 ? null
 }:
 
 assert guiSupport -> (dbus != null);
-with lib;
+assert trackerSearch -> (python3 != null);
 
+with lib;
 mkDerivation rec {
   pname = "qbittorrent";
-  version = "4.3.0.1";
+  version = "4.3.1";
 
   src = fetchFromGitHub {
     owner = "qbittorrent";
     repo = "qbittorrent";
     rev = "release-${version}";
-    sha256 = "068sf24mjvc2idimgpzvf7gjk8n9xrr3qqlqfx5j3j598ckm3yfp";
+    sha256 = "17ih00q7idrpl3b2vgh4smva6lazs5jw06pblriscn1lrwdvrc38";
   };
 
   # NOTE: 2018-05-31: CMake is working but it is not officially supported
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ makeWrapper pkgconfig ];
 
   buildInputs = [ boost libtorrentRasterbar qtbase qttools qtsvg ]
-    ++ optional guiSupport dbus; # D(esktop)-Bus depends on GUI support
+    ++ optional guiSupport dbus # D(esktop)-Bus depends on GUI support
+    ++ optional trackerSearch python3;
 
   # Otherwise qm_gen.pri assumes lrelease-qt5, which does not exist.
   QMAKE_LRELEASE = "lrelease";
@@ -35,6 +38,12 @@ mkDerivation rec {
     ++ optional (!webuiSupport) "--disable-webui"
     ++ optional debugSupport "--enable-debug";
 
+  postInstall = "wrapProgram $out/bin/${
+    if guiSupport
+    then "qbittorrent"
+    else "qbittorrent-nox"
+  } --prefix PATH : ${makeBinPath [ python3 ]}";
+
   enableParallelBuilding = true;
 
   meta = {
diff --git a/pkgs/applications/networking/sync/onedrive/default.nix b/pkgs/applications/networking/sync/onedrive/default.nix
index be255a6c146..b41178922af 100644
--- a/pkgs/applications/networking/sync/onedrive/default.nix
+++ b/pkgs/applications/networking/sync/onedrive/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "onedrive";
-  version = "2.4.2";
+  version = "2.4.7";
 
   src = fetchFromGitHub {
     owner = "abraunegg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "10s33p1xzq9c5n1bxv9n7n31afxgx9i6c17w0xgxdrma75micm3a";
+    sha256 = "12g2z6c4f65y8cc7vyhk9nlg1mpbsmlsj7ghlny452qhr13m7qpn";
   };
 
   nativeBuildInputs = [ autoreconfHook ldc installShellFiles pkgconfig ];
diff --git a/pkgs/applications/networking/syncplay/default.nix b/pkgs/applications/networking/syncplay/default.nix
index da4551d7f55..e93b6f9a432 100644
--- a/pkgs/applications/networking/syncplay/default.nix
+++ b/pkgs/applications/networking/syncplay/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonApplication rec {
   pname = "syncplay";
-  version = "1.6.6";
+  version = "1.6.7";
 
   format = "other";
 
@@ -10,7 +10,7 @@ buildPythonApplication rec {
     owner = "Syncplay";
     repo = "syncplay";
     rev = "v${version}";
-    sha256 = "1wkxdp7dv5y1100awy949higvs5035ylfyl83qrp4lnimy3imw09";
+    sha256 = "1hxmd13sff51lh9l3vpk33qrzf7gi58c76bc01iqimp17sxwfz3k";
   };
 
   propagatedBuildInputs = [ pyside2 shiboken2 twisted certifi ] ++ twisted.extras.tls;
diff --git a/pkgs/applications/science/logic/cryptoverif/default.nix b/pkgs/applications/science/logic/cryptoverif/default.nix
index 28295ea2892..78861786def 100644
--- a/pkgs/applications/science/logic/cryptoverif/default.nix
+++ b/pkgs/applications/science/logic/cryptoverif/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "cryptoverif";
-  version = "2.03pl1";
+  version = "2.04";
 
   src = fetchurl {
     url    = "http://prosecco.gforge.inria.fr/personal/bblanche/cryptoverif/cryptoverif${version}.tar.gz";
-    sha256 = "0q7qa1qm7mbky3m36445gdmgmkb9mrhrdsk7mmwn8fzw0rfc6z00";
+    sha256 = "1mzk6n0g2vdsv38y493zg85lxrpz72b92cmsray3g970xzanqd6s";
   };
 
   buildInputs = [ ocaml ];
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   ** from under $out/libexec. By default, it expects to find the files
   ** in $CWD which doesn't work. */
   patchPhase = ''
-    substituteInPlace ./src/settings.ml \
+    substituteInPlace ./src/syntax.ml \
       --replace \"default\" \"$out/libexec/default\"
   '';
 
diff --git a/pkgs/applications/science/math/giac/default.nix b/pkgs/applications/science/math/giac/default.nix
index ea9c921f19e..b090274919b 100644
--- a/pkgs/applications/science/math/giac/default.nix
+++ b/pkgs/applications/science/math/giac/default.nix
@@ -9,11 +9,11 @@ assert (!blas.isILP64) && (!lapack.isILP64);
 
 stdenv.mkDerivation rec {
   pname = "giac${lib.optionalString enableGUI "-with-xcas"}";
-  version = "1.5.0-21"; # TODO try to remove preCheck phase on upgrade
+  version = "1.5.0-87"; # TODO try to remove preCheck phase on upgrade
 
   src = fetchurl {
     url = "https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/giac_${version}.tar.gz";
-    sha256 = "1b9khiv0mk2xzw1rblm2jy6qsf8y6f9k7qy15sxpb21d72hzzbl2";
+    sha256 = "1d0h1yb7qvh9x7wwv9yrzmcp712f49w1iljkxp4y6g9pzsmg1mmv";
   };
 
   patches = stdenv.lib.optionals (!enableGUI) [
diff --git a/pkgs/applications/science/math/maxima/default.nix b/pkgs/applications/science/math/maxima/default.nix
index 1bf7d16f290..cdc81a87646 100644
--- a/pkgs/applications/science/math/maxima/default.nix
+++ b/pkgs/applications/science/math/maxima/default.nix
@@ -87,6 +87,10 @@ stdenv.mkDerivation ({
 
   enableParallelBuilding = true;
 
+  passthru = {
+    ecl = ecl;
+  };
+
   meta = {
     description = "Computer algebra system";
     homepage = "http://maxima.sourceforge.net";
diff --git a/pkgs/applications/science/math/nauty/default.nix b/pkgs/applications/science/math/nauty/default.nix
index 76e7c796a13..94b7ad266c4 100644
--- a/pkgs/applications/science/math/nauty/default.nix
+++ b/pkgs/applications/science/math/nauty/default.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
   version = "27r1";
   src = fetchurl {
     url = "http://pallini.di.uniroma1.it/nauty${version}.tar.gz";
-    sha256 = "1nym0p2djws8ylkpr0kgpxfa6fxdlh46cmvz0gn5vd02jzgs0aww";
+    sha256 = "0xsfqfcknbd6g6wzpa5l7crmmk3bf3zjh37rhylq6b20dqcmvjkn";
   };
   outputs = [ "out" "dev" ];
   configureFlags = [
diff --git a/pkgs/applications/science/math/pari/default.nix b/pkgs/applications/science/math/pari/default.nix
index a3e2f99ab27..7ec42d11ab1 100644
--- a/pkgs/applications/science/math/pari/default.nix
+++ b/pkgs/applications/science/math/pari/default.nix
@@ -15,7 +15,8 @@ stdenv.mkDerivation rec {
   version = "2.11.4";
 
   src = fetchurl {
-    url = "https://pari.math.u-bordeaux.fr/pub/pari/unix/${pname}-${version}.tar.gz";
+    # Versions with current majorMinor values are at http://pari.math.u-bordeaux.fr/pub/pari/unix/${pname}-${version}.tar.gz
+    url = "https://pari.math.u-bordeaux.fr/pub/pari/OLD/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.gz";
     sha256 = "sha256-v8iPxPc1L0hA5uNSxy8DacvqikVAOxg0piafNwmXCxw=";
   };
 
diff --git a/pkgs/applications/science/math/pynac/default.nix b/pkgs/applications/science/math/pynac/default.nix
index 87fb205174b..e3474d865e2 100644
--- a/pkgs/applications/science/math/pynac/default.nix
+++ b/pkgs/applications/science/math/pynac/default.nix
@@ -1,5 +1,6 @@
 { stdenv
 , fetchFromGitHub
+, fetchurl
 , autoreconfHook
 , pkgconfig
 , flint
@@ -33,6 +34,14 @@ stdenv.mkDerivation rec {
     pkgconfig
   ];
 
+  patches = [
+    (fetchurl {
+      name = "py_ssize_t_clean.patch";
+      url = "https://git.sagemath.org/sage.git/plain/build/pkgs/pynac/patches/py_ssize_t_clean.patch?h=9.2";
+      sha256 = "0l3gbg9hc4v671zf4w376krnk3wh8hj3649610nlvzzxckcryzab";
+    })
+  ];
+
   meta = with stdenv.lib; {
     description = "Python is Not a CAS -- modified version of Ginac";
     longDescription = ''
diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix
index caf51c3da25..416f2b957b7 100644
--- a/pkgs/applications/science/math/sage/default.nix
+++ b/pkgs/applications/science/math/sage/default.nix
@@ -9,31 +9,13 @@
 let
   inherit (pkgs) symlinkJoin callPackage nodePackages;
 
-  # https://trac.sagemath.org/ticket/15980 for tracking of python3 support
-  python = pkgs.python2.override {
+  python3 = pkgs.python3.override {
     packageOverrides = self: super: {
-      # python packages that appear unmaintained and were not accepted into the nixpkgs
-      # tree because of that. These packages are only dependencies of the more-or-less
-      # deprecated sagenb. However sagenb is still a default dependency and the doctests
-      # depend on it.
-      # See https://github.com/NixOS/nixpkgs/pull/38787 for a discussion.
-      # The dependency on the sage notebook (and therefore these packages) will be
-      # removed in the future:
-      # https://trac.sagemath.org/ticket/25837
-      flask-oldsessions = self.callPackage ./flask-oldsessions.nix {};
-      flask-openid = self.callPackage ./flask-openid.nix {};
-      python-openid = self.callPackage ./python-openid.nix {};
-      sagenb = self.callPackage ./sagenb.nix {
-        mathjax = nodePackages.mathjax;
-      };
-
-      # Package with a cyclic dependency with sage
-      pybrial = self.callPackage ./pybrial.nix {};
-
       # `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
       sagelib = self.callPackage ./sagelib.nix {
-        inherit flint ecl arb;
+        inherit flint arb;
         inherit sage-src env-locations pynac singular;
+        ecl = maxima-ecl.ecl;
         linbox = pkgs.linbox.override { withSage = true; };
         pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
       };
@@ -59,9 +41,10 @@ let
   # A bash script setting various environment variables to tell sage where
   # the files its looking fore are located. Also see `sage-env`.
   env-locations = callPackage ./env-locations.nix {
-    inherit pari_data ecl;
+    inherit pari_data;
     inherit singular maxima-ecl;
-    cysignals = python.pkgs.cysignals;
+    ecl = maxima-ecl.ecl;
+    cysignals = python3.pkgs.cysignals;
     three = nodePackages.three;
     mathjax = nodePackages.mathjax;
   };
@@ -69,21 +52,22 @@ let
   # The shell file that gets sourced on every sage start. Will also source
   # the env-locations file.
   sage-env = callPackage ./sage-env.nix {
-    sagelib = python.pkgs.sagelib;
+    sagelib = python3.pkgs.sagelib;
     inherit env-locations;
-    inherit python ecl singular palp flint pynac pythonEnv maxima-ecl;
+    inherit python3 singular palp flint pynac pythonEnv maxima-ecl;
+    ecl = maxima-ecl.ecl;
     pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
   };
 
   # The documentation for sage, building it takes a lot of ram.
   sagedoc = callPackage ./sagedoc.nix {
     inherit sage-with-env;
-    inherit python maxima-ecl;
+    inherit python3 maxima-ecl;
   };
 
   # sagelib with added wrappers and a dependency on sage-tests to make sure thet tests were run.
   sage-with-env = callPackage ./sage-with-env.nix {
-    inherit pythonEnv;
+    inherit python3 pythonEnv;
     inherit sage-env;
     inherit pynac singular maxima-ecl;
     pkg-config = pkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig
@@ -100,10 +84,8 @@ let
 
   sage-src = callPackage ./sage-src.nix {};
 
-  pythonRuntimeDeps = with python.pkgs; [
+  pythonRuntimeDeps = with python3.pkgs; [
     sagelib
-    pybrial
-    sagenb
     cvxopt
     networkx
     service-identity
@@ -116,11 +98,10 @@ let
     ipywidgets
     rpy2
     sphinx
-    typing
     pillow
   ];
 
-  pythonEnv = python.buildEnv.override {
+  pythonEnv = python3.buildEnv.override {
     extraLibs = pythonRuntimeDeps;
     ignoreCollisions = true;
   } // { extraLibs = pythonRuntimeDeps; }; # make the libs accessible
@@ -129,8 +110,21 @@ let
 
   singular = pkgs.singular.override { inherit flint; };
 
-  # https://trac.sagemath.org/ticket/26625
-  maxima-ecl = pkgs.maxima-ecl;
+  maxima-ecl = pkgs.maxima-ecl.override {
+    ecl = pkgs.ecl.override {
+      # "echo syntax error | ecl > /dev/full 2>&1" segfaults in
+      # ECL. We apply a patch to fix it (write_error.patch), but it
+      # only works if threads are disabled.  sage 9.2 tests this
+      # (src/sage/interfaces/tests.py) and ships ecl like so.
+      # https://gitlab.com/embeddable-common-lisp/ecl/-/merge_requests/1#note_1657275
+      threadSupport = false;
+
+      # if we don't use the system boehmgc, sending a SIGINT to ecl
+      # can segfault if we it happens during memory allocation.
+      # src/sage/libs/ecl.pyx would intermittently fail in this case.
+      useBoehmgc = true;
+    };
+  };
 
   # *not* to confuse with the python package "pynac"
   pynac = pkgs.pynac.override { inherit singular flint; };
@@ -161,9 +155,6 @@ let
       pari-seadata-small
     ];
   };
-
-  # https://trac.sagemath.org/ticket/22191
-  ecl = pkgs.ecl_16_1_2;
 in
 # A wrapper around sage that makes sure sage finds its docs (if they were build).
 callPackage ./sage.nix {
diff --git a/pkgs/applications/science/math/sage/env-locations.nix b/pkgs/applications/science/math/sage/env-locations.nix
index bda2d23b9e5..b1ad0aad9c7 100644
--- a/pkgs/applications/science/math/sage/env-locations.nix
+++ b/pkgs/applications/science/math/sage/env-locations.nix
@@ -44,6 +44,6 @@ writeTextFile rec {
     export JSMOL_DIR="${jmol}/share/jsmol"
     export MATHJAX_DIR="${mathjax}/lib/node_modules/mathjax"
     export THREEJS_DIR="${three}/lib/node_modules/three"
-    export SAGE_INCLUDE_DIRECTORIES="${cysignals}/lib/python2.7/site-packages"
+    export SAGE_INCLUDE_DIRECTORIES="${cysignals}/${cysignals.pythonModule.sitePackages}"
   '';
 }
diff --git a/pkgs/applications/science/math/sage/flask-oldsessions.nix b/pkgs/applications/science/math/sage/flask-oldsessions.nix
deleted file mode 100644
index 86fe9912c19..00000000000
--- a/pkgs/applications/science/math/sage/flask-oldsessions.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, flask
-}:
-
-buildPythonPackage rec {
-  pname = "Flask-OldSessions";
-  version = "0.10";
-
-  # no artifact on pypi: https://github.com/mitsuhiko/flask-oldsessions/issues/1
-  src = fetchFromGitHub {
-    owner = "mitsuhiko";
-    repo = "flask-oldsessions";
-    rev = version;
-    sha256 = "04b5m8njjiwld9a0zw55iqwvyjgwcpdbhz1cic8nyhgcmypbicqn";
-  };
-
-  propagatedBuildInputs = [
-    flask
-  ];
-
-  # missing module flask.testsuite, probably assumes an old version of flask
-  doCheck = false;
-  checkPhase = ''
-    ${python.interpreter} run-tests.py
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Provides a session class that works like the one in Flask before 0.10.";
-    license = licenses.bsd2;
-    maintainers = teams.sage.members;
-    homepage = "https://github.com/mitsuhiko/flask-oldsessions";
-  };
-}
diff --git a/pkgs/applications/science/math/sage/flask-openid.nix b/pkgs/applications/science/math/sage/flask-openid.nix
deleted file mode 100644
index 900b033429e..00000000000
--- a/pkgs/applications/science/math/sage/flask-openid.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, flask
-, python-openid
-}:
-
-buildPythonPackage rec {
-  pname = "Flask-OpenID";
-  version = "1.2.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1aycwmwi7ilcaa5ab8hm0bp6323zl8z25q9ha0gwrl8aihfgx3ss";
-  };
-
-  propagatedBuildInputs = [
-    flask
-    python-openid
-  ];
-
-  meta = with stdenv.lib; {
-    description = "Adds openid support to flask applications";
-    license = licenses.bsd2;
-    maintainers = teams.sage.members;
-    homepage = "https://pythonhosted.org/Flask-OpenID/";
-  };
-}
diff --git a/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch b/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
index 8cd80281d0e..d5c19a54fd9 100644
--- a/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
+++ b/pkgs/applications/science/math/sage/patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
@@ -1,17 +1,17 @@
-From 8218bd4fdeb4c92de8af0d3aabec55980fc4fb3d Mon Sep 17 00:00:00 2001
+From f5ea42a7aaed7611fb55b65897b9fcf2b7bcf97e Mon Sep 17 00:00:00 2001
 From: Timo Kaufmann <timokau@zoho.com>
 Date: Sun, 21 Oct 2018 17:52:40 +0200
 Subject: [PATCH] Only test py2/py3 optional tests when all of sage is tested
 
 ---
- src/sage/doctest/control.py | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
+ src/sage/doctest/control.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/src/sage/doctest/control.py b/src/sage/doctest/control.py
-index bf18df8b2b..935c67abf7 100644
+index 2d93841e50..6d156e29a1 100644
 --- a/src/sage/doctest/control.py
 +++ b/src/sage/doctest/control.py
-@@ -362,7 +362,8 @@ class DocTestController(SageObject):
+@@ -375,7 +375,8 @@ class DocTestController(SageObject):
                      if not optionaltag_regex.search(o):
                          raise ValueError('invalid optional tag {!r}'.format(o))
  
@@ -21,15 +21,6 @@ index bf18df8b2b..935c67abf7 100644
  
          self.options = options
  
-@@ -765,7 +766,7 @@ class DocTestController(SageObject):
-             sage: DC = DocTestController(DD, [dirname])
-             sage: DC.expand_files_into_sources()
-             sage: sorted(DC.sources[0].options.optional)  # abs tol 1
--            ['guava', 'magma', 'py2']
-+            ['guava', 'magma']
- 
-         We check that files are skipped appropriately::
- 
 -- 
-2.18.1
+2.28.0
 
diff --git a/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch b/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch
index 3f844e1b1ef..98175920238 100644
--- a/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch
+++ b/pkgs/applications/science/math/sage/patches/do-not-test-find-library.patch
@@ -1,17 +1,17 @@
 diff --git a/src/sage/env.py b/src/sage/env.py
-index 061b94f3f1..67cd091540 100644
+index 1ddfc7cfb9..45033d6328 100644
 --- a/src/sage/env.py
 +++ b/src/sage/env.py
-@@ -189,88 +189,13 @@ var('MAXIMA_FAS')
+@@ -203,97 +203,13 @@ var('ARB_LIBRARY',                   'arb')
  var('SAGE_BANNER', '')
  var('SAGE_IMPORTALL', 'yes')
  
 -
 -def _get_shared_lib_filename(libname, *additional_libnames):
 -    """
--    Return the full path to a shared library file installed in the standard
--    location for the system within the ``LIBDIR`` prefix (or
--    ``$SAGE_LOCAL/lib`` in the case of manual build of Sage).
+-    Return the full path to a shared library file installed in
+-    ``$SAGE_LOCAL/lib`` or the directories associated with the
+-    Python sysconfig.
 -
 -    This can also be passed more than one library name (e.g. for cases where
 -    some library may have multiple names depending on the platform) in which
@@ -25,7 +25,7 @@ index 061b94f3f1..67cd091540 100644
 -    For distributions like Debian that use a multiarch layout, we also try the
 -    multiarch lib paths (i.e. ``/usr/lib/<arch>/``).
 -
--    Returns ``None`` if the file does not exist.
+-    This returns ``None`` if the file does not exist.
 -
 -    EXAMPLES::
 -
@@ -48,11 +48,17 @@ index 061b94f3f1..67cd091540 100644
 -
 -    for libname in (libname,) + additional_libnames:
 -        if sys.platform == 'cygwin':
--            bindir = sysconfig.get_config_var('BINDIR')
+-            # Later down we take the last matching DLL found, so search
+-            # SAGE_LOCAL second so that it takes precedence
+-            bindirs = [
+-                sysconfig.get_config_var('BINDIR'),
+-                os.path.join(SAGE_LOCAL, 'bin')
+-            ]
 -            pats = ['cyg{}.dll'.format(libname), 'cyg{}-*.dll'.format(libname)]
 -            filenames = []
--            for pat in pats:
--                filenames += glob.glob(os.path.join(bindir, pat))
+-            for bindir in bindirs:
+-                for pat in pats:
+-                    filenames += glob.glob(os.path.join(bindir, pat))
 -
 -            # Note: This is not very robust, since if there are multi DLL
 -            # versions for the same library this just selects one more or less
@@ -66,10 +72,13 @@ index 061b94f3f1..67cd091540 100644
 -            else:
 -                ext = 'so'
 -
--            libdirs = [sysconfig.get_config_var('LIBDIR')]
+-            libdirs = [
+-                os.path.join(SAGE_LOCAL, 'lib'),
+-                sysconfig.get_config_var('LIBDIR')
+-            ]
 -            multilib = sysconfig.get_config_var('MULTILIB')
 -            if multilib:
--                libdirs.insert(0, os.path.join(libdirs[0], multilib))
+-                libdirs.insert(1, os.path.join(libdirs[0], multilib))
 -
 -            for libdir in libdirs:
 -                basename = 'lib{}.{}'.format(libname, ext)
@@ -89,7 +98,7 @@ index 061b94f3f1..67cd091540 100644
  
  # locate libgap shared object
 -GAP_SO= _get_shared_lib_filename('gap','')
-+GAP_SO= '/default'
++GAP_SO = '/default'
  var('GAP_SO', GAP_SO)
  
  # post process
diff --git a/pkgs/applications/science/math/sage/patches/docutils-0.15.patch b/pkgs/applications/science/math/sage/patches/docutils-0.15.patch
deleted file mode 100644
index 63f5d2e146d..00000000000
--- a/pkgs/applications/science/math/sage/patches/docutils-0.15.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/sage/misc/sphinxify.py b/src/sage/misc/sphinxify.py
-index 4849c2bffa..76b7bc8602 100644
---- a/src/sage/misc/sphinxify.py
-+++ b/src/sage/misc/sphinxify.py
-@@ -25,6 +25,7 @@ from __future__ import absolute_import, print_function
- import os
- import re
- import shutil
-+import warnings
- from tempfile import mkdtemp
- from sphinx.application import Sphinx
- 
-@@ -120,7 +121,10 @@ smart_quotes = no""")
-     # buildername, confoverrides, status, warning, freshenv).
-     sphinx_app = Sphinx(srcdir, confdir, outdir, doctreedir, format,
-                         confoverrides, None, None, True)
--    sphinx_app.build(None, [rst_name])
-+    with warnings.catch_warnings():
-+        # Quick and dirty workaround for https://trac.sagemath.org/ticket/28856#comment:19
-+        warnings.simplefilter("ignore")
-+        sphinx_app.build(None, [rst_name])
-     sys.path = old_sys_path
- 
-     # We need to remove "_" from __builtin__ that the gettext module installs
diff --git a/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch b/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch
index 11ca7481961..a91ee319b8f 100644
--- a/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch
+++ b/pkgs/applications/science/math/sage/patches/ignore-cmp-deprecation.patch
@@ -1,24 +1,24 @@
 diff --git a/src/sage/tests/cmdline.py b/src/sage/tests/cmdline.py
-index bd6b76ab82..ccf1203dec 100644
+index 6e034dcb5a..8ec60ec72b 100644
 --- a/src/sage/tests/cmdline.py
 +++ b/src/sage/tests/cmdline.py
-@@ -837,8 +837,6 @@ def test_executable(args, input="", timeout=100.0, **kwds):
+@@ -660,8 +660,8 @@ def test_executable(args, input="", timeout=100.0, pydebug_ignore_warnings=False
+         sage: with open(input, 'w') as F:
+         ....:     _ = F.write(s)
+         sage: L = ["sage", "--rst2ipynb", input, output]
+-        sage: test_executable(L)                              # optional - rst2ipynb
+-        ('', '', 0)
++        sage: test_executable(L)[2]                           # optional - rst2ipynb
++        0
+         sage: import json                                     # optional - rst2ipynb
+         sage: d = json.load(open(output,'r'))                 # optional - rst2ipynb
+         sage: type(d)                                         # optional - rst2ipynb
+@@ -757,8 +757,6 @@ def test_executable(args, input="", timeout=100.0, pydebug_ignore_warnings=False
          ///
          4
          }}}
--        sage: err # py2
+-        sage: err # py2 # optional -- sagenb
 -        ''
-         sage: ret
+         sage: ret # py2 # optional -- sagenb
          0
  
-@@ -871,8 +869,8 @@ def test_executable(args, input="", timeout=100.0, **kwds):
-         sage: output = tmp_filename(ext='.sws')
-         sage: with open(input, 'w') as F:
-         ....:     _ = F.write(s)
--        sage: test_executable(["sage", "--rst2sws", input, output]) # py2
--        ('', '', 0)
-+        sage: test_executable(["sage", "--rst2sws", input, output])[2] # py2
-+        0
-         sage: import tarfile # py2
-         sage: f = tarfile.open(output, 'r') # py2
-         sage: print(f.extractfile('sage_worksheet/worksheet.html').read()) # py2
diff --git a/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch b/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch
deleted file mode 100644
index c5f95b498d5..00000000000
--- a/pkgs/applications/science/math/sage/patches/ignore-werkzeug-immutable-dict-deprecation.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/sage/all.py b/src/sage/all.py
-index c87c9372e9..862fca4fcc 100644
---- a/src/sage/all.py
-+++ b/src/sage/all.py
-@@ -306,6 +306,7 @@ warnings.filters.remove(('ignore', None, DeprecationWarning, None, 0))
- # Ignore all deprecations from IPython etc.
- warnings.filterwarnings('ignore', category=DeprecationWarning,
-     module='.*(IPython|ipykernel|jupyter_client|jupyter_core|nbformat|notebook|ipywidgets|storemagic)')
-+warnings.filterwarnings('ignore', category=DeprecationWarning, message=r".*The import 'werkzeug.ImmutableDict' is deprecated")
- # Ignore collections.abc warnings, there are a lot of them but they are
- # harmless.
- warnings.filterwarnings('ignore', category=DeprecationWarning,
diff --git a/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch b/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch
deleted file mode 100644
index 49cdfd189b9..00000000000
--- a/pkgs/applications/science/math/sage/patches/pari-stackwarn.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/sage/doctest/parsing.py b/src/sage/doctest/parsing.py
-index 6bdc9a0..31fc780 100644
---- a/src/sage/doctest/parsing.py
-+++ b/src/sage/doctest/parsing.py
-@@ -40,6 +40,7 @@ from .external import available_software
- 
- float_regex = re.compile('\s*([+-]?\s*((\d*\.?\d+)|(\d+\.?))([eE][+-]?\d+)?)')
- optional_regex = re.compile(r'(py2|py3|long time|not implemented|not tested|known bug)|([^ a-z]\s*optional\s*[:-]*((\s|\w)*))')
-+pari_stack_warning_regex = re.compile(r'\s*\*\*\*.*(Warning: increasing stack size to )\d+\.')
- find_sage_prompt = re.compile(r"^(\s*)sage: ", re.M)
- find_sage_continuation = re.compile(r"^(\s*)\.\.\.\.:", re.M)
- random_marker = re.compile('.*random', re.I)
-@@ -935,6 +936,7 @@ class SageOutputChecker(doctest.OutputChecker):
-             <type 'float'>
-         """
-         got = self.human_readable_escape_sequences(got)
-+        got = pari_stack_warning_regex.sub('', got)
-         if isinstance(want, MarkedOutput):
-             if want.random:
-                 return True
diff --git a/pkgs/applications/science/math/sage/patches/pillow-update.patch b/pkgs/applications/science/math/sage/patches/pillow-update.patch
new file mode 100644
index 00000000000..19d61552262
--- /dev/null
+++ b/pkgs/applications/science/math/sage/patches/pillow-update.patch
@@ -0,0 +1,39 @@
+diff --git a/src/sage/repl/image.py b/src/sage/repl/image.py
+index d7d00b0..cd1607a 100644
+--- a/src/sage/repl/image.py
++++ b/src/sage/repl/image.py
+@@ -77,7 +77,7 @@ class Image(SageObject):
+ 
+         - ``size`` -- 2-tuple, containing (width, height) in pixels.
+ 
+-        - ``color`` -- string or tuple of numeric. What colour to use
++        - ``color`` -- string, numeric or tuple of numeric. What colour to use
+           for the image. Default is black.  If given, this should be a
+           a tuple with one value per band. When creating RGB images,
+           you can also use colour strings as supported by the
+@@ -91,9 +91,15 @@ class Image(SageObject):
+         EXAMPLES::
+ 
+             sage: from sage.repl.image import Image
+-            sage: Image('P', (16, 16), (13,))
++            sage: Image('P', (16, 16), 13)
+             16x16px 8-bit Color image
+         """
++        # pillow does not support Sage integers as color
++        from sage.rings.integer import Integer
++        if isinstance(color, Integer):
++            color = int(color)
++        elif isinstance(color, tuple):
++            color = tuple(int(i) if isinstance(i, Integer) else i for i in color)
+         self._pil = PIL.Image.new(mode, size, color)
+ 
+     @property
+@@ -233,7 +239,7 @@ class Image(SageObject):
+         EXAMPLES::
+ 
+             sage: from sage.repl.image import Image
+-            sage: img = Image('P', (12, 34), (13,))
++            sage: img = Image('P', (12, 34), 13)
+             sage: filename = tmp_filename(ext='.png')
+             sage: img.save(filename)
+             sage: with open(filename, 'rb') as f:
diff --git a/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch b/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch
deleted file mode 100644
index 1b64f39fe60..00000000000
--- a/pkgs/applications/science/math/sage/patches/python-5755-hotpatch.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/src/sage/all.py b/src/sage/all.py
-index ca309ef..be3186b 100644
---- a/src/sage/all.py
-+++ b/src/sage/all.py
-@@ -298,6 +298,23 @@ warnings.filterwarnings('ignore', module='matplotlib[.]font_manager')
- warnings.filterwarnings('default',
-     '[\s\S]*See http://trac.sagemath.org/[0-9]* for details.')
- 
-+# Hotpatch around https://bugs.python.org/issue5755 which won't be fixed for
-+# python 2.7. Idea by https://stackoverflow.com/a/36293331.
-+from distutils.command.build_ext import build_ext
-+from distutils.sysconfig import customize_compiler
-+
-+_build_extensions = build_ext.build_extensions
-+
-+def build_extensions_patched(self):
-+    customize_compiler(self.compiler)
-+    try:
-+        self.compiler.compiler_so.remove("-Wstrict-prototypes")
-+    except (AttributeError, ValueError):
-+        pass
-+    _build_extensions(self)
-+
-+build_ext.build_extensions = build_extensions_patched
-+
- 
- # Set a new random number seed as the very last thing
- # (so that printing initial_seed() and using that seed
diff --git a/pkgs/applications/science/math/sage/patches/register-pretty-printer-earlier.patch b/pkgs/applications/science/math/sage/patches/register-pretty-printer-earlier.patch
new file mode 100644
index 00000000000..83bd83a6d33
--- /dev/null
+++ b/pkgs/applications/science/math/sage/patches/register-pretty-printer-earlier.patch
@@ -0,0 +1,36 @@
+diff --git a/src/sage/doctest/forker.py b/src/sage/doctest/forker.py
+index cb3667659e..867f547d71 100644
+--- a/src/sage/doctest/forker.py
++++ b/src/sage/doctest/forker.py
+@@ -200,6 +200,15 @@ def init_sage(controller=None):
+     from sage.cpython._py2_random import Random
+     sage.misc.randstate.DEFAULT_PYTHON_RANDOM = Random
+ 
++    # IPython's pretty printer sorts the repr of dicts by their keys by default
++    # (or their keys' str() if they are not otherwise orderable).  However, it
++    # disables this for CPython 3.6+ opting to instead display dicts' "natural"
++    # insertion order, which is preserved in those versions).
++    # However, this order is random in some instances.
++    # Also modifications of code may affect the order.
++    # So here we fore sorted dict printing.
++    IPython.lib.pretty.for_type(dict, _sorted_dict_pprinter_factory('{', '}'))
++
+     if controller is None:
+         import sage.repl.ipython_kernel.all_jupyter
+     else:
+@@ -222,15 +231,6 @@ def init_sage(controller=None):
+     from sage.repl.rich_output.backend_doctest import BackendDoctest
+     dm.switch_backend(BackendDoctest())
+ 
+-    # IPython's pretty printer sorts the repr of dicts by their keys by default
+-    # (or their keys' str() if they are not otherwise orderable).  However, it
+-    # disables this for CPython 3.6+ opting to instead display dicts' "natural"
+-    # insertion order, which is preserved in those versions).
+-    # However, this order is random in some instances.
+-    # Also modifications of code may affect the order.
+-    # So here we fore sorted dict printing.
+-    IPython.lib.pretty.for_type(dict, _sorted_dict_pprinter_factory('{', '}'))
+-
+     # Switch on extra debugging
+     from sage.structure.debug_options import debug
+     debug.refine_category_hash_check = True
diff --git a/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch b/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch
deleted file mode 100644
index 9f502a66951..00000000000
--- a/pkgs/applications/science/math/sage/patches/sagenb-cmp-deprecation.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/sagenb/__init__.py b/sagenb/__init__.py
-index 4db0d2cb..2fc5f01e 100644
---- a/sagenb/__init__.py
-+++ b/sagenb/__init__.py
-@@ -1,3 +1,8 @@
- # -*- coding: utf-8 -*
-   # init
-+import warnings
- from . import storage
-+
-+# deprecation in attrs, needs to be fixed in twisted
-+warnings.filterwarnings('ignore', category=DeprecationWarning,
-+    message=r'The usage of `cmp` is deprecated and will be removed.*')
diff --git a/pkgs/applications/science/math/sage/patches/sagespawn-implicit-casting.patch b/pkgs/applications/science/math/sage/patches/sagespawn-implicit-casting.patch
new file mode 100644
index 00000000000..2ee5db3e29c
--- /dev/null
+++ b/pkgs/applications/science/math/sage/patches/sagespawn-implicit-casting.patch
@@ -0,0 +1,13 @@
+diff --git a/src/sage/interfaces/sagespawn.pyx b/src/sage/interfaces/sagespawn.pyx
+index 9041238f1d..469befbc66 100644
+--- a/src/sage/interfaces/sagespawn.pyx
++++ b/src/sage/interfaces/sagespawn.pyx
+@@ -228,7 +228,7 @@ class SagePtyProcess(PtyProcess):
+         Check that the process eventually dies after calling
+         ``terminate_async``::
+ 
+-            sage: s.ptyproc.terminate_async(interval=0.2)
++            sage: s.ptyproc.terminate_async(interval=float(0.2))
+             sage: while True:
+             ....:     try:
+             ....:         os.kill(s.pid, 0)
diff --git a/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch b/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch
index 56f09279622..661077cfa8c 100644
--- a/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch
+++ b/pkgs/applications/science/math/sage/patches/sphinx-docbuild-subprocesses.patch
@@ -36,7 +36,7 @@ index 73a078e619..059125c59f 100644
          # Run Sphinx with Sage's special logger
 -        sys.argv = ["sphinx-build"] + build_command.split()
 -        from .sphinxbuild import runsphinx
-+        args = "python -um sage_setup.docbuild.sphinxbuild -N".split() + build_command.split()
++        args = "python3 -um sage_setup.docbuild.sphinxbuild -N".split() + build_command.split()
          try:
 -            runsphinx()
 +            subprocess.check_call(args)
diff --git a/pkgs/applications/science/math/sage/patches/sympow-cache.patch b/pkgs/applications/science/math/sage/patches/sympow-cache.patch
index 20020d610f8..d71f3acbc70 100644
--- a/pkgs/applications/science/math/sage/patches/sympow-cache.patch
+++ b/pkgs/applications/science/math/sage/patches/sympow-cache.patch
@@ -1,5 +1,5 @@
 diff --git a/src/sage/lfunctions/sympow.py b/src/sage/lfunctions/sympow.py
-index 1640ac4f6a..03578be7b8 100644
+index 92cb01fd73..b123e6accc 100644
 --- a/src/sage/lfunctions/sympow.py
 +++ b/src/sage/lfunctions/sympow.py
 @@ -50,6 +50,7 @@ from __future__ import print_function, absolute_import
@@ -8,14 +8,14 @@ index 1640ac4f6a..03578be7b8 100644
  
 +from sage.env import DOT_SAGE
  from sage.structure.sage_object import SageObject
- from sage.misc.all import pager, verbose
- import sage.rings.all
-@@ -76,7 +77,7 @@ class Sympow(SageObject):
+ from sage.misc.all import pager
+ from sage.misc.verbose import verbose
+@@ -78,7 +79,7 @@ class Sympow(SageObject):
          """
          Used to call sympow with given args
          """
--        cmd = 'sympow %s'%args
+-        cmd = 'sympow %s' % args
 +        cmd = 'env SYMPOW_CACHEDIR="%s/sympow///" sympow %s' % (DOT_SAGE, args)
-         v = os.popen(cmd).read().strip()
+         with os.popen(cmd) as f:
+             v = f.read().strip()
          verbose(v, level=2)
-         return v
diff --git a/pkgs/applications/science/math/sage/pybrial.nix b/pkgs/applications/science/math/sage/pybrial.nix
deleted file mode 100644
index 5fc8a4aa6f4..00000000000
--- a/pkgs/applications/science/math/sage/pybrial.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, brial
-}:
-# This has a cyclic dependency with sage. I don't include sage in the
-# buildInputs and let python figure it out at runtime. Because of this,
-# I don't include the package in the main nipxkgs tree. It wouldn't be useful
-# outside of sage anyways (as you could just directly depend on sage and use
-# it).
-buildPythonPackage rec {
-    pname = "pyBRiAl";
-    version = brial.version;
-
-    # included with BRiAl source
-    src = brial.src;
-
-    sourceRoot = "source/sage-brial";
-
-    meta = with stdenv.lib; {
-      description = "python implementation of BRiAl";
-      license = licenses.gpl2;
-      maintainers = teams.sage.members;
-    };
-}
diff --git a/pkgs/applications/science/math/sage/python-openid.nix b/pkgs/applications/science/math/sage/python-openid.nix
deleted file mode 100644
index 1e8a908ac79..00000000000
--- a/pkgs/applications/science/math/sage/python-openid.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, isPy3k
-, django
-, nose
-, twill
-, pycrypto
-}:
-
-buildPythonPackage rec {
-  pname = "python-openid";
-  version = "2.2.5";
-
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj";
-  };
-
-  propagatedBuildInputs = [
-    pycrypto
-  ];
-
-  # Cannot access the djopenid example module.
-  # I don't know how to fix that (adding the examples dir to PYTHONPATH doesn't work)
-  doCheck = false;
-  checkInputs = [ nose django twill ];
-  checkPhase = ''
-    nosetests
-  '';
-
-  meta = with stdenv.lib; {
-    description = "OpenID library for Python";
-    license = licenses.asl20;
-    maintainers = teams.sage.members;
-    homepage = "https://github.com/openid/python-openid/";
-  };
-}
diff --git a/pkgs/applications/science/math/sage/sage-env.nix b/pkgs/applications/science/math/sage/sage-env.nix
index ba7f6ccd18b..568a4a39f39 100644
--- a/pkgs/applications/science/math/sage/sage-env.nix
+++ b/pkgs/applications/science/math/sage/sage-env.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , writeTextFile
-, python
 , sagelib
 , env-locations
 , gfortran
@@ -67,11 +66,6 @@ let
     "@sage-local@"
     "@sage-local@/build"
     pythonEnv
-    # empty python env to add python wrapper that clears PYTHONHOME (see
-    # wrapper.nix). This is necessary because sage will call the python3 binary
-    # (from python2 code). The python2 PYTHONHOME (again set in wrapper.nix)
-    # will then confuse python3, if it is not overwritten.
-    python3.buildEnv
     gfortran # for inline fortran
     stdenv.cc # for cython
     bash
@@ -129,8 +123,21 @@ writeTextFile rec {
       ]
     }'
     export SAGE_ROOT='${sagelib.src}'
-    export SAGE_LOCAL='@sage-local@'
+  '' +
+    # TODO: is using pythonEnv instead of @sage-local@ here a good
+    # idea? there is a test in src/sage/env.py that checks if the values
+    # SAGE_ROOT and SAGE_LOCAL set here match the ones set in env.py.
+    # we fix up env.py's SAGE_ROOT in sage-src.nix (which does not
+    # have access to sage-with-env), but env.py autodetects
+    # SAGE_LOCAL to be pythonEnv.
+    # setting SAGE_LOCAL to pythonEnv also avoids having to create
+    # python3, ipython, ipython3 and jupyter symlinks in
+    # sage-with-env.nix.
+  ''
+    export SAGE_LOCAL='${pythonEnv}'
+
     export SAGE_SHARE='${sagelib}/share'
+    export SAGE_ENV_CONFIG_SOURCED=1 # sage-env complains if sage-env-config is not sourced beforehand
     orig_path="$PATH"
     export PATH='${runtimepath}'
 
@@ -177,9 +184,9 @@ writeTextFile rec {
       ])
     }'
 
-    export SAGE_LIB='${sagelib}/${python.sitePackages}'
+    export SAGE_LIB='${sagelib}/${python3.sitePackages}'
 
-    export SAGE_EXTCODE='${sagelib.src}/src/ext'
+    export SAGE_EXTCODE='${sagelib.src}/src/sage/ext_data'
 
   # for find_library
     export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH"
diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix
index 4791d12450a..8948621a025 100644
--- a/pkgs/applications/science/math/sage/sage-src.nix
+++ b/pkgs/applications/science/math/sage/sage-src.nix
@@ -10,44 +10,23 @@
 # all get the same sources with the same patches applied.
 
 stdenv.mkDerivation rec {
-  version = "8.9";
+  version = "9.2";
   pname = "sage-src";
 
   src = fetchFromGitHub {
     owner = "sagemath";
     repo = "sage";
     rev = version;
-    sha256 = "1bwga58x3s8z42w5h51c232f91ndsc1861dlb1glhax3pn0rhn3a";
+    sha256 = "103j8d5x6szl9fxaz0dvdi4y47q1af9h9y5hmjh2xayi62qmp5ql";
   };
 
   # Patches needed because of particularities of nix or the way this is packaged.
   # The goal is to upstream all of them and get rid of this list.
   nixPatches = [
-    # https://trac.sagemath.org/ticket/25358
-    (fetchpatch {
-      name = "safe-directory-test-without-patch.patch";
-      url = "https://git.sagemath.org/sage.git/patch?id2=8bdc326ba57d1bb9664f63cf165a9e9920cc1afc&id=dc673c17555efca611f68398d5013b66e9825463";
-      sha256 = "1hhannz7xzprijakn2w2d0rhd5zv2zikik9p51i87bas3nc658f7";
-    })
-    
-    # `is_unitary` test in `matrix_double_dense.pyx` fails with some BLAS implementations
-    # https://trac.sagemath.org/ticket/29297 should be included in 9.1
-    (fetchpatch {
-      name = "is_unitary-special-case.patch";
-      url = "https://git.sagemath.org/sage.git/patch?id=cc3eb9ffa991e328b09028d32aab7e7cc2ddbb6a";
-      sha256 = "0jq4w8hnp5c9q99011ldr4n3knvm1rx2g85z0hidv3i9x868p0ay";
-    })
-
-    # Unfortunately inclusion in upstream sage was rejected. Instead the bug was
-    # fixed in python, but of course not backported to 2.7. So we'll probably
-    # have to keep this around until 2.7 is deprecated.
-    # https://trac.sagemath.org/ticket/25316
-    # https://github.com/python/cpython/pull/7476
-    ./patches/python-5755-hotpatch.patch
-
     # Make sure py2/py3 tests are only run when their expected context (all "sage"
     # tests) are also run. That is necessary to test dochtml individually. See
     # https://trac.sagemath.org/ticket/26110 for an upstream discussion.
+    # TODO: Determine if it is still necessary.
     ./patches/Only-test-py2-py3-optional-tests-when-all-of-sage-is.patch
 
     # Fixes a potential race condition which can lead to transient doctest failures.
@@ -61,10 +40,17 @@ stdenv.mkDerivation rec {
     # https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE
     ./patches/sphinx-docbuild-subprocesses.patch
 
-    # Fix doctest failures with docutils 0.15:
-    # https://nix-cache.s3.amazonaws.com/log/dzmzrb2zvardsmpy7idg7djkizmkzdhs-sage-tests-8.9.drv
-    # https://trac.sagemath.org/ticket/28856#comment:19
-    ./patches/docutils-0.15.patch
+    # Sage's workaround to pretty print dicts (in
+    # src/sage/doctest/forker.py:init_sage) runs too late (after
+    # controller.load_environment(), which imports sage.all.*) to to
+    # affect sage.sandpiles.Sandpile{Config,Divisor}'s pretty printer.
+    # Due to the sandpiles module being lazily loaded, this only
+    # affects the first run (subsequent runs read from an import cache
+    # at ~/.sage/cache and are not affected), which is probably why
+    # other distributions don't hit this bug. This breaks two sandpile
+    # tests, so do the workaround a little bit earlier.
+    # https://trac.sagemath.org/ticket/31053
+    ./patches/register-pretty-printer-earlier.patch
   ];
 
   # Since sage unfortunately does not release bugfix releases, packagers must
@@ -74,6 +60,17 @@ stdenv.mkDerivation rec {
     # To help debug the transient error in
     # https://trac.sagemath.org/ticket/23087 when it next occurs.
     ./patches/configurationpy-error-verbose.patch
+
+    # fix intermittent errors in Sage 9.2's psage.py (this patch is
+    # already included in Sage 9.3): https://trac.sagemath.org/ticket/30730
+    (fetchpatch {
+      name = "fix-psage-is-locked.patch";
+      url = "https://git.sagemath.org/sage.git/patch/?id=75df605f216ddc7b6ca719be942d666b241520e9";
+      sha256 = "0g9pl1wbb3sgs26d3bvv70cpa77sfskylv4kd255y1794f1fgk4q";
+    })
+
+    # fix intermittent errors in sagespawn.pyx: https://trac.sagemath.org/ticket/31052
+    ./patches/sagespawn-implicit-casting.patch
   ];
 
   # Patches needed because of package updates. We could just pin the versions of
@@ -96,55 +93,16 @@ stdenv.mkDerivation rec {
       } // builtins.removeAttrs args [ "rev" "base" ])
     );
   in [
-    # New glpk version has new warnings, filter those out until upstream sage has found a solution
-    # Should be fixed with glpk > 4.65.
-    # https://trac.sagemath.org/ticket/24824
-    ./patches/pari-stackwarn.patch # not actually necessary since the pari upgrade, but necessary for the glpk patch to apply
-    (fetchpatch {
-      url = "https://salsa.debian.org/science-team/sagemath/raw/58bbba93a807ca2933ca317501d093a1bb4b84db/debian/patches/dt-version-glpk-4.65-ignore-warnings.patch";
-      sha256 = "0b9293v73wb4x13wv5zwyjgclc01zn16msccfzzi6znswklgvddp";
-      stripLen = 1;
-    })
-
     # After updating smypow to (https://trac.sagemath.org/ticket/3360) we can
     # now set the cache dir to be withing the .sage directory. This is not
     # strictly necessary, but keeps us from littering in the user's HOME.
     ./patches/sympow-cache.patch
 
-    # https://trac.sagemath.org/ticket/28472
-    (fetchpatch {
-      name = "eclib-20190909.patch";
-      url = "https://git.sagemath.org/sage.git/patch?id=d27dc479a5772d59e4bc85d805b6ffd595284f1d";
-      sha256 = "1nf1s9y7n30lhlbdnam7sghgaq9nasmv96415gl5jlcf7a3hlxk3";
-    })
-
     # ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests
     ./patches/ignore-cmp-deprecation.patch
 
-    # Werkzeug has deprecated ImmutableDict, but it is still used in legacy
-    # sagenb. That's no big issue since sagenb will be removed soon anyways.
-    ./patches/ignore-werkzeug-immutable-dict-deprecation.patch
-
-    # threejs r109 (#28560)
-    (fetchpatch {
-      name = "threejs-r109.patch";
-      url = "https://git.sagemath.org/sage.git/patch?id=fcc11d6effa39f375bc5f4ea5831fb7a2f2767da";
-      sha256 = "0hnmc8ld3bblks0hcjvjjaydkgwdr1cs3dbl2ys4gfq964pjgqwc";
-    })
-
-    # https://trac.sagemath.org/ticket/28911
-    (fetchpatch {
-      name = "sympy-1.5.patch";
-      url = "https://git.sagemath.org/sage.git/patch/?h=c6d0308db15efd611211d26cfcbefbd180fc0831";
-      sha256 = "0nwai2jr22h49km4hx3kwafs3mzsc5kwsv7mqwjf6ibwfx2bbgyq";
-    })
-
-    # https://trac.sagemath.org/ticket/29313 (patch from ArchLinux)
-    (fetchpatch {
-      name = "pari-2.11.3.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/sagemath-pari-2.11.3.patch?h=sagemath-git&id=02e1d58bd1cd70935d69a4990469d18be6bd2c43";
-      sha256 = "0z07444zvijyw96d11q7j81pvg7ysd6ycf1bbbjr6za9y74hv7d2";
-    })
+    # adapt sage's Image class to pillow 8.0.1 (https://trac.sagemath.org/ticket/30971)
+    ./patches/pillow-update.patch
   ];
 
   patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
@@ -152,16 +110,16 @@ stdenv.mkDerivation rec {
   postPatch = ''
     # make sure shebangs etc are fixed, but sage-python23 still works
     find . -type f -exec sed \
-      -e 's/sage-python23/python/g' \
+      -e 's/sage-python23/python3/g' \
       -i {} \;
 
     echo '#!${runtimeShell}
-    python "$@"' > build/bin/sage-python23
+    python3 "$@"' > build/bin/sage-python23
 
     # Make sure sage can at least be imported without setting any environment
     # variables. It won't be close to feature complete though.
     sed -i \
-      "s|var('SAGE_LOCAL',.*|var('SAGE_LOCAL', '$out/src')|" \
+      "s|var('SAGE_ROOT'.*|var('SAGE_ROOT', '$out')|" \
       src/sage/env.py
 
     # Do not use sage-env-config (generated by ./configure).
@@ -169,7 +127,39 @@ stdenv.mkDerivation rec {
     echo '# do nothing' >  src/bin/sage-env-config
   '';
 
-  configurePhase = "# do nothing";
+  # Test src/doc/en/reference/spkg/conf.py will fail if
+  # src/doc/en/reference/spkg/index.rst is not generated.  It is
+  # generated by src/doc/bootstrap, so I've copied the relevant part
+  # here. An alternative would be to create an empty
+  # src/doc/en/reference/spkg/index.rst file.
+  configurePhase = ''
+    OUTPUT_DIR="src/doc/en/reference/spkg"
+    mkdir -p "$OUTPUT_DIR"
+    OUTPUT_INDEX="$OUTPUT_DIR"/index.rst
+    cat > "$OUTPUT_INDEX" <<EOF
+
+    External Packages
+    =================
+
+    .. toctree::
+       :maxdepth: 1
+
+    EOF
+    for PKG_SCRIPTS in build/pkgs/*; do
+        if [ -d "$PKG_SCRIPTS" ]; then
+            PKG_BASE=$(basename "$PKG_SCRIPTS")
+            if [ -f "$PKG_SCRIPTS"/SPKG.rst ]; then
+                # Instead of just copying, we may want to call
+                # a version of sage-spkg-info to format extra information.
+                cp "$PKG_SCRIPTS"/SPKG.rst "$OUTPUT_DIR"/$PKG_BASE.rst
+                echo >> "$OUTPUT_INDEX" "   $PKG_BASE"
+            fi
+        fi
+    done
+    cat >> "$OUTPUT_INDEX" <<EOF
+    .. include:: ../footer.txt
+    EOF
+  '';
 
   buildPhase = "# do nothing";
 
diff --git a/pkgs/applications/science/math/sage/sage-with-env.nix b/pkgs/applications/science/math/sage/sage-with-env.nix
index 87c1e07f530..f204d97961b 100644
--- a/pkgs/applications/science/math/sage/sage-with-env.nix
+++ b/pkgs/applications/science/math/sage/sage-with-env.nix
@@ -13,7 +13,7 @@
 , pari
 , gmp
 , gfan
-, python2
+, python3
 , flintqs
 , eclib
 , ntl
@@ -50,11 +50,11 @@ let
   ];
 
   # remove python prefix, replace "-" in the name by "_", apply patch_names
-  # python2.7-some-pkg-1.0 -> some_pkg-1.0
+  # python3.8-some-pkg-1.0 -> some_pkg-1.0
   pkg_to_spkg_name = pkg: patch_names: let
     parts = lib.splitString "-" pkg.name;
-    # remove python2.7-
-    stripped_parts = if (builtins.head parts) == python2.libPrefix then builtins.tail parts else parts;
+    # remove python3.8-
+    stripped_parts = if (builtins.head parts) == python3.libPrefix then builtins.tail parts else parts;
     version = lib.last stripped_parts;
     orig_pkgname = lib.init stripped_parts;
     pkgname = patch_names (lib.concatStringsSep "_" orig_pkgname);
diff --git a/pkgs/applications/science/math/sage/sage.nix b/pkgs/applications/science/math/sage/sage.nix
index a21bffea14c..e2acef7b8eb 100644
--- a/pkgs/applications/science/math/sage/sage.nix
+++ b/pkgs/applications/science/math/sage/sage.nix
@@ -61,7 +61,6 @@ stdenv.mkDerivation rec {
   };
 
   meta = with stdenv.lib; {
-    broken = true;
     description = "Open Source Mathematics Software, free alternative to Magma, Maple, Mathematica, and Matlab";
     license = licenses.gpl2;
     maintainers = teams.sage.members;
diff --git a/pkgs/applications/science/math/sage/sagedoc.nix b/pkgs/applications/science/math/sage/sagedoc.nix
index bf618fe64f4..a10672f3a09 100644
--- a/pkgs/applications/science/math/sage/sagedoc.nix
+++ b/pkgs/applications/science/math/sage/sagedoc.nix
@@ -1,6 +1,6 @@
 { stdenv
 , sage-with-env
-, python
+, python3
 , maxima-ecl
 , tachyon
 , jmol
@@ -17,16 +17,15 @@ stdenv.mkDerivation rec {
   # modules are imported and because matplotlib is used to produce plots.
   buildInputs = [
     sage-with-env.env.lib
-    python
+    python3
     maxima-ecl
     tachyon
     jmol
     cddlib
-  ] ++ (with python.pkgs; [
+  ] ++ (with python3.pkgs; [
     psutil
     future
     sphinx
-    sagenb
     scipy
     sympy
     matplotlib
@@ -35,8 +34,6 @@ stdenv.mkDerivation rec {
     ipykernel
     ipywidgets
     jupyter_client
-    typing
-    pybrial
   ]);
 
   unpackPhase = ''
@@ -47,13 +44,26 @@ stdenv.mkDerivation rec {
     chmod -R 755 "$SAGE_DOC_SRC_OVERRIDE"
   '';
 
+  postPatch = ''
+    # src/doc/bootstrap generates installation instructions for
+    # arch, debian, fedora, cygwin and homebrew. as a hack, disable
+    # including the generated files.
+    sed -i "/literalinclude/d" $SAGE_DOC_SRC_OVERRIDE/en/installation/source.rst
+  '';
+
   buildPhase = ''
     export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
     export HOME="$TMPDIR/sage_home"
     mkdir -p "$HOME"
 
     # needed to link them in the sage docs using intersphinx
-    export PPLPY_DOCS=${python.pkgs.pplpy.doc}/share/doc/pplpy
+    export PPLPY_DOCS=${python3.pkgs.pplpy.doc}/share/doc/pplpy
+
+    # adapted from src/doc/bootstrap
+    OUTPUT_DIR="$SAGE_DOC_SRC_OVERRIDE/en/reference/repl"
+    mkdir -p "$OUTPUT_DIR"
+    OUTPUT="$OUTPUT_DIR/options.txt"
+    ${sage-with-env}/bin/sage -advanced > "$OUTPUT"
 
     ${sage-with-env}/bin/sage -python -m sage_setup.docbuild \
       --mathjax \
diff --git a/pkgs/applications/science/math/sage/sagelib.nix b/pkgs/applications/science/math/sage/sagelib.nix
index 830d806a8bc..1c2235bf71b 100644
--- a/pkgs/applications/science/math/sage/sagelib.nix
+++ b/pkgs/applications/science/math/sage/sagelib.nix
@@ -15,6 +15,7 @@
 , ecm
 , flint
 , gd
+, giac
 , givaro
 , glpk
 , gsl
@@ -51,6 +52,7 @@
 , libbraiding
 , gmpy2
 , pplpy
+, sqlite
 }:
 
 assert (!blas.isILP64) && (!lapack.isILP64);
@@ -94,6 +96,7 @@ buildPythonPackage rec {
     ecm
     fflas-ffpack
     flint
+    giac
     givaro
     glpk
     gsl
@@ -124,6 +127,7 @@ buildPythonPackage rec {
     libbraiding
     gmpy2
     pplpy
+    sqlite
   ];
 
   buildPhase = ''
diff --git a/pkgs/applications/science/math/sage/sagenb.nix b/pkgs/applications/science/math/sage/sagenb.nix
deleted file mode 100644
index ad5c53b6c11..00000000000
--- a/pkgs/applications/science/math/sage/sagenb.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ stdenv
-, python
-, buildPythonPackage
-, fetchFromGitHub
-, mathjax
-, twisted
-, flask
-, flask-oldsessions
-, flask-openid
-, flask-autoindex
-, flask-babel
-}:
-
-# Has a cyclic dependency with sage (not expressed here) and is not useful outside of sage.
-# Deprecated, hopefully soon to be removed. See
-# https://trac.sagemath.org/ticket/25837
-
-buildPythonPackage rec {
-  pname = "sagenb";
-  version = "1.1.2";
-
-  src = fetchFromGitHub {
-    owner = "sagemath";
-    repo = "sagenb";
-    rev = version;
-    sha256 = "0bxvhr03qh2nsjdfc4pyfiqrn9jhp3vf7irsc9gqx0185jlblbxs";
-  };
-
-  patches = [
-    # cmp deprecation in attrs needs to be handled in twisted
-    ./patches/sagenb-cmp-deprecation.patch
-  ];
-
-  propagatedBuildInputs = [
-    twisted
-    flask
-    flask-oldsessions
-    flask-openid
-    flask-autoindex
-    flask-babel
-  ];
-
-  # tests depend on sage
-  doCheck = false;
-
-  meta = with stdenv.lib; {
-    description = "Sage Notebook";
-    license = licenses.gpl3Plus;
-    maintainers = teams.sage.members;
-  };
-
-  # let sagenb use mathjax
-  postInstall = ''
-    mkdir -p "$out/${python.sitePackages}/sagenb/data"
-    ln -s ${mathjax}/lib/node_modules/mathjax "$out/${python.sitePackages}/sagenb/data/mathjax"
-  '';
-}
diff --git a/pkgs/applications/science/misc/simgrid/default.nix b/pkgs/applications/science/misc/simgrid/default.nix
index 0ba1cd0d2fa..11d73095834 100644
--- a/pkgs/applications/science/misc/simgrid/default.nix
+++ b/pkgs/applications/science/misc/simgrid/default.nix
@@ -18,14 +18,14 @@ in
 
 stdenv.mkDerivation rec {
   pname = "simgrid";
-  version = "3.25";
+  version = "3.26";
 
   src = fetchFromGitLab {
     domain = "framagit.org";
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "019fgryfwpcrkv1f3271v7qxk0mfw2w990vgnk1cqhmr9i1f17gs";
+    sha256 = "0kwiggdjqjhjvmwb1m7hb9clvm3xz948fy5ia67dif2pakwad754";
   };
 
   nativeBuildInputs = [ cmake perl python3 boost valgrind ]
diff --git a/pkgs/applications/version-management/fossil/default.nix b/pkgs/applications/version-management/fossil/default.nix
index f8ad81c6058..6d39ae0931c 100644
--- a/pkgs/applications/version-management/fossil/default.nix
+++ b/pkgs/applications/version-management/fossil/default.nix
@@ -15,7 +15,7 @@
 
 stdenv.mkDerivation rec {
   pname = "fossil";
-  version = "2.12.1";
+  version = "2.13";
 
   src = fetchurl {
     urls =
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
         "https://www.fossil-scm.org/index.html/uv/fossil-src-${version}.tar.gz"
       ];
     name = "${pname}-${version}.tar.gz";
-    sha256 = "00v6gmn2wpfms5jzf103hkm5s8i3bfs5mzacmznlhdzdrzzjc8w2";
+    sha256 = "1xbk7bb7340x2vvn22ykii54v721fwk8vgr3xvjkvv8ff7hd6cyr";
   };
 
   nativeBuildInputs = [ installShellFiles tcl ];
diff --git a/pkgs/applications/virtualization/docker-slim/default.nix b/pkgs/applications/virtualization/docker-slim/default.nix
index 84e0135f665..9ba7ff5d66b 100644
--- a/pkgs/applications/virtualization/docker-slim/default.nix
+++ b/pkgs/applications/virtualization/docker-slim/default.nix
@@ -6,7 +6,7 @@
 
 buildGoPackage rec {
   pname = "docker-slim";
-  version = "1.32.0";
+  version = "1.33.0";
 
   goPackagePath = "github.com/docker-slim/docker-slim";
 
@@ -14,7 +14,7 @@ buildGoPackage rec {
     owner = "docker-slim";
     repo = "docker-slim";
     rev = version;
-    sha256 = "0pd2v7df176ca923c4nw9ns5gz442jkb0jhzqjl53rwfwz1vxy9h";
+    sha256 = "0fk1r9id3fjcqdg4nls2k5ik3822njz4xx9fpbvmx0fycvjmbr4v";
   };
 
   subPackages = [ "cmd/docker-slim" "cmd/docker-slim-sensor" ];
@@ -39,6 +39,7 @@ buildGoPackage rec {
   meta = with stdenv.lib; {
     description = "Minify and secure Docker containers";
     homepage = "https://dockersl.im/";
+    changelog = "https://github.com/docker-slim/docker-slim/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ Br1ght0ne marsam mbrgm ];
   };
diff --git a/pkgs/applications/virtualization/vpcs/default.nix b/pkgs/applications/virtualization/vpcs/default.nix
index 464fe46b499..ce08428eba0 100644
--- a/pkgs/applications/virtualization/vpcs/default.nix
+++ b/pkgs/applications/virtualization/vpcs/default.nix
@@ -1,19 +1,16 @@
-{ stdenv, fetchurl, glibc }:
+{ stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "vpcs";
-  version = "0.8";
+  version = "0.8.1";
 
-  src = fetchurl {
-    name = "${pname}-${version}.tar.bz2";
-    url = "mirror://sourceforge/project/${pname}/${version}/${pname}-${version}-src.tbz";
-    sha256 = "14y9nflcyq486vvw0na0fkfmg5dac004qb332v4m5a0vaz8059nw";
+  src = fetchFromGitHub {
+    owner = "GNS3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0kqy4bd3ns8nzn7fa72izn7a08sfrasy1rn7fd8ajah2wv8d2cak";
   };
 
-  patches = [ ./vpcs-0.8-glibc-2.26.patch ];
-
-  buildInputs = [ glibc.static ];
-
   buildPhase = ''(
     cd src
     ./mk.sh ${stdenv.buildPlatform.platform.kernelArch}
@@ -27,13 +24,13 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
-    description = "Virtual PC simulator";
+    description = "A simple virtual PC simulator";
     longDescription = ''
-      The VPCS can simulate up to 9 PCs. You can ping/traceroute them, or
-      ping/traceroute the other hosts/routers from the VPCS when you study the
-      Cisco routers in the dynamips.
+      The VPCS (Virtual PC Simulator) can simulate up to 9 PCs. You can
+      ping/traceroute them, or ping/traceroute the other hosts/routers from the
+      VPCS when you study the Cisco routers in the dynamips.
     '';
-    homepage = "https://sourceforge.net/projects/vpcs/";
+    inherit (src.meta) homepage;
     license = licenses.bsd2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos ];
diff --git a/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch b/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch
deleted file mode 100644
index d94a39ccd64..00000000000
--- a/pkgs/applications/virtualization/vpcs/vpcs-0.8-glibc-2.26.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/getopt.h b/src/getopt.h
-index 4394aa2..bf59e10 100644
---- a/src/getopt.h
-+++ b/src/getopt.h
-@@ -49,9 +49,6 @@ extern int optind;
- extern int opterr;
- extern int optopt;
- 
--#ifndef FreeBSD
--int getopt(int argc, char** argv, char* optstr);
--#endif
- int arg_to_int(const char* arg, int min, int max, int defalt);
- 
- #ifdef __cplusplus
diff --git a/pkgs/applications/window-managers/i3/gaps.nix b/pkgs/applications/window-managers/i3/gaps.nix
index 755ceb42161..10f86132ea9 100644
--- a/pkgs/applications/window-managers/i3/gaps.nix
+++ b/pkgs/applications/window-managers/i3/gaps.nix
@@ -20,7 +20,7 @@ i3.overrideAttrs (oldAttrs : rec {
     homepage    = "https://github.com/Airblader/i3";
     maintainers = with maintainers; [ fmthoma ];
     license     = licenses.bsd3;
-    platforms   = platforms.all;
+    platforms   = platforms.linux ++ platforms.netbsd ++ platforms.openbsd;
 
     longDescription = ''
       Fork of i3wm, a tiling window manager primarily targeted at advanced users
diff --git a/pkgs/applications/window-managers/i3/i3-resurrect.nix b/pkgs/applications/window-managers/i3/i3-resurrect.nix
new file mode 100644
index 00000000000..a765d2e298e
--- /dev/null
+++ b/pkgs/applications/window-managers/i3/i3-resurrect.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonApplication, click, i3ipc, psutil, natsort, fetchPypi, xprop, xdotool, importlib-metadata }:
+
+buildPythonApplication rec {
+  pname = "i3-resurrect";
+  version = "1.4.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0h181frdwpqfj9agw43qgicdvzv1i7xwky0vs0ksd8h18qxqp4hr";
+  };
+
+  propagatedBuildInputs = [ click psutil xprop natsort i3ipc xdotool importlib-metadata ];
+  doCheck = false; # no tests
+
+  meta = with lib; {
+    homepage = "https://github.com/JonnyHaystack/i3-resurrect";
+    description = "A simple but flexible solution to saving and restoring i3 workspaces";
+    license = licenses.gpl3;
+    platforms= platforms.linux;
+    maintainers = with maintainers; [ magnetophon ];
+  };
+}
diff --git a/pkgs/applications/window-managers/i3/lock-color.nix b/pkgs/applications/window-managers/i3/lock-color.nix
index a64e5ea3369..f07a1926f6e 100644
--- a/pkgs/applications/window-managers/i3/lock-color.nix
+++ b/pkgs/applications/window-managers/i3/lock-color.nix
@@ -55,8 +55,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ malyn ];
     license = licenses.bsd3;
 
-    # Needs the SSE2 instruction set. See upstream issue
-    # https://github.com/chrjguill/i3lock-color/issues/44
-    platforms = platforms.x86;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/window-managers/wayfire/applications.nix b/pkgs/applications/window-managers/wayfire/applications.nix
new file mode 100644
index 00000000000..6c22227c0c5
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/applications.nix
@@ -0,0 +1,23 @@
+{ newScope, wayfirePlugins }:
+
+let
+  self = with self; {
+    inherit wayfirePlugins;
+
+    callPackage = newScope self;
+
+    wayfire = callPackage ./. { };
+
+    wcm = callPackage ./wcm.nix {
+      inherit (wayfirePlugins) wf-shell;
+    };
+
+    wrapWayfireApplication = callPackage ./wrapper.nix { };
+
+    withPlugins = selector: self // {
+      wayfire = wrapWayfireApplication wayfire selector;
+      wcm = wrapWayfireApplication wcm selector;
+    };
+  };
+in
+self
diff --git a/pkgs/applications/window-managers/wayfire/default.nix b/pkgs/applications/window-managers/wayfire/default.nix
new file mode 100644
index 00000000000..513784b8b52
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkg-config, git
+, cairo, libdrm, libexecinfo, libinput, libjpeg, libxkbcommon, wayland
+, wayland-protocols, wf-config, wlroots
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wayfire";
+  version = "0.6.0";
+
+  src = fetchurl {
+    url = "https://github.com/WayfireWM/wayfire/releases/download/${version}/wayfire-${version}.tar.xz";
+    sha256 = "0wc5szslgf8d4r4dlbfgc5v49j2ziaa8fycmknq4p0vl67mh7acq";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland ];
+  buildInputs = [
+    cairo libdrm libexecinfo libinput libjpeg libxkbcommon wayland
+    wayland-protocols wf-config wlroots
+  ];
+
+  mesonFlags = [ "--sysconfdir" "/etc" ];
+
+  meta = with lib; {
+    homepage = "https://wayfire.org/";
+    description = "3D wayland compositor";
+    license = licenses.mit;
+    maintainers = with maintainers; [ qyliss wucke13 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/window-managers/wayfire/plugins.nix b/pkgs/applications/window-managers/wayfire/plugins.nix
new file mode 100644
index 00000000000..830a918fcb7
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/plugins.nix
@@ -0,0 +1,12 @@
+{ newScope, wayfire }:
+
+let
+  self = with self; {
+    inherit wayfire;
+
+    callPackage = newScope self;
+
+    wf-shell = callPackage ./wf-shell.nix { };
+  };
+in
+self
diff --git a/pkgs/applications/window-managers/wayfire/wcm.nix b/pkgs/applications/window-managers/wayfire/wcm.nix
new file mode 100644
index 00000000000..7c4b546c68e
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/wcm.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, fetchFromGitHub, meson, ninja, pkg-config, wayland, wrapGAppsHook
+, gnome3, libevdev, libxml2, wayfire, wayland-protocols, wf-config, wf-shell
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wcm";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "WayfireWM";
+    repo = "wcm";
+    rev = "v${version}";
+    sha256 = "1b22gymqfn0c49nf39676q5bj25rxab874iayiq31cmn14r30dyg";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland wrapGAppsHook ];
+  buildInputs = [
+    gnome3.gtk libevdev libxml2 wayfire wayland
+    wayland-protocols wf-config wf-shell
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/WayfireWM/wcm";
+    description = "Wayfire Config Manager";
+    license = licenses.mit;
+    maintainers = with maintainers; [ qyliss wucke13 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/window-managers/wayfire/wf-config.nix b/pkgs/applications/window-managers/wayfire/wf-config.nix
new file mode 100644
index 00000000000..00a4404c1d4
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/wf-config.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkg-config, glm, libevdev, libxml2 }:
+
+stdenv.mkDerivation rec {
+  pname = "wf-config";
+  version = "0.6.0";
+
+  src = fetchurl {
+    url = "https://github.com/WayfireWM/wf-config/releases/download/${version}/wf-config-${version}.tar.xz";
+    sha256 = "1a5aqybhbp9dp4jygrm3gbkdap5qbd52y6ihfr4rm1cj37sckcn0";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config ];
+  buildInputs = [ libevdev libxml2 ];
+  propagatedBuildInputs = [ glm ];
+
+  meta = with lib; {
+    homepage = "https://github.com/WayfireWM/wf-config";
+    description = "Library for managing configuration files, written for Wayfire";
+    license = licenses.mit;
+    maintainers = with maintainers; [ qyliss wucke13 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/window-managers/wayfire/wf-shell.nix b/pkgs/applications/window-managers/wayfire/wf-shell.nix
new file mode 100644
index 00000000000..6e5f189275b
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/wf-shell.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkg-config, wayland, git
+, alsaLib, gnome3, gtk-layer-shell, pulseaudio, wayfire, wf-config
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wf-shell";
+  version = "0.6.1";
+
+  # > Note to packagers: do not use the autogenerated "Source code"
+  # > archives from GitHub, but the wf-shell-0.4.0.tar.xz file.
+  src = fetchurl {
+    url = "https://github.com/WayfireWM/wf-shell/releases/download/v${version}/wf-shell-${version}.tar.xz";
+    sha256 = "0jl8gj185k2ff754lcj5b5nldhkvrhmlaj8lsik4kx78vlb5m3ns";
+  };
+
+  nativeBuildInputs = [ meson ninja pkg-config wayland ];
+  buildInputs = [
+    alsaLib gnome3.gtkmm gtk-layer-shell pulseaudio wayfire wf-config
+  ];
+
+  mesonFlags = [ "--sysconfdir" "/etc" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/WayfireWM/wf-shell";
+    description = "GTK3-based panel for Wayfire";
+    license = licenses.mit;
+    maintainers = with maintainers; [ qyliss wucke13 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/window-managers/wayfire/wrapper.nix b/pkgs/applications/window-managers/wayfire/wrapper.nix
new file mode 100644
index 00000000000..62292898547
--- /dev/null
+++ b/pkgs/applications/window-managers/wayfire/wrapper.nix
@@ -0,0 +1,39 @@
+{ runCommandNoCC, lib, makeWrapper, wayfirePlugins }:
+
+let
+  inherit (lib) escapeShellArg makeBinPath;
+
+  xmlPath = plugin: "${plugin}/share/wayfire/metadata/wf-shell";
+
+  makePluginPath = lib.makeLibraryPath;
+  makePluginXMLPath = lib.concatMapStringsSep ":" xmlPath;
+in
+
+application:
+
+choosePlugins:
+
+let
+  plugins = choosePlugins wayfirePlugins;
+in
+
+runCommandNoCC "${application.name}-wrapped" {
+  nativeBuildInputs = [ makeWrapper ];
+
+  passthru = application.passthru // {
+    unwrapped = application;
+  };
+
+  inherit (application) meta;
+} ''
+  mkdir -p $out/bin
+  for bin in ${application}/bin/*
+  do
+      makeWrapper "$bin" $out/bin/''${bin##*/} \
+          --suffix PATH : ${escapeShellArg (makeBinPath plugins)} \
+          --suffix WAYFIRE_PLUGIN_PATH : ${escapeShellArg (makePluginPath plugins)} \
+          --suffix WAYFIRE_PLUGIN_XML_PATH : ${escapeShellArg (makePluginXMLPath plugins)}
+  done
+  find ${application} -mindepth 1 -maxdepth 1 -not -name bin \
+      -exec ln -s '{}' $out ';'
+''