summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-09-15 11:29:02 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-09-15 11:43:21 -0400
commit4920f6e634eeecb37b501bdc024dfe0aab849ed0 (patch)
treec7dd5859715071cb602133b67449a29488027f70
parent513091dbd2eeba138b558f5f9bb1ee6e68eee01d (diff)
parent3d297a0017210f1dd135592efb10846840a8af88 (diff)
downloadguix-4920f6e634eeecb37b501bdc024dfe0aab849ed0.tar.gz
Merge branch 'staging' into core-updates
Conflicts resolved in:
	gnu/local.mk
	gnu/packages/cmake.scm
	gnu/packages/glib.scm
	gnu/packages/gnome.scm
	gnu/packages/gtk.scm
	gnu/packages/sdl.scm

pango-next, vala-next and librsvg-bootstrap were removed in the process.
-rw-r--r--NEWS23
-rw-r--r--doc/guix.texi10
-rw-r--r--etc/news.scm41
-rw-r--r--etc/teams.scm.in6
-rw-r--r--gnu/build/secret-service.scm4
-rw-r--r--gnu/home/services/shepherd.scm42
-rw-r--r--gnu/local.mk16
-rw-r--r--gnu/packages/admin.scm8
-rw-r--r--gnu/packages/algebra.scm47
-rw-r--r--gnu/packages/bash.scm44
-rw-r--r--gnu/packages/bioconductor.scm48
-rw-r--r--gnu/packages/bioinformatics.scm4
-rw-r--r--gnu/packages/check.scm39
-rw-r--r--gnu/packages/chromium.scm6
-rw-r--r--gnu/packages/cmake.scm24
-rw-r--r--gnu/packages/containers.scm18
-rw-r--r--gnu/packages/cpp.scm14
-rw-r--r--gnu/packages/cran.scm113
-rw-r--r--gnu/packages/crates-graphics.scm6
-rw-r--r--gnu/packages/crates-gtk.scm6
-rw-r--r--gnu/packages/dezyne.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm312
-rw-r--r--gnu/packages/emacs.scm64
-rw-r--r--gnu/packages/embedded.scm11
-rw-r--r--gnu/packages/engineering.scm10
-rw-r--r--gnu/packages/enlightenment.scm15
-rw-r--r--gnu/packages/esolangs.scm20
-rw-r--r--gnu/packages/fcitx.scm80
-rw-r--r--gnu/packages/finance.scm21
-rw-r--r--gnu/packages/fonts.scm6
-rw-r--r--gnu/packages/fontutils.scm31
-rw-r--r--gnu/packages/freedesktop.scm88
-rw-r--r--gnu/packages/games.scm153
-rw-r--r--gnu/packages/gcc.scm53
-rw-r--r--gnu/packages/geo.scm178
-rw-r--r--gnu/packages/glib.scm79
-rw-r--r--gnu/packages/gnome-xyz.scm51
-rw-r--r--gnu/packages/gnome.scm6011
-rw-r--r--gnu/packages/gnucash.scm290
-rw-r--r--gnu/packages/gnuzilla.scm4
-rw-r--r--gnu/packages/gtk.scm391
-rw-r--r--gnu/packages/haskell-xyz.scm35
-rw-r--r--gnu/packages/ibus.scm273
-rw-r--r--gnu/packages/image-processing.scm2
-rw-r--r--gnu/packages/ipfs.scm27
-rw-r--r--gnu/packages/java.scm42
-rw-r--r--gnu/packages/linux.scm43
-rw-r--r--gnu/packages/lisp-xyz.scm259
-rw-r--r--gnu/packages/lisp.scm8
-rw-r--r--gnu/packages/machine-learning.scm16
-rw-r--r--gnu/packages/messaging.scm107
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/networking.scm38
-rw-r--r--gnu/packages/ntp.scm12
-rw-r--r--gnu/packages/patches/cmake-curl-certificates-3.24.patch21
-rw-r--r--gnu/packages/patches/cmh-support-fplll.patch27
-rw-r--r--gnu/packages/patches/emacs-kv-fix-tests.patch30
-rw-r--r--gnu/packages/patches/emacs-yasnippet-fix-tests.patch30
-rw-r--r--gnu/packages/patches/eog-update-libportal-usage.patch40
-rw-r--r--gnu/packages/patches/gdm-default-session.patch65
-rw-r--r--gnu/packages/patches/gdm-elogind-support.patch21
-rw-r--r--gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch13
-rw-r--r--gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch36
-rw-r--r--gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch13
-rw-r--r--gnu/packages/patches/geoclue-config.patch28
-rw-r--r--gnu/packages/patches/gnome-boxes-add-guix-logo.patch32
-rw-r--r--gnu/packages/patches/gnome-builder-update-libportal.patch93
-rw-r--r--gnu/packages/patches/gnome-screenshot-meson-0.60.patch39
-rw-r--r--gnu/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch173
-rw-r--r--gnu/packages/patches/gobject-introspection-cc-1.72.patch15
-rw-r--r--gnu/packages/patches/gpaste-fix-paths.patch29
-rw-r--r--gnu/packages/patches/gspell-dash-test.patch22
-rw-r--r--gnu/packages/patches/hedgewars-network-bsd.patch150
-rw-r--r--gnu/packages/patches/libgda-cve-2021-39359.patch33
-rw-r--r--gnu/packages/patches/libgda-fix-build.patch131
-rw-r--r--gnu/packages/patches/libgda-fix-missing-initialization.patch26
-rw-r--r--gnu/packages/patches/libgda-skip-postgresql-tests.patch91
-rw-r--r--gnu/packages/patches/nautilus-add-libportal-gtk3.patch61
-rw-r--r--gnu/packages/patches/network-manager-plugin-path.patch38
-rw-r--r--gnu/packages/patchutils.scm38
-rw-r--r--gnu/packages/pdf.scm19
-rw-r--r--gnu/packages/pkg-config.scm24
-rw-r--r--gnu/packages/python-science.scm13
-rw-r--r--gnu/packages/python-web.scm7
-rw-r--r--gnu/packages/python-xyz.scm58
-rw-r--r--gnu/packages/qt.scm8
-rw-r--r--gnu/packages/rsync.scm10
-rw-r--r--gnu/packages/rust.scm34
-rw-r--r--gnu/packages/sdl.scm45
-rw-r--r--gnu/packages/search.scm6
-rw-r--r--gnu/packages/shellutils.scm33
-rw-r--r--gnu/packages/sphinx.scm35
-rw-r--r--gnu/packages/tex.scm3
-rw-r--r--gnu/packages/textutils.scm20
-rw-r--r--gnu/packages/uml.scm5
-rw-r--r--gnu/packages/version-control.scm11
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/virtualization.scm11
-rw-r--r--gnu/packages/web.scm10
-rw-r--r--gnu/packages/webkit.scm47
-rw-r--r--gnu/packages/wm.scm34
-rw-r--r--gnu/packages/xdisorg.scm85
-rw-r--r--gnu/packages/xorg.scm110
-rw-r--r--gnu/services/security.scm25
-rw-r--r--gnu/services/shepherd.scm27
-rw-r--r--gnu/services/virtualization.scm1
-rw-r--r--gnu/services/web.scm66
-rw-r--r--guix/build/emacs-build-system.scm20
-rw-r--r--guix/build/emacs-utils.scm39
-rw-r--r--guix/import/gnome.scm37
-rw-r--r--nix/libstore/misc.cc8
-rw-r--r--nix/libstore/misc.hh4
-rw-r--r--nix/libstore/store-api.cc17
-rw-r--r--nix/libstore/store-api.hh12
114 files changed, 6654 insertions, 4788 deletions
diff --git a/NEWS b/NEWS
index a24256a7bb..12a6d8a8f9 100644
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,7 @@
 
 Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 
   Copying and distribution of this file, with or without modification,
   are permitted in any medium without royalty provided the copyright
@@ -18,6 +18,7 @@ Please send Guix bug reports to bug-guix@gnu.org.
 *** New ‘guix shell’ command, the successor to ‘guix environment’
 *** New ‘deb’ format for the ‘guix pack’ command
 *** New ‘guix import minetest’ command, to import Minetest extensions
+*** New 'guix style' command, to auto-format package definitions
 *** ‘guix import texlive’ rewritten to use the TLPDB as its source
 *** ‘guix import elpa’ now supports the non-GNU ELPA repository
 *** ‘guix import pypi’ can now import a specific version
@@ -30,6 +31,18 @@ Please send Guix bug reports to bug-guix@gnu.org.
 *** More control over boot-time file system checks and repairs
 *** XFS file systems can be created by the installer and mounted by label/UUID
 *** New interface for declaring swap space
+*** GNOME is now at version 42
+*** The Rust bootstrap now starts from 1.54 instead of 1.19
+*** Most Python 2 packages have been removed
+*** Guix now makes use of parallel xz compression
+*** Faster shared libraries discovery via a per-package dynamic linker cache
+*** Build phases are no longer required to return a boolean
+*** Package inputs can now be provided without explicit labels
+*** A package origin can now be a single file rather than an archive
+*** Multiple Tex Live trees can now be used via GUIX_TEXMF
+*** A new sanity-check phase detects packaging problems at build time
+*** G-Expressions can now be used to author build phases
+*** Fetching sources can now fall-back to use Disarchive
 ** Programming interfaces
 *** (guix records) now supports “field sanitizers”
 ** Noteworthy bug fixes
@@ -43,7 +56,13 @@ Please send Guix bug reports to bug-guix@gnu.org.
     (<https://issues.guix.gnu.org/24937>)
 *** File system flags are validated before system instantiation
     (<https://issues.guix.gnu.org/51425>)
-
+*** Fonts can now be discovered in any profile
+*** Python modules discovery no longer uses PYTHONPATH
+*** Various Python reproducibility fixes
+*** Installer now supports MSDOS disk labels on UEFI systems
+    (<https://issues.guix.gnu.org/47889>)
+*** Emacs handles major upgrades better without a re-login
+    (<https://bugs.gnu.org/47458>)
 * Changes in 1.3.0 (since 1.2.0)
 ** Package management
 *** POWER9 (powerpc64le-linux) is now supported as a technology preview
diff --git a/doc/guix.texi b/doc/guix.texi
index 32414b6316..5bec94487b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36604,8 +36604,9 @@ extensions.
 @item @code{extra-jails} (default: @code{()}) (type: list-of-fail2ban-jail-configurations)
 Instances of @code{<fail2ban-jail-configuration>} explicitly provided.
 
-@item @code{extra-content} (type: maybe-string)
-Extra raw content to add to the end of the @file{jail.local} file.
+@item @code{extra-content} (default: @code{()}) (type: text-config)
+Extra raw content to add to the end of the @file{jail.local} file,
+provided as a list of file-like objects.
 
 @end table
 
@@ -36732,8 +36733,9 @@ The file names of the log files to be monitored.
 @item @code{action} (default: @code{()}) (type: list-of-fail2ban-jail-actions)
 A list of @code{<fail2ban-jail-action-configuration>}.
 
-@item @code{extra-content} (type: maybe-string)
-Extra content for the jail configuration.
+@item @code{extra-content} (default: @code{()}) (type: text-config)
+Extra content for the jail configuration, provided as a list of file-like
+objects.
 
 @end table
 
diff --git a/etc/news.scm b/etc/news.scm
index ae40f33cb0..ea5c908ef1 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -25,15 +25,56 @@
 
 (channel-news
  (version 0)
+ (entry (commit "11a06d1e49f4d50d6789e05bbf35e2e145ff7838")
+        (title
+         (en "Emacs now supports native compilation")
+         (de "Emacs kann Pakete nun nativ kompilieren")
+         (pt "O Emacs agora suporta compilação nativa"))
+        (body
+         (en "Emacs can now compile packages natively.  Under the default
+configuration, this means that Emacs packages will now be just-in-time (JIT)
+compiled as you use them, and the results stored in a subdirectory of your
+@code{user-emacs-directory}.
+
+Furthermore, the build system for Emacs packages transparently supports native
+compilation, but note, that @code{emacs-minimal}---the default Emacs for
+building packages---has been configured without native compilation.
+To natively compile your emacs packages ahead of time, use a transformation
+like @option{--with-input=emacs-minimal=emacs}.")
+         (de "Emacs kann nun native Maschinenbefehle erzeugen.  Standardgemäß
+kompiliert es nun Pakete „just in time“, während Sie diese laden, und platziert
+die so erzeugten nativen Bibliotheken in einem Unterverzeichnis Ihres
+@code{user-emacs-directory}.
+
+Darüber hinaus unterstützt das Erstellungssystem für Emacs-Pakete die Erzeugung
+nativer Maschinenbefehle.  Beachten Sie jedoch, dass @code{emacs-minimal} –
+die Emacs-Variante, mit der normalerweise Emacs-Pakete erstellt werden –
+weiterhin keine nativen Befehle generiert.  Um native Befehle für Ihre
+Emacs-Pakete schon im Voraus zu erzeugen, nutzen Sie eine Transformation, z.B.
+@option{--with-input=emacs-minimal=emacs}.")
+         (pt "Agora o Emacs pode compilar pacotes nativamente.  Na
+configuração padrão os pacotes do Emacs serão compilados “just-in-time” (JIT)
+conforme forem usados, e os resultados armazenados em um subdiretório de
+@code{user-emacs-directory}.
+
+Além disso, o sistema de compilação para pacotes do Emacs suporta compilação
+nativa de forma transparente.  Note porém que o @code{emacs-minimal} --- a
+variante padrão do Emacs para compilar pacotes --- foi configurado sem
+compilação nativa.  Para pré-compilar nativamente seus pacotes do Emacs use
+uma transformação, como por exemplo
+@code{--with-input=emacs-minimal=emacs}.")))
 
  (entry (commit "c188cf57f161c0c26e2d7c8516bd1ddd1492d686")
         (title
           (en "Linux-libre kernel updated to 5.19")
+          (de "Linux-libre-Kernel wird auf 5.19 aktualisiert")
           (fr "Le noyau linux-libre est mis à jour vers la 5.19")
           (pt "Kernel linux-libre atualizado para 5.19"))
         (body
           (en "The default version of the linux-libre kernel has been
               updated to the 5.19 release series.")
+          (de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
+              jetzt auf der 5.19-Versionsreihe.")
           (fr "La version par défaut du noyau linux-libre est mise à jour
               vers la série des 5.19.")
           (pt "A versão padrão do kernel linux-libre foi atualizada para a
diff --git a/etc/teams.scm.in b/etc/teams.scm.in
index 9f220cc489..4c2926eba5 100644
--- a/etc/teams.scm.in
+++ b/etc/teams.scm.in
@@ -170,7 +170,7 @@ and the maven-build-system."))
 
 (define-team home
   (team 'home
-        #:name "Team for \"guix home\""))
+        #:name "Team for \"Guix Home\""))
 
 (define-team mentors
   (team 'mentors
@@ -266,6 +266,10 @@ importer."))
                        "mail@cbaines.net")
   core mentors ruby)
 
+(define-member (person "Andrew Tropin"
+                       "andrew@trop.in")
+  home emacs)
+
 
 (define (find-team name)
   (or (hash-ref %teams (string->symbol name))
diff --git a/gnu/build/secret-service.scm b/gnu/build/secret-service.scm
index 1baa058635..b362b901be 100644
--- a/gnu/build/secret-service.scm
+++ b/gnu/build/secret-service.scm
@@ -119,7 +119,7 @@ wait for at most HANDSHAKE-TIMEOUT seconds for handshake to complete.  Return
                 files)))
 
   (log "sending secrets to ~a~%" port)
-  (let ((sock (socket AF_INET SOCK_STREAM 0))
+  (let ((sock (socket AF_INET (logior SOCK_CLOEXEC SOCK_STREAM) 0))
         (addr (make-socket-address AF_INET INADDR_LOOPBACK port))
         (sleep (if (resolve-module '(fibers) #f)
                    (module-ref (resolve-interface '(fibers)) 'sleep)
@@ -177,7 +177,7 @@ and #f otherwise."
     ;; Wait for a TCP connection on PORT.  Note: We cannot use the
     ;; virtio-serial ports, which would be safer, because they are
     ;; (presumably) unsupported on GNU/Hurd.
-    (let ((sock (socket AF_INET SOCK_STREAM 0)))
+    (let ((sock (socket AF_INET (logior SOCK_CLOEXEC SOCK_STREAM) 0)))
       (bind sock AF_INET INADDR_ANY port)
       (listen sock 1)
       (log "waiting for secrets on port ~a...~%" port)
diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index 62ab0aadc6..d2a803279f 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -54,19 +54,22 @@
             (default shepherd-0.9)) ; package
   (auto-start? home-shepherd-configuration-auto-start?
                (default #t))
+  (daemonize? home-shepherd-configuration-daemonize?
+              (default #t))
   (services home-shepherd-configuration-services
             (default '())))
 
-(define (home-shepherd-configuration-file services shepherd)
+(define (home-shepherd-configuration-file config)
   "Return the shepherd configuration file for SERVICES.  SHEPHERD is used
 as shepherd package."
-  (assert-valid-graph services)
-
-  (let ((files (map shepherd-service-file services))
-        ;; TODO: Add compilation of services, it can improve start
-        ;; time.
-        ;; (scm->go (cute scm->go <> shepherd))
-        )
+  (let* ((daemonize? (home-shepherd-configuration-daemonize? config))
+         (services (home-shepherd-configuration-services config))
+         (_ (assert-valid-graph services))
+         (files (map shepherd-service-file services))
+         ;; TODO: Add compilation of services, it can improve start
+         ;; time.
+         ;; (scm->go (cute scm->go <> shepherd))
+         )
     (define config
       #~(begin
           (use-modules (srfi srfi-34)
@@ -76,7 +79,11 @@ as shepherd package."
            (map
             (lambda (file) (load file))
             '#$files))
-          (action 'root 'daemonize)
+
+          #$@(if daemonize?
+                 `((action 'root 'daemonize))
+                 '())
+
           (format #t "Starting services...~%")
           (let ((services-to-start
                  '#$(append-map shepherd-service-provision
@@ -92,8 +99,7 @@ as shepherd package."
     (scheme-file "shepherd.conf" config)))
 
 (define (launch-shepherd-gexp config)
-  (let* ((shepherd (home-shepherd-configuration-shepherd config))
-         (services (home-shepherd-configuration-services config)))
+  (let* ((shepherd (home-shepherd-configuration-shepherd config)))
     (if (home-shepherd-configuration-auto-start? config)
         (with-imported-modules '((guix build utils))
           #~(unless (file-exists?
@@ -104,22 +110,22 @@ as shepherd package."
               (let ((log-dir (or (getenv "XDG_LOG_HOME")
                                  (format #f "~a/.local/var/log"
                                          (getenv "HOME")))))
+                ;; TODO: Remove it, 0.9.2 creates it automatically?
                 ((@ (guix build utils) mkdir-p) log-dir)
                 (system*
                  #$(file-append shepherd "/bin/shepherd")
                  "--logfile"
                  (string-append log-dir "/shepherd.log")
                  "--config"
-                 #$(home-shepherd-configuration-file services shepherd)))))
+                 #$(home-shepherd-configuration-file config)))))
         #~"")))
 
 (define (reload-configuration-gexp config)
-  (let* ((shepherd (home-shepherd-configuration-shepherd config))
-         (services (home-shepherd-configuration-services config)))
+  (let* ((shepherd (home-shepherd-configuration-shepherd config)))
     #~(system*
        #$(file-append shepherd "/bin/herd")
        "load" "root"
-       #$(home-shepherd-configuration-file services shepherd))))
+       #$(home-shepherd-configuration-file config))))
 
 (define (ensure-shepherd-gexp config)
   #~(if (file-exists?
@@ -130,6 +136,9 @@ as shepherd package."
         #$(reload-configuration-gexp config)
         #$(launch-shepherd-gexp config)))
 
+(define (shepherd-xdg-configuration-files config)
+  `(("shepherd/init.scm" ,(home-shepherd-configuration-file config))))
+
 (define-public home-shepherd-service-type
   (service-type (name 'home-shepherd)
                 (extensions
@@ -137,6 +146,9 @@ as shepherd package."
                         home-run-on-first-login-service-type
                         launch-shepherd-gexp)
                        (service-extension
+                        home-xdg-configuration-files-service-type
+                        shepherd-xdg-configuration-files)
+                       (service-extension
                         home-activation-service-type
                         ensure-shepherd-gexp)
                        (service-extension
diff --git a/gnu/local.mk b/gnu/local.mk
index f7fcc8902f..bad2714cf0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -972,7 +972,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/cling-use-shared-library.patch		\
   %D%/packages/patches/clucene-pkgconfig.patch			\
   %D%/packages/patches/cmake-curl-certificates.patch		\
-  %D%/packages/patches/cmh-support-fplll.patch      		\
+  %D%/packages/patches/cmake-curl-certificates-3.24.patch	\
   %D%/packages/patches/coda-use-system-libs.patch		\
   %D%/packages/patches/collectd-5.11.0-noinstallvar.patch		\
   %D%/packages/patches/containerd-create-pid-file.patch		\
@@ -1044,9 +1044,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-telega-test-env.patch		\
   %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch	\
   %D%/packages/patches/emacs-yasnippet-fix-tests.patch	\
+  %D%/packages/patches/emacs-kv-fix-tests.patch	\
   %D%/packages/patches/enjarify-setup-py.patch			\
   %D%/packages/patches/enlightenment-fix-setuid-path.patch	\
-  %D%/packages/patches/eog-update-libportal-usage.patch		\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/esmtp-add-lesmtp.patch		\
   %D%/packages/patches/eudev-rules-directory.patch		\
@@ -1203,11 +1203,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/gmp-arm-asm-nothumb.patch		\
   %D%/packages/patches/gmp-faulty-test.patch			\
   %D%/packages/patches/gnash-fix-giflib-version.patch	        \
-  %D%/packages/patches/gnome-boxes-add-guix-logo.patch		\
-  %D%/packages/patches/gnome-builder-update-libportal.patch		\
   %D%/packages/patches/gnome-control-center-libexecdir.patch	\
   %D%/packages/patches/gnome-online-miners-tracker-3.patch	\
-  %D%/packages/patches/gnome-screenshot-meson-0.60.patch	\
   %D%/packages/patches/gnome-settings-daemon-gc.patch		\
   %D%/packages/patches/gnome-session-support-elogind.patch	\
   %D%/packages/patches/gnome-todo-libportal.patch		\
@@ -1217,7 +1214,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/gnutls-skip-trust-store-test.patch	\
   %D%/packages/patches/gnutls-cross.patch			\
   %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
+  %D%/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch \
   %D%/packages/patches/gobject-introspection-cc.patch		\
+  %D%/packages/patches/gobject-introspection-cc-1.72.patch	\
   %D%/packages/patches/gobject-introspection-girepository.patch	\
   %D%/packages/patches/go-fix-script-tests.patch			\
   %D%/packages/patches/go-github-com-golang-snappy-32bit-test.patch \
@@ -1235,7 +1234,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
   %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/grub-setup-root.patch			\
-  %D%/packages/patches/gspell-dash-test.patch			\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-2.2-skip-so-test.patch             \
@@ -1280,7 +1278,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/hdf-eos5-remove-gctp.patch		\
   %D%/packages/patches/hdf-eos5-fix-szip.patch			\
   %D%/packages/patches/hdf-eos5-fortrantests.patch		\
-  %D%/packages/patches/hedgewars-network-bsd.patch		\
   %D%/packages/patches/helm-fix-gcc-9-build.patch		\
   %D%/packages/patches/http-parser-CVE-2020-8287.patch		\
   %D%/packages/patches/htslib-for-stringtie.patch		\
@@ -1388,6 +1385,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/libcroco-CVE-2020-12825.patch		\
   %D%/packages/patches/libcyaml-libyaml-compat.patch		\
   %D%/packages/patches/libexpected-nofetch.patch                \
+  %D%/packages/patches/libgda-cve-2021-39359.patch		\
+  %D%/packages/patches/libgda-fix-build.patch			\
+  %D%/packages/patches/libgda-fix-missing-initialization.patch	\
+  %D%/packages/patches/libgda-skip-postgresql-tests.patch	\
   %D%/packages/patches/libgit2-mtime-0.patch			\
   %D%/packages/patches/libgnome-encoding.patch			\
   %D%/packages/patches/libgnomeui-utf8.patch			\
@@ -1518,7 +1519,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/musl-cross-locale.patch			\
   %D%/packages/patches/mutt-store-references.patch		\
-  %D%/packages/patches/nautilus-add-libportal-gtk3.patch	\
   %D%/packages/patches/ncompress-fix-softlinks.patch		\
   %D%/packages/patches/ncftp-reproducible.patch			\
   %D%/packages/patches/netcdf-date-time.patch			\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 9206157b0a..7bc6f67ded 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -325,14 +325,14 @@ interface and is based on GNU Guile.")
 (define-public shepherd-0.9
   (package
     (inherit shepherd)
-    (version "0.9.1")
+    (version "0.9.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/shepherd/shepherd-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0l2arn6gsyw88xk9phxnyplvv1mn8sqp3ipgyyb0nszdzvxlgd36"))
+                "0mcby3ygh3bpns44rb1vnk8bz2km4nlw092nrcgkm3nkqfmbp4p1"))
               (modules '((guix build utils)))
               (snippet
                ;; Avoid continuation barriers so (@ (fibers) sleep) can be
@@ -3817,13 +3817,13 @@ you are running, what theme or icon set you are using, etc.")
 (define-public hyfetch
   (package
     (name "hyfetch")
-    (version "1.0.2")
+    (version "1.4.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "HyFetch" version))
         (sha256
-          (base32 "1bfkycdhsyzkk6q24gdy1xwvyz0rvkr7xk2khbn74b3nk6kp83r2"))))
+          (base32 "18s8r63aqyah34vbahccgkiqw4008i2w5kvhqd9s8bdd4yvsrn4n"))))
     (build-system python-build-system)
     (inputs (list python-hypy-utils python-typing-extensions))
     (arguments `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index e5bd12eeb8..87fcca746b 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -294,34 +294,33 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
 
 (define-public cmh
   (package
-   (name "cmh")
-   (version "1.1.0")
-   (source (origin
-            (method url-fetch)
-            ;; Git repo at <https://gitlab.inria.fr/cmh/cmh>.
-            (uri (string-append "http://www.multiprecision.org/downloads/cmh-"
-                                version ".tar.gz"))
-            (sha256
-             (base32
-              "1ws2yhzxmm2l5xqqqcjcimmg40f9qq5l9i6d4i5434an9v9s8531"))
-             (patches (search-patches "cmh-support-fplll.patch"))))
-   (build-system gnu-build-system)
-   (inputs
-     (list gmp
-           mpfr
-           mpc
-           mpfrcx
-           fplll
-           pari-gp))
-   (synopsis "Igusa class polynomial computations")
-   (description
-    "The CMH software computes Igusa (genus 2) class polynomials, which
+    (name "cmh")
+    (version "1.1.1")
+    (source (origin
+              (method url-fetch)
+              ;; Git repo at <https://gitlab.inria.fr/cmh/cmh>.
+              (uri (string-append
+                    "https://www.multiprecision.org/downloads/cmh-" version
+                    ".tar.gz"))
+              (sha256
+               (base32
+                "0nadvqfmidgks1s7aljsf8dp32pz7vjaxyaym36m9bx4zr8msk91"))))
+    (build-system gnu-build-system)
+    (inputs (list gmp
+                  mpfr
+                  mpc
+                  mpfrcx
+                  fplll
+                  pari-gp))
+    (synopsis "Igusa class polynomial computations")
+    (description
+     "The CMH software computes Igusa (genus 2) class polynomials, which
 parameterize the CM points in the moduli space of 2-dimensional abelian
 varieties, i.e. Jacobians of hyperelliptic curves.
 It can also be used to compute theta constants at arbitrary
 precision.")
-   (license license:gpl3+)
-   (home-page "http://www.multiprecision.org/cmh/home.html")))
+    (license license:gpl3+)
+    (home-page "https://www.multiprecision.org/cmh/home.html")))
 
 (define-public giac
   (package
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 080db6acfb..8c447b0921 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -37,6 +37,8 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages less)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -439,3 +441,45 @@ in Bash, but you can use it to test any UNIX program.")
 function interface (FFI) directly in your shell.  In other words, it allows
 you to call routines in shared libraries from within Bash.")
     (license license:expat)))
+
+(define-public blesh
+  (package
+    (name "blesh")
+    (version "0.4.0-devel2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/akinomyoga/ble.sh")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02fdjyh4x6wr5hg3i86nsxhz8ysgjrvvxdmk6pqr0lm8ngw9p3sh"))))
+    (arguments
+     (list #:make-flags #~(list (string-append "PREFIX="
+                                               #$output))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'pretend-contrib-.git-exists
+                          (lambda _
+                            (mkdir-p "contrib/.git")))
+                        (add-after 'unpack 'make-readlink-work
+                          (lambda _
+                            (substitute* "ble.pp"
+                              (("PATH=/bin:/usr/bin readlink")
+                               (search-input-file %build-inputs
+                                                  "/bin/readlink")))))
+                        (delete 'configure) ;no configure
+                        (add-before 'check 'use-LANG-for-tests
+                          (lambda _
+                            (setenv "LANG"
+                                    (getenv "LC_ALL"))
+                            (unsetenv "LC_ALL"))))))
+    (build-system gnu-build-system)
+    (native-inputs (list less))
+    (home-page "https://github.com/akinomyoga/ble.sh")
+    (synopsis "Bash Line Editor")
+    (description
+     "Bash Line Editor (ble.sh) is a command line editor written in pure Bash
+which replaces the default GNU Readline.  It adds syntax highlighting, auto
+suggestions, vim modes, and more to Bash interactive sessions.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 5c377a7d59..46278d326c 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -4708,6 +4708,35 @@ and the assessment of differential expression.  The analysis methods apply to
 different technologies, including microarrays, RNA-seq, and quantitative PCR.")
     (license license:gpl2+)))
 
+(define-public r-made4
+  (package
+    (name "r-made4")
+    (version "1.70.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "made4" version))
+              (sha256
+               (base32
+                "1wrv9d2mp799qzy1bsaj4w7wx12gdhfv9qvklz7z41vfz59d6bq5"))))
+    (properties `((upstream-name . "made4")))
+    (build-system r-build-system)
+    (propagated-inputs
+     (list r-ade4
+           r-biobase
+           r-gplots
+           r-rcolorbrewer
+           r-scatterplot3d
+           r-summarizedexperiment))
+    (native-inputs (list r-knitr))
+    (home-page "http://www.hsph.harvard.edu/aedin-culhane/")
+    (synopsis "Multivariate analysis of microarray data using ADE4")
+    (description
+     "This is a package for multivariate data analysis and graphical display
+of microarray data.  Functions are included for supervised dimension
+reduction (between group analysis) and joint dimension reduction of two
+datasets (coinertia analysis).")
+    (license license:artistic2.0)))
+
 (define-public r-methylkit
   (package
     (name "r-methylkit")
@@ -16759,6 +16788,25 @@ with a nested autoregressive correlated error structure for the effect of
 interest on transformed methylation proportions.")
     (license license:expat)))
 
+(define-public r-omicade4
+  (package
+    (name "r-omicade4")
+    (version "1.36.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "omicade4" version))
+              (sha256
+               (base32
+                "1l7w3sczsimg640klq8navgdcwjj090wjqd40n4mw76pny2xj2lj"))))
+    (properties `((upstream-name . "omicade4")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-ade4 r-biobase r-made4))
+    (home-page "https://bioconductor.org/packages/omicade4")
+    (synopsis "Multiple co-inertia analysis of omics datasets")
+    (description
+     "This package performes multiple co-inertia analysis of omics datasets.")
+    (license license:gpl2)))
+
 (define-public r-omnipathr
   (package
     (name "r-omnipathr")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index affd58a253..f35412d4ec 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -14984,7 +14984,7 @@ international community.")
 (define-public kraken2
   (package
     (name "kraken2")
-    (version "2.1.1")
+    (version "2.1.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -14993,7 +14993,7 @@ international community.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0h7a7vygd7y5isbrnc6srwq6xj1rmyd33pm8mmcgfkmlxlg5vkg3"))))
+                "1pl6ml1ldg2hnhy8ps56q0fl1wq3g91qkhinj6pb4yjjhv1rxsjf"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #false                  ; there are none
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 9d4cf63a67..3ee8fd9b01 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -56,6 +56,7 @@
 
 (define-module (gnu packages check)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -2852,7 +2853,7 @@ provides a simple way to achieve this.")
 (define-public umockdev
   (package
     (name "umockdev")
-    (version "0.14.4")
+    (version "0.17.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/martinpitt/umockdev/"
@@ -2860,23 +2861,25 @@ provides a simple way to achieve this.")
                                   "umockdev-" version ".tar.xz"))
               (sha256
                (base32
-                "0xmi24ckpps32k7hc139psgbsnsf4g106sv4l9m445m46amkxggd"))))
-    (build-system gnu-build-system)
+                "1kqkraag5v1jl5qfv0mb3ckm8yq2im21mng08sbs9dh9c9pbyvkc"))))
+    (build-system meson-build-system)
     (arguments
      (list #:phases
            #~(modify-phases %standard-phases
-               (add-after 'unpack 'fix-test
+               (add-after 'unpack 'skip-test-umockdev.c
+                 ;; This test depends on /sys being available, among other
+                 ;; things.
                  (lambda _
-                   (substitute* "tests/test-umockdev.c"
-                     (("/run") "/tmp"))))
+                   (call-with-output-file "tests/test-umockdev.c"
+                     (lambda (port)
+                       (format port "int main(void) { return 0; }")))))
                ;; Avoid having to set 'LD_LIBRARY_PATH' to use umockdev
                ;; via introspection.
                (add-after 'unpack 'absolute-introspection-library
-                 (lambda _
-                   (substitute* "Makefile.in"
-                     (("g-ir-compiler -l libumockdev")
-                      (string-append "g-ir-compiler -l " #$output
-                                     "/lib/libumockdev")))))
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (substitute* "meson.build"
+                     (("libumockdev.so.0" all)
+                      (string-append #$output "/lib/" all)))))
                (add-after 'install 'absolute-filenames
                  (lambda* (#:key inputs #:allow-other-keys)
                    ;; 'patch-shebangs' will take care of the shebang.
@@ -2885,17 +2888,19 @@ provides a simple way to achieve this.")
                      (("libumockdev")
                       (string-append #$output "/lib/libumockdev"))))))))
     (native-inputs
-     (list vala
-           gobject-introspection
+     (list gobject-introspection
            gtk-doc/stable
            pkg-config
-           ;; For tests.
            python
+           vala
            which))
     (inputs
-     (list bash-minimal ;for umockdev-wrapper
-           coreutils-minimal ;for bin/env
-           glib eudev libgudev))
+     (list bash-minimal                 ;for umockdev-wrapper
+           coreutils-minimal            ;for bin/env
+           eudev
+           glib
+           libgudev
+           libpcap))
     (home-page "https://github.com/martinpitt/umockdev/")
     (synopsis "Mock hardware devices for creating unit tests")
     (description "umockdev mocks hardware devices for creating integration
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 3699f989d8..07fd2375d7 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -317,7 +317,7 @@
   ;; run the Blink performance tests, just remove everything to save ~70MiB.
   '("third_party/blink/perf_tests"))
 
-(define %chromium-version "105.0.5195.102")
+(define %chromium-version "105.0.5195.125")
 (define %ungoogled-revision (string-append %chromium-version "-1"))
 (define %debian-revision "debian/102.0.5005.61-1")
 
@@ -329,7 +329,7 @@
     (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
     (sha256
      (base32
-      "17n06lqzbz19a3fdqbv5wj7s6v3rc0bfshdz8syw0k2gkw3x6ivc"))))
+      "0k16wma9lj9q34xgz377nasnfzcw7wi73l91r41yilvgb3l2fgw8"))))
 
 (define %debian-origin
   (origin
@@ -506,7 +506,7 @@
                                   %chromium-version ".tar.xz"))
               (sha256
                (base32
-                "0qlj6s182d4nv0g76r0pcr1rvvh74pngcv79ml3cbqsir4khbfhw"))
+                "0rhay46fnfffqcpk6c856hj414508fmhda600lz5whcacr25q6r0"))
               (modules '((guix build utils)))
               (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index d4851fa3f2..7f51c02b8a 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
@@ -330,6 +330,24 @@ and workspaces that can be used in the compiler environment of your choice.")
   (package
     (inherit cmake-minimal)
     (name "cmake")
+    (version "3.24.2")
+    (source (origin
+              (inherit (package-source cmake-minimal))
+              (method url-fetch)
+              (uri (string-append "https://cmake.org/files/v"
+                                  (version-major+minor version)
+                                  "/cmake-" version ".tar.gz"))
+              (snippet (match (origin-snippet (package-source cmake-minimal))
+                         (('begin ('define 'preserved-files ('quote x))
+                                  rest ...)
+                          `(begin (define preserved-files
+                                    ',(cons "Utilities/cmelf" x))
+                                  ,@rest))))
+              (sha256
+               (base32
+                "1ny8y2dzc6fww9gzb1ml0vjpx4kclphjihkxagxigprxdzq2140d"))
+              (patches (search-patches "cmake-curl-certificates-3.24.patch"))))
+    (outputs '("out" "doc"))
     (arguments
      (substitute-keyword-arguments (package-arguments cmake-minimal)
        ;; Use cmake-minimal this time.
@@ -367,8 +385,8 @@ and workspaces that can be used in the compiler environment of your choice.")
     ;; Extra inputs required to build the documentation.
     (native-inputs
      (modify-inputs (package-native-inputs cmake-minimal)
-       (append python-sphinx texinfo)))
-    (outputs '("out" "doc"))
+       (append python-sphinx
+               texinfo)))
     (properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
 
 (define-public cmake-minimal-cross
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index 2c7e7ae9c4..029f0d4ba4 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2021 Timmy Douglas <mail@timmydouglas.com>
 ;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -155,7 +156,7 @@ runtime (like runc or crun) for a single container.")
 (define-public libslirp
   (package
     (name "libslirp")
-    (version "4.6.1")
+    (version "4.7.0")
     (source
      (origin
        (method git-fetch)
@@ -163,10 +164,11 @@ runtime (like runc or crun) for a single container.")
              (url "https://gitlab.freedesktop.org/slirp/libslirp")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "1b4cn51xvzbrxd63g6w1033prvbxfxsnsn1l0fa5i311xv28vkh0"))
+        (base32 "0dny8187a8qh6akaa37aa9b5pjxx88f02wh6achp4mygff0ipxba"))
        (file-name (git-file-name name version))))
     (build-system meson-build-system)
-    (inputs
+    (propagated-inputs
+     ;; In Requires of slirp.pc.
      (list glib))
     (native-inputs
      (list pkg-config))
@@ -180,7 +182,7 @@ containers or various tools.")
 (define-public slirp4netns
   (package
     (name "slirp4netns")
-    (version "1.1.12")
+    (version "1.2.0")
     (source
      (origin
        (method git-fetch)
@@ -188,7 +190,7 @@ containers or various tools.")
              (url "https://github.com/rootless-containers/slirp4netns")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "03llv4dlf7qqxwz4zdyk926g4bigfj2gb50glm70ciflpvzs8081"))
+        (base32 "1rlzwp5fx1x3q179j9s2jp02imjag5pgj333z110nrvi7azl22l8"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -322,7 +324,11 @@ configure network interfaces in Linux containers.")
                 (("/usr/local/libexec/cni")
                  (string-append #$(this-package-input "cni-plugins")
                                 "/bin"))
-                (("/usr/bin/crun") (which "crun"))))))))
+                (("/usr/bin/crun") (which "crun")))))
+          (add-after 'install 'install-completions
+            (lambda _
+              (invoke "make" "install.completions"
+                      (string-append "PREFIX=" #$output)))))))
     (inputs
      (list btrfs-progs
            cni-plugins
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 606cd792c1..6289c9520f 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -406,7 +406,7 @@ combination of these streams.")
 (define-public xsimd
   (package
     (name "xsimd")
-    (version "8.1.0")
+    (version "9.0.1")
     (source
      (origin
        (method git-fetch)
@@ -414,7 +414,7 @@ combination of these streams.")
              (url "https://github.com/QuantStack/xsimd")
              (commit version)))
        (sha256
-        (base32 "16b9fdvhhsbs93llbzccgpxjdkj8kfvac3wx0b30i306k5f3maq2"))
+        (base32 "1fcy0djwpwvls6yqxqa82s4l4gvwkqkr8i8bibbb3dm0lqvhnw52"))
        (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
@@ -422,7 +422,7 @@ combination of these streams.")
        #:test-target "xtest"))
     (native-inputs
      (list googletest))
-    (home-page "https://github.com/QuantStack/xsimd")
+    (home-page "https://github.com/xtensor-stack/xsimd")
     (synopsis "C++ wrappers for SIMD intrinsics and math implementations")
     (description
      "xsimd provides a unified means for using @acronym{SIMD, single instruction
@@ -456,12 +456,12 @@ operating on batches.")
 library for SIMD (Single Instruction, Multiple Data) with runtime dispatch.")
     (license license:asl2.0)))
 
-(define-public xsmimd-benchmark
+(define-public xsimd-benchmark
   (package
     (inherit xsimd)
     (name "xsimd-benchmark")
     (arguments
-     `(#:configure-flags (list "-DBUILD_BENCHMARK=ON")
+     `(#:configure-flags (list "-DBUILD_BENCHMARK=ON" "-DBUILD_EXAMPLES=ON")
        #:tests? #f
        #:phases (modify-phases %standard-phases
                   (add-after 'unpack 'remove-march=native
@@ -470,9 +470,11 @@ library for SIMD (Single Instruction, Multiple Data) with runtime dispatch.")
                         (("-march=native") ""))))
                   (replace 'install
                     (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Install nothing but the executable.
+                      ;; Install nothing but the executables.
                       (let ((out (assoc-ref outputs "out")))
                         (install-file "benchmark/benchmark_xsimd"
+                                      (string-append out "/bin"))
+                        (install-file "examples/mandelbrot"
                                       (string-append out "/bin"))))))))
     (synopsis "Benchmark of the xsimd library")
 
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 3002b20181..123c677938 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -971,6 +971,28 @@ size and can be easily tested locally before being sent to a remote.")
 the system clipboards.")
     (license license:gpl3)))
 
+(define-public r-clvalid
+  (package
+    (name "r-clvalid")
+    (version "0.7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "clValid" version))
+              (sha256
+               (base32
+                "18aiyjhnh5mfdxbzns4cy0r8bymfikhwkybpn4g04qhli5ls8z83"))))
+    (properties `((upstream-name . "clValid")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-class r-cluster))
+    (home-page "https://cran.r-project.org/package=clValid")
+    (synopsis "Validation of clustering results")
+    (description
+     "Statistical and biological validation of clustering results.  This
+package implements Dunn Index, Silhouette, Connectivity, Stability, BHI and
+BSI.  Further information can be found in Brock, G et al. (2008) <doi:
+10.18637/jss.v025.i04>.")
+    (license license:lgpl3)))
+
 (define-public r-dlm
   (package
     (name "r-dlm")
@@ -6819,6 +6841,30 @@ Rscript front-end and facilitates turning an R script into an executable
 script.")
     (license license:gpl3+)))
 
+(define-public r-aricode
+  (package
+    (name "r-aricode")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "aricode" version))
+              (sha256
+               (base32
+                "0772l9gyrih48l1kymih0mb7szjqqnwcm4lzj0yzp4cs8l2mdf4f"))))
+    (properties `((upstream-name . "aricode")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-matrix r-rcpp))
+    (home-page "https://github.com/jchiquet/aricode")
+    (synopsis "Efficient computations of standard clustering comparison measures")
+    (description
+     "This package implements an efficient O(n) algorithm based on
+bucket-sorting for fast computation of standard clustering comparison
+measures.  Available measures include @dfn{adjusted Rand index} (ARI),
+@dfn{normalized information distance} (NID), @dfn{normalized mutual
+information} (NMI), @dfn{adjusted mutual information} (AMI), @dfn{normalized
+variation information} (NVI) and entropy.")
+    (license license:gpl3+)))
+
 (define-public r-debugme
   (package
     (name "r-debugme")
@@ -7974,6 +8020,29 @@ sample Robust Rank-Order Distributional Test.")
 exponential, logarithm, square root, and related quantities.")
     (license license:gpl2+)))
 
+(define-public r-exposition
+  (package
+    (name "r-exposition")
+    (version "2.8.23")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "ExPosition" version))
+              (sha256
+               (base32
+                "0x9400ggmgrnaish0cfgnyvw549g4ibfv9aj6vzq7j68n58vq405"))))
+    (properties `((upstream-name . "ExPosition")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-prettygraphs))
+    (home-page "https://cran.r-project.org/package=ExPosition")
+    (synopsis "Exploratory analysis with the singular value decomposition")
+    (description
+     "This package provides a variety of descriptive multivariate analyses
+with the singular value decomposition, such as principal components analysis,
+correspondence analysis, and multidimensional scaling.  See An ExPosition of
+the Singular Value Decomposition in R (Beaton et al 2014)
+<doi:10.1016/j.csda.2013.11.006>.")
+    (license license:gpl2)))
+
 (define-public r-complexplus
   (package
     (name "r-complexplus")
@@ -9064,6 +9133,30 @@ and rows.  The fst format allows for random access of stored data and
 compression with the LZ4 and ZSTD compressors.")
     (license license:agpl3)))
 
+(define-public r-snftool
+  (package
+    (name "r-snftool")
+    (version "2.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "SNFtool" version))
+              (sha256
+               (base32
+                "05hz230aq5wbzhknxzr4iqv3nqjhbpf66n6bp1rc5h2jgz2yfbwq"))))
+    (properties `((upstream-name . "SNFtool")))
+    (build-system r-build-system)
+    (propagated-inputs (list r-alluvial r-exposition))
+    (home-page "https://cran.r-project.org/package=SNFtool")
+    (synopsis "Similarity network fusion")
+    (description
+     "Similarity Network Fusion takes multiple views of a network and fuses
+them together to construct an overall status matrix.  The input to our
+algorithm can be feature vectors, pairwise distances, or pairwise
+similarities.  The learned status matrix can then be used for retrieval,
+clustering, and classification.")
+    ;; Any version of the GPL
+    (license license:gpl3+)))
+
 (define-public r-snowfall
   (package
    (name "r-snowfall")
@@ -10350,6 +10443,26 @@ from the @code{stats} package, as well as numerous other model classes from
 other add-on packages.")
     (license license:expat)))
 
+(define-public r-prettygraphs
+  (package
+    (name "r-prettygraphs")
+    (version "2.1.6")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "prettyGraphs" version))
+              (sha256
+               (base32
+                "0yjpwxdy9mkj2k33zvd5klyv4ava46i19yls87n0bvf79y90ikpy"))))
+    (properties `((upstream-name . "prettyGraphs")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/package=prettyGraphs")
+    (synopsis "Publication-quality graphics")
+    (description
+     "This package provides simple and crisp publication-quality graphics for
+the ExPosition family of packages.  See An ExPosition of the Singular Value
+Decomposition in R (Beaton et al 2014) <doi:10.1016/j.csda.2013.11.006>.")
+    (license license:gpl2)))
+
 (define-public r-insight
   (package
     (name "r-insight")
diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm
index f0414602bc..a8551c8f9f 100644
--- a/gnu/packages/crates-graphics.scm
+++ b/gnu/packages/crates-graphics.scm
@@ -3582,3 +3582,9 @@ the platform-specific getters provided by winit, or another library.")
     (arguments
      `(#:cargo-development-inputs
        (("rust-resize" ,rust-resize-0.3))))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/crates-gtk.scm b/gnu/packages/crates-gtk.scm
index 316e427522..cfa5de9f2a 100644
--- a/gnu/packages/crates-gtk.scm
+++ b/gnu/packages/crates-gtk.scm
@@ -2232,3 +2232,9 @@ library.")
     (synopsis "Rust binding for webkit-gtk library")
     (description "This crate provides Rust binding for webkit-gtk library.")
     (license license:expat)))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/dezyne.scm b/gnu/packages/dezyne.scm
index 413da49ece..3d89210956 100644
--- a/gnu/packages/dezyne.scm
+++ b/gnu/packages/dezyne.scm
@@ -31,14 +31,14 @@
 (define-public dezyne
   (package
     (name "dezyne")
-    (version "2.16.0")
+    (version "2.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dezyne.org/download/dezyne/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "1x14jpv89dmrldar9g8pighbm68pvm4fvxz81mhjkimgf7kb4hbd"))))
+        (base32 "093kcgvmr1zyrfi02y0vzbfl4llrvlvjxjp9iczpdv34lasqp621"))))
     (inputs (list bash-minimal
                   guile-3.0-latest
                   guile-json-4
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 1a9c946223..5aff012adb 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -5045,18 +5045,20 @@ mode, which displays information about Elasticsearch clusters.")
     (license license:gpl3+)))
 
 (define-public emacs-expand-region
-  (package
+  (let ((commit "c5c4362741deebb0985a8a29f9b8b0e25160764a")
+        (revision "1"))
+    (package
     (name "emacs-expand-region")
-    (version "0.11.0")
+    (version (git-version "0.11.0" revision commit))
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/magnars/expand-region.el")
-             (commit version)))
+             (commit commit)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0h40dhc3kn8fq86xnwi5lz7ql8my8737y7wkqr897p15y90swr35"))))
+        (base32 "17h58v5mnggbrwrp61cwkqx8hzazkdqyz9p6s1hl9g2hys7zkb00"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/magnars/expand-region.el")
     (synopsis "Increase selected region by semantic units")
@@ -5064,7 +5066,7 @@ mode, which displays information about Elasticsearch clusters.")
      "Expand region increases the selected region by semantic units.  Just
 keep pressing the key until it selects what you want.  There's also
 @code{er/contract-region} if you expand too far.")
-    (license license:gpl3+)))
+    (license license:gpl3+))))
 
 (define-public emacs-explain-pause-mode
   (let ((commit "2356c8c3639cbeeb9751744dbe737267849b4b51")
@@ -13326,7 +13328,6 @@ passive voice.")
        #:test-command '("make" "test-dirty")
        #:phases
        (modify-phases %standard-phases
-         (delete 'build)
          (add-before 'check 'make
            (lambda _
              (invoke "make" (string-append "ORGVERSION=" ,version))))
@@ -13399,23 +13400,24 @@ compatible with the Org stable version.")
     (license license:gpl3+)))
 
 (define-public emacs-org-contacts
-  ;;; XXX: Upstream made no release yet.
-  (let ((commit "3d2f39f62aefb0a32d10607703e8b1d4f43821fa")
-        (revision "0"))
+  ;; XXX: Upstream does not tag version bumps. Commit below matches latest
+  ;; version bump.
+  (let ((commit "217ba04c9d638067a6ccb0829cf1885f54c1d568"))
     (package
       (name "emacs-org-contacts")
-      (version (git-version "0" revision commit))
+      (version "1.1")
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/stardiviner/org-contacts.el")
+               (url "https://repo.or.cz/org-contacts")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0a654406w8zd1hbp8ckc975jhl9mi14xzqizzwiki625dymiw5g5"))))
+          (base32 "0f0vjdvx0hffj2xvyrya8yfl77djmzmpxdxsx58ym4lmdvwyb6x3"))))
       (build-system emacs-build-system)
-      (home-page "https://github.com/stardiviner/org-contacts.el")
+      (propagated-inputs (list emacs-org))
+      (home-page "https://repo.or.cz/org-contacts")
       (synopsis "Contacts management system for Org mode")
       (description "Manage your contacts from Org mode.  You can auto
 complete email addresses, export contacts to a vCard file, put birthdays
@@ -14159,6 +14161,34 @@ automatically using existing List-ID headers in your mu database.  Just press
 automatically discovered and presented in recency order.")
       (license license:gpl3+))))
 
+(define-public emacs-mentor
+  (package
+    (name "emacs-mentor")
+    (version "0.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.nongnu.org/nongnu/mentor-"
+                           version ".tar"))
+       (sha256
+        (base32
+         "01zrvfk2njzyzjzkvp5hv5cjl1k1qjrila1ab4bv26gf6bkq5xh3"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     (list emacs-async emacs-xml-rpc))
+    (home-page "https://elpa.nongnu.org/nongnu/mentor.html")
+    (synopsis "Emacs front-end for the rTorrent bittorrent client")
+    (description
+     "Mentor is a GNU Emacs frontend for the rTorrent bittorrent client.
+
+By default, it will start and run rTorrent from within Emacs but can also be
+configured to use an external rTorrent instance over XML-RPC.
+
+This project aims to provide a feature complete and customizable interface,
+that will feel familiar to Emacs users.  Key bindings are chosen to be as
+close to the vanilla rTorrent curses interface as possible.")
+    (license license:gpl3+)))
+
 (define-public emacs-message-view-patch
   (let ((commit "40bc2e554fc1d0b6f0c403192c0a3ceaa019a78d")
         (revision "2"))
@@ -15814,8 +15844,8 @@ lines, and @code{gc} to comment out the target of a motion.")
 ;; Tests for emacs-ansi have a circular dependency with ert-runner, and
 ;; therefore cannot be run
 (define-public emacs-ansi
-  (let ((commit "a41d5cc719297515d85bb5256980cd1204a71b88")
-        (revision "1"))
+  (let ((commit "2367fba7b3b2340364a30cd6de7f3eb6bb9898a3")
+        (revision "2"))
     (package
       (name "emacs-ansi")
       (version (git-version "0.4.1" revision commit))
@@ -15827,10 +15857,8 @@ lines, and @code{gc} to comment out the target of a motion.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "051v8dmji90chwbsyqsqry7h35mksal2j6rgw1kpmjsni86d79y1"))))
+          (base32 "1n7h6l4icm6lks3zpvd83j1fzrnspw19rmz7c96vy7pdh1y4v3p3"))))
       (build-system emacs-build-system)
-      (propagated-inputs
-       (list emacs-dash emacs-s))
       (home-page "https://github.com/rejeep/ansi.el")
       (synopsis "Convert strings to ANSI")
       (description "@code{emacs-ansi} defines functions that turns simple
@@ -16544,33 +16572,31 @@ which avoids some of the issues with using Emacs’s built-in Url library.")
     (license license:gpl3+)))
 
 (define-public emacs-ement
-  (let ((commit "02015eacf682b53baaddf26c8a4046e6ff84d4e8")
-        (revision "3"))
-    (package
-      (name "emacs-ement")
-      (version (git-version "0.1-pre" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/alphapapa/ement.el")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0xnhhzl1si09l7lgh5smgpmxgbkzi8p68dykdgsawqa960w6n1ks"))))
-      (build-system emacs-build-system)
-      (arguments
-       `(#:emacs ,emacs))               ;need libxml support
-      (propagated-inputs
-       (list emacs-plz
-             emacs-svg-lib
-             emacs-taxy
-             emacs-taxy-magit-section
-             emacs-ts))
-      (home-page "https://github.com/alphapapa/ement.el")
-      (synopsis "Matrix client for Emacs")
-      (description "Ement.el is a Matrix client for Emacs.")
-      (license license:gpl3+))))
+  (package
+    (name "emacs-ement")
+    (version "0.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alphapapa/ement.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "075mwlc616rr86zgli36n6r8w09c5cvlk43by0f1xzla5rmiza8r"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:emacs ,emacs))               ;need libxml support
+    (propagated-inputs
+     (list emacs-plz
+           emacs-svg-lib
+           emacs-taxy
+           emacs-taxy-magit-section
+           emacs-ts))
+    (home-page "https://github.com/alphapapa/ement.el")
+    (synopsis "Matrix client for Emacs")
+    (description "Ement.el is a Matrix client for Emacs.")
+    (license license:gpl3+)))
 
 (define-public emacs-rpm-spec-mode
   (let ((commit "c1c38050c48ea330c7cea632b8785d66daeefb2b")
@@ -17634,7 +17660,7 @@ languages while remaining inside the primary Org buffer.")
 (define-public eless
   (package
     (name "eless")
-    (version "0.6")
+    (version "0.7")
     (source
      (origin
        (method git-fetch)
@@ -17643,7 +17669,7 @@ languages while remaining inside the primary Org buffer.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xif339wsc79hsab3l1nnwvy20jg7s1r4akfj4qqi6qxizfhmb52"))))
+        (base32 "01gpzg35v972ik4bimcyhqabjca6sjj41kw2i15xj1k33p4sjqpf"))))
     (build-system copy-build-system)
     (inputs
      (list bash emacs))
@@ -17925,7 +17951,9 @@ formatting rules for that language.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))))
+         "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))
+       (patches
+        (search-patches "emacs-kv-fix-tests.patch"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -25153,7 +25181,7 @@ according to their use.")
 (define-public emacs-detached
   (package
     (name "emacs-detached")
-    (version "0.7")
+    (version "0.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -25162,22 +25190,17 @@ according to their use.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "160h60vrpxslw6y290ndc065cc75dab58aq7kjqash94vkifnii2"))))
+                "190sil04wbnnml7i1nv19xn8fpqwng9xngpsxvmfxj3bzn7slid6"))))
     (arguments
      (list
       #:tests? #t
       #:test-command #~(list "ert-runner")
       #:phases
       #~(modify-phases %standard-phases
-          (add-before 'install 'install-detached-env
-            (lambda _
-              (install-file "detached-env" (string-append #$output "/bin"))))
           (add-after 'unpack 'configure
             (lambda* (#:key inputs #:allow-other-keys)
               (make-file-writable "detached.el")
               (emacs-substitute-variables "detached.el"
-                ("detached-env"
-                 (string-append #$output "/bin/detached-env"))
                 ("detached-dtach-program"
                  (search-input-file inputs "/bin/dtach"))
                 ("detached-shell-program"
@@ -25676,7 +25699,7 @@ processes for Emacs.")
 (define-public emacs-treemacs
   (package
     (name "emacs-treemacs")
-    (version "2.10")
+    (version "3.0")
     (source
      (origin
        (method git-fetch)
@@ -25685,7 +25708,7 @@ processes for Emacs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0wf26wkba89rr7j9vsvkp0jfr49560nbvykaxm9hk7zvhkwlm1np"))))
+        (base32 "0l6pbfrkl0v1iyc43vyhchbcfy7cjhinn8pw07aq4ssh6lxil7kp"))))
     (build-system emacs-build-system)
     (propagated-inputs
      (list emacs-ace-window
@@ -25700,46 +25723,57 @@ processes for Emacs.")
     (inputs
      (list python))
     (arguments
-     `(#:tests? #t
-       #:test-command '("make" "-C" "../.." "test")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-makefile
-           (lambda _
-             (substitute* "Makefile"
-               (("@\\$\\(CASK\\) exec ") "")
-               ;; Guix does not need to prepare dependencies before testing.
-               (("test: prepare") "test:"))))
-         (add-after 'fix-makefile 'chdir-elisp
-           ;; Elisp directory is not in root of the source.
-           (lambda _
-             (chdir "src/elisp")))
-         (add-before 'install 'patch-paths
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (with-directory-excursion "../.." ;treemacs root
-               (chmod "src/elisp/treemacs-core-utils.el" #o644)
-               (emacs-substitute-variables "src/elisp/treemacs-core-utils.el"
-                 ("treemacs-dir"
-                  (string-append (assoc-ref outputs "out") "/")))
-               (chmod "src/elisp/treemacs-icons.el" #o644)
-               (substitute* "src/elisp/treemacs-icons.el"
-                 (("icons/default") "share/emacs-treemacs/images"))
-               (chmod "src/elisp/treemacs-customization.el" #o644)
-               (emacs-substitute-variables "src/elisp/treemacs-customization.el"
-                 ("treemacs-python-executable"
-                  (search-input-file inputs "/bin/python3")))
-               (chmod "src/elisp/treemacs-async.el" #o644)
-               (substitute* "src/elisp/treemacs-async.el"
-                 (("src/scripts") (string-append "share/" ,name "/scripts"))))))
-         (add-after 'install 'install-data
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (with-directory-excursion "../.." ;treemacs root
-                 (copy-recursively "icons/default"
-                                   (string-append out "/share/" ,name "/images"))
-                 (copy-recursively
-                  "src/scripts"
-                  (string-append out "/share/" ,name "/scripts")))))))))
+     (list
+      #:tests? #t
+      #:test-command #~(list "make" "-C" "../.." "test")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-makefile
+            (lambda _
+              (substitute* "Makefile"
+                (("@\\$\\(CASK\\) exec ") "")
+                ;; Guix does not need to prepare dependencies before testing.
+                (("test: prepare") "test:"))))
+          (add-after 'fix-makefile 'chdir-elisp
+            ;; Elisp directory is not in root of the source.
+            (lambda _
+              (chdir "src/elisp")))
+          (add-before 'check 'delete-failing-tests
+            ;; FIXME: 4 tests out of 254 are failing.
+            (lambda _
+              (emacs-batch-edit-file "../../test/treemacs-test.el"
+                '(progn
+                  (goto-char (point-min))
+                  (re-search-forward "describe \"treemacs--parent\"")
+                  (beginning-of-line)
+                  (kill-sexp)
+                  (basic-save-buffer)))))
+          (add-before 'install 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (make-file-writable "treemacs-core-utils.el")
+              (emacs-substitute-variables "treemacs-core-utils.el"
+                ("treemacs-dir" (string-append #$output "/")))
+              (make-file-writable "treemacs-icons.el")
+              (substitute* "treemacs-icons.el"
+                (("icons/default")
+                 (string-append (elpa-directory #$output) "/icons/default")))
+              (make-file-writable "treemacs-customization.el")
+              (emacs-substitute-variables "treemacs-customization.el"
+                ("treemacs-python-executable"
+                 (search-input-file inputs "/bin/python3")))
+              (make-file-writable "treemacs-async.el")
+              (substitute* "treemacs-async.el"
+                (("src/scripts")
+                 (string-append (elpa-directory #$output) "/scripts")))))
+          (add-after 'install 'install-data
+            (lambda _
+              (with-directory-excursion "../.." ;treemacs root
+                (copy-recursively
+                 "icons/default"
+                 (string-append (elpa-directory #$output) "/icons/default"))
+                (copy-recursively
+                 "src/scripts"
+                 (string-append (elpa-directory #$output) "/scripts"))))))))
     (home-page "https://github.com/Alexander-Miller/treemacs")
     (synopsis "Emacs tree style file explorer")
     (description
@@ -25761,7 +25795,8 @@ utilities.")
        ("emacs-magit" ,emacs-magit)
        ("emacs-projectile" ,emacs-projectile)
        ("emacs-perspective" ,emacs-perspective)
-       ("emacs-persp-mode" ,emacs-persp-mode)))
+       ("emacs-persp-mode" ,emacs-persp-mode)
+       ("mu" ,mu)))
     (arguments
      (substitute-keyword-arguments
          (package-arguments emacs-treemacs)
@@ -25773,9 +25808,9 @@ utilities.")
 
 (define-public emacs-libyaml
   ;; Upstream made no release so far.
-  (let ((version "0")
+  (let ((version "0.1")
         (revision "1")
-        (commit "703e0d448c7ee24e25b513a3c65980c80e166805"))
+        (commit "961e0d8b9ef47464c049e07be7fcefd3903f8cbc"))
     (package
       (name "emacs-libyaml")
       (version (git-version version revision commit))
@@ -25787,34 +25822,33 @@ utilities.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "08l7pm9v50ykd3fkbm0bh2kcd57cadbc5i9r6rj51vd32w3pl2yl"))))
+          (base32 "1c85583r47yjbpzbjgjzrwzqdlmy229xx9az2r18smcyd9da92c3"))))
       (build-system emacs-build-system)
       (arguments
-       `(#:tests? #f                    ;no test
-         #:modules ((guix build emacs-build-system)
+       (list
+        #:tests? #f                     ;no test
+        #:modules '((guix build emacs-build-system)
                     (guix build emacs-utils)
                     (guix build utils))
-         #:imported-modules (,@%emacs-build-system-modules
+        #:imported-modules `(,@%emacs-build-system-modules
                              (guix build gnu-build-system))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'substitute-libyaml-core-path
-             (lambda* (#:key outputs #:allow-other-keys)
-               (chmod "libyaml.el" #o644)
-               (substitute* "libyaml.el"
-                 (("^\\(require 'libyaml-core\\)")
-                  (string-append "(module-load \"" (assoc-ref outputs "out")
-                                 "/lib/libyaml-core.so\")")))
-               #t))
-           (add-after 'check 'make
-             ;; Run make.
-             (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
-               ;; Compile the shared object file.
-               (apply invoke "make" "all" "CPPFLAGS=" make-flags)
-               ;; Move the file into /lib.
-               (install-file "libyaml-core.so"
-                             (string-append (assoc-ref outputs "out") "/lib"))
-               #t)))))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'substitute-libyaml-core-path
+              (lambda _
+                (make-file-writable "libyaml.el")
+                (substitute* "libyaml.el"
+                  (("^\\(require 'libyaml-core\\)")
+                   (string-append "(module-load \"" #$output
+                                  "/lib/libyaml-core.so\")")))))
+            (add-after 'check 'make
+              ;; Run make.
+              (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                ;; Compile the shared object file.
+                (apply invoke "make" "all" "CPPFLAGS=" make-flags)
+                ;; Move the file into /lib.
+                (install-file "libyaml-core.so"
+                              (string-append #$output "/lib")))))))
       (native-inputs (list libyaml))
       (home-page "https://github.com/syohex/emacs-libyaml")
       (synopsis "Libyaml bindings for Emacs")
@@ -29722,6 +29756,30 @@ It also provides original Helm commands: @command{helm-cider-spec},
 data format @code{edn}.  See @url{https://github.com/edn-format/edn}.")
       (license license:gpl3+))))
 
+(define-public emacs-ednc
+  (let ((commit "940a4adbbeb3b6b1a72270a814d52770dd89a997")
+        (revision "1"))
+    (package
+      (name "emacs-ednc")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sinic/ednc")
+               (commit commit)))
+         (sha256
+          (base32 "1gsx2qgv5xm9r0i0axd4hf31g2rq2m4a1hvnif48g4xb0llss73c"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/sinic/ednc")
+      (synopsis "Emacs Desktop Notification Center")
+      (description
+       "The Emacs Desktop Notification Center (EDNC) is an Emacs package written
+in pure Lisp that implements a Desktop Notifications service according to the
+freedesktop.org specification.  EDNC aspires to be a small, but flexible
+drop-in replacement of standalone daemons like Dunst.")
+      (license license:gpl3+))))
+
 (define-public emacs-helm-clojuredocs
   (let ((commit "5a7f0f2cb401be0b09e73262a1c18265ab9a3cea"))
     (package
@@ -31704,7 +31762,7 @@ and preferred services can easily be configured.")
 (define-public emacs-vertico
   (package
     (name "emacs-vertico")
-    (version "0.26")
+    (version "0.27")
     (source
      (origin
        (method git-fetch)
@@ -31713,7 +31771,7 @@ and preferred services can easily be configured.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "16bv4pfc3k37dqyj1va3cb24db36pn8hsazk3ak4xhrgf2q5l548"))))
+        (base32 "17ip4v0hkv9q2fsnpja24jnf5d5zn4g91553n2s0l5c6gwwpilkp"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -31930,7 +31988,7 @@ for detecting and improve non-idiomatic Clojure source code.")
 (define-public emacs-mint-mode
   (package
     (name "emacs-mint-mode")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method git-fetch)
@@ -31939,7 +31997,7 @@ for detecting and improve non-idiomatic Clojure source code.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1v8mp1k24lzvc0mh9l4k3fwzr4sr87f5p9ahpy7263pcbvcy11vl"))))
+        (base32 "19szk2dhsa0771kbg1ywp0zz8j6akysvwmmrx2bihq8h5j4y23pg"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.txt$")))
     (home-page "https://github.com/creatorrr/emacs-mint-mode")
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 995fbd8dd3..881109bb77 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -45,6 +45,7 @@
   #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (gnu packages)
@@ -55,6 +56,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
@@ -81,6 +83,13 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
+(define (%emacs-modules build-system)
+  (let ((which (build-system-name build-system)))
+    `((guix build ,(symbol-append which '-build-system))
+      (guix build utils)
+      (srfi srfi-1)
+      (ice-9 ftw))))
+
 (define-public emacs
   (package
     (name "emacs")
@@ -129,11 +138,33 @@
     (arguments
      (list
       #:tests? #f                      ; no check target
+      #:modules (%emacs-modules build-system)
       #:configure-flags #~(list "--with-modules"
                                 "--with-cairo"
+                                "--with-native-compilation"
                                 "--disable-build-details")
+      #:make-flags #~(list "NATIVE_FULL_AOT=1")
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'set-paths 'set-libgccjit-path
+            (lambda* (#:key inputs #:allow-other-keys)
+              (define (first-subdirectory/absolute directory)
+                (let ((files (scandir
+                              directory
+                              (lambda (file)
+                                (and (not (member file '("." "..")))
+                                     (file-is-directory? (string-append
+                                                          directory "/"
+                                                          file)))))))
+                  (and (not (null? files))
+                       (string-append directory "/" (car files)))))
+              (let* ((libgccjit-libdir
+                      (first-subdirectory/absolute ;; version
+                       (first-subdirectory/absolute ;; host type
+                        (search-input-directory inputs "lib/gcc")))))
+                (setenv "LIBRARY_PATH"
+                        (string-append (getenv "LIBRARY_PATH")
+                                       ":" libgccjit-libdir)))))
           (add-after 'unpack 'enable-elogind
             (lambda _
               (substitute* "configure.ac"
@@ -164,6 +195,20 @@
                 (("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process)
                  (format #f "(or ~a (tramp-compat-process-running-p ~s))"
                          all (string-append "." process "-real"))))))
+          (add-after 'unpack 'patch-compilation-driver
+            (lambda _
+              (substitute* "lisp/emacs-lisp/comp.el"
+                (("\\(defcustom native-comp-driver-options nil")
+                 (format
+                  #f "(defcustom native-comp-driver-options '(~@{~s~^ ~})"
+                  (string-append
+                   "-B" #$(this-package-input "binutils") "/bin/")
+                  (string-append
+                   "-B" #$(this-package-input "glibc") "/lib/")
+                  (string-append
+                   "-B" #$(this-package-input "libgccjit") "/lib/")
+                  (string-append
+                   "-B" #$(this-package-input "libgccjit") "/lib/gcc/"))))))
           (add-before 'configure 'fix-/bin/pwd
             (lambda _
               ;; Use `pwd', not `/bin/pwd'.
@@ -256,6 +301,14 @@
      (list gnutls
            ncurses
 
+           ;; To "unshadow" ld-wrapper in native builds
+           (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+
+           ;; For native compilation
+           binutils
+           glibc
+           libgccjit
+
            ;; Required for "core" functionality, such as dired and compression.
            coreutils
            gzip
@@ -308,6 +361,9 @@
             (variable "EMACSLOADPATH")
             (files '("share/emacs/site-lisp")))
            (search-path-specification
+            (variable "EMACSNATIVELOADPATH")
+            (files '("lib/emacs/native-site-lisp")))
+           (search-path-specification
             (variable "INFOPATH")
             (files '("share/info")))))
 
@@ -378,11 +434,14 @@ GTK and also enables xwidgets.")))
      (substitute-keyword-arguments (package-arguments emacs)
        ((#:configure-flags flags #~'())
         #~(list "--with-gnutls=no" "--disable-build-details"))
+       ((#:modules _) (%emacs-modules build-system))
        ((#:phases phases)
         #~(modify-phases #$phases
             (delete 'restore-emacs-pdmp)
             (delete 'strip-double-wrap)))))
-    (inputs (list ncurses coreutils gzip))
+    (inputs (list ncurses coreutils gzip
+                  (make-ld-wrapper "ld-wrapper" #:binutils binutils)
+                  binutils glibc libgccjit zlib))
     (native-inputs (list autoconf pkg-config))))
 
 (define-public emacs-xwidgets
@@ -395,6 +454,7 @@ editor (with xwidgets support)")
      (substitute-keyword-arguments (package-arguments emacs)
        ((#:configure-flags flags #~'())
         #~(cons "--with-xwidgets" #$flags))
+       ((#:modules _) (%emacs-modules build-system))
        ((#:phases phases)
         #~(modify-phases #$phases
             (delete 'restore-emacs-pdmp)
@@ -419,6 +479,7 @@ editor (console only)")
      (substitute-keyword-arguments (package-arguments emacs)
        ((#:configure-flags flags #~'())
         #~(delete "--with-cairo" #$flags))
+       ((#:modules _) (%emacs-modules build-system))
        ((#:phases phases)
         #~(modify-phases #$phases
             (delete 'restore-emacs-pdmp)
@@ -437,6 +498,7 @@ editor (without an X toolkit)" )
      (substitute-keyword-arguments (package-arguments emacs)
        ((#:configure-flags flags #~'())
         #~(cons "--with-x-toolkit=no" #$flags))
+       ((#:modules _) (%emacs-modules build-system))
        ((#:phases phases)
         #~(modify-phases #$phases
            (delete 'restore-emacs-pdmp)
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 951bbc8db4..0458ed5f13 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019, 2021 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2020, 2021, 2022 Simon South <simon@simonsouth.net>
@@ -1330,7 +1330,14 @@ these identified regions.
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1d10qxyghz66zp7iqpm8q8rfv9jz9n609gxmfcav1lssmf1dlyk3"))))
+                "1d10qxyghz66zp7iqpm8q8rfv9jz9n609gxmfcav1lssmf1dlyk3"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Make tests compatible with PyYAML 6 and later.
+               '(substitute* '("tests/test_program.py"
+                               "tests/test_fuzzing.py")
+                  (("yaml\\.load\\(test_file\\.read\\(\\)\\)")
+                   "yaml.load(test_file.read(), Loader=yaml.SafeLoader)")))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-pyserial python-pyusb python-tqdm))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index a8b9f1e786..673ea8023b 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2952,7 +2952,15 @@ dynamic calibration of the milling depth.")
                            (("message\\(STATUS \"Using in-tree mimalloc\"\\)")
                             "message(STATUS \"Using guix packaged mimalloc\")")
                            (("add_subdirectory\\(extlib/mimalloc EXCLUDE_FROM_ALL\\)")
-                            "find_package(mimalloc REQUIRED)")))))))
+                            "find_package(mimalloc REQUIRED)"))))
+                     (add-after 'install 'wrap-program
+                       (lambda* (#:key inputs outputs #:allow-other-keys)
+                         (wrap-program (string-append (assoc-ref outputs "out")
+                                                      "/bin/solvespace")
+                           ;; For GtkFileChooserDialog.
+                           `("GSETTINGS_SCHEMA_DIR" =
+                             (,(string-append (assoc-ref inputs "gtk+")
+                                              "/share/glib-2.0/schemas")))))))))
       (inputs (list cairo
                     eigen
                     freetype
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index eae3f76301..4e3b0e05db 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -385,7 +385,7 @@ embedded systems.")
 (define-public python-efl
   (package
     (name "python-efl")
-    (version "1.25.0")
+    (version "1.26.0")
     (source
       (origin
         (method url-fetch)
@@ -393,7 +393,7 @@ embedded systems.")
                             "python/python-efl-" version ".tar.xz"))
         (sha256
          (base32
-          "0bk161xwlz4dlv56r68xwkm8snzfifaxd1j7w2wcyyk4fgvnvq4r"))
+          "0dj6f24n33hkpy0bkdclnzpxhvs8vpaxqaf7hkw0di19pjwrq25h"))
         (modules '((guix build utils)))
         ;; Remove files generated by Cython
         (snippet
@@ -404,8 +404,7 @@ embedded systems.")
                           (when (file-exists? generated-file)
                             (delete-file generated-file))))
                       (find-files "efl" "\\.pyx$"))
-            (delete-file "efl/eo/efl.eo_api.h")
-            #t))))
+            (delete-file "efl/eo/efl.eo_api.h")))))
     (build-system python-build-system)
     (arguments
      '(#:phases
@@ -418,20 +417,18 @@ embedded systems.")
           (lambda _
             (setenv "CFLAGS"
                     (string-append "-I" (assoc-ref %build-inputs "python-dbus")
-                                   "/include/dbus-1.0"))
-            #t))
+                                   "/include/dbus-1.0"))))
         (add-before 'check 'set-environment
           (lambda _
             ;; Some tests require write access to HOME.
             (setenv "HOME" "/tmp")
             ;; These tests try to connect to the internet.
             (delete-file "tests/ecore/test_09_file_download.py")
-            (delete-file "tests/ecore/test_11_con.py")
-            #t)))))
+            (delete-file "tests/ecore/test_11_con.py"))))))
     (native-inputs
      (list pkg-config python-cython))
     (inputs
-     (list efl python-dbus))
+     (list efl python-dbus python-packaging))
     (home-page "https://www.enlightenment.org/")
     (synopsis "Python bindings for EFL")
     (description
diff --git a/gnu/packages/esolangs.scm b/gnu/packages/esolangs.scm
index 81906dac15..0651dda1b0 100644
--- a/gnu/packages/esolangs.scm
+++ b/gnu/packages/esolangs.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
 ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -99,6 +101,24 @@ whenever possible to the extent that the above points are not compromized.
       (home-page "http://lolcode.org/")
       (license license:gpl3+))))
 
+(define-public folders
+  (package
+    (name "folders")
+    (version "0.0.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "Folders" version))
+        (sha256
+          (base32 "0qh80qx7sjx0zii1hf8fm853d9rcg4rginm6v4gpp0hgn2a4q4gh"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/SinaKhalili/Folders.py")
+    (synopsis "Structural programming language")
+    (description "Folders is a programming language, in which programs
+are encoded as (nested) directories.  Note that the switches you pass to
+@command{du} may affect your score when code golfing.")
+    (license license:expat)))
+
 (define-public shakespeare-spl
   (package
     (name "shakespeare-spl")
diff --git a/gnu/packages/fcitx.scm b/gnu/packages/fcitx.scm
index 53680058c0..5741b8d622 100644
--- a/gnu/packages/fcitx.scm
+++ b/gnu/packages/fcitx.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module ((guix licenses) #:select (gpl2+ bsd-3))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
@@ -150,55 +152,55 @@ by the different predictive algorithms.")
 (define-public fcitx
   (package
     (name "fcitx")
-    (version "4.2.9.8")
+    (version "4.2.9.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.fcitx-im.org/fcitx/"
+              (uri (string-append "https://download.fcitx-im.org/fcitx/"
                                   "fcitx-" version "_dict.tar.xz"))
               (sha256
                (base32
-                "1iik80l7g8yk9iwsls6nl9whwgm0sj8i7s6s0bz4c5anl35iaddw"))))
+                "0x5980l7ry34scvfdwc330d9nxv3id9jj9wcl7bvqjkp32gz3aj5"))))
     (build-system cmake-build-system)
     (outputs '("out" "gtk2" "gtk3"))
     (arguments
-     `(#:configure-flags
-       (list "-DENABLE_TEST=ON"
-             (string-append "-DXKB_RULES_XML_FILE="
-                            (assoc-ref %build-inputs "xkeyboard-config")
-                            "/share/X11/xkb/rules/evdev.xml")
-             "-DENABLE_GTK2_IM_MODULE=ON"
-             "-DENABLE_GTK3_IM_MODULE=ON"
-             (string-append "-DGTK2_IM_MODULEDIR="
-                            (assoc-ref %outputs "gtk2")
-                            "/lib/gtk-2.0/2.10.0/immodules")
-             (string-append "-DGTK3_IM_MODULEDIR="
-                            (assoc-ref %outputs "gtk3")
-                            "/lib/gtk-3.0/3.0.0/immodules")
-             ;; XXX: Enable GObject Introspection and Qt4 support.
-             "-DENABLE_GIR=OFF"
-             "-DENABLE_QT=OFF"
-             "-DENABLE_QT_IM_MODULE=OFF")))
+     (list
+      #:configure-flags
+      #~(list "-DENABLE_TEST=ON"
+              (string-append "-DXKB_RULES_XML_FILE="
+                             (search-input-file
+                              %build-inputs "share/X11/xkb/rules/evdev.xml"))
+              "-DENABLE_GTK2_IM_MODULE=ON"
+              "-DENABLE_GTK3_IM_MODULE=ON"
+              (string-append "-DGTK2_IM_MODULEDIR="
+                             #$output:gtk2
+                             "/lib/gtk-2.0/2.10.0/immodules")
+              (string-append "-DGTK3_IM_MODULEDIR="
+                             #$output:gtk3
+                             "/lib/gtk-3.0/3.0.0/immodules")
+              ;; XXX: Enable GObject Introspection and Qt4 support.
+              "-DENABLE_GIR=OFF"
+              "-DENABLE_QT=OFF"
+              "-DENABLE_QT_IM_MODULE=OFF")))
     (native-inputs
-     `(("doxygen"    ,doxygen)
-       ("extra-cmake-modules"
-        ;; XXX: We can't simply #:use-module due to a cycle somewhere.
-        ,(module-ref
-          (resolve-interface '(gnu packages kde-frameworks))
-          'extra-cmake-modules))
-       ("glib:bin"   ,glib "bin")       ; for glib-genmarshal
-       ("pkg-config" ,pkg-config)))
+     (list doxygen
+           ;; XXX: We can't simply #:use-module due to a cycle somewhere.
+           (module-ref
+            (resolve-interface '(gnu packages kde-frameworks))
+            'extra-cmake-modules)
+           `(,glib "bin")               ; for glib-genmarshal
+           pkg-config))
     (inputs
-     `(("dbus"             ,dbus)
-       ("enchant"          ,enchant-1.6)
-       ("gettext"          ,gettext-minimal)
-       ("gtk2"             ,gtk+-2)
-       ("gtk3"             ,gtk+)
-       ("icu4c"            ,icu4c)
-       ("iso-codes"        ,iso-codes)
-       ("json-c"           ,json-c)
-       ("libxkbfile"       ,libxkbfile)
-       ("libxml2"          ,libxml2)
-       ("xkeyboard-config" ,xkeyboard-config)))
+     (list dbus
+           enchant-1.6
+           gettext-minimal
+           gtk+-2
+           gtk+
+           icu4c
+           iso-codes
+           json-c
+           libxkbfile
+           libxml2
+           xkeyboard-config))
     (home-page "https://fcitx-im.org")
     (synopsis "Input method framework")
     (description
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 849f9aba99..f8bacc2fe8 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -1639,7 +1639,7 @@ a client based on Qt.  This is a fork of Bitcoin Core.")
 (define-public libofx
   (package
     (name "libofx")
-    (version "0.9.15")
+    (version "0.10.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1648,14 +1648,15 @@ a client based on Qt.  This is a fork of Bitcoin Core.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jx56ma351p8af8dvavygjwf6ipa7qbgq7bpdsymwj27apdnixfy"))))
+                "1k3ygavyb9b3f1ra62dsa46iiia0a1588yn3zy7bh7w4vfcrbd6d"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:parallel-build? #f             ;fails with -j64
-       #:configure-flags
-       (list (string-append "--with-opensp-includes="
-                            (assoc-ref %build-inputs "opensp")
-                            "/include/OpenSP"))))
+     (list
+      #:parallel-build? #f              ;fails with -j64
+      #:configure-flags
+      #~(list (string-append "--with-opensp-includes="
+                             (search-input-directory %build-inputs
+                                                     "include/OpenSP")))))
     (native-inputs
      (list autoconf
            automake
@@ -1664,9 +1665,9 @@ a client based on Qt.  This is a fork of Bitcoin Core.")
            libtool
            pkg-config))
     (inputs
-     `(("curl" ,curl)
-       ("libxml++-2" ,libxml++-2)
-       ("opensp" ,opensp)))
+     (list curl
+           libxml++-2
+           opensp))
     (home-page "http://libofx.sourceforge.net/")
     (synopsis "Library supporting the Open Financial Exchange format")
     (description
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 7a23aa8552..edcd888f73 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -42,7 +42,7 @@
 ;;; Copyright © 2021 Sergiu Ivanov <sivanov@colimite.fr>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
-;;; Copyright © 2021 Taiju HIGASHI <higashi@taiju.info>
+;;; Copyright © 2021, 2022 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2022 Kitzman <kitzman@disroot.org>
 ;;; Copyright © 2021 Wamm K. D. <jaft.r@outlook.com>
@@ -1993,7 +1993,7 @@ formatting.")
 (define-public font-plemoljp
   (package
     (name "font-plemoljp")
-    (version "1.2.2")
+    (version "1.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2001,7 +2001,7 @@ formatting.")
                     "v" version "/PlemolJP_v" version ".zip"))
               (sha256
                (base32
-                "03cwzkqg09c87lmsx9xfzdrlgjml93bhhp1dqq3qkpdfww30wkaw"))))
+                "0pkkys5kl5s79shd1jmwfyk469ih8cymqb4vjwdadj52kzq4m9z6"))))
     (build-system font-build-system)
     (home-page "https://github.com/yuru7/PlemolJP")
     (synopsis "Plex Mono Language JP")
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 393ab30f59..bedd8ead8c 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -9,11 +9,10 @@
 ;;; Copyright © 2017, 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org>
 ;;;
@@ -145,7 +144,15 @@ them as it goes.")
        (method url-fetch)
        (uri (pypi-uri "afdko" version))
        (sha256
-        (base32 "171r9f7n8fgz37dkcgpzj508lxfafcyzzx43ps12j1z2nk1sk905"))))
+        (base32 "171r9f7n8fgz37dkcgpzj508lxfafcyzzx43ps12j1z2nk1sk905"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            (with-directory-excursion "c/makeotf/lib/hotconv"
+              ;; Delete ANTLR-generated code.
+              (for-each delete-file
+                        (find-files
+                         "." "Feat(Parser|Lexer).*\\.(h|cpp|interp|tokens)$")))))))
     (build-system python-build-system)
     (arguments
      (list
@@ -173,6 +180,17 @@ them as it goes.")
               (substitute* "c/makeotf/lib/hotconv/CMakeLists.txt"
                 (("antlr4_static")
                  "antlr4-runtime"))))
+          (add-after 'unpack 'regenerate-hotconv-grammar
+            (lambda _
+              (let ((antlr-version #$(package-version
+                                      (this-package-native-input "antlr4"))))
+                (with-directory-excursion "c/makeotf/lib/hotconv"
+                  (substitute* "BuildGrammar.py"
+                    (("antlr_version = .*")
+                     (string-append "antlr_version = \""
+                                    antlr-version
+                                    "\"")))
+                  (invoke "python" "BuildGrammar.py")))))
           ;; The test suite expects the commands to be Python rather than
           ;; shell scripts, so move the wrap phase after the tests.
           (delete 'wrap)
@@ -195,7 +213,12 @@ them as it goes.")
                               `("PATH" prefix (,bindir))))
                           commands)))))))
     (native-inputs
-     (list ninja python-pytest python-scikit-build python-setuptools-scm
+     (list antlr4
+           openjdk                      ;required by antlr4
+           ninja
+           python-pytest
+           python-scikit-build
+           python-setuptools-scm
            python-wheel))
     (inputs (list java-antlr4-runtime-cpp `(,util-linux "lib")))
     (propagated-inputs
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 45188222fc..2551c88761 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -940,6 +940,48 @@ backends, PackageKit can perform these tasks using the appropriate package
 manager for the current system.")
     (license license:gpl2+)))
 
+(define-public python-libevdev
+  (package
+    (name "python-libevdev")
+    (version "0.11")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "libevdev" version))
+              (sha256
+               (base32
+                "03snix86j0angq0lydp29f8833clxq8h0x4spmh8lj7j9mm01jp9"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-dlopen-calls
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "libevdev/_clib.py"
+                (("libevdev.so.2")
+                 (search-input-file inputs "lib/libevdev.so.2")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "pytest" "-vv" "test")))))))
+    (native-inputs (list python-pytest))
+    (inputs (list libevdev))
+    (home-page "https://gitlab.freedesktop.org/libevdev/python-libevdev")
+    (synopsis "Python wrapper for libevdev")
+    (description "This package provides a Python wrapper around
+@code{libevdev}, taking advantage of @code{libevdev}'s advanced event
+handling.  Documentation is available at
+@url{https://python-libevdev.readthedocs.io/en/latest/}.
+@code{libevdev} makes it easy to:
+@itemize
+@item read and parse events from an input device;
+@item create a virtual input device and make it send events;
+@item duplicate an existing device and modify the event stream.
+@end itemize
+For information about libevdev, see:
+@url{https://freedesktop.org/wiki/Software/libevdev/}.")
+    (license license:expat)))
+
 (define-public python-pyxdg
   (package
     (name "python-pyxdg")
@@ -1080,7 +1122,6 @@ protocol either in Wayland core, or some other protocol in wayland-protocols.")
         . "https://wayland.freedesktop.org/releases.html")))
     (license license:expat)))
 
-;;; This is just a temporary package that should be deleted
 (define-public wayland-protocols-next
   (package
     (inherit wayland-protocols)
@@ -1514,12 +1555,14 @@ message bus.")
            python-dbusmock
            python-pygobject))
     (inputs
-     (list coreutils-minimal
+     (list bash-minimal
+           coreutils-minimal
            dbus
            elogind
            shadow))
     (propagated-inputs
-     (list polkit))                     ; listed in Requires.private
+     ;; accountsservice.pc 'Requires' these:
+     (list glib polkit))
     (home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
     (synopsis "D-Bus interface for user account query and manipulation")
     (description
@@ -1606,18 +1649,17 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
       #:configure-flags
       #~(list (string-append "--with-udev-base-dir=" #$output "/lib/udev"))))
     (native-inputs
-     (list gettext-minimal
-           `(,glib "bin") ; for glib-mkenums
+     (list dbus
+           gettext-minimal
            gobject-introspection
+           `(,glib "bin")               ;for glib-mkenums
            pkg-config
-           vala
-           ;; For testing.
-           dbus
            python
            python-dbus
-           python-pygobject))
+           python-pygobject
+           vala))
     (propagated-inputs
-     (list glib)) ; required by mm-glib.pc
+     (list glib))                       ;required by mm-glib.pc
     (inputs
      (list libgudev libmbim libqmi polkit))
     (synopsis "Mobile broadband modems manager")
@@ -1729,27 +1771,35 @@ share connections to real-time communication services without conflicting.")
 (define-public colord-gtk
   (package
     (name "colord-gtk")
-    (version "0.1.26")
+    (version "0.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.freedesktop.org/software/colord"
                                   "/releases/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0i9y3bb5apj6a0f8cx36l6mjzs7xc0k7nf0magmf58vy2mzhpl18"))))
-    (build-system gnu-build-system)
-    (arguments '(#:tests? #f)) ; require the colord system service
+                "1l61ydb0zv2ffilwpapgz5mm3bznr28zl16xqbxnz6kdsrb6cimr"))))
+    (build-system meson-build-system)
+    (arguments '(#:tests? #f            ;require the colord system service
+                 ;; Building documentation fails with: "Cannot build man pages
+                 ;; without docbook-xsl-ns".
+                 #:configure-flags (list "-Ddocs=false" "-Dman=false")))
     (native-inputs
-     (list gobject-introspection intltool pkg-config vala))
+     (list gettext-minimal
+           gobject-introspection
+           pkg-config
+           vala))
+    (inputs
+     (list gtk+))
     (propagated-inputs
      ;; colord-gtk.pc refers to all these.
-     (list colord gtk+))
+     (list colord gtk))
     (synopsis "GTK integration for libcolord")
     (home-page "https://www.freedesktop.org/software/colord/")
     (description
-     "This is a GTK+ convenience library for interacting with colord.  It is
-useful for both applications which need colour management and applications that
-wish to perform colour calibration.")
+     "This is a GTK convenience library for interacting with colord.  It is
+useful for both applications which need colour management and applications
+that wish to perform colour calibration.")
     (license license:lgpl2.1+)))
 
 (define-public libfprint
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 010a926779..f42e380436 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1786,17 +1786,20 @@ destroying an ancient book using a special wand.")
            ;; Don't create 'icon-theme.cache'.
            (lambda _
              (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))
-             #t)))))
+               (("gtk-update-icon-cache") "true")))))))
     (inputs
-     (list gtk+ clutter clutter-gtk libgee libgnome-games-support))
+     (list gtk+
+           clutter
+           clutter-gtk
+           libgee
+           libgnome-games-support-1))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin") ; for desktop-file-validate and appstream-util
-       ("itstool" ,itstool)
-       ("libxml2" ,libxml2)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list gettext-minimal
+           `(,glib "bin")       ; for desktop-file-validate and appstream-util
+           itstool
+           libxml2
+           pkg-config
+           vala))
     (home-page "https://wiki.gnome.org/Apps/2048")
     (synopsis "Move the tiles until you obtain the 2048 tile")
     (description "GNOME 2048 provides a 2D grid for playing 2048, a
@@ -6610,7 +6613,7 @@ fish.  The whole game is accompanied by quiet, comforting music.")
 (define-public crawl
   (package
     (name "crawl")
-    (version "0.29.0")
+    (version "0.29.1")
     (source
      (origin
        (method git-fetch)
@@ -6619,7 +6622,7 @@ fish.  The whole game is accompanied by quiet, comforting music.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0cx67ln5qr4bawidi48ss63wflx7x22901da683c9wvy6m41vks8"))
+        (base32 "17bl8hdv2z3mpdfmd5gnwg3r1p9dqjbisiql24pxs1d33qcw0h7x"))
        (patches (search-patches "crawl-upgrade-saves.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -9308,60 +9311,56 @@ play with up to four players simultaneously.  It has network support.")
 (define-public hedgewars
   (package
     (name "hedgewars")
-    (version "1.0.0")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.hedgewars.org/download/releases/"
                                   "hedgewars-src-" version ".tar.bz2"))
-              (patches (search-patches "hedgewars-network-bsd.patch"))
               (sha256
                (base32
-                "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
+                "04pjpkjhpy720n803gv35iygmjdvsrmw13mih4ympjnqbgjfa7r0"))))
     (build-system cmake-build-system)
     (arguments
-     ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
-     ;; Compiler, which we haven't packaged yet.  With the flag below, we use
-     ;; a Pascal to C translator and Clang instead.
-     `(#:configure-flags (list "-DBUILD_ENGINE_C=ON"
-                               "-Dhaskell_flags=-dynamic;-fPIC")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'fix-sources
-           (lambda _
-             ;; Fix a missing 'include'.
-             (substitute* "QTfrontend/ui/page/pagegamestats.cpp"
-               (("#include <QSizePolicy>")
-                "#include <QSizePolicy>\n#include <QPainterPath>"))))
-         (replace 'check
-           (lambda _ (invoke "ctest")))
-         (add-after 'install 'install-icon
-           (lambda _
-             ;; Install icon for the desktop file.
-             (let* ((out (assoc-ref %outputs "out"))
-                    (icons (string-append out "/share/icons/hicolor/512x512/apps")))
-               (with-directory-excursion (string-append "../hedgewars-src-" ,version)
-                 (install-file "misc/hedgewars.png" icons)))
-             #t)))))
+     (list
+      ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
+      ;; Compiler, which we haven't packaged yet.  With the flag below, we use
+      ;; a Pascal to C translator and Clang instead.
+      #:configure-flags #~(list "-DBUILD_ENGINE_C=ON"
+                                "-Dhaskell_flags=-dynamic;-fPIC")
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "ctest"))))
+          (add-after 'install 'install-icon
+            (lambda _
+              ;; Install icon for the desktop file.
+              (let ((icons (string-append #$output
+                                          "/share/icons/hicolor/512x512/apps")))
+                (with-directory-excursion
+                    (string-append "../hedgewars-src-" #$version)
+                  (install-file "misc/hedgewars.png" icons))))))))
     (inputs
-     `(("ffmpeg" ,ffmpeg)
-       ("freeglut" ,freeglut)
-       ("ghc-entropy" ,ghc-entropy)
-       ("ghc-hslogger" ,ghc-hslogger)
-       ("ghc-network" ,ghc-network)
-       ("ghc-random" ,ghc-random)
-       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
-       ("ghc-sandi" ,ghc-sandi)
-       ("ghc-sha" ,ghc-sha)
-       ("ghc-utf8-string" ,ghc-utf8-string)
-       ("ghc-vector" ,ghc-vector)
-       ("ghc-zlib" ,ghc-zlib)
-       ("glew" ,glew)
-       ("libpng" ,libpng)
-       ("lua" ,lua-5.1)
-       ("physfs" ,physfs)
-       ("qtbase" ,qtbase-5)
-       ("sdl" ,(sdl-union
-                (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
+     (list ffmpeg
+           freeglut
+           ghc-entropy
+           ghc-hslogger
+           ghc-network
+           ghc-random
+           ghc-regex-tdfa
+           ghc-sandi
+           ghc-sha
+           ghc-utf8-string
+           ghc-vector
+           ghc-zlib
+           glew
+           libpng
+           lua-5.1
+           physfs
+           qtbase-5
+           (sdl-union
+            (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image))))
     (native-inputs
      (list clang-9 ghc pkg-config qttools-5))
     (home-page "https://hedgewars.org/")
@@ -11169,3 +11168,45 @@ principle of prioritizing the guests' happiness with a well-maintained park.
 Should they go unwise, a theme park plunge into chaos with vandalizing guests
 and unsafe rides.  Which path will you take?")
     (license license:gpl2)))
+
+(define-public steam-devices-udev-rules
+  ;; Last release from 2019-04-10
+  (let ((commit "d87ef558408c5e7a1a793d738db4c9dc2cb5f8fa")
+        (revision "0"))
+    (package
+      (name "steam-devices-udev-rules")
+      (version (git-version "1.0.0.61" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ValveSoftware/steam-devices")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1yqigraz9f19018ma5n2pbx7naadh9960lia3z8ayg7vz1fjdl54"))))
+      (build-system copy-build-system)
+      (arguments
+       '(#:install-plan '(("./" "lib/udev/rules.d"
+                           #:include-regexp ("rules$")))
+         #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'patch-paths
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "60-steam-input.rules"
+                          (("/bin/sh")
+                           (search-input-file inputs "/bin/sh"))
+                          (("udevadm")
+                           (search-input-file inputs "/bin/udevadm"))))))))
+      (inputs (list eudev))
+      (home-page "https://github.com/ValveSoftware/steam-devices")
+      (synopsis "udev rules for game controllers and virtual reality devices")
+      (description
+       "This package provides a set of udev rules for game controllers and
+virtual reality devices.")
+      (license license:expat))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 80eaec722a..c07fdd2c80 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -993,31 +993,43 @@ as the 'native-search-paths' field."
    (custom-gcc gcc-11 "gdc" '("d")
                %generic-search-paths)))
 
-(define-public libgccjit
+(define-public (make-libgccjit gcc)
   (package
-    (inherit gcc-9)
+    (inherit gcc)
     (name "libgccjit")
     (outputs (delete "lib" (package-outputs gcc)))
     (properties (alist-delete 'hidden? (package-properties gcc)))
     (arguments
-     (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
-                                                (guix build utils)
-                                                (ice-9 regex)
-                                                (srfi srfi-1)
-                                                (srfi srfi-26))
-                                     ,@(package-arguments gcc))
+     (substitute-keyword-arguments (package-arguments gcc)
+       ((#:modules _ '())
+        '((guix build gnu-build-system)
+          (guix build utils)
+          (ice-9 regex)
+          (srfi srfi-1)
+          (srfi srfi-26)))
        ((#:configure-flags flags)
-        `(append `("--enable-host-shared"
-                   ,(string-append "--enable-languages=jit"))
+        #~(cons* "--disable-bootstrap"
+                 "--disable-libatomic"
+                 "--disable-libgomp"
+                 "--disable-libquadmath"
+                 "--disable-libssp"
+                 "--enable-host-shared"
+                 "--enable-checking=release"
+                 "--enable-languages=jit"
                  (remove (cut string-match "--enable-languages.*" <>)
-                         ,flags)))
+                         #$flags)))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'install 'remove-broken-or-conflicting-files
-             (lambda* (#:key outputs #:allow-other-keys)
-               (for-each delete-file
-                         (find-files (string-append (assoc-ref outputs "out") "/bin")
-                                     ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+        #~(modify-phases #$phases
+            (add-after 'install 'remove-broken-or-conflicting-files
+              (lambda* (#:key outputs #:allow-other-keys)
+                (for-each delete-file
+                          (find-files
+                           (string-append (assoc-ref outputs "out") "/bin")
+                           ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))))))))
+    (inputs (modify-inputs (package-inputs gcc)
+              (delete "libstdc++")))
+    (native-inputs (modify-inputs (package-native-inputs gcc)
+                     (prepend gcc)))
     (synopsis "GCC library generating machine code on-the-fly at runtime")
     (description
      "This package is part of the GNU Compiler Collection and provides an
@@ -1028,6 +1040,13 @@ It can also be used for ahead-of-time code generation for building standalone
 compilers.  The just-in-time (jit) part of the name is now something of a
 misnomer.")))
 
+(define-public libgccjit-9 (make-libgccjit gcc-9))
+(define-public libgccjit-10 (make-libgccjit gcc-10))
+(define-public libgccjit-11 (make-libgccjit gcc-11))
+(define-public libgccjit-12 (make-libgccjit gcc-12))
+
+(define-public libgccjit libgccjit-10)
+
 (define (make-gccgo gcc)
   "Return a gccgo package based on GCC."
   (let ((gccgo (custom-gcc gcc "gccgo" '("go") %generic-search-paths)))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 9734ae66fe..d210cd63b5 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2021 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2021, 2022 Nikolay Korotkiy <sikmir@disroot.org>
 ;;; Copyright © 2022 Roman Scherer <roman.scherer@burningswell.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -253,7 +254,7 @@ topology functions.")
 (define-public gnome-maps
   (package
     (name "gnome-maps")
-    (version "42.2")
+    (version "43.rc")                   ;for libsoup 3 support
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -261,77 +262,55 @@ topology functions.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cb9s2zz1zib3f33c035lmgshpl679isbzdd3alrx4yclw61nvay"))))
+                "16a3j896fwxgnvrmx27jnrvhxzh3v22paaq87ad57yp8wkq946il"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))))
-         (add-after 'unpack 'patch-dbus-service
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "data/org.gnome.Maps.service.in"
-               (("@pkgdatadir@/org.gnome.Maps")
-                (string-append  (assoc-ref outputs "out")
-                                "/bin/gnome-maps")))))
-         (add-after 'install 'wrap
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
-                   (geocode-glib-path (string-append
-                                       (assoc-ref inputs "geocode-glib")
-                                       "/lib"))
-                   (goa-path (string-append
-                              (assoc-ref inputs "gnome-online-accounts:lib")
-                              "/lib"))
-                   (gdk-pixbuf-path (string-append
-                                     (assoc-ref inputs "gdk-pixbuf")
-                                     "/lib"))
-                   (webkitgtk-path (string-append
-                                    (assoc-ref inputs "webkitgtk")
-                                    "/lib")))
-               (wrap-program (string-append out "/bin/gnome-maps")
-                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
-
-                 ;; There seems to be no way to embed the path of
-                 ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37,
-                 ;; libgdk_pixbuf-2.0.so, libjavascriptcoregtk-4.0.so.18, and
-                 ;; libgeocode-glib.so.0
-                 `("LD_LIBRARY_PATH" ":" prefix (,goa-path
-                                                 ,webkitgtk-path
-                                                 ,gdk-pixbuf-path
-                                                 ,geocode-glib-path)))
-               #t))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "meson_post_install.py"
+                (("gtk-update-icon-cache") "true"))))
+          (add-after 'unpack 'patch-dbus-service
+            (lambda _
+              (substitute* "data/org.gnome.Maps.service.in"
+                (("@pkgdatadir@/org.gnome.Maps")
+                 (string-append #$output "/bin/gnome-maps")))))
+          (add-after 'install 'wrap
+            (lambda _
+              (wrap-program (string-append #$output "/bin/gnome-maps")
+                `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config))
     (inputs
-     `(("evolution-data-server" ,evolution-data-server)
-       ("folks" ,folks)
-       ("libchamplain" ,libchamplain)
-       ("libgee" ,libgee)
-       ("libhandy" ,libhandy)
-       ("libsecret" ,libsecret)
-       ("libsoup" ,libsoup-minimal-2)
-       ("libgweather" ,libgweather4)
-       ("libxml2" ,libxml2)
-       ("librsvg" ,librsvg)
-       ("glib-networking" ,glib-networking)
-       ("geoclue" ,geoclue)
-       ("geocode-glib" ,geocode-glib)
-       ("gfbgraph" ,gfbgraph)
-       ("gjs" ,gjs)
-       ("glib" ,glib)
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gtk+" ,gtk+)
-       ("rest" ,rest)
-       ("webkitgtk" ,webkitgtk-with-libsoup2)))
+     (list folks
+           evolution-data-server
+           geoclue
+           geocode-glib
+           gfbgraph
+           gjs
+           glib
+           glib-networking
+           gnome-online-accounts
+           gsettings-desktop-schemas
+           gtk+
+           libadwaita
+           libgee
+           libgweather4
+           libhandy
+           librsvg
+           libsecret
+           libshumate           
+           libsoup
+           libxml2
+           rest-next
+           webkitgtk))
     (synopsis "Graphical map viewer and wayfinding program")
     (description "GNOME Maps is a graphical map viewer.  It uses map data from
 the OpenStreetMap project.  It can provide directions for walking, bicycling,
@@ -536,7 +515,7 @@ fully fledged Spatial SQL capabilities.")
 (define-public proj
   (package
     (name "proj")
-    (version "7.2.1")
+    (version "9.1.0")
     (source
      (origin
        (method url-fetch)
@@ -544,20 +523,10 @@ fully fledged Spatial SQL capabilities.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k"))))
+         "0593vd9sac0c98j1f4rammd90d4xnhygbr6d49i8il6ajjdj7cl1"))))
     (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-version
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("MAJOR 7 MINOR 2 PATCH 0") "MAJOR 7 MINOR 2 PATCH 1")))))))
-    (inputs
-     (list curl libjpeg-turbo libtiff sqlite))
-    (native-inputs
-     (list googletest pkg-config))
+    (native-inputs (list googletest pkg-config))
+    (propagated-inputs (list curl libtiff sqlite)) ;required by proj.pc
     (home-page "https://proj.org/")
     (synopsis "Coordinate transformation software")
     (description
@@ -574,6 +543,27 @@ lets developers use the functionality of Proj in their own software.")
                    ;; src/geodesic.*, src/tests/geodtest.cpp
                    license:x11))))
 
+; This is the last version of proj that provides the old proj.4 API.
+(define-public proj-7
+  (package (inherit proj)
+    (version "7.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://download.osgeo.org/proj/proj-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k"))))
+    (arguments
+     `(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-version
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("MAJOR 7 MINOR 2 PATCH 0") "MAJOR 7 MINOR 2 PATCH 1")))))))))
+
 (define-public proj.4
   (package
     (name "proj.4")
@@ -627,14 +617,14 @@ projections.")
 (define-public python-pyproj
   (package
     (name "python-pyproj")
-    (version "3.2.1")
+    (version "3.3.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pyproj" version))
         (sha256
           (base32
-            "0xrqpy708qlyd7nqjra0dl7nvkqzaj9w0v7wq4j5pxazha9n14sa"))))
+            "1gjg63irs44djyqbp9gg7s02d0y5i9cd1a83phyzp5fcj56y3n5k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1073,13 +1063,13 @@ utilities for data translation and processing.")
   (package
     (name "python-cartopy")
     ;; This is a post-release fix that adds build_ext to setup.py.
-    (version "0.19.0.post1")
+    (version "0.20.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Cartopy" version))
        (sha256
-        (base32 "0xnm8z3as3hriivdfd26s6vn5b63gb46x6vxw6gh1mwfm5rlg2sb"))))
+        (base32 "01lhnkhw22jp6hnrs5qvgkq4fqcni2sx7ydiyv8w8xxx5wpglq0d"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1097,11 +1087,16 @@ utilities for data translation and processing.")
      (list python-matplotlib
            python-numpy
            python-pykdtree
+           python-pyproj
            python-pyshp
            python-scipy
            python-shapely))
     (inputs
-     (list geos proj))
+     (list geos
+           ;; cartopy's setup.py looks for the proj executable.
+           ;; Not sure if it actually makes use of it since it
+           ;; probably uses proj only through pyproj.
+           proj))
     (native-inputs
      (list python-cython python-flufl-lock python-pytest))
     (home-page "https://scitools.org.uk/cartopy/docs/latest/")
@@ -1501,7 +1496,7 @@ map display.  Downloads map data from a number of websites, including
            libnova
            libpng
            openjpeg
-           proj
+           proj-7
            qtbase-5
            zlib))
     (native-search-paths
@@ -1953,7 +1948,8 @@ using the dataset of topographical information collected by
     (native-inputs
      (list pkg-config qttools-5))
     (inputs
-     (list gdal
+     (list curl
+           gdal
            libjpeg-turbo
            proj
            qtbase-5
@@ -2189,6 +2185,7 @@ track your position right from your laptop.")
     (inputs
      `(("clipper" ,clipper)
        ("cups" ,cups)
+       ("curl" ,curl)
        ("gdal" ,gdal)
        ("proj" ,proj)
        ("qtbase" ,qtbase-5)
@@ -2450,6 +2447,7 @@ growing set of geoscientific methods.")
                              "ProcessingOtbAlgorithmsTest"
                              "test_core_authmanager"
                              "test_core_compositionconverter"
+                             "test_core_coordinatereferencesystem"
                              "test_core_gdalutils"
                              "test_core_labelingengine"
                              "test_core_layout"
@@ -2459,6 +2457,7 @@ growing set of geoscientific methods.")
                              "test_core_layoutpicture"
                              "test_core_legendrenderer"
                              "test_core_networkaccessmanager"
+                             "test_core_rasterfilewriter"
                              "test_core_tiledownloadmanager"
                              "test_gui_dualview"
                              "test_gui_htmlwidgetwrapper"
@@ -2711,6 +2710,7 @@ using third-party geocoders and other data sources.")
     (inputs
      (list boost
            cgal
+           curl
            gdal
            glew
            glu
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 75439c54c2..7d3cdc7877 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -48,6 +48,7 @@
   #:use-module (gnu packages enlightenment)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages graphviz)
@@ -374,6 +375,64 @@ functions for strings and common data structures.")
     (license license:lgpl2.1+)
     (properties '((hidden? . #t)))))
 
+(define-public glib-next
+  (package
+    (inherit glib)
+    (name "glib")
+    (version "2.73.3")
+    (source
+     (origin
+       (inherit (package-source glib))
+       (uri
+        (string-append "mirror://gnome/sources/"
+                       name "/" (string-take version 4) "/"
+                       name "-" version ".tar.xz"))
+       (snippet
+        '(substitute* "glib/tests/spawn-test.c"
+           (("/bin/sh") "sh")))
+       (sha256
+        (base32 "1bgfch7zj1pq4rkqcibfky1470ijljyrx5pn5s5v9mk72s22n6nz"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments glib)
+       ((#:test-options test-options ''())
+        ;; Skip flaky or slow tests.
+        `(cons* "--no-suite=slow" "--no-suite=flaky" ,test-options))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (replace 'disable-failing-tests
+             (lambda _
+               (with-directory-excursion "glib/tests"
+                 (substitute* '("unix.c" "utils.c")
+                   (("[ \t]*g_test_add_func.*;") "")))
+               ;; The "glib:gio / file" test fails with the error "No
+               ;; application is registered as handling this file" (see:
+               ;; https://gitlab.gnome.org/GNOME/glib/-/issues/2742).
+               (with-directory-excursion "gio/tests"
+                 (substitute* '("appinfo.c"
+                                "contenttype.c"
+                                "desktop-app-info.c"
+                                "file.c"
+                                "gdbus-address-get-session.c"
+                                "gdbus-peer.c")
+                   (("[ \t]*g_test_add_func.*;") "")))
+
+               ,@(if (target-x86-32?)
+                     ;; Comment out parts of timer.c that fail on i686 due to
+                     ;; excess precision when building with GCC 10:
+                     ;; <https://gitlab.gnome.org/GNOME/glib/-/issues/820>.
+                     '((substitute* "glib/tests/timer.c"
+                         (("^  g_assert_cmpuint \\(micros.*" all)
+                          (string-append "//" all "\n"))
+                         (("^  g_assert_cmpfloat \\(elapsed, ==.*" all)
+                          (string-append "//" all "\n"))))
+                     '())))))))
+    (native-inputs
+     (modify-inputs (package-native-inputs glib)
+       (append desktop-file-utils)))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs glib)
+       (replace "pcre" pcre2)))))
+
 (define-public glib-with-documentation
   ;; glib's doc must be built in a separate package since it requires gtk-doc,
   ;; which in turn depends on glib.
@@ -535,6 +594,26 @@ provide bindings to call into the C library.")
       ;; For tools.
       license:gpl2+))))
 
+(define-public gobject-introspection-next
+  (package
+    (inherit gobject-introspection)
+    (name "gobject-introspection")
+    (version "1.73.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/"
+                                  "gobject-introspection/" (version-major+minor version)
+                                  "/gobject-introspection-" version ".tar.xz"))
+              (sha256
+               (base32 "1gkbx32as3v2286w7k3j24fwhkxj6brr49881m2zavxamfwxdm34"))
+              (patches (search-patches
+                        "gobject-introspection-cc-1.72.patch"
+                        "gobject-introspection-girepository.patch"
+                        "gobject-introspection-absolute-shlib-path-1.72.patch"))))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs gobject-introspection)
+       (replace "glib" glib-next)))))
+
 (define intltool
   (package
     (name "intltool")
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index beab5429bf..74eaf74a37 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -776,7 +776,7 @@ notebooks and tiling window managers.")
 (define-public gpaste
   (package
     (name "gpaste")
-    (version "3.42.2")
+    (version "42.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -785,19 +785,25 @@ notebooks and tiling window managers.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1k5qvgzwl357k72qfim5zfas2a0n6j24jnlm1v472l7h6gb6lssm"))
+                "1dlqa69zvzzdxyh21qfrx2nhpfy0fbihxpgkxqmramcgv3h5k4q3"))
               (patches
                (search-patches "gpaste-fix-paths.patch"))))
     (build-system meson-build-system)
     (native-inputs
-     (list autoconf automake gettext-minimal gobject-introspection
+     (list gettext-minimal
+           gobject-introspection
            (list glib "bin")            ; for glib-compile-resources
-           libtool pkg-config vala))
+           pkg-config
+           vala))
     (inputs
-     (list appstream-glib libarchive gjs mutter graphene))
+     (list appstream-glib
+           gjs
+           gtk
+           mutter
+           libadwaita
+           libarchive))
     (arguments
-     (list #:meson meson-0.59      ;positional arguments error with meson 0.60
-           #:glib-or-gtk? #true
+     (list #:glib-or-gtk? #true
            #:configure-flags
            #~(list
               (string-append "-Dcontrol-center-keybindings-dir="
@@ -809,12 +815,11 @@ notebooks and tiling window managers.")
            #:phases
            #~(modify-phases %standard-phases
                (add-after 'unpack 'fix-introspection-install-dir
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (substitute* '("src/gnome-shell/extension.js"
-                                    "src/gnome-shell/prefs.js")
-                       (("@typelibPath@")
-                        (string-append out "/lib/girepository-1.0/")))))))))
+                 (lambda _
+                   (substitute* '("src/gnome-shell/extension.js"
+                                  "src/gnome-shell/prefs.js")
+                     (("@typelibPath@")
+                      (string-append #$output "/lib/girepository-1.0/"))))))))
     (home-page "https://github.com/Keruspe/GPaste")
     (synopsis "Clipboard management system for GNOME Shell")
     (description "GPaste is a clipboard manager, a tool which allows you to
@@ -1084,7 +1089,7 @@ of windows.")
 (define-public arc-theme
   (package
     (name "arc-theme")
-    (version "20210412")
+    (version "20220405")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1093,7 +1098,7 @@ of windows.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0zs44dagp6baiyszlr1kj5ncap43fg32dv07rl46nxbds2p65lh4"))))
+                "1gjwf75sg4xyfypb08qiy2cmqyr2mamjc4i46ifrq7snj15gy608"))))
     (build-system meson-build-system)
     (arguments
      '(#:configure-flags
@@ -1102,8 +1107,7 @@ of windows.")
        (modify-phases %standard-phases
          (add-before 'build 'set-home   ;placate Inkscape
            (lambda _
-             (setenv "HOME" (getcwd))
-             #t)))))
+             (setenv "HOME" (getcwd)))))))
     (native-inputs
      (list `(,glib "bin") ; for glib-compile-resources
            gnome-shell
@@ -1111,6 +1115,7 @@ of windows.")
            inkscape/stable
            optipng
            pkg-config
+           python
            sassc/libsass-3.5))
     (synopsis "Flat GTK+ theme with transparent elements")
     (description "Arc is a flat theme with transparent elements for GTK 3, GTK
@@ -1240,13 +1245,13 @@ Cinnamon, MATE, Unity, Xfce, LightDM, GDM, Chrome theme, etc.")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure))))             ; no configure script
+         (delete 'configure))))         ; no configure script
     (native-inputs
-     `(("glib:bin" ,glib "bin")             ; for glib-compile-schemas
-       ("gnome-shell" ,gnome-shell)
-       ("gtk+" ,gtk+)
-       ("xmllint" ,libxml2)
-       ("ruby-sass" ,ruby-sass)))
+     (list `(,glib "bin")               ; for glib-compile-schemas
+           gnome-shell
+           gtk+
+           libxml2
+           ruby-sass))
     (synopsis "Flat theme with light and dark elements")
     (description "Numix is a modern flat theme with a combination of light and
 dark elements.  It supports GNOME, Unity, Xfce, and Openbox.")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d01e6cf35e..c80c7fe921 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -186,6 +186,7 @@
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -252,42 +253,43 @@
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
-     `(#:glib-or-gtk? #t     ; To wrap binaries and compile schemas
-       #:configure-flags (list "-Dgtk_doc=true")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "doc"
-               (substitute* "gupnp-igd-docs.xml"
-                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
-                  (string-append (assoc-ref inputs "docbook-xml-4.1.2")
-                                 "/xml/dtd/docbook/"))))
-             #t))
-         (add-before 'check 'set-home
-           (lambda _
-             ;; A test using GIO expects ~/.config/glib-2.0/settings to be
-             ;; writable.
-             (setenv "HOME" (getcwd))))
-         (add-after 'install 'move-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc")))
-               (mkdir-p (string-append doc "/share"))
-               (rename-file
-                (string-append out "/share/gtk-doc")
-                (string-append doc "/share/gtk-doc"))
-               #t))))))
+     (list
+      #:glib-or-gtk? #t                 ; To wrap binaries and compile schemas
+      #:configure-flags #~(list "-Dgtk_doc=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-docbook-xml
+            (lambda* (#:key inputs #:allow-other-keys)
+              (with-directory-excursion "doc"
+                (substitute* "gupnp-igd-docs.xml"
+                  (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                   (string-append #$(this-package-native-input
+                                     "docbook-xml")
+                                  "/xml/dtd/docbook/"))))))
+          (add-before 'check 'set-home
+            (lambda _
+              ;; A test using GIO expects ~/.config/glib-2.0/settings to be
+              ;; writable.
+              (setenv "HOME" (getcwd))))
+          (add-after 'install 'move-doc
+            (lambda* (#:key outputs #:allow-other-keys)
+              (mkdir-p (string-append #$output:doc "/share"))
+              (rename-file
+               (string-append #$output "/share/gtk-doc")
+               (string-append #$output:doc "/share/gtk-doc")))))))
     (native-inputs
-     `(("docbook-xml-4.1.2" ,docbook-xml-4.1.2)
-       ("docbook-xsl" ,docbook-xsl)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)))
+     (list docbook-xml-4.1.2
+           docbook-xsl
+           `(,glib "bin")
+           gobject-introspection
+           gsettings-desktop-schemas
+           gtk-doc/stable
+           pkg-config))
     (propagated-inputs
-     (list glib glib-networking gssdp gupnp libsoup))
+     ;; These libraries are required by the .pc file.
+     (list glib
+           glib-networking
+           gupnp-1.4))
     (synopsis "UPnP IGD for GNOME")
     (description "GUPnP-IGD is a library to handle UPnP IGD port mapping.")
     (home-page "https://gitlab.gnome.org/GNOME/gupnp-igd")
@@ -848,7 +850,7 @@ patterns.")
                "subprojects/libgd"))))))
     (inputs (list glib
                   gnome-autoar
-                  `(,gnome-online-accounts "lib")
+                  gnome-online-accounts
                   gspell
                   gtk+
                   json-glib
@@ -870,7 +872,7 @@ tomorrow, the rest of the week and for special occasions.")
 (define-public gnome-photos
   (package
     (name "gnome-photos")
-    (version "40.0")
+    (version "43.beta")                 ;for geocode-glib 2 support
     (source
      (origin
        (method url-fetch)
@@ -880,58 +882,59 @@ tomorrow, the rest of the week and for special occasions.")
                        name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1bzi79plw6ji6qlckhxnwfnswy6jpnhzmmyanml2i2xg73hp6bg0"))))
+         "1pry45dy4sjw8y63vxw2b499brcxzpkd4hmg2vbqy538r79ah2g9"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       #:configure-flags
-       (list "-Ddogtail=false"     ; Not available
-             ;; Required for RUNPATH validation.
-             (string-append "-Dc_link_args=-Wl,-rpath="
-                            (assoc-ref %outputs "out") "/lib/gnome-photos"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-gnome-photos
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let*
-                 ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/gnome-photos")
-                 `("GRL_PLUGIN_PATH" =
-                   (,(getenv "GRL_PLUGIN_PATH"))))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      #~(list "-Ddogtail=false"         ; Not available
+              ;; Required for RUNPATH validation.
+              (string-append "-Dc_link_args=-Wl,-rpath="
+                             #$output "/lib/gnome-photos"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-gtk-update-icon-cache
+            (lambda _
+              (setenv "DESTDIR" "/")))
+          (add-after 'install 'wrap-gnome-photos
+            (lambda* (#:key outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/gnome-photos")
+                `("GRL_PLUGIN_PATH" =
+                  (,(getenv "GRL_PLUGIN_PATH")))))))))
     (native-inputs
-     `(("dbus" ,dbus)
-       ("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("git" ,git-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)))
+     (list dbus
+           desktop-file-utils
+           gettext-minimal
+           git-minimal
+           `(,glib "bin")
+           gobject-introspection
+           gsettings-desktop-schemas
+           itstool
+           pkg-config))
     (inputs
-     `(("babl" ,babl)
-       ("cairo" ,cairo)
-       ("librsvg" ,librsvg)
-       ("gegl" ,gegl)
-       ("geocode-glib" ,geocode-glib)
-       ("gexiv2" ,gexiv2)
-       ("gnome-online-accounts" ,gnome-online-accounts)
-       ("gnome-online-miners" ,gnome-online-miners)
-       ("grilo" ,grilo)
-       ("grilo-plugins" ,grilo-plugins)
-       ("gtk+" ,gtk+)
-       ("libdazzle" ,libdazzle)
-       ("libgdata" ,libgdata)
-       ("libgfbgraph" ,gfbgraph)
-       ("libhandy" ,libhandy)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libpng" ,libpng)
-       ("librest" ,rest)
-       ("pygobject" ,python-pygobject)
-       ("tracker" ,tracker)
-       ("tracker-miners" ,tracker-miners)))
+     (list babl
+           cairo
+           gegl
+           geocode-glib
+           gexiv2
+           gfbgraph
+           gnome-online-accounts
+           gnome-online-miners
+           grilo
+           grilo-plugins
+           gtk+
+           libdazzle
+           libgdata
+           libhandy
+           libjpeg-turbo
+           libportal
+           libpng
+           librsvg
+           python-pygobject
+           rest
+           tracker
+           tracker-miners))
     (synopsis "Access, organize and share your photos on GNOME desktop")
     (description "GNOME Photos is a simple and elegant replacement for using a
 file manager to deal with photos.  Enhance, crop and edit in a snap.  Seamless
@@ -942,7 +945,7 @@ cloud integration is offered through GNOME Online Accounts.")
 (define-public gnome-music
   (package
     (name "gnome-music")
-    (version "40.1.1")
+    (version "42.1")
     (source
      (origin
        (method url-fetch)
@@ -952,13 +955,18 @@ cloud integration is offered through GNOME Online Accounts.")
                        name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0lcdal4qdhclr8961p57xf010y92l6wwmkw86lyi9wy224z6gjr0"))))
+         "0w42xnp6xy3sfakb4s0wq7xfg7p507whz5gzss5b2mkbm2k7yx67"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'skip-gtk-update-icon-cache
+           ;; Don't create 'icon-theme.cache'.
+           (lambda _
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false"))))
          (add-after 'install 'wrap-gnome-music
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let*
@@ -981,18 +989,19 @@ cloud integration is offered through GNOME Online Accounts.")
            gettext-minimal
            `(,glib "bin")
            gobject-introspection
-           `(,gtk+ "bin")
            itstool
            pkg-config))
     (inputs
-     (list `(,gnome-online-accounts "lib")
+     (list gnome-online-accounts
            grilo
            grilo-plugins
            gst-plugins-base
            gst-plugins-good
            gstreamer
+           gtk
            gvfs
            json-glib
+           libadwaita
            libdazzle
            libmediaart
            libsoup-minimal-2
@@ -1036,7 +1045,7 @@ between different kinds of computer systems.")
 (define-public tepl
   (package
     (name "tepl")
-    (version "6.00.0")
+    (version "6.1.2")
     (source
      (origin
        (method url-fetch)
@@ -1046,42 +1055,43 @@ between different kinds of computer systems.")
                        name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0qvs7s86gqyyrzi0r5fbrj8zczlgv8xhdjswgbgc1afwjnl9fqx8"))))
+         "16x14j3nvsjj7jb2qmxpzygnlcy7sd7p6skv0sqshkwdlp4jxzha"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
-       #:tests? #f))                    ; FIX-ME: Requires gvfs
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'disable-problematic-tests
+                    (lambda _
+                      ;; Only keep unit tests, as the interactive tests have
+                      ;; other dependencies.
+                      (substitute* "tests/meson.build"
+                        ((".*'interactive-tests'.*") ""))))
+                  (add-before 'check 'start-xserver
+                    (lambda _
+                      (system "Xvfb :1 &")
+                      (setenv "DISPLAY" ":1"))))))
     (native-inputs
-     (list `(,glib "bin") gobject-introspection pkg-config))
+     (list `(,glib "bin")
+           gobject-introspection
+           gtk-doc
+           libxml2
+           pkg-config
+           xorg-server-for-tests))
     (inputs
+     (list uchardet))
+    (propagated-inputs
+     ;; These are all required by tepl6.pc.
      (list amtk
            glib
+           gsettings-desktop-schemas
            gtk+
-           gtksourceview-4
-           libxml2
-           uchardet))
+           gtksourceview-4))
     (synopsis "Text editor product line")
     (description "Tepl is a library that eases the development of
 GtkSourceView-based text editors and IDEs.")
     (home-page "https://wiki.gnome.org/Projects/Tepl")
     (license license:lgpl2.1+)))
 
-(define-public tepl-5
-  (package
-    (inherit tepl)
-    (name "tepl")
-    (version "5.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "mirror://gnome/sources/" name "/"
-                       (version-major+minor version) "/"
-                       name "-" version ".tar.xz"))
-       (sha256
-        (base32
-         "0118j64s4fb350phbgda2rk6sv19rfgglxc7nf248llzc1klj9xi"))))))
-
 (define-public krb5-auth-dialog
   (package
     (name "krb5-auth-dialog")
@@ -1175,46 +1185,48 @@ Library reference documentation.")
 
 (define-public phodav
   (package
-   (name "phodav")
-   (version "2.5")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major+minor version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "045rdzf8isqmzix12lkz6z073b5qvcqq6ad028advm5gf36skw3i"))))
-   (build-system meson-build-system)
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'fix-udev-rules-directory
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out   (assoc-ref outputs "out"))
-                   (rules (string-append out "/lib/udev/rules.d")))
-              (substitute* "data/meson.build"
-                (("udev\\.get_pkgconfig_variable\\('udevdir'\\)")
-                 (format #f "'~a'" rules))))))
-        (add-before 'check 'set-temporary-home
-          ;; Tests want to write into HOME.
-          (lambda _
-            (setenv "HOME" "/tmp"))))))
-   (native-inputs
-    `(("docbook-xml" ,docbook-xml-4.3)
-      ("gettext" ,gettext-minimal)
-      ("glib:bin" ,glib "bin")
-      ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-      ("gtk-doc" ,gtk-doc/stable)
-      ("pkg-config" ,pkg-config)))
-   (inputs
-    (list avahi libgudev libsoup-minimal-2))
-   (synopsis "WebDav server implementation using libsoup")
-   (description "PhoDav was initially developed as a file-sharing mechanism for Spice,
+    (name "phodav")
+    (version "3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1l9qs70yvwi9r8ph081mrsdy412kk0m9l9pgy77hsc2hdp8c4bir"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-udev-rules-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (rules (string-append out "/lib/udev/rules.d")))
+               (substitute* "data/meson.build"
+                 (("udev\\.get_pkgconfig_variable\\('udevdir'\\)")
+                  (format #f "'~a'" rules))))))
+         (add-before 'check 'set-temporary-home
+           ;; Tests want to write into HOME.
+           (lambda _
+             (setenv "HOME" "/tmp"))))))
+    (native-inputs
+     (list docbook-xml-4.3
+           gettext-minimal
+           `(,glib "bin")
+           gsettings-desktop-schemas
+           gtk-doc/stable
+           pkg-config))
+    (inputs
+     (list avahi
+           libgudev
+           libsoup))
+    (synopsis "WebDav server implementation using libsoup")
+    (description "PhoDav was initially developed as a file-sharing mechanism for Spice,
 but it is generic enough to be reused in other projects,
 in particular in the GNOME desktop.")
-   (home-page "https://wiki.gnome.org/phodav")
-   (license license:lgpl2.1+)))
+    (home-page "https://wiki.gnome.org/phodav")
+    (license license:lgpl2.1+)))
 
 (define-public gnome-color-manager
   (package
@@ -1307,7 +1319,6 @@ in the GNOME desktop.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gnome-online-accounts" ,gnome-online-accounts)
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("grilo" ,grilo)
        ("libgdata" ,libgdata)
        ("libgfbgraph" ,gfbgraph)
@@ -1323,80 +1334,115 @@ It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
 
 (define-public gssdp
   (package
-   (name "gssdp")
-   (version "1.2.3")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major+minor version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "1s57i8a8wnnxnsfl27cq4503dkdlzbrhry5zpg23sfqfffvdqqx2"))))
-   (build-system meson-build-system)
-   (native-inputs
-    `(("gettext" ,gettext-minimal)
-      ("glib:bin" ,glib "bin")
-      ("gobject-introspection" ,gobject-introspection)
-      ("gtk-doc" ,gtk-doc/stable)
-      ("pkg-config" ,pkg-config)
-      ("vala" ,vala)))
-   (inputs
-    (list gtk+))
-   (propagated-inputs
-    ;; The .pc file "Requires" libsoup-2.4.
-    `(("libsoup" ,libsoup-minimal-2)))
-   (synopsis "GObject-based API over @acronym{SSDP, Simple Service Discovery
+    (name "gssdp")
+    (version "1.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "07hn2xma2yh17v7rlvcaibkn16bx4l9qig3mlb8hdp6qfiraqh7b"))))
+    (build-system meson-build-system)
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           gi-docgen
+           gobject-introspection
+           pkg-config
+           vala))
+    (inputs
+     (list gtk))
+    (propagated-inputs
+     ;; The .pc file "Requires" libsoup.
+     (list libsoup))
+    (synopsis "GObject-based API over @acronym{SSDP, Simple Service Discovery
 Protocol} for GNOME")
-   (description "This package provides a library to handle resource discovery
+    (description "This package provides a library to handle resource discovery
 and announcement over @acronym{SSDP, Simple Service Discovery Protocol} and
 a debugging tool, @command{gssdp-device-sniffer}.")
-   (home-page "https://gitlab.gnome.org/GNOME/gssdp")
-   (license license:lgpl2.0+)))
+    (home-page "https://gitlab.gnome.org/GNOME/gssdp")
+    (license license:lgpl2.0+)))
+
+(define-public gssdp-1.4
+  (package
+    (inherit gssdp)
+    (name "gssdp")
+    (version "1.4.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "10hm8cgh2p8441xc83kswjgghrrqpzgblvc5523jp0pvayfq8xl6"))))
+    (propagated-inputs (modify-inputs (package-propagated-inputs gssdp)
+              (replace "libsoup" libsoup-minimal-2)))))
 
 (define-public gupnp
   (package
-   (name "gupnp")
-   (version "1.2.4")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major+minor version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "1ld7mrpdv9cszmfzh7i19qx4li25j3fr7x1jp38l8phzlmz3187p"))))
-   (build-system meson-build-system)
-   (arguments
-    `(#:phases
-      (modify-phases %standard-phases
-        (add-before 'check 'pre-check
-          (lambda _
-            ;; Tests require a writable HOME.
-            (setenv "HOME" (getcwd)))))))
-   (native-inputs
-    `(("gettext" ,gettext-minimal)
-      ("glib:bin" ,glib "bin")
-      ("gobject-introspection" ,gobject-introspection)
-      ("gtk-doc" ,gtk-doc/stable)
-      ("pkg-config" ,pkg-config)
-      ("vala" ,vala)))
-   (inputs
-    (list gssdp gtk+ libsoup))
-   (propagated-inputs
-    (list ;; For ‘org.gnome.system.proxy’.
-          gsettings-desktop-schemas))
-   (synopsis "PnP API for GNOME")
-   (description "This package provides GUPnP, an object-oriented framework
+    (name "gupnp")
+    (version "1.5.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0y0v0m6afnx879hjvhj2lrawp9qhpyp8mbds0yp544imghajk0wq"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; Tests require a writable HOME.
+             (setenv "HOME" (getcwd)))))))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           gtk-doc/stable
+           pkg-config
+           vala))
+    (propagated-inputs
+     ;; These libraries are required by the .pc file.
+     (list glib
+           gsettings-desktop-schemas    ;for ‘org.gnome.system.proxy’.
+           gssdp
+           libsoup
+           libxml2))
+    (synopsis "PnP API for GNOME")
+    (description "This package provides GUPnP, an object-oriented framework
 for creating UPnP devices and control points, written in C using
 @code{GObject} and @code{libsoup}.")
-   (home-page "https://gitlab.gnome.org/GNOME/gupnp")
-   (license license:lgpl2.0+)))
+    (home-page "https://gitlab.gnome.org/GNOME/gupnp")
+    (license license:lgpl2.0+)))
+
+(define-public gupnp-1.4
+  (package
+    (inherit gupnp)
+    (name "gupnp")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0vz3ifs8mi3zaz8zj8v27zfkf6xg82y39mcgqspa38jdp01gn3sr"))))
+    (propagated-inputs (modify-inputs (package-propagated-inputs gupnp)
+              (replace "libsoup" libsoup-minimal-2)
+              (replace "gssdp" gssdp-1.4)))))
 
 (define-public gupnp-dlna
   (package
    (name "gupnp-dlna")
-   (version "0.10.5")
+   (version "0.12.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1404,8 +1450,8 @@ for creating UPnP devices and control points, written in C using
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "0spzd2saax7w776p5laixdam6d7smyynr9qszhbmq7f14y13cghj"))))
-   (build-system gnu-build-system)
+              "1rj8j2nz835slqs09bfp6hmyyf6v5azwjzin7v9jhmmwhmpvjlrx"))))
+   (build-system meson-build-system)
    (native-inputs
     (list gettext-minimal
           `(,glib "bin")
@@ -1428,7 +1474,7 @@ given profile, etc.  DLNA is a subset of UPnP A/V.")
 (define-public gupnp-av
   (package
    (name "gupnp-av")
-   (version "0.12.11")
+   (version "0.14.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1436,8 +1482,8 @@ given profile, etc.  DLNA is a subset of UPnP A/V.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1p3grslwqm9bc8rmpn4l48d7v9s84nina4r9xbd932dbj8acz7b8"))))
-   (build-system gnu-build-system)
+              "0kry7arwmvs8b4175wia3l0s02ap1shq68f29g2xjrhc9g6f175p"))))
+   (build-system meson-build-system)
    (native-inputs
     (list gettext-minimal
           `(,glib "bin")
@@ -1457,7 +1503,7 @@ and implementation of UPnP A/V profiles.")
 (define-public libmediaart
   (package
     (name "libmediaart")
-    (version "1.9.5")
+    (version "1.9.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1465,13 +1511,16 @@ and implementation of UPnP A/V profiles.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1mlw1qgj8nkd9ll6b6h54r1gfdy3zp8a8xqz7qfyfaj85jjgbph7"))))
+                "05vzcxm8fqizz77qzdxlsqb5lsqzc4681sy8z63haf6vswjm1g63"))))
     (build-system meson-build-system)
     (native-inputs
-     (list `(,glib "bin") pkg-config))
+     (list `(,glib "bin")
+           gettext-minimal
+           gobject-introspection
+           pkg-config
+           vala))
     (inputs
-     (list gdk-pixbuf gettext-minimal gobject-introspection
-           `(,gtk+ "doc") vala))
+     (list gdk-pixbuf))
     (synopsis "Media art library for the GNOME desktop")
     (description
      "The libmediaart library is the foundation for media art caching,
@@ -1481,68 +1530,67 @@ extraction, and lookup for applications on the desktop.")
 
 (define-public gnome-initial-setup
   (package
-   (name "gnome-initial-setup")
-   (version "40.4")
-   (source (origin
-            (method url-fetch)
-           (uri (string-append "mirror://gnome/sources/gnome-initial-setup/"
-                                (version-major version)
-                                "/gnome-initial-setup-" version ".tar.xz"))
-            (sha256
-             (base32
-              "06q3p4f8g9zr7a4mw3qr556mi0dg9qzrj8n46ybdz93fxs26aaj1"))))
-   (build-system meson-build-system)
-   (arguments
-    `(#:configure-flags '(;; Enable camera support for user selfie.
-                          "-Dcheese=auto"
-                          "-Dsystemd=false")
-      #:phases (modify-phases %standard-phases
-                 (add-after 'unpack 'set-gkbd-file-name
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     ;; Allow the "Preview" button in the keyboard layout
-                     ;; selection dialog to display the layout.
-                     (let ((libgnomekbd (assoc-ref inputs "libgnomekbd")))
-                       (substitute* "gnome-initial-setup/pages/keyboard/cc-input-chooser.c"
-                         (("\"gkbd-keyboard-display")
-                          (string-append "\"" libgnomekbd
-                                         "/bin/gkbd-keyboard-display")))
-                       #t))))))
-   (native-inputs
-    `(("gettext" ,gettext-minimal)
-      ("glib:bin" ,glib "bin")
-      ("gobject-introspection" ,gobject-introspection)
-      ("gtk+:bin" ,gtk+ "bin")
-      ("pkg-config" ,pkg-config)))
-   (inputs
-    `(("accountsservice" ,accountsservice)
-      ;("adwaita-icon-theme" ,adwaita-icon-theme)
-      ("elogind" ,elogind)
-      ("gdm" ,gdm)
-      ("geoclue" ,geoclue)
-      ("gnome-desktop" ,gnome-desktop)
-      ("gnome-online-accounts" ,gnome-online-accounts)
-      ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-      ("gstreamer" ,gstreamer)
-      ("ibus" ,ibus)
-      ("json-glib" ,json-glib)
-      ("krb5" ,mit-krb5)
-      ("libgweather" ,libgweather)
-      ("libnma" ,libnma)
-      ("libsecret" ,libsecret)
-      ("network-manager" ,network-manager)
-      ("packagekit" ,packagekit)
-      ("polkit" ,polkit)
-      ("pwquality" ,libpwquality)
-      ("rest" ,rest)
-      ("upower" ,upower)
-      ("webkitgtk" ,webkitgtk-with-libsoup2)
-      ("libgnomekbd" ,libgnomekbd)))
-   (synopsis "Initial setup wizard for GNOME desktop")
-   (description "This package provides a set-up wizard when a
+    (name "gnome-initial-setup")
+    (version "42.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gnome-initial-setup/"
+                                  (version-major version)
+                                  "/gnome-initial-setup-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0yxy39a7d2whphd0jskvra5q8zy4v7m7lziy5fxibgls4j5xk0sd"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-Dsystemd=false")
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-gkbd-file-name
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Allow the "Preview" button in the keyboard layout
+              ;; selection dialog to display the layout.
+              (substitute* "gnome-initial-setup/pages/keyboard/cc-input-chooser.c"
+                (("\"gkbd-keyboard-display")
+                 (string-append "\"" (search-input-file
+                                      inputs
+                                      "bin/gkbd-keyboard-display")))))))))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config))
+    (inputs
+     (list accountsservice
+           cheese
+           elogind
+           gdm
+           geoclue
+           gnome-desktop
+           gnome-online-accounts-3.44
+           gstreamer
+           ibus
+           json-glib
+           mit-krb5
+           libgnomekbd
+           libgweather4-with-libsoup2
+           libhandy
+           libnma
+           libpwquality
+           libsecret
+           network-manager
+           packagekit
+           polkit
+           rest
+           upower
+           webkitgtk-with-libsoup2))
+    (synopsis "Initial setup wizard for GNOME desktop")
+    (description "This package provides a set-up wizard when a
 user logs into GNOME for the first time.  It typically provides a
 tour of all gnome components and allows the user to set them up.")
-   (home-page "https://gitlab.gnome.org/GNOME/gnome-initial-setup")
-   (license license:gpl2)))
+    (home-page "https://gitlab.gnome.org/GNOME/gnome-initial-setup")
+    (license license:gpl2)))
 
 (define-public gnome-user-share
   (package
@@ -1643,7 +1691,7 @@ to preview files on the GNOME desktop.")
 (define-public rygel
   (package
     (name "rygel")
-    (version "0.40.4")
+    (version "0.41.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1651,7 +1699,7 @@ to preview files on the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12rl1bgvwbdmnhva57b22q7d2pwqvi2rizygiyy6qpv1x3dqlvbk"))))
+                "0wivd60hn115ar3hsrsa595kpxzp8gwq30ksh32qlq8j9dhlq65i"))))
     (build-system meson-build-system)
     (arguments
      ;; Disable the tracker plugin.
@@ -1705,7 +1753,7 @@ client devices can handle.")
 (define-public libnma
   (package
     (name "libnma")
-    (version "1.8.28")
+    (version "1.10.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1713,29 +1761,31 @@ client devices can handle.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja"))))
+                "0h095a26w3sgbspsf7wzz8ddg62j3jb9ckrrv41k7cdp0k2dkhsg"))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags (list "-Dlibnma_gtk4=true")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-docbook-xml
            (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
-                                          "/xml/dtd/docbook")))
-               (substitute* "libnma-docs.xml"
-                 (("http://.*/docbookx\\.dtd")
-                  (string-append xmldoc "/docbookx.dtd")))
-               #t))))))
+             (substitute* "libnma-docs.xml"
+               (("http://.*/docbookx\\.dtd")
+                (search-input-file
+                 inputs "xml/dtd/docbook/docbookx.dtd"))))))))
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.3)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gtk-doc" ,gtk-doc/stable)
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list docbook-xml-4.3
+           gettext-minimal
+           `(,glib "bin")
+           gtk-doc/stable
+           gobject-introspection
+           pkg-config
+           vala))
     (inputs
-     (list gcr gtk+ iso-codes mobile-broadband-provider-info
+     (list gcr
+           gtk
+           iso-codes
+           mobile-broadband-provider-info
            network-manager))
     (synopsis "Network Manager's applet library")
     (description "Libnma is an applet library for Network Manager.  It was
@@ -1885,7 +1935,7 @@ and running smart commands.")
 (define-public gnome-user-docs
   (package
    (name "gnome-user-docs")
-   (version "40.5")
+   (version "42.0")
    (source
     (origin
       (method url-fetch)
@@ -1893,7 +1943,7 @@ and running smart commands.")
                           (version-major version)
                           "/gnome-user-docs-" version ".tar.xz"))
       (sha256
-       (base32 "0p6ysdqlfc7vvzsrcanl9bhsc7666sv42xxzpbgsf5j55z3yrkpr"))))
+       (base32 "01g9smkk2sj3yrih2wjn6vx9av855n7w6nqf9wpxvfq086h7vcmj"))))
    (build-system gnu-build-system)
    (native-inputs
     (list gettext-minimal itstool pkg-config libxml2))
@@ -1980,7 +2030,7 @@ formats like PNG, SVG, PDF and EPS.")
     (propagated-inputs
      `(("gcr" ,gcr)
        ("glib" ,glib)
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
+       ("gnome-online-accounts" ,gnome-online-accounts)
        ("json-glib" ,json-glib)
        ("liboauth" ,liboauth)
        ("libsoup" ,libsoup-minimal-2)
@@ -2024,7 +2074,7 @@ to other formats.")
 (define-public gnome-characters
   (package
     (name "gnome-characters")
-    (version "40.0")
+    (version "42.0")
     (source
      (origin
        (method url-fetch)
@@ -2033,28 +2083,35 @@ to other formats.")
                            "/gnome-characters-" version ".tar.xz"))
        (sha256
         (base32
-         "0z2xa4w921bzpzj6gv88pvbrijcnnwni6jxynwz0ybaravyzaqha"))))
+         "1y40g7k7yyzikbbxhf69q4c0221lga1cli1p617v99pq2swgz82x"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       #:phases (modify-phases %standard-phases
-                  (add-after 'install 'wrap
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; GNOME Characters needs Typelib files from GTK and
-                      ;; gnome-desktop.
-                      (wrap-program (string-append (assoc-ref outputs "out")
-                                                   "/bin/gnome-characters")
-                        `("GI_TYPELIB_PATH" ":" prefix
-                          (,(getenv "GI_TYPELIB_PATH")))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'disable-gtk-update-icon-cache
+                     (lambda _
+                       (setenv "DESTDIR" "/")))
+                   (add-after 'install 'wrap
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       ;; GNOME Characters needs Typelib files from GTK and
+                       ;; gnome-desktop.
+                       (wrap-program (search-input-file outputs
+                                                        "bin/gnome-characters")
+                         `("GI_TYPELIB_PATH" ":" prefix
+                           (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gtk+:bin" ,gtk+ "bin")
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-minimal)))
+     (list gettext-minimal
+           `(,glib "bin")
+           pkg-config
+           python-minimal))
     (inputs
-     (list gjs gtk+ libhandy libunistring gnome-desktop))
+     (list gjs
+           gnome-desktop
+           gtk
+           libadwaita
+           libhandy
+           libunistring))
     (home-page "https://wiki.gnome.org/Apps/CharacterMap")
     (synopsis "Find and insert unusual characters")
     (description "Characters is a simple utility application to find
@@ -2087,7 +2144,7 @@ commonly used macros.")
 (define-public gnome-contacts
   (package
     (name "gnome-contacts")
-    (version "40.0")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-contacts/"
@@ -2095,48 +2152,42 @@ commonly used macros.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0w2g5xhw65adzvwzakrj5kaim4sw1w7s8qqwm3nm6inq50znzpn9"))))
+                "05jj5kiab13crm18r166w7h31jpny7f3px98q7d2ix93vj7w60l8"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Dcheese=disabled")
+     `(#:glib-or-gtk? #t
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'generate-vapis
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; To generate goa's missing .vapi file
-             (define goa
-               (assoc-ref inputs "gnome-online-accounts:lib"))
-
-             (invoke "vapigen" "--directory=vapi" "--pkg=gio-2.0"
-                     "--library=goa-1.0"
-                     (string-append goa "/share/gir-1.0/Goa-1.0.gir"))))
          (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
            (lambda _
-             (substitute* "build-aux/meson_post_install.py"
-               (("gtk-update-icon-cache") "true")))))))
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false")))))))
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.2)
-       ("docbook-xsl" ,docbook-xsl)
-       ("glib:bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)))
+     (list desktop-file-utils
+           docbook-xml
+           docbook-xml-4.2
+           docbook-xsl
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           libxslt
+           pkg-config))
     (inputs
-     `(("docbook-xml" ,docbook-xml)
-       ("dockbook-xsl" ,docbook-xsl)
-       ("evolution-data-server" ,evolution-data-server)
-       ("gettext" ,gettext-minimal)
-       ("gnome-desktop" ,gnome-desktop)
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("gtk+" ,gtk+)
-       ("libgee" ,libgee)
-       ("libhandy" ,libhandy)
-       ("libxslt" ,libxslt)
-       ("telepathy-glib" ,telepathy-glib)
-       ("vala" ,vala)))
+     (list evolution-data-server-3.44
+           gnome-desktop
+           gnome-online-accounts-3.44
+           gst-plugins-base
+           gtk
+           libadwaita
+           libgee
+           libhandy
+           libportal
+           telepathy-glib
+           vala))
     (propagated-inputs
-     (list folks telepathy-mission-control))
+     (list folks-with-libsoup2
+           telepathy-mission-control))
     (synopsis "GNOME's integrated address book")
     (description
      "GNOME Contacts organizes your contact information from online and
@@ -2147,27 +2198,25 @@ offline sources, providing a centralized place for managing your contacts.")
 (define-public gnome-desktop
   (package
     (name "gnome-desktop")
-    (version "40.4")
+    (version "42.4")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnome/sources/" name "/"
-                          (version-major version)  "/"
-                          name "-" version ".tar.xz"))
-      (sha256
-       (base32
-        "1vs5knn2yj6a449p9bn5w5407i1yvxfxg8xv844qgl70hpsrdbl8"))))
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major version)  "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "09ddr5fzhh02fcn7xl1wy18qfsdqryd5msl2nbhdnsbr0vawkqhw"))))
     (build-system meson-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-path
            (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libc   (assoc-ref inputs "libc")))
-               (substitute* "libgnome-desktop/gnome-languages.c"
-                 (("\"locale\"")
-                  (string-append "\"" libc "/bin/locale\"")))
-               #t)))
+             (substitute* "libgnome-desktop/gnome-languages.c"
+               (("\"locale\"")
+                (format #f "~s" (search-input-file inputs "bin/locale"))))))
          (add-before 'configure 'patch-bubblewrap
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "libgnome-desktop/gnome-desktop-thumbnail-script.c"
@@ -2179,8 +2228,8 @@ offline sources, providing a centralized place for managing your contacts.")
                                "\", \""
                                (%store-directory)
                                "\","))
-               (("\"--ro-bind\", \"/etc/ld.so.cache\", \"/etc/ld.so.cache\",") ""))
-             #t))
+               (("\"--ro-bind\", \"/etc/ld.so.cache\", \"/etc/ld.so.cache\",")
+                ""))))
          (add-before 'check 'pre-check
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Tests require a running X server and locales.
@@ -2192,26 +2241,27 @@ offline sources, providing a centralized place for managing your contacts.")
                      (search-input-directory inputs
                                              "lib/locale")))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for gdbus-codegen
-       ("glibc-locales" ,glibc-locales) ; for tests
-       ("gobject-introspection" ,gobject-introspection)
-       ("itstool" ,itstool)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("xmllint" ,libxml2)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list `(,glib "bin")                   ;for gdbus-codegen
+           glibc-locales                    ;for tests
+           gobject-introspection
+           itstool
+           intltool
+           pkg-config
+           libxml2
+           xorg-server-for-tests))
     (propagated-inputs
      ;; Required by gnome-desktop-3.0.pc.
-     (list gsettings-desktop-schemas
+     (list gsettings-desktop-schemas-next
+           gtk
            gtk+
            iso-codes
            libseccomp
            libx11
            xkeyboard-config))
     (inputs
-     (list gdk-pixbuf
+     (list bubblewrap
+           gdk-pixbuf
            glib
-           bubblewrap
            libxext
            libxkbfile
            libxrandr))
@@ -2225,13 +2275,13 @@ There is no API or ABI guarantee, although we are doing our best to provide
 stability.  Documentation for the API is available with gtk-doc.
 
 The gnome-about program helps find which version of GNOME is installed.")
-    ; Some bits under the LGPL.
+                                        ; Some bits under the LGPL.
     (license license:gpl2+)))
 
 (define-public gnome-disk-utility
   (package
     (name "gnome-disk-utility")
-    (version "40.2")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2239,7 +2289,7 @@ The gnome-about program helps find which version of GNOME is installed.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1rr1ypb89p51b6428yqvczmpmylwjfnhnkgx78hzm3vxm3m15lff"))))
+                "02q906gn420xbf1f0apazryzqfv5b1ammz1vrci66hk79m2n8r8v"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dlogind=libelogind")
@@ -2249,16 +2299,15 @@ The gnome-about program helps find which version of GNOME is installed.")
            ;; Don't create 'icon-theme.cache'.
            (lambda _
              (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))
-             #t)))))
+               (("gtk-update-icon-cache") "true")))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("docbook-xml" ,docbook-xml)
-       ("docbook-xsl" ,docbook-xsl)
-       ("libxml2" ,libxml2)
-       ("libxslt" ,libxslt)))
+     (list docbook-xml
+           docbook-xsl
+           `(,glib "bin")
+           gettext-minimal
+           pkg-config
+           libxml2
+           libxslt))
     (inputs
      (list elogind
            glib
@@ -2280,7 +2329,7 @@ The gnome-about program helps find which version of GNOME is installed.")
 (define-public gnome-font-viewer
   (package
     (name "gnome-font-viewer")
-    (version "40.0")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-font-viewer/"
@@ -2288,33 +2337,34 @@ The gnome-about program helps find which version of GNOME is installed.")
                                   "/gnome-font-viewer-" version ".tar.xz"))
               (sha256
                (base32
-                "0hpyi0sz3gcqqs9lkwyk8b6hr39m3n27432x98kxr436jj37dk6j"))))
+                "1k4dhk5dmkpxb5xpr9vrl7k2fdpi2fidzni1l2hhb891zzgvi8ng"))))
     (build-system meson-build-system)
     (arguments
-     `(#:meson ,meson-0.60
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-post-install-script
-           (lambda _
-             (substitute* "meson-postinstall.sh"
-               (("update-desktop-database") (which "true")))
-             #t))
-         (add-after 'install 'patch-thumbnailer
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute*
-                   (string-append
-                    out
-                    "/share/thumbnailers/gnome-font-viewer.thumbnailer")
-                 (("gnome-thumbnail-font")
-                  (string-append out "/bin/gnome-thumbnail-font"))))
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-post-install-script
+            (lambda _
+              (substitute* "meson-postinstall.sh"
+                (("update-desktop-database") (which "true")))))
+          (add-after 'install 'patch-thumbnailer
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute*
+                  (search-input-file
+                   outputs "share/thumbnailers/gnome-font-viewer.thumbnailer")
+                (("gnome-thumbnail-font")
+                 (search-input-file outputs "bin/gnome-thumbnail-font"))))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           `(,glib "bin")
+           pkg-config))
     (inputs
-     (list glib gnome-desktop gtk+ libhandy libxml2))
+     (list glib
+           gnome-desktop
+           gtk
+           libadwaita
+           libhandy
+           libxml2))
     (home-page "https://gitlab.gnome.org/GNOME/gnome-font-viewer")
     (synopsis "GNOME Fonts")
     (description "Application to show you the fonts installed on your computer
@@ -2325,7 +2375,7 @@ the font would look under various sizes.")
 (define-public gcr
   (package
     (name "gcr")
-    (version "3.41.0")
+    (version "3.41.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2333,56 +2383,62 @@ the font would look under various sizes.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "00fsf82ycac8qi0kkiq759p6jrn63pyz4ksn4wnq7m4ax94zq289"))))
+                "0kx2pv272p0qc0nq1287gciyn34d95yxg41vq3lzxfzyqaijhwdv"))))
     (build-system meson-build-system)
     (arguments
-     `(#:meson ,meson-0.60
-       #:phases
-       (modify-phases %standard-phases
-         ;; These fail because /var/lib/dbus/machine-id is not present in the
-         ;; build environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (substitute* "gcr/meson.build"
-               (("[[:blank:]]+'system-prompt',")
-                ""))
-             #t))
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))
-             #t))
-         (add-after 'unpack 'fix-systemd-detection
-           (lambda _
-             (substitute* "gcr/gcr-ssh-agent-service.c"
-               (("#ifdef WITH_SYSTEMD")
-                "#if (WITH_SYSTEMD)"))))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Some tests expect to write to $HOME.
-             (setenv "HOME" "/tmp")
-             #t)))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-fatal-warnings-option
+            ;; Otherwise, the gi-docgen tool would fail because of the
+            ;; "Fontconfig error: No writable cache directories" warnings.
+            (lambda _
+              (substitute* (find-files "." "^meson\\.build$")
+                ((".*'--fatal-warnings',.*") ""))))
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "meson_post_install.py"
+                (("gtk-update-icon-cache") "true"))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Some tests expect to write to $HOME.
+              (setenv "HOME" "/tmp")))
+          (replace 'check
+            (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
+              (when tests?
+                (setenv "MESON_TESTTHREADS"
+                        (if parallel-tests?
+                            (number->string (parallel-job-count))
+                            "1"))
+                ;; Work around the "mock prompter couldn't get session bus
+                ;; address: Cannot spawn a message bus without a machine-id"
+                ;; error by manually creating the session bus via
+                ;; 'dbus-run-session'.
+                (invoke "dbus-run-session" "--"
+                        "meson" "test" "-t" "0")))))))
     (inputs
-     (list dbus gnupg ;called as a child process during tests
-           libgcrypt libsecret))
+     (list dbus
+           gnupg
+           libgcrypt
+           libsecret))
     (native-inputs
-     `(("python" ,python-wrapper)       ;for tests
-       ("openssh" ,openssh)             ;for tests
-       ("pkg-config" ,pkg-config)
-       ("gettext" ,gettext-minimal)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("gtk-doc" ,gtk-doc)
-       ("glib" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("libxml2" ,libxml2)
-       ("vala" ,vala)
-       ("xsltproc" ,libxslt)))
+     (list gettext-minimal
+           gi-docgen
+           `(,glib "bin")
+           gobject-introspection
+           gtk-doc
+           libxml2
+           libxslt
+           openssh
+           pkg-config
+           python-wrapper
+           vala))
     ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
     (propagated-inputs
-     (list p11-kit glib gtk+))
+     (list glib
+           gtk+
+           p11-kit))
     (home-page "https://www.gnome.org")
     (synopsis "Libraries for displaying certificates and accessing key stores")
     (description
@@ -2479,7 +2535,7 @@ GNOME Desktop.")
 (define-public gnome-keyring
   (package
     (name "gnome-keyring")
-    (version "40.0")
+    (version "42.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2487,12 +2543,10 @@ GNOME Desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0cdrlcw814zayhvlaxqs1sm9bqlfijlp22dzzd0g5zg2isq4vlm3"))))
+                "1rp38v4s9116ivycp27w806wihqid48gk3p0czzbg9knri0d1x67"))))
     (build-system gnu-build-system)
     (arguments
      (list
-      #:tests? #f  ;48 of 603 tests fail because /var/lib/dbus/machine-id does
-                                        ;not exist
       #:configure-flags
       #~(list
          (string-append "--with-pkcs11-config="
@@ -2504,29 +2558,45 @@ GNOME Desktop.")
           (add-after 'unpack 'fix-/bin/sh-reference
             (lambda _
               (substitute* "po/Makefile.in.in"
-                (("/bin/sh") (which "sh"))))))))
+                (("/bin/sh") (which "sh")))))
+          (delete 'check)
+          (add-after 'install 'check
+            (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
+              (when tests?
+                (setenv "HOME" "/tmp")  ;some tests require a writable HOME
+                (setenv "XDG_DATA_DIRS" (string-append (getenv "XDG_DATA_DIRS")
+                                                       ":" #$output "/share"))
+                (invoke "dbus-run-session" "make" "check" "-j"
+                        (if parallel-tests?
+                            (number->string (parallel-job-count))
+                            "1"))))))))
     (inputs
-     (list libgcrypt linux-pam openssh dbus gcr))
+     (list dbus
+           gcr
+           libgcrypt
+           linux-pam
+           openssh))
     (native-inputs
-     (list pkg-config
+     (list dbus                         ;for tests
+           docbook-xml-4.3
+           docbook-xml
+           docbook-xsl
+           gettext-minimal
            `(,glib "bin")
            glib                         ;for m4 macros
-           python-wrapper               ;for tests
-           intltool
-           autoconf
-           automake
            libxml2                      ;for XML_CATALOG_FILES
            libxslt                      ;for documentation
-           docbook-xml
-           docbook-xsl))
+           pkg-config
+           python-wrapper))             ;for tests
     (propagated-inputs
      (list gcr))
     (home-page "https://www.gnome.org")
     (synopsis "Daemon to store passwords and encryption keys")
     (description
-     "gnome-keyring is a program that keeps passwords and other secrets for
-users.  It is run as a daemon in the session, similar to ssh-agent, and other
-applications locate it via an environment variable or D-Bus.
+     "@command{gnome-keyring} is a program that keeps passwords and other
+secrets for users.  It is run as a daemon in the session, similar to
+@command{ssh-agent}, and other applications locate it via an environment
+variable or D-Bus.
 
 The program can manage several keyrings, each with its own master password,
 and there is also a session keyring which is never stored to disk, but
@@ -2536,42 +2606,34 @@ forgotten when the session ends.")
 (define-public evince
   (package
     (name "evince")
-    (version "40.2")
+    (version "42.3")
     (source (origin
               (method url-fetch)
-              (uri "mirror://gnome/sources/evince/40/evince-40.2.tar.xz")
+              (uri "mirror://gnome/sources/evince/42/evince-42.3.tar.xz")
               (sha256
                (base32
-                "0xrwls1bhvny8vvd7mfjy9p26zjch0pd6x6j9jn9g2ka6xwyrxqg"))))
+                "0pk42icnf4kdcaqaj17mcf4sxi82h1fdg2ds2zdrcv4lbj2czbj9"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
        #:build-type "release"
-       #:configure-flags
-       '("-Dnautilus=false"
-         "-Dintrospection=true"
-         ;; XXX: Generating the documentation fails because the
-         ;; libevdocument.devhelp document cannot be created. This seems to be
-         ;; caused by a problem during the XSL transformation.
-         "-Dgtk_doc=false")
+       #:configure-flags '("-Dnautilus=false")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
            ;; Don't create 'icon-theme.cache'.
            (lambda _
              (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))
-             #t)))))
+               (("gtk-update-icon-cache") "true")))))))
     (inputs
      (list libarchive
            libgxps
            libspectre
            djvulibre
            ghostscript
-           poppler
+           poppler-next
            libtiff
-           texlive-libkpathsea ; for DVI support
+           texlive-libkpathsea          ; for DVI support
            gnome-desktop
            gsettings-desktop-schemas
            gspell
@@ -2591,13 +2653,14 @@ forgotten when the session ends.")
            libsecret
            libhandy))
     (native-inputs
-     `(("itstool" ,itstool)
-       ("intltool" ,intltool)
-       ("glib" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)
-       ("xmllint" ,libxml2)))
-    (home-page "https://www.gnome.org/projects/evince/")
+     (list itstool
+           gettext-minimal
+           gi-docgen
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config
+           libxml2))
+    (home-page " https://wiki.gnome.org/Apps")
     (synopsis "GNOME's document viewer")
     (description
      "Evince is a document viewer for multiple document formats.  It
@@ -2645,35 +2708,45 @@ on the GNOME Desktop with a single simple application.")
 schemas for settings shared by various components of the GNOME desktop.")
     (license license:lgpl2.1+)))
 
-(define-public python-liblarch
+(define-public gsettings-desktop-schemas-next
   (package
-    (name "python-liblarch")
-    (version "3.0.1")
+    (inherit gsettings-desktop-schemas)
+    (name "gsettings-desktop-schemas-next") ;to avoid propagation conflicts
+    (version "42.0")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/getting-things-gnome/liblarch")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major version)  "/"
+                           name "-" version ".tar.xz"))
        (sha256
-        (base32 "0xv2mfvyzipbny3iz8vll77wsqxfwh28xj6bj1ff0l452waph45m"))))
+        (base32
+         "1li3fcqwnw20f4j0i21i88fygm0hli8gmzkn4apgf8ynkrd371k6"))))))
+
+(define-public python-liblarch
+  (package
+    (name "python-liblarch")
+    (version "3.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/getting-things-gnome/liblarch")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "125rmrdbc84lapfh8c77zxnmwas20xdfamqmilhv1smkxn2q4sh3"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'start-xserver
-           (lambda* (#:key inputs #:allow-other-keys)
-             (system (format #f "~a/bin/Xvfb :1 &"
-                             (assoc-ref inputs "xorg-server")))
-             (setenv "DISPLAY" ":1")
-             #t)))))
-    (native-inputs
-     (list xorg-server-for-tests))
-    (inputs
-     (list gtk+))
-    (propagated-inputs
-     (list python-pygobject))
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'start-xserver
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (system (format #f "~a/bin/Xvfb :1 &"
+                                      (assoc-ref inputs "xorg-server")))
+                      (setenv "DISPLAY" ":1"))))))
+    (native-inputs (list xorg-server-for-tests))
+    (inputs (list gtk+))
+    (propagated-inputs (list python-pygobject))
     (home-page "https://wiki.gnome.org/Projects/liblarch")
     (synopsis "Library to easily handle complex data structures")
     (description
@@ -2689,7 +2762,7 @@ and how they are displayed (View).")
 (define-public gtg
   (package
     (name "gtg")
-    (version "0.5")
+    (version "0.6")
     (source
      (origin
        (method git-fetch)
@@ -2698,37 +2771,38 @@ and how they are displayed (View).")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0b2slm7kjq6q8c7v4m7aqc8m1ynjxn3bl7445srpv1xc0dilq403"))))
+        (base32 "1wcivqp4z3a2jdr2wdrldzwy9v6hlfp5sk0pmh80znlgvl7q3jiv"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/gtg"))
-                   (pylib (string-append (assoc-ref outputs "out")
-                                         "/lib/python"
-                                         ,(version-major+minor
-                                           (package-version python))
-                                         "/site-packages")))
-               (wrap-program prog
-                 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib))
-                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
-               #t))))))
+     (list
+      #:glib-or-gtk? #t
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/gtg")
+                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                       ,(python:site-packages inputs outputs)))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("pkg-config" ,pkg-config)))
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config
+           python))
     (inputs
-     (list librsvg
+     (list bash-minimal
+           librsvg
            gsettings-desktop-schemas
            gtk+
            pango
+           python
            python-dbus
            python-liblarch
            python-lxml
@@ -2782,38 +2856,10 @@ Specification, the icon naming utility maps the icon names used by the
 GNOME and KDE desktops to the icon names proposed in the specification.")
     (license license:lgpl2.1+)))
 
-(define-public gnome-icon-theme
-  (package
-    (name "gnome-icon-theme")
-    (version "3.12.0")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnome/sources/" name "/"
-                          (version-major+minor version)  "/"
-                          name "-" version ".tar.xz"))
-      (sha256
-       (base32
-        "0fjh9qmmgj34zlgxb09231ld7khys562qxbpsjlaplq2j85p57im"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:configure-flags
-       ;; Don't create 'icon-theme.cache'.
-       (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
-              (true      (string-append coreutils "/bin/true")))
-         (list (string-append "GTK_UPDATE_ICON_CACHE=" true)))))
-    (native-inputs
-     (list icon-naming-utils intltool pkg-config))
-    (home-page "https://wiki.gnome.org/Personalization")
-    (synopsis "GNOME icon theme")
-    (description "Icons for the GNOME desktop.")
-    (license license:lgpl3))) ; or Creative Commons BY-SA 3.0
-
-;; gnome-icon-theme was renamed to adwaita-icon-theme after version 3.12.0.
 (define-public adwaita-icon-theme
-  (package/inherit gnome-icon-theme
+  (package
     (name "adwaita-icon-theme")
-    (version "40.1.1")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2821,13 +2867,25 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xpqa1rgmixlp953938d08xvf7kv36h747ysial8g65dsrp46v0b"))))
+                "1q5i31zd5jzr12p6vn831afwnzbzf6x73wna1y86drnyr2nvb1ay"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:make-flags
+           ;; Don't create 'icon-theme.cache'.
+           #~(list "GTK_UPDATE_ICON_CACHE=")))
     (native-inputs
      ;; The following requires the SVG pixbuf loader, provided by librsvg,
      ;; available on x86_64 only.
      `(,@(if (target-64bit?)
-             `(("gtk-encode-symbolic-svg" ,gtk+ "bin"))
-             '())))))
+             `((,gtk+ "bin"))             ;for gtk-encode-symbolic-svg
+             '())))
+    (home-page "https://gitlab.gnome.org/GNOME/adwaita-icon-theme")
+    (synopsis "GNOME icon theme")
+    (description "Icons for the GNOME desktop.")
+    (license license:lgpl3))) ; or Creative Commons BY-SA 3.0
+
+(define-public gnome-icon-theme
+  (deprecated-package "gnome-icon-theme" adwaita-icon-theme))
 
 (define-public tango-icon-theme
   (package
@@ -3047,42 +3105,45 @@ some form of information without getting in the user's way.")
 (define-public libpeas
   (package
     (name "libpeas")
-    (version "1.30.0")
+    (version "1.32.0")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnome/sources/" name "/"
-                          (version-major+minor version)  "/"
-                          name "-" version ".tar.xz"))
-      (sha256
-       (base32
-        "18xrk1c1ixlhkmykcfiafrl2am470ws687xqvjlq40zwkcp5dx8b"))))
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major+minor version)  "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "03ixrhfkywcb409dd0hybyb6i291phwy8si4kc17g29fl07m49fn"))))
     (build-system meson-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (add-before 'check 'start-xserver
            (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                   (disp ":1"))
+             (let ((disp ":1"))
                (setenv "DISPLAY" disp)
                (setenv "XDG_CACHE_HOME" "/tmp/xdg-cache")
                (setenv "XDG_CONFIG_HOME" "/tmp")
                ;; Tests require a running X server.
-               (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp))
-               #t))))))
+               (system (format #f "~a ~a &"
+                               (search-input-file inputs "bin/Xvfb")
+                               disp))))))))
     (inputs
-     (list gtk+ glade3 python python-pygobject))
+     (list gtk+
+           glade3
+           python
+           python-pygobject))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list pkg-config
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           xorg-server-for-tests))
     (propagated-inputs
      ;; The .pc file "Requires" gobject-introspection.
      (list gobject-introspection))
-    (home-page "https://wiki.gnome.org/Libpeas")
+    (home-page "https://wiki.gnome.org/Projects/Libpeas")
     (synopsis "GObject plugin system")
     (description
      "Libpeas is a gobject-based plugin engine, targeted at giving every
@@ -3141,7 +3202,6 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
     (build-system meson-build-system)
     (arguments
      (list
-      #:meson meson-0.60
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'skip-gtk-update-icon-cache
@@ -3202,121 +3262,120 @@ the GNOME desktop environment.")
                                 (files '("lib/glade/modules")))))))
 
 (define-public blueprint-compiler
-  (let ((commit "87cedc2c7e48b01dc1b07aef937e2fe02111b18c"))
-    (package
-      (name "blueprint-compiler")
-      (version "0.2.0")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url
-                       "https://gitlab.gnome.org/jwestman/blueprint-compiler")
-                      (commit commit)))
-                (file-name (string-append name "-" commit "-checkout"))
-                (sha256
-                 (base32
-                  "1mrj5dyjf5d325yc28fpph588qfsz6bm2nx5nnsgcv02bagplxid"))))
-      (build-system meson-build-system)
-      (native-inputs (list gobject-introspection gtk))
-      (inputs (list python))
-      (synopsis "Template markup language")
-      (description
-       "Blueprint is a markup language for GTK user interfaces.  Internally, it
+  (package
+    (name "blueprint-compiler")
+    (version "0.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url
+                     "https://gitlab.gnome.org/jwestman/blueprint-compiler")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0hj7f4xhwjc4x32r3lswwclbw37fw3spy806g4plkmym25hz4ydy"))))
+    (build-system meson-build-system)
+    (native-inputs (list gtk python-pygobject python))
+    (inputs (list python))
+    (synopsis "Template markup language")
+    (description
+     "Blueprint is a markup language for GTK user interfaces.  Internally, it
 compiles to GTKBuilder XML.")
-      (home-page "https://gitlab.gnome.org/jwestman/blueprint-compiler")
-      (license license:lgpl3+))))
+    (home-page "https://gitlab.gnome.org/jwestman/blueprint-compiler")
+    (license license:lgpl3+)))
 
 (define-public cambalache
   (package
-   (name "cambalache")
-   (version "0.10.2")
-   (source (origin
-            (method git-fetch)
-            (uri (git-reference
-                  (url "https://gitlab.gnome.org/jpu/cambalache")
-                  (commit version)))
-            (file-name (git-file-name name version))
-            (sha256
-             (base32 "1mw5gk98zx03yal3p8slaqwhwkc9p2vnh0cssnmg6ivxsjscqhgz"))))
-   (build-system meson-build-system)
-   (arguments
-    (list
-     #:glib-or-gtk? #t
-     #:imported-modules `((guix build python-build-system)
-                          ,@%meson-build-system-modules)
-     #:modules '((guix build meson-build-system)
-                 ((guix build python-build-system) #:prefix python:)
-                 (guix build utils))
-     #:phases
-     #~(modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "cambalache/cmb_view.py"
-               (("GLib\\.find_program_in_path\\('(.*)'\\)" all cmd)
-                (string-append "'"
-                               (search-input-file inputs
-                                                  (string-append "/bin/" cmd))
-                               "'")))))
-         (add-after 'unpack 'patch-build
-           (lambda _
-             (substitute* "postinstall.py"
-               (("update-desktop-database") "true"))))
-         (add-after 'wrap 'python-wrap (assoc-ref python:%standard-phases 'wrap))
-         (delete 'check)
-         (add-after 'install 'add-install-to-pythonpath
-           (assoc-ref python:%standard-phases 'add-install-to-pythonpath))
-         (add-after 'add-install-to-pythonpath 'pre-check
-           (lambda _
-             (system "Xvfb :1 &")
-             (setenv "DISPLAY" ":1")))
-         (add-after 'pre-check 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (with-directory-excursion ".."
-                 (invoke "python3" "-m" "pytest")))))
-         (add-after 'glib-or-gtk-wrap 'wrap-typelib
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each
-                (lambda (prog)
-                  (unless (wrapped-program? prog)
-                    (wrap-program prog
-                      `("GI_TYPELIB_PATH" suffix
-                        (,(string-append out "/lib/girepository-1.0")
-                         ,(getenv "GI_TYPELIB_PATH")))
-                      ;; icons and schemas
-                      `("XDG_DATA_DIRS" suffix
-                        #$(map
-                           (lambda (input)
-                             (file-append (this-package-input input) "/share"))
-                           '("adwaita-icon-theme" "hicolor-icon-theme"
-                             "gsettings-desktop-schemas")))
-                      ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Cambalache to
-                      ;; load its own icons in pure environments.
-                      `("GDK_PIXBUF_MODULE_FILE" =
-                        (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))
-                (find-files (string-append out "/bin")))))))))
-   (inputs (list bash-minimal
-                 adwaita-icon-theme hicolor-icon-theme
-                 gsettings-desktop-schemas
-                 gtk
-                 `(,gtk+ "bin")         ; broadwayd
-                 `(,gtk "bin")
-                 libadwaita
-                 libhandy
-                 (librsvg-for-system)
-                 python python-pygobject python-lxml
-                 webkitgtk-with-libsoup2))
-   (native-inputs (list `(,glib "bin") gobject-introspection
-                        gettext-minimal pkg-config
-                        python-pytest xorg-server-for-tests))
-   (home-page "https://gitlab.gnome.org/jpu/cambalache")
-   (synopsis "Rapid application development tool")
-   (description "Cambalache is a rapid application development (RAD) tool for
+    (name "cambalache")
+    (version "0.10.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/jpu/cambalache")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1nq9bvly4dm1xnh90z3b4c5455qpdgm3jgz2155vg2ai23f22vsy"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
+      #:imported-modules `((guix build python-build-system)
+                           ,@%meson-build-system-modules)
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-source
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "cambalache/cmb_view.py"
+                (("GLib\\.find_program_in_path\\('(.*)'\\)" all cmd)
+                 (format #f "~s" (search-input-file
+                                  inputs (string-append "bin/" cmd)))))))
+          (add-after 'unpack 'patch-build
+            (lambda _
+              (substitute* "postinstall.py"
+                (("update-desktop-database") "true"))))
+          (add-after 'wrap 'python-wrap (assoc-ref python:%standard-phases 'wrap))
+          (delete 'check)
+          (add-after 'install 'add-install-to-pythonpath
+            (assoc-ref python:%standard-phases 'add-install-to-pythonpath))
+          (add-after 'add-install-to-pythonpath 'pre-check
+            (lambda _
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1")))
+          (add-after 'pre-check 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (with-directory-excursion ".."
+                  (invoke "python3" "-m" "pytest")))))
+          (add-after 'glib-or-gtk-wrap 'wrap-typelib
+            (lambda _
+              (for-each
+               (lambda (prog)
+                 (unless (wrapped-program? prog)
+                   (wrap-program prog
+                     `("GI_TYPELIB_PATH" suffix
+                       (,(string-append #$output "/lib/girepository-1.0")
+                        ,(getenv "GI_TYPELIB_PATH")))
+                     ;; icons and schemas
+                     `("XDG_DATA_DIRS" suffix
+                       #$(map
+                          (lambda (input)
+                            (file-append (this-package-input input) "/share"))
+                          '("adwaita-icon-theme" "hicolor-icon-theme"
+                            "gsettings-desktop-schemas")))
+                     ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Cambalache to
+                     ;; load its own icons in pure environments.
+                     `("GDK_PIXBUF_MODULE_FILE" =
+                       (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))
+               (find-files (string-append #$output "/bin"))))))))
+    (inputs
+     (list bash-minimal
+           adwaita-icon-theme hicolor-icon-theme
+           gsettings-desktop-schemas
+           gtk
+           `(,gtk+ "bin")               ; broadwayd
+           `(,gtk "bin")
+           libadwaita
+           libhandy
+           (librsvg-for-system)
+           python
+           python-pygobject
+           python-lxml
+           webkitgtk-with-libsoup2))
+    (native-inputs (list `(,glib "bin") gobject-introspection
+                         gettext-minimal pkg-config
+                         python-pytest xorg-server-for-tests))
+    (home-page "https://gitlab.gnome.org/jpu/cambalache")
+    (synopsis "Rapid application development tool")
+    (description "Cambalache is a rapid application development (RAD) tool for
 Gtk 4 and 3 with a clear model-view-controller (MVC) design and
 data model first philosophy.")
-   (license (list license:lgpl2.1
-                  license:gpl2)))) ; tools
+    (license (list license:lgpl2.1
+                   license:gpl2)))) ; tools
 
 (define-public libcroco
   (package
@@ -3350,7 +3409,7 @@ XML/CSS rendering engine.")
 (define-public libgsf
   (package
     (name "libgsf")
-    (version "1.14.47")
+    (version "1.14.50")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3358,63 +3417,60 @@ XML/CSS rendering engine.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kbpp9ksl7977xiga37sk1gdw1r039v6zviqznl7alvvg39yp26i"))))
+                "0llf5rpg2rg9pdz8j38dl5z82zi9kmsn639wb2fhcfc3fz820v3f"))))
     (build-system glib-or-gtk-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
-     `(#:configure-flags
-       (list
-        "--disable-static"
-        "--enable-introspection"
-        (string-append "--with-gir-dir="
-                       (assoc-ref %outputs "out")
-                       "/share/gir-"
-                       ,(version-major
-                         (package-version gobject-introspection))
-                       ".0")
-        (string-append "--with-typelib-dir="
-                       (assoc-ref %outputs "out")
-                       "/lib/girepository-"
-                       ,(version-major
-                         (package-version gobject-introspection))
-                       ".0")
-        (string-append "--with-html-dir="
-                       (assoc-ref %outputs "doc")
-                       "/share/gtk-doc/html")
-        "--with-zlib"
-        "--with-bz2")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "doc"
-               (substitute* "gsf-docs.xml"
-                 (("http://www.oasis-open.org/docbook/xml/4.5/")
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/"))))
-             #t)))))
-    (native-inputs
-     `(("docbook-xml" ,docbook-xml)
-       ("gettext" ,gettext-minimal)
-       ("gobject-introspection" ,gobject-introspection)
-       ("perl" ,perl)
-       ("perl-xml-parser" ,perl-xml-parser)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list
+      #:configure-flags
+      #~(list
+         "--disable-static"
+         "--enable-introspection"
+         (string-append "--with-gir-dir=" #$output
+                        "/share/gir-"
+                        #$(version-major
+                           (package-version gobject-introspection))
+                        ".0")
+         (string-append "--with-typelib-dir=" #$output
+                        "/lib/girepository-"
+                        #$(version-major
+                           (package-version gobject-introspection))
+                        ".0")
+         (string-append "--with-html-dir=" #$output
+                        "/share/gtk-doc/html")
+         "--with-zlib"
+         "--with-bz2")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-docbook-xml
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (with-directory-excursion "doc"
+                (substitute* "gsf-docs.xml"
+                  (("http://www.oasis-open.org/docbook/xml/4.5/")
+                   (search-input-directory (or native-inputs inputs)
+                                           "xml/dtd/docbook")))))))))
+    (native-inputs
+     (list docbook-xml
+           gettext-minimal
+           gobject-introspection
+           perl
+           perl-xml-parser
+           pkg-config
+           python-wrapper))
     (inputs
-     (list bzip2 gdk-pixbuf zlib))
+     (list bzip2
+           gdk-pixbuf
+           zlib))
     (propagated-inputs
-     (list glib libxml2))
+     (list glib
+           libxml2))
     (synopsis "G Structured File Library")
     (description "Libgsf aims to provide an efficient extensible I/O abstraction
 for dealing with different structured file formats.")
     (home-page "https://gitlab.gnome.org/GNOME/libgsf")
     (license
-     (list
-      ;; Library
-      license:lgpl2.1+
-      ;; Others
-      license:lgpl2.0+))))
+     (list license:lgpl2.1+             ;library
+           license:lgpl2.0+))))         ;others
 
 (define-public librsvg
   (package
@@ -4071,24 +4127,26 @@ controls using the Bonobo component framework.")
 (define-public libwnck
   (package
     (name "libwnck")
-    (version "3.32.0")
+    (version "40.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (version-major+minor version) "/"
+                                  (version-major version) "/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1jp3p1lnwnwi6fxl2rz3166cmwzwy9vqz896anpwc3wdy9f875cm"))))
+                "04b63mh2i7kpq0iymx6fkyzdx8laymw3da2s0wsbwgzg2jhly4q3"))))
     (build-system meson-build-system)
     (native-inputs
-     (list pkg-config
-           `(,glib "bin") ; for glib-mkenums
-           gobject-introspection ; for g-ir-scanner
-           intltool))
+     (list gettext-minimal
+           `(,glib "bin")               ;for glib-mkenums
+           gobject-introspection        ;for g-ir-scanner
+           pkg-config))
     (propagated-inputs
-     (list gtk+ libxres startup-notification))
-    (home-page "https://developer.gnome.org/libwnck/")
+     (list gtk+
+           libxres
+           startup-notification))
+    (home-page "https://gitlab.gnome.org/GNOME/libwnck/")
     (synopsis "Window Navigator Construction Kit")
     (description
      "Libwnck is the Window Navigator Construction Kit, a library for use in
@@ -4239,7 +4297,7 @@ engineering.")
 (define-public drawing
   (package
     (name "drawing")
-    (version "0.8.3")
+    (version "1.0.1")
     (source
      (origin
        (method git-fetch)
@@ -4248,36 +4306,42 @@ engineering.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0wz9p47riyy3h8b0sqsb6bx416hc6d1a1wyzlfmsxkrqrkwcjcm8"))))
+        (base32 "12xb522i7dxshw2ig12ald750fynlxan1lwz6gsxfa9p4ap2qypn"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/drawing"))
-                   (pylib (string-append (assoc-ref outputs "out")
-                                         "/lib/python"
-                                         ,(version-major+minor
-                                           (package-version python))
-                                         "/site-packages")))
-               (wrap-program prog
-                 `("PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib))
-                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-postinstall-script
+            (lambda _
+              (setenv "DESTDIR" "/")))
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/drawing")
+                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                       ,(python:site-packages inputs outputs)))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("pkg-config" ,pkg-config)))
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           itstool
+           pkg-config
+           python))
     (inputs
-     (list librsvg
+     (list bash-minimal
+           librsvg
            gsettings-desktop-schemas
            gtk+
            pango
+           python
            python-pycairo
            python-pygobject))
     (home-page "https://maoschanz.github.io/drawing/")
@@ -4289,7 +4353,7 @@ engineering.")
 (define-public seahorse
   (package
     (name "seahorse")
-    (version "41.0")
+    (version "42.0")
     (source
      (origin
        (method url-fetch)
@@ -4297,7 +4361,7 @@ engineering.")
                            (version-major version) "/" name "-"
                            version ".tar.xz"))
        (sha256
-        (base32 "1x99i7kdvd8hbxcs5rfrq7nw6r9bfzaw263zaigjjj04h6gc1vp6"))))
+        (base32 "0c6nafhn4gcjwd1xbs5bjq9785114fc0pbhxbwp7wynyz3msq365"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -4307,32 +4371,31 @@ engineering.")
            ;; Don't create 'icon-theme.cache'.
            (lambda _
              (substitute* "build-aux/meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))
-             #t))
+               (("gtk-update-icon-cache") "true"))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a writable HOME.
              (setenv "HOME" (getcwd)))))))
     (inputs
-     `(("gtk+" ,gtk+)
-       ("gcr" ,gcr)
-       ("gnupg" ,gnupg)
-       ("gpgme" ,gpgme)
-       ("openldap" ,openldap)
-       ("openssh" ,openssh)
-       ("avahi" ,avahi)
-       ("libhandy" ,libhandy)
-       ("libpwquality" ,libpwquality)
-       ("libsecret" ,libsecret)
-       ("libsoup" ,libsoup-minimal-2)))
+     (list gtk+
+           gcr
+           gnupg
+           gpgme
+           openldap
+           openssh
+           avahi
+           libhandy
+           libpwquality
+           libsecret
+           libsoup-minimal-2))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("vala" ,vala)
-       ("xmllint" ,libxml2)))
+     (list gettext-minimal
+           `(,glib "bin")
+           itstool
+           pkg-config
+           python
+           vala
+           libxml2))
     (home-page "https://wiki.gnome.org/Apps/Seahorse")
     (synopsis "Manage encryption keys and passwords in the GNOME keyring")
     (description
@@ -4417,7 +4480,7 @@ targeting the GNOME stack simple.")
 (define-public vte
   (package
     (name "vte")
-    (version "0.68.0")
+    (version "0.69.99")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/vte/"
@@ -4425,7 +4488,7 @@ targeting the GNOME stack simple.")
                                   "vte-" version ".tar.xz"))
               (sha256
                (base32
-                "0j8pvn225ybzx9p33ill838bzp8kkdn28383h0vs65m2kiwd9rqk"))))
+                "1v3i38yrjhc48nvs1g333s3q709mq824qq0k2fnsmrrwv15c3cg9"))))
     (build-system meson-build-system)
     (arguments
      (list #:configure-flags #~(list "-Dvapi=true"
@@ -4456,7 +4519,7 @@ editors, IDEs, etc.")
   (package
     (inherit vte)
     (name "vte-ng")
-    (version "0.58.2.a")
+    (version "0.59.0")
     (home-page "https://github.com/thestinger/vte-ng")
     (source (origin
               (method git-fetch)
@@ -4464,7 +4527,7 @@ editors, IDEs, etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0rnm5c6m3abbm81jsfdas0y80z299ny54gr4syn4bfrms3s4g19l"))))
+                "03ffhjc0fq9p25y1b2c0a51jn7y2bc0acxsgymhcb3pyijc8ykjm"))))
     (build-system meson-build-system)
     (arguments
      (list #:configure-flags #~(list "-Ddocs=false")))
@@ -4803,6 +4866,90 @@ claim to be \"RESTful\".  It includes convenience wrappers for libsoup and
 libxml to ease remote use of the RESTful API.")
     (license license:lgpl2.1+)))
 
+(define-public rest-next
+  (package
+    (inherit rest)
+    (name "rest")
+    (version "0.9.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/rest/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1qy2291d2vprdbbxmf0sa98izk09nl3znzzv7lckwf6f1v0sarlj"))))
+    (build-system meson-build-system)
+    (arguments (substitute-keyword-arguments (package-arguments rest)
+                 ((#:tests? _ #f) #t)
+                 ((#:configure-flags _)
+                  #~(list))
+                 ((#:phases phases '%standard-phases)
+                  #~(modify-phases #$phases
+                      (add-after 'unpack 'disable-problematic-tests
+                        ;; These tests require networking.
+                        (lambda _
+                          (substitute* "tests/meson.build"
+                            ((".*'flickr',.*") "")
+                            ((".*'lastfm',.*") ""))))
+                      (add-before 'check 'prepare-for-tests
+                        (lambda _
+                          (setenv "HOME" "/tmp")))))))
+    (native-inputs
+     (modify-inputs (package-native-inputs rest)
+       (append gettext-minimal
+               gi-docgen
+               gsettings-desktop-schemas)))
+    (inputs (list gtksourceview json-glib libadwaita))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs rest)
+       (replace "libsoup" libsoup)
+       (append json-glib)))))
+
+(define-public libshumate
+  (package
+    (name "libshumate")
+    (version "1.0.0.beta")              ;no stable release yet
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "13xrc07fm0967gzbqab8k0l3dnknh00p0a6f2dm7k0aa56q41sda"))))
+    (build-system meson-build-system)
+    (arguments (list #:configure-flags #~(list "-Dlibsoup3=true")
+                     #:phases #~(modify-phases %standard-phases
+                                  (add-before 'check 'pre-check
+                                    (lambda _
+                                      ;; The 'coordinate' test requires a
+                                      ;; writable HOME.
+                                      (setenv "HOME" "/tmp")
+
+                                      ;; Tests require a running X server.
+                                      (system "Xvfb :1 &")
+                                      (setenv "DISPLAY" ":1"))))))
+    (native-inputs
+     (list gi-docgen
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config
+           xorg-server-for-tests))
+    (propagated-inputs
+     ;; All the libraries are listed as "Requires' in the .pc file.
+     (list cairo
+           glib
+           gtk
+           libsoup
+           sqlite))
+    (home-page "https://wiki.gnome.org/Projects/libshumate")
+    (synopsis "GtkWidget C library for displaying maps")
+    (description "@code{libshumate} is a C library providing a
+@code{GtkWidget} to display maps.  It supports numerous free map sources such
+as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
+    (license license:lgpl2.1+)))
+
 ;;; A minimal version of libsoup used to prevent a cycle with Inkscape.
 (define-public libsoup-minimal
   (package
@@ -4896,32 +5043,45 @@ and the GLib main loop, to integrate well with GNOME applications.")
 (define-public libsoup
   (package/inherit libsoup-minimal
     (name "libsoup")
+    (version "3.1.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/libsoup/"
+                                  (version-major+minor version) "/"
+                                  "libsoup-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0m5mf2ahb462jzr40d916swv3040h9500jcmr87vnilpr4zrj584"))))
     (outputs (cons "doc" (package-outputs libsoup-minimal)))
     (arguments
      (substitute-keyword-arguments (package-arguments libsoup-minimal)
        ((#:configure-flags configure-flags)
-        `(cons "-Dgtk_doc=true"
-               (delete "-Dgtk_doc=false" ,configure-flags)))
+        #~(delete "-Dgtk_doc=false" #$configure-flags))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'patch-docbook-xml
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
-                                            "/xml/dtd/docbook")))
-                 (substitute* (find-files "docs/reference")
-                   (("http://.*/docbookx\\.dtd")
-                    (string-append xmldoc "/docbookx.dtd"))))))
-           (add-after 'install 'move-doc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out"))
-                     (doc (assoc-ref outputs "doc")))
-                 (mkdir-p (string-append doc "/share"))
-                 (copy-recursively (string-append out "/share/gtk-doc")
-                                   (string-append doc "/share/gtk-doc"))
-                 (delete-file-recursively
-                  (string-append out "/share/gtk-doc")))))))))
+        #~(modify-phases #$phases
+            (replace 'adjust-tests
+              (lambda _
+                ;; This test fails due to missing /etc/nsswitch.conf
+                ;; in the build environment.
+                (substitute* "tests/unix-socket-test.c"
+                  ((".*/sockets/unconnected.*") ""))
+
+                ;; These fail because "subdomain.localhost" does not resolve in
+                ;; the build environment.  Moreover, the hsts-test suite fails on
+                ;; i686-linux because of errors from `session_get_uri' like
+                ;; "Unexpected status 200 OK (expected 301 Moved Permanently)"
+                ;; (see: https://gitlab.gnome.org/GNOME/libsoup/-/issues/239).
+                (substitute* "tests/meson.build"
+                  ((".*'name': 'hsts'.*") ""))
+                (substitute* "tests/hsts-db-test.c"
+                  ((".*/hsts-db/subdomains.*") ""))))
+            (add-after 'install 'move-doc
+              (lambda _
+                (mkdir-p (string-append #$output:doc "/share"))
+                (rename-file (string-append #$output "/share/doc")
+                             (string-append #$output:doc "/share/doc"))))))))
     (native-inputs (modify-inputs (package-native-inputs libsoup-minimal)
-                     (prepend docbook-xml-4.1.2 gtk-doc)))))
+                     (prepend gi-docgen)))))
 
 (define-public libsecret
   (package
@@ -5022,6 +5182,32 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
  Try to last as long as possible.")
     (license license:gpl2+)))
 
+(define-public gi-docgen
+  (package
+    (name "gi-docgen")
+    (version "2022.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "gi-docgen" version))
+              (sha256
+               (base32
+                "1v2wspm2ld27lq1n5v5pzrmkhchfa7p7ahp8rmjm4zcdyagqf7gr"))))
+    (build-system python-build-system)
+    (propagated-inputs (list python-jinja2
+                             python-markdown
+                             python-markupsafe
+                             python-pygments
+                             python-toml
+                             python-typogrify))
+    (home-page "https://gitlab.gnome.org/GNOME/gi-docgen")
+    (synopsis "Documentation tool for GObject-based libraries")
+    (description "GI-DocGen is a document generator for GObject-based
+libraries.  GObject is the base type system of the GNOME project.  GI-Docgen
+reuses the introspection data generated by GObject-based libraries to generate
+the API reference of these libraries, as well as other ancillary
+documentation.")
+    (license license:gpl3+)))
+
 (define-public gnome-mines
   (package
     (name "gnome-mines")
@@ -5046,14 +5232,17 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
     (native-inputs
      (list appstream-glib
            desktop-file-utils
+           gettext-minimal
            `(,glib "bin")               ; for glib-compile-resources
-           intltool
            itstool
            pkg-config
            python-wrapper               ; for meson_post_install.py
            vala))
     (inputs
-     (list gtk+ libgnome-games-support librsvg yelp))
+     (list gtk+
+           libgnome-games-support-1
+           librsvg
+           yelp))
     (home-page "https://wiki.gnome.org/Apps/Mines")
     (synopsis "Minesweeper game")
     (description
@@ -5105,7 +5294,7 @@ once.")
 (define-public gnome-sudoku
   (package
     (name "gnome-sudoku")
-    (version "40.2")
+    (version "42.0")
     (source
      (origin
        (method url-fetch)
@@ -5114,7 +5303,7 @@ once.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "18slsxifad5cjz4fqi818i66jc9b7kzgn01qxa0ra4y7wcqha4in"))))
+         "13y2qphrj99b0lc7bh71is1f6i0jvyw8adfg8lv48sq2p3fv8bhx"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -5125,16 +5314,20 @@ once.")
              (substitute* "build-aux/post_install.py"
                (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     (list pkg-config
-           python                             ;for 'build-aux/post_install.py'
-           desktop-file-utils
-           `(,glib "bin")                         ;for glib-compile-resources
-           intltool
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")               ;for glib-compile-resources
            itstool
-           vala
-           libxml2))
+           libxml2
+           pkg-config
+           python                       ;for 'build-aux/post_install.py'
+           vala))
     (inputs
-     (list gtk+ json-glib libgee librsvg qqwing))
+     (list gtk+
+           json-glib
+           libgee
+           librsvg
+           qqwing))
     (home-page "https://wiki.gnome.org/Apps/Sudoku")
     (synopsis "Japanese logic game")
     (description
@@ -5147,7 +5340,7 @@ more fun.")
 (define-public gnome-terminal
   (package
     (name "gnome-terminal")
-    (version "3.40.3")
+    (version "3.44.1")
     (source
      (origin
        (method url-fetch)
@@ -5156,35 +5349,46 @@ more fun.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "08hsic7sn32xw12i3j0ard2bhfhp8gmzqm0pa8xzl5l1jhzsmsfb"))))
-    (build-system glib-or-gtk-build-system)
+         "0yykb64yi1h0g65q890jf5awjr2sdvfda4xbxnmajcgj3zp20vzv"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:configure-flags
-       (list "--disable-migration" "--disable-search-provider"
-             "--without-nautilus-extension")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-/bin/true
-           (lambda _
-             (substitute* "configure"
-               (("/bin/true") (which "true"))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-build-system
+            ;; The build system looks for a dbus file from gnome-shell in the
+            ;; installation tree of teh package it is configuring...
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/meson.build"
+                (("gt_prefix.*'org.gnome.ShellSearchProvider2.xml'")
+                 (format #f "'~a'" (search-input-file
+                                    inputs "share/dbus-1/interfaces/\
+org.gnome.ShellSearchProvider2.xml"))))))
+          (add-before 'install 'disable-gtk-update-icon-cache
+            (lambda _
+              (setenv "DESTDIR" "/"))))))
     (native-inputs
-     `(("docbook-xsl" ,docbook-xsl)
-       ("pkg-config" ,pkg-config)
-       ("desktop-file-utils" ,desktop-file-utils)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("libxslt" ,libxslt)
-       ("xmllint" ,libxml2)))
+     (list desktop-file-utils
+           docbook-xsl
+           gettext-minimal
+           `(,glib "bin")
+           itstool
+           libxml2
+           libxslt
+           pkg-config
+           python))
     (propagated-inputs
      (list dconf))
     (inputs
-     (list gtk+
-           vte
+     (list gnome-shell
            gnutls
            gsettings-desktop-schemas
+           gtk+
+           nautilus                     ;for extension
            `(,util-linux "lib")
-           vala))
+           vala
+           vte))
     (home-page "https://wiki.gnome.org/Apps/Terminal")
     (synopsis "Terminal emulator")
     (description
@@ -5305,7 +5509,7 @@ output devices.")
 (define-public geoclue
   (package
     (name "geoclue")
-    (version "2.5.7")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
@@ -5313,7 +5517,7 @@ output devices.")
         (string-append "https://gitlab.freedesktop.org/geoclue/geoclue/-/archive/"
                        version "/geoclue-" version ".tar.bz2"))
        (sha256
-        (base32 "09ww26a76kanldhgwnn5sqy9ly2940k45zpp68spykkv2zjdpivc"))
+        (base32 "1854i8lih1jkks5w38xv8k5gs7s8629qjg3cg96ji0ffk35yzjfd"))
        (patches (search-patches "geoclue-config.patch"))))
     (build-system meson-build-system)
     (arguments
@@ -5324,13 +5528,14 @@ output devices.")
            modem-manager
            libnotify
            gtk-doc/stable
-           intltool))
+           gettext-minimal
+           vala))
     (inputs
-     `(("avahi" ,avahi)
-       ("glib:bin" ,glib "bin")
-       ("glib-networking" ,glib-networking)
-       ("json-glib" ,json-glib)
-       ("libsoup" ,libsoup-minimal-2)))
+     (list avahi
+           `(,glib "bin")
+           glib-networking
+           json-glib
+           libsoup-minimal-2))
     (home-page "https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home")
     (synopsis "Geolocation service")
     (description "Geoclue is a D-Bus service that provides location
@@ -5343,7 +5548,7 @@ permission from user.")
 (define-public geocode-glib
   (package
     (name "geocode-glib")
-    (version "3.26.2")
+    (version "3.26.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/geocode-glib/"
@@ -5351,29 +5556,31 @@ permission from user.")
                                   "geocode-glib-" version ".tar.xz"))
               (sha256
                (base32
-                "1l8g0f13xgkrk335afr9w8k46mziwb2jnyhl07jccl5yl37q9zh1"))))
+                "1aipd82qk404qy88pyfgplzgi83db4hi51vkl54h8isqs4k6i6id"))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ;; The tests require a bunch of locales.
-         (add-before 'check 'set-locales
-           (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "GUIX_LOCPATH"
-                     (search-input-directory inputs "lib/locale")))))))
+     (list
+      #:configure-flags #~(list "-Dsoup2=false")
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; The tests require a bunch of locales.
+          (add-before 'check 'set-locales
+            (lambda* (#:key inputs #:allow-other-keys)
+              (setenv "GUIX_LOCPATH"
+                      (search-input-directory inputs "lib/locale")))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-mkenums
-       ("glibc-locales" ,glibc-locales) ; for tests
-       ("gettext" ,gettext-minimal)
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)
-       ("json-glib" ,json-glib)))
+     (list `(,glib "bin")               ;for glib-mkenums
+           glibc-locales                ;for tests
+           gettext-minimal
+           gobject-introspection
+           gtk-doc/stable
+           pkg-config
+           json-glib))
     (propagated-inputs
-     ;; geocode-glib-1.0.pc refers to GIO.
+     ;; geocode-glib-2.0.pc refers to GIO.
      (list glib))
     (inputs
-     `(("libsoup" ,libsoup-minimal-2)))
+     (list libsoup))
     (home-page "https://github.com/GNOME/geocode-glib/")
     (synopsis "Geocoding and reverse-geocoding library")
     (description
@@ -5383,10 +5590,20 @@ coordinates) using the Nominatim service.  geocode-glib caches requests for
 faster results and to avoid unnecessary server load.")
     (license license:lgpl2.0+)))
 
+(define-public geocode-glib-with-libsoup2
+  (package
+    (inherit geocode-glib)
+    (name "geocode-glib-with-libsoup2")
+    (arguments (substitute-keyword-arguments (package-arguments geocode-glib)
+                 ((#:configure-flags flags ''())
+                  #~(delete "-Dsoup2=false" #$flags))))
+    (inputs (modify-inputs (package-inputs geocode-glib)
+              (replace "libsoup" libsoup-minimal-2)))))
+
 (define-public upower
   (package
     (name "upower")
-    (version "0.99.15")
+    (version "1.90.0")
     (source
      (origin
        (method git-fetch)
@@ -5395,33 +5612,32 @@ faster results and to avoid unnecessary server load.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1zk7w7pw8dhlnxhxzcbk33gmxmg8f32mppd67556v9z2qgcg4lhs"))
+        (base32 "1g17rm91p8vfpjyb0k2shylrs55nccn3fa890vlk4n9s71sghbzq"))
        (modules '((guix build utils)))
        (snippet
-         ;; Upstream commit
-         ;; <https://cgit.freedesktop.org/upower/commit/?id=18457c99b68786cd729b315723d680e6860d9cfa>
-         ;; moved 'dbus-1/system.d' from etc/ to share/.  However,
-         ;; 'dbus-configuration-directory' in (gnu services dbus)
-         ;; expects it in etc/.  Thus, move it back to its previous
-         ;; location.
-         #~(substitute* "src/meson.build"
+        ;; Upstream commit <https://cgit.freedesktop.org/upower/commit/
+        ;; ?id=18457c99b68786cd729b315723d680e6860d9cfa> moved
+        ;; 'dbus-1/system.d' from etc/ to share/.  However,
+        ;; 'dbus-configuration-directory' in (gnu services dbus) expects it in
+        ;; etc/.  Thus, move it back to its previous location.
+        #~(substitute* "src/meson.build"
             (("dbusdir / 'system.d'")
-              "get_option('sysconfdir') / 'dbus-1/system.d'")
+             "get_option('sysconfdir') / 'dbus-1/system.d'")
             ;; Avoid writing to /var during the build, this is
             ;; not possible in Guix!
             (("^install_subdir\\('does-not-exist'.*$") "")))))
     (build-system meson-build-system)
     (arguments
-      (list
-       #:glib-or-gtk? #t
-       #:configure-flags
-       #~(list "-Dsystemdsystemunitdir=no"
-               ;; If not specified, udev will try putting history information
-               ;; in /gnu/store.
-               "-Dhistorydir=/var/lib/upower"
-               (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d"))))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      #~(list "-Dsystemdsystemunitdir=no"
+              ;; If not specified, udev will try putting history information
+              ;; in /gnu/store.
+              "-Dhistorydir=/var/lib/upower"
+              (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d"))))
     (native-inputs
-     (list `(,glib "bin") ; for gdbus-codegen
+     (list `(,glib "bin")               ; for gdbus-codegen
            gobject-introspection
            gtk-doc
            intltool
@@ -5435,8 +5651,8 @@ faster results and to avoid unnecessary server load.")
            umockdev
            ;; For man pages.
            docbook-xsl
-           libxslt ; for 'xsltproc'
-           libxml2))           ; for 'XML_CATALOG_FILES'
+           libxslt                      ; for 'xsltproc'
+           libxml2))                    ; for 'XML_CATALOG_FILES'
     (inputs
      (list dbus-glib libgudev libusb))
     (propagated-inputs
@@ -5486,7 +5702,11 @@ service via the system message bus.")
     (propagated-inputs
      ;; gweather-3.0.pc refers to GTK+, GDK-Pixbuf, GLib/GObject, libxml, and
      ;; libsoup.
-     (list gtk+ gdk-pixbuf libxml2 libsoup-minimal-2 geocode-glib))
+     (list gtk+
+           gdk-pixbuf
+           libxml2
+           libsoup-minimal-2
+           geocode-glib-with-libsoup2))
     (inputs
      (list tzdata))
     (home-page "https://wiki.gnome.org/action/show/Projects/LibGWeather")
@@ -5504,7 +5724,7 @@ services for numerous locations.")
   (package
     (inherit libgweather)
     (name "libgweather4")
-    (version "4.0.0")
+    (version "4.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgweather/"
@@ -5512,43 +5732,69 @@ services for numerous locations.")
                                   "libgweather-" version ".tar.xz"))
               (sha256
                (base32
-                "0k43mr7vmcg14lkwjk6p9wwy3zlw23wkfpkfcy6b8wkg3f0483a4"))))
+                "1wh3asniv5yiqp0dsk96as2bkx72hamh3ij2md8k0is9yd7ppbjm"))))
     (arguments
      (list
-      ;; FIXME: multiple tests fails as such:
-      ;;   "GLib-GIO-FATAL-ERROR: Settings schema 'org.gnome.system.proxy'
-      ;;   is not installed"
-      #:tests? #f
       #:configure-flags
       #~(list (string-append "-Dzoneinfo_dir="
                              (search-input-directory %build-inputs
-                                                     "share/zoneinfo"))
-              ;; TODO: Requires 'gi-docgen'.
-              "-Dgtk_doc=false")
+                                                     "share/zoneinfo")))
       #:phases
       #~(modify-phases %standard-phases
-          (add-before 'check 'pre-check
+          (add-after 'unpack 'set-HOME
+            (lambda _
+              (setenv "HOME" "/tmp")))
+          (add-after 'unpack 'disable-problematic-tests
             (lambda _
-              (setenv "HOME" "/tmp"))))))
+              (substitute* "libgweather/tests/meson.build"
+                ;; The timezones test fails for unknown reasons (see:
+                ;; https://gitlab.gnome.org/GNOME/libgweather/-/issues/188).
+                ((".*'name': 'timezones'.*") "")
+                ;; The 'metar' test is known to fail, fixed but not yet released
+                ;; upstream (see:
+                ;; https://gitlab.gnome.org/GNOME/libgweather/-/issues/168).
+                ((".*'name': 'metar'.*") ""))))
+          (delete 'check)               ;move after the install phase
+          (add-after 'install 'check
+            (assoc-ref %standard-phases 'check)))))
     (native-inputs
      (list gettext-minimal
+           gi-docgen
            `(,glib "bin")               ;for glib-mkenums
            gobject-introspection
+           glibc-utf8-locales
+           gsettings-desktop-schemas
            pkg-config
            python
-           vala
-           python-pygobject))
+           python-pygobject
+           vala))
     ;; TODO: It would be good to make the package respect TZDIR instead
     ;; of using a "hard coded" version of tzdata.
     (inputs (list tzdata))
     (propagated-inputs
      ;; gweather4.pc refers to all of these.
-     (list glib libxml2 libsoup-minimal-2 geocode-glib))))
+     (list geocode-glib
+           glib
+           json-glib
+           libsoup
+           libxml2))))
+
+(define-public libgweather4-with-libsoup2
+  (package
+    (inherit libgweather4)
+    (name "libgweather4-with-libsoup2")
+    (arguments (substitute-keyword-arguments (package-arguments libgweather4)
+                 ((#:configure-flags flags)
+                  #~(cons "-Dsoup2=true" #$flags))))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs libgweather4)
+       (replace "geocode-glib" geocode-glib-with-libsoup2)
+       (replace "libsoup" libsoup-minimal-2)))))
 
 (define-public gnome-settings-daemon
   (package
     (name "gnome-settings-daemon")
-    (version "41.0")
+    (version "42.2")
     (source
      (origin
        (method url-fetch)
@@ -5557,71 +5803,68 @@ services for numerous locations.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "111qcvlqjpasnswdniy5n53wyrs1y7a91qx1w4nsppnizdhn7jp6"))
+         "005b1dvrfcyr6n4srl6c0lzr95c18prps4xm1lf2ghcfm8a9fi4w"))
        (patches (search-patches "gnome-settings-daemon-gc.patch"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       #:configure-flags
-       (list (string-append "-Dudev_dir="
-                            (assoc-ref %outputs "out") "/lib/udev")
-             "-Dsystemd=false"
-             ;; Otherwise, the RUNPATH will lack the final path component.
-             (string-append "-Dc_link_args=-Wl,-rpath="
-                            (assoc-ref %outputs "out")
-                            "/lib/gnome-settings-daemon-3.0"))
-
-       #:phases (modify-phases %standard-phases
-                  (add-before 'configure 'set-baobab-file-name
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      ;; Hard-code the file name of Baobab instead of looking
-                      ;; it up in $PATH.  This ensures users get the "Examine"
-                      ;; button in the low disk space notification of GDM even
-                      ;; if they don't have GNOME in their main profile.
-                      (let ((baobab (assoc-ref inputs "baobab")))
-                        (substitute* "plugins/housekeeping/gsd-disk-space.c"
-                          (("g_find_program_in_path \\(DISK_SPACE_ANALYZER\\)")
-                           (string-append "g_strdup (\"" baobab
-                                          "/bin/baobab\")")))))))
-
-       ;; Color management test can't reach the colord system service.
-       #:tests? #f))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      #~(list (string-append "-Dudev_dir=" #$output "/lib/udev")
+              "-Dsystemd=false"
+              ;; Otherwise, the RUNPATH will lack the final path component.
+              (string-append "-Dc_link_args=-Wl,-rpath=" #$output
+                             "/lib/gnome-settings-daemon-3.0"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'set-baobab-file-name
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Hard-code the file name of Baobab instead of looking
+              ;; it up in $PATH.  This ensures users get the "Examine"
+              ;; button in the low disk space notification of GDM even
+              ;; if they don't have GNOME in their main profile.
+              (substitute* "plugins/housekeeping/gsd-disk-space.c"
+                (("g_find_program_in_path \\(DISK_SPACE_ANALYZER\\)")
+                 (format #f "g_strdup (~s)"
+                         (search-input-file inputs "bin/baobab")))))))
+      ;; Color management test can't reach the colord system service.
+      #:tests? #f))
     (native-inputs
-     `(("glib:bin" ,glib "bin")     ; for glib-mkenums
-       ("pkg-config" ,pkg-config)
-       ("intltool" ,intltool)
-       ("xsltproc" ,libxslt)
-       ("libxml2" ,libxml2)                       ;for XML_CATALOG_FILES
-       ("docbook-xml" ,docbook-xml-4.2)
-       ("docbook-xsl" ,docbook-xsl)))
+     (list docbook-xml-4.2
+           docbook-xsl
+           gettext-minimal
+           `(,glib "bin")               ;for glib-mkenums
+           libxml2                      ;for XML_CATALOG_FILES
+           libxslt
+           perl
+           pkg-config))
     (inputs
      (list alsa-lib
            baobab
            colord
-           libgudev
-           upower
-           polkit
-           pulseaudio
+           cups
+           gcr
+           geoclue
+           geocode-glib-with-libsoup2
+           gnome-desktop
+           gsettings-desktop-schemas-next
+           lcms
            libcanberra
+           libgudev
+           libgweather4-with-libsoup2
+           libnotify
+           (librsvg-for-system)
+           libwacom
            libx11
            libxtst
-           lcms
-           libnotify
-           geoclue
-           geocode-glib
-           libgweather
-           gnome-desktop
+           modem-manager
+           network-manager
            nss
-           cups
-           gsettings-desktop-schemas
-           libwacom
-           (librsvg-for-system)
-           xf86-input-wacom
+           polkit
+           pulseaudio
+           upower
            wayland
-           network-manager
-           gcr
-           modem-manager))
+           xf86-input-wacom))
     (home-page "https://www.gnome.org")
     (synopsis "GNOME settings daemon")
     (description
@@ -5696,7 +5939,7 @@ which are easy to play with the aid of a mouse.")
 (define-public amtk
   (package
     (name "amtk")
-    (version "5.3.1")
+    (version "5.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/amtk/"
@@ -5704,7 +5947,7 @@ which are easy to play with the aid of a mouse.")
                                   "amtk-" version ".tar.xz"))
               (sha256
                (base32
-                "12v3nj1bb7507ndprjggq0hpz8k719b4bwvl8sm43p3ibmn27anm"))))
+                "176vplk3inf0pp0prma8478hp0yhziq0krp5a9l47hg22z86v2gc"))))
     (build-system meson-build-system)
     (native-inputs
      (list gobject-introspection
@@ -5723,7 +5966,7 @@ both a traditional UI or a modern UI with a GtkHeaderBar.")
 (define-public devhelp
   (package
     (name "devhelp")
-    (version "41.2")
+    (version "41.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5731,7 +5974,7 @@ both a traditional UI or a modern UI with a GtkHeaderBar.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1lk0gycjvs6gibhy0zs3ffkrkzrkyl5nkp7n60hgpa6syjq91apc"))))
+                "1rxn6kciyfdhnjrcjyf02cn3rki2xgwb4wrg5plbzjvpqasq66ml"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -5741,22 +5984,18 @@ both a traditional UI or a modern UI with a GtkHeaderBar.")
            ;; Don't create 'icon-theme.cache'.
            (lambda _
              (substitute* "build-aux/meson/meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))))
-         (add-after 'unpack 'fix-devhelp-gir-inputs
-           ;; It still mentions webkitgtk 4.0
-           (lambda _
-             (substitute* "devhelp/meson.build"
-               (("'WebKit2-4.0'") "'WebKit2-4.1'")))))))
+               (("gtk-update-icon-cache") "true")))))))
     (propagated-inputs
      (list gsettings-desktop-schemas))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("gobject-introspection" ,gobject-introspection)
-       ("glib:bin" ,glib "bin") ; for glib-mkmenus
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           gobject-introspection
+           `(,glib "bin")               ; for glib-mkmenus
+           itstool
+           pkg-config))
     (inputs
-     (list amtk gsettings-desktop-schemas webkitgtk))
+     (list amtk
+           webkitgtk))
     (home-page "https://wiki.gnome.org/Apps/Devhelp")
     (synopsis "API documentation browser for GNOME")
     (description
@@ -5767,19 +6006,8 @@ throughout GNOME for API documentation).")
 
 (define-public devhelp-with-libsoup2
   (package/inherit devhelp
-    (arguments
-     (substitute-keyword-arguments (package-arguments devhelp)
-       ((#:phases phases '%standard-phases)
-        `(modify-phases %standard-phases
-           (add-after 'unpack 'skip-gtk-update-icon-cache
-             ;; Don't create 'icon-theme.cache'.
-             (lambda _
-               (substitute* "build-aux/meson/meson_post_install.py"
-                 (("gtk-update-icon-cache") "true"))))))))
-    (inputs
-     `(("amtk" ,amtk)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk-with-libsoup2)))))
+    (inputs (modify-inputs (package-inputs devhelp)
+              (replace "webkitgtk" webkitgtk-with-libsoup2)))))
 
 (define-public cogl
   (package
@@ -5867,7 +6095,7 @@ without stepping on each others toes.")
 (define-public clutter
   (package
     (name "clutter")
-    (version "1.26.2")
+    (version "1.26.4")
     (source
      (origin
        (method url-fetch)
@@ -5876,31 +6104,31 @@ without stepping on each others toes.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0mif1qnrpkgxi43h7pimim6w6zwywa16ixcliw0yjm9hk0a368z7"))))
+         "1rn4cd1an6a9dfda884aqpcwcgq8dgydpqvb19nmagw4b70zlj4b"))))
     ;; NOTE: mutter exports a bundled fork of clutter, so when making changes
     ;; to clutter, corresponding changes may be appropriate in mutter as well.
     (build-system gnu-build-system)
     (outputs '("out"
-               "doc"))                            ;9 MiB of gtk-doc HTML pages
+               "doc"))                  ;9 MiB of gtk-doc HTML pages
     (native-inputs
-     `(("glib:bin" ,glib "bin")     ; for glib-genmarshal
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)
-       ("xsltproc" ,libxslt)))
+     (list `(,glib "bin")               ; for glib-genmarshal
+           gobject-introspection
+           libxslt
+           pkg-config))
     (propagated-inputs
-     (list cogl
+     (list atk
            cairo
-           atk
+           cogl
+           glib
            gtk+
            json-glib
-           glib
            libxcomposite
            libxdamage
            libxext
            xinput))
     (inputs
-     `(("libxkbcommon" ,libxkbcommon)
-       ("udev" ,eudev)))
+     (list eudev
+           libxkbcommon))
     (arguments
      `(#:configure-flags (list "--enable-x11-backend=yes"
 
@@ -5911,7 +6139,7 @@ without stepping on each others toes.")
        ;; XXX FIXME: Get test suite working.  It would probably fail in the
        ;; same way the cogl tests fail, since clutter is based on cogl.
        #:tests? #f))
-    (home-page "http://www.clutter-project.org")
+    (home-page "https://blogs.gnome.org/clutter/")
     (synopsis "OpenGL-based interactive canvas library")
     (description
      "Clutter is an OpenGL-based interactive canvas library, designed for
@@ -6009,7 +6237,7 @@ such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free.")
 (define-public gom
   (package
     (name "gom")
-    (version "0.3.2")
+    (version "0.4")
     (source
      (origin
        (method url-fetch)
@@ -6018,14 +6246,29 @@ such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free.")
                            "gom-" version ".tar.xz"))
        (sha256
         (base32
-         "1zaqqwwkyiswib3v1v8wafpbifpbpak0nn2kp13pizzn9bwz1s5w"))))
-    (build-system gnu-build-system)
+         "17ca07hpg7dqxjn0jpqim3xqcmplk2a87wbwrrlq3dd3m8381l38"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:configure-flags
+      #~(list (string-append "-Dpygobject-override-dir="
+                             (python:site-packages %build-inputs %outputs)
+                             "/gi/overrides"))))
     (native-inputs
-     (list intltool pkg-config gobject-introspection))
+     (list gettext-minimal
+           gobject-introspection
+           pkg-config
+           python
+           python-pygobject))
     (inputs
-     (list glib gdk-pixbuf sqlite))
-    ;; XXX TODO: Figure out how to run the test suite.
-    (arguments `(#:tests? #f))
+     (list glib
+           gdk-pixbuf
+           sqlite))
     (home-page "https://wiki.gnome.org/Projects/Gom")
     (synopsis "Object mapper from GObjects to SQLite")
     (description
@@ -6037,30 +6280,30 @@ queries upon that data.")
 (define-public libgnome-games-support
   (package
     (name "libgnome-games-support")
-    (version "1.7.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
-                                  (version-major+minor version) "/"
-                                  "libgnome-games-support-" version ".tar.xz"))
-              (sha256
-               (base32
-                "11g1r3ppb9v8m3anks9gxf7fv1x38vmjiya3lr7zjjv328pb69d6"))))
+    (version "2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
+                           (version-major+minor version) "/"
+                           "libgnome-games-support-" version ".tar.xz"))
+       (sha256
+        (base32
+         "196jaga70r16bzypv4z07mnwr0xcm93gc91kxygcpp9fwdpiz0jk"))))
     (build-system meson-build-system)
     (arguments
-      '(#:glib-or-gtk? #t
-        #:phases
-          (modify-phases %standard-phases
-            (add-before 'check 'pre-check
-              (lambda _
-                ;; Tests require a writable HOME.
-                (setenv "HOME" (getcwd))
-                #t)))))
+     '(#:glib-or-gtk? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; Tests require a writable HOME.
+             (setenv "HOME" (getcwd)))))))
     (native-inputs
      (list intltool pkg-config vala))
     (propagated-inputs
      ;; Required by libgnome-games-support-1.0.pc
-     (list gtk+ libgee))
+     (list gtk libgee))
     (home-page "https://www.gnome.org/")
     (synopsis "Useful functionality shared among GNOME games")
     (description
@@ -6068,10 +6311,27 @@ queries upon that data.")
 GNOME Games, but it may be used by others.")
     (license license:lgpl3+)))
 
+(define-public libgnome-games-support-1
+  (package
+    (inherit libgnome-games-support)
+    (version "1.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
+                           (version-major+minor version) "/"
+                           "libgnome-games-support-" version ".tar.xz"))
+       (sha256
+        (base32
+         "0zggsg7h9nlcwwjcqc13pdjza17iiww325r3q0d76f5hlw24chr8"))))
+    (propagated-inputs (modify-inputs (package-propagated-inputs
+                                       libgnome-games-support)
+                         (replace "gtk" gtk+)))))
+
 (define-public gnome-klotski
   (package
     (name "gnome-klotski")
-    (version "3.34.0")
+    (version "3.38.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6079,7 +6339,7 @@ GNOME Games, but it may be used by others.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0sbx0bzy32lh2c9jp8v7gz788wn9y1la8mr5a7gf7370szsl4d4f"))))
+                "1qm01hdd5yp8chig62bj10912vclbdvywwczs84sfg4zci2phqwi"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6089,18 +6349,19 @@ GNOME Games, but it may be used by others.")
            ;; Don't create 'icon-theme.cache'.
            (lambda _
              (substitute* "build-aux/meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t)))))
+               (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("glib:bin" ,glib "bin") ; for glib-compile-resources
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)
-       ("xmllint" ,libxml2)))
+     (list desktop-file-utils
+           `(,glib "bin")               ; for glib-compile-resources
+           intltool
+           itstool
+           pkg-config
+           vala
+           libxml2))
     (inputs
-     (list gtk+ libgnome-games-support librsvg))
+     (list gtk+
+           libgnome-games-support-1
+           librsvg))
     (home-page "https://wiki.gnome.org/Apps/Klotski")
     (synopsis "Sliding block puzzles")
     (description
@@ -6113,7 +6374,7 @@ as possible!")
 (define-public grilo
   (package
     (name "grilo")
-    (version "0.3.13")
+    (version "0.3.15")
     (source
      (origin
        (method url-fetch)
@@ -6121,11 +6382,18 @@ as possible!")
                            (version-major+minor version) "/"
                            "grilo-" version ".tar.xz"))
        (sha256
-        (base32 "0ywjvh7xw4ql1q4fvl0q5n06n08pga1g1nc9l7c3x5214gr3fj6i"))))
+        (base32 "0bbvaxw2das8826663z23y0acbdmcvggwdh64ws9jrk56vvsqlpk"))))
     (build-system meson-build-system)
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-before 'unpack 'set-HOME
+                          (lambda _
+                            ;; Tests require write access to HOME.
+                            (setenv "HOME" "/tmp"))))))
     (native-inputs
      (list `(,glib "bin") ; for glib-mkenums and glib-genmarshal
-           intltool
+           gettext-minimal
+           gsettings-desktop-schemas
            pkg-config
            gobject-introspection
            gtk-doc/stable
@@ -6134,9 +6402,9 @@ as possible!")
      (list cyrus-sasl
            glib
            gtk+
-           libxml2
            liboauth
-           libsoup-minimal-2
+           libsoup
+           libxml2
            totem-pl-parser))
     (native-search-paths
      (list (search-path-specification
@@ -6153,7 +6421,7 @@ for application developers.")
 (define-public grilo-plugins
   (package
     (name "grilo-plugins")
-    (version "0.3.13")
+    (version "0.3.15")
     (source
      (origin
        (method url-fetch)
@@ -6161,33 +6429,31 @@ for application developers.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1y10nnd711qxwgpz6spzp1rnk50fyf11kk1n71a31ab4fgb0ahqw"))))
+        (base32 "0cxbxg7i9qd1pyfjj7c15x9lawvaw5608jk2apcrac7rakcw6645"))))
     (build-system meson-build-system)
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gtk+:bin" ,gtk+ "bin")
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)))
-    ;; TODO: ahavi, gstreamer
-    (inputs
-     `(("grilo" ,grilo)
-       ;("gmime" ,gmime) ; unused
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("gom" ,gom)
-       ;("gssdp" ,gssdp) ; unused
-       ;("gupnp" ,gupnp) ; unused
-       ;("gupnp-av" ,gupnp-av) ; unused
-       ("json-glib" ,json-glib)
-       ("avahi" ,avahi)
-       ("libgdata" ,libgdata)
-       ("libmediaart" ,libmediaart)
-       ;("librest" ,rest) ; unused
-       ("libsoup" ,libsoup)
-       ("python-pygobject" ,python-pygobject)
-       ("totam-pl-parser" ,totem-pl-parser)
-       ("tracker" ,tracker)
-       ("tracker-miners" ,tracker-miners)))
+     (list gettext-minimal
+           ;; Gstreamer plugins are required for tests.
+           gst-plugins-good
+           gst-plugins-bad
+           `(,glib "bin")
+           itstool
+           pkg-config))
+    (inputs
+     (list avahi
+           grilo
+           gnome-online-accounts
+           gom
+           gstreamer
+           json-glib
+           avahi
+           libgdata
+           libmediaart
+           libsoup
+           python-pygobject
+           totem-pl-parser
+           tracker
+           tracker-miners))
     (arguments
      `(#:glib-or-gtk? #t
        ;;Disable lua-factory as it needs missing dependencies
@@ -6307,155 +6573,151 @@ which can read a large number of file formats.")
     (license license:gpl2+)))
 
 (define-public rhythmbox
- (package
-   (name "rhythmbox")
-   (version "3.4.4")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/rhythmbox/"
-                                (version-major+minor version) "/"
-                                "rhythmbox-" version ".tar.xz"))
-            (sha256
-             (base32
-              "142xcvw4l19jyr5i72nbnrihs953pvrrzcbijjn9dxmxszbv03pf"))))
-   (build-system glib-or-gtk-build-system)
-   (arguments
-    `(#:configure-flags
-      (list "--enable-lirc"
-            "--enable-python"
-            "--enable-vala"
-            "--with-brasero"
-            "--with-gudev"
-            "--with-libsecret")
+  (package
+    (name "rhythmbox")
+    (version "3.4.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/rhythmbox/"
+                                  (version-major+minor version) "/"
+                                  "rhythmbox-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0d5hbsdk2p8w567mfzy4kk8xn4d227hrbyy857li3r2mrq884mpr"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
       #:phases
-      (modify-phases %standard-phases
-        (add-after
-         'install 'wrap-rhythmbox
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           (let ((out               (assoc-ref outputs "out"))
-                 (gi-typelib-path   (getenv "GI_TYPELIB_PATH"))
-                 (gst-plugin-path   (getenv "GST_PLUGIN_SYSTEM_PATH"))
-                 (grl-plugin-path   (getenv "GRL_PLUGIN_PATH"))
-                 (python-path       (getenv "GUIX_PYTHONPATH")))
-             (wrap-program (string-append out "/bin/rhythmbox")
-               `("GI_TYPELIB_PATH"        ":" prefix (,gi-typelib-path))
-               `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
-               `("GRL_PLUGIN_PATH"        ":" prefix (,grl-plugin-path))
-               `("GUIX_PYTHONPATH"             ":" prefix (,python-path))))
-           #t)))))
-   (propagated-inputs
-    (list dconf))
-   (native-inputs
-    `(("itstool" ,itstool)
-      ("intltool" ,intltool)
-      ("glib" ,glib "bin")
-      ("gobject-introspection" ,gobject-introspection)
-      ("desktop-file-utils" ,desktop-file-utils)
-      ("pkg-config" ,pkg-config)
-      ("xmllint" ,libxml2)))
-   (inputs
-    `(("json-glib" ,json-glib)
-      ("tdb" ,tdb)
-      ("gnome-desktop" ,gnome-desktop)
-      ("python" ,python)
-      ("python-pygobject" ,python-pygobject)
-      ("vala" ,vala)
-      ("gmime" ,gmime)
-      ("adwaita-icon-theme" ,adwaita-icon-theme)
-      ("grilo" ,grilo)
-      ("grilo-plugins" ,grilo-plugins)
-      ("gstreamer" ,gstreamer)
-      ("gst-plugins-base" ,gst-plugins-base)
-      ("gst-plugins-good" ,gst-plugins-good)
-      ("totem-pl-parser" ,totem-pl-parser)
-      ("libgudev" ,libgudev)
-      ;;("libmtp" ,libmtp) FIXME: Not detected
-      ("libsecret" ,libsecret)
-      ("libsoup" ,libsoup)
-      ("libnotify" ,libnotify)
-      ("libpeas" ,libpeas)
-      ("libsoup" ,libsoup-minimal-2)
-      ("lirc" ,lirc)
-      ;; TODO: clutter* only used by visualizer plugin, which also requires mx
-      ;;("clutter" ,clutter)
-      ;;("clutter-gtk" ,clutter-gtk)
-      ;;("clutter-gst" ,clutter-gst)
-      ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-      ("atk" ,atk)
-      ("pango" ,pango)
-      ("gtk+" ,gtk+)
-      ;; TODO:
-      ;;  * libgpod
-      ;;  * mx
-      ("brasero" ,brasero)))
-   (home-page "https://wiki.gnome.org/Apps/Rhythmbox")
-   (synopsis "Music player for GNOME")
-   (description "Rhythmbox is a music playing application for GNOME.  It
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
+          (add-after 'install 'wrap-rhythmbox
+            (lambda* (#:key outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/rhythmbox")
+                `("GI_TYPELIB_PATH"        ":" prefix
+                  (,(getenv "GI_TYPELIB_PATH")))
+                `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
+                  (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
+                `("GRL_PLUGIN_PATH"        ":" prefix
+                  (,(getenv "GRL_PLUGIN_PATH")))
+                `("GUIX_PYTHONPATH"             ":" prefix
+                  (,(getenv "GUIX_PYTHONPATH")))))))))
+    (propagated-inputs
+     (list dconf))
+    (native-inputs
+     (list desktop-file-utils
+           gettext-minimal
+           gobject-introspection
+           `(,glib "bin")
+           itstool
+           pkg-config
+           vala))
+    (inputs
+     ;; TODO:
+     ;;  * libgpod
+     ;;  * mx
+     ;; TODO: clutter* only used by visualizer plugin, which also requires mx
+     ;;clutter
+     ;;clutter-gtk
+     ;;clutter-gst
+     (list adwaita-icon-theme
+           atk
+           bash-minimal
+           brasero
+           json-glib
+           gmime
+           gnome-desktop
+           grilo
+           grilo-plugins
+           gsettings-desktop-schemas
+           gst-plugins-base
+           gst-plugins-good
+           gstreamer
+           gtk+
+           libgudev
+           libnotify
+           libpeas
+           libsecret
+           libmtp
+           libsoup-minimal-2
+           libxml2
+           lirc
+           pango
+           python
+           python-pygobject
+           tdb
+           totem-pl-parser))
+    (home-page "https://wiki.gnome.org/Apps/Rhythmbox")
+    (synopsis "Music player for GNOME")
+    (description "Rhythmbox is a music playing application for GNOME.  It
 supports playlists, song ratings, and any codecs installed through gstreamer.")
-   (license license:gpl2+)))
+    (license license:gpl2+)))
 
 (define-public eog
- (package
-   (name "eog")
-   (version "40.3")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "0ddjwcd77nw0rxb5x5bz5hd671m8gya9827p8rsnb58x103kpai8"))
-            ;; XXX: Remove when upgrading to 42.0
-            (patches (search-patches "eog-update-libportal-usage.patch"))))
-   (build-system meson-build-system)
-   (arguments
-    `(#:glib-or-gtk? #t
-      #:meson ,meson-0.60
+  (package
+    (name "eog")
+    (version "42.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0fpl8wz1j10r59m20d61b7wmp8ga48dd7svqv1a2ip66ig1b7h9h"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
       #:configure-flags
       ;; Otherwise, the RUNPATH will lack the final 'eog' path component.
-      (list (string-append "-Dc_link_args=-Wl,-rpath="
-                           (assoc-ref %outputs "out") "/lib/eog"))
+      #~(list (string-append "-Dc_link_args=-Wl,-rpath="
+                             #$output "/lib/eog"))
       #:phases
-      (modify-phases %standard-phases
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))))
-        (add-after 'install 'wrap-eog
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out               (assoc-ref outputs "out"))
-                  (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-              (wrap-program (string-append out "/bin/eog")
-                `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
-   (propagated-inputs
-    (list dconf))
-   (native-inputs
-    `(("intltool" ,intltool)
-      ("itstool" ,itstool)
-      ("glib" ,glib "bin")
-      ("gobject-introspection" ,gobject-introspection)
-      ("pkg-config" ,pkg-config)
-      ("xmllint" ,libxml2)))
-   (inputs
-    `(("gnome-desktop" ,gnome-desktop)
-      ("shared-mime-info" ,shared-mime-info)
-      ("adwaita-icon-theme" ,adwaita-icon-theme)
-      ("exempi" ,exempi)
-      ("lcms" ,lcms)
-      ("libexif" ,libexif)
-      ("libpeas" ,libpeas)
-      ("libportal" ,libportal)
-      ("libjpeg" ,libjpeg-turbo)
-      ("librsvg" ,librsvg)
-      ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-      ("gtk+" ,gtk+)))
-   (home-page "https://wiki.gnome.org/Apps/EyeOfGnome")
-   (synopsis "GNOME image viewer")
-   (description "Eye of GNOME is the GNOME image viewer.  It
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
+          (add-after 'install 'wrap-eog
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+                (wrap-program (search-input-file outputs "bin/eog")
+                  `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
+    (propagated-inputs
+     (list dconf
+           libhandy))                   ;libhandy is required by eog.pc
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           itstool
+           libxml2
+           pkg-config))
+    (inputs
+     (list adwaita-icon-theme
+           bash-minimal
+           exempi
+           gnome-desktop
+           gtk
+           lcms
+           libexif
+           libjpeg-turbo
+           libpeas
+           libportal
+           librsvg
+           shared-mime-info))
+    (home-page "https://wiki.gnome.org/Apps/EyeOfGnome")
+    (synopsis "GNOME image viewer")
+    (description "Eye of GNOME is the GNOME image viewer.  It
 supports image conversion, rotation, and slideshows.")
-   (license license:gpl2+)))
+    (license license:gpl2+)))
 
 (define-public eog-plugins
   ;; Note: EOG looks for its plugins (via libpeas) in ~/.local as well as
@@ -6464,7 +6726,7 @@ supports image conversion, rotation, and slideshows.")
   ;; 'XDG_DATA_DIRS' appropriately set.
   (package
     (name "eog-plugins")
-    (version "3.26.8")
+    (version "42.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/eog-plugins/"
@@ -6472,30 +6734,22 @@ supports image conversion, rotation, and slideshows.")
                                   "eog-plugins-" version ".tar.xz"))
               (sha256
                (base32
-                "1dcxdjp7x092wn0iq7975f9b05ksb5kl5mxmyiqmydrja91ryw40"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'fix-plugins-path
-           ;; XXX: EOG looks its plugins in "share/eog/plugins", not in
-           ;; "lib/eog/plugins".
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (plugins (string-append out "/share/eog/plugins")))
-               (mkdir (dirname plugins))
-               (symlink (string-append out "/lib/eog/plugins") plugins)))))))
+                "0prymlrfh66p03va5aj30wazshp7bn80gzcsj9dgsmss2k512wlb"))))
+    (build-system meson-build-system)
     (home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins")
     (synopsis "Extensions for the Eye of GNOME image viewer")
     (native-inputs
-     (list pkg-config gettext-minimal))
+     (list gettext-minimal
+           pkg-config
+           python))
     (inputs
      (list eog
            glib
            gtk+
-           libpeas
+           libchamplain
            libexif
-           libchamplain))
+           libgdata
+           libpeas))
     (description
      "This package provides plugins for the Eye of GNOME (EOG) image viewer,
 notably:
@@ -6773,7 +7027,7 @@ a secret password store, an adblocker, and a modern UI.")
 (define-public epiphany
   (package
     (name "epiphany")
-    (version "42.2")
+    (version "42.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/epiphany/"
@@ -6781,7 +7035,7 @@ a secret password store, an adblocker, and a modern UI.")
                                   "epiphany-" version ".tar.xz"))
               (sha256
                (base32
-                "0b8rhns3b58f8dnp83mm1g933aqf88d8wrfyyp7jq3fihvw2rh4j"))))
+                "0q08ixzgp341g5pq6rfy5q75m9bvddvl8na3qa5v5vi056nkh29p"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -6809,33 +7063,37 @@ a secret password store, an adblocker, and a modern UI.")
       #:configure-flags
       ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component.
       #~(list (string-append "-Dc_link_args=-Wl,-rpath="
-                             #$output "/lib/epiphany"))))
+                             #$output "/lib/epiphany")
+              "-Dsoup2=disabled")))     ;use libsoup 3
     (propagated-inputs (list dconf))
-    (native-inputs (list desktop-file-utils ; for update-desktop-database
-                         `(,glib "bin") ; for glib-mkenums
-                         intltool
-                         itstool
-                         pkg-config
-                         libxml2
-                         xorg-server-for-tests))
-    (inputs (list avahi
-                  gcr
-                  librsvg ; for loading SVG files
-                  glib-networking
-                  gnome-desktop
-                  gsettings-desktop-schemas
-                  json-glib
-                  iso-codes
-                  libarchive
-                  libdazzle
-                  libhandy
-                  libnotify
-                  libportal
-                  libsecret
-                  libxslt
-                  nettle ; for hogweed
-                  sqlite
-                  webkitgtk-with-libsoup2))
+    (native-inputs
+     (list desktop-file-utils           ; for update-desktop-database
+           gettext-minimal
+           `(,glib "bin")               ; for glib-mkenums
+           itstool
+           pkg-config
+           libxml2
+           xorg-server-for-tests))
+    (inputs
+     (list avahi
+           gcr
+           glib-networking
+           gnome-desktop
+           gsettings-desktop-schemas
+           iso-codes
+           json-glib
+           libarchive
+           libdazzle
+           libhandy
+           libnotify
+           libportal
+           librsvg                      ; for loading SVG files
+           libsecret
+           libsoup
+           libxslt
+           nettle                       ; for hogweed
+           sqlite
+           webkitgtk))
     (home-page "https://wiki.gnome.org/Apps/Web")
     (synopsis "GNOME web browser")
     (description
@@ -6846,7 +7104,7 @@ principles are simplicity and standards compliance.")
 (define-public d-feet
   (package
     (name "d-feet")
-    (version "0.3.14")
+    (version "0.3.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6854,47 +7112,39 @@ principles are simplicity and standards compliance.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1m8lwiwl5jhi0x7y6x5zmd3hjplgvdjrb8a8jg74rvkygslj1p7f"))))
-    (build-system glib-or-gtk-build-system)
+                "1jqw5ndpgyb0zxh0g21ai1911lfrm56vz18xbccfqm4sk95wwcw7"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:out-of-source? #f ; tests need to run in the source directory.
-       #:phases
-       (modify-phases %standard-phases
-         (add-before
-          'check 'pre-check
-          (lambda _
-            ;; The test suite requires a running X server.
-            (system "Xvfb :1 &")
-            (setenv "DISPLAY" ":1")
-            ;; Don't fail on missing '/etc/machine-id'.
-            (setenv "DBUS_FATAL_WARNINGS" "0")
-            ;; tests.py and window.py don't meet E402:
-            ;;   E402 module level import not at top of file
-            (substitute* "src/tests/Makefile"
-              (("--ignore=E123") "--ignore=E123,E402"))
-            #t))
-         (add-after
-          'install 'wrap-program
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((prog (string-append (assoc-ref outputs "out")
-                                       "/bin/d-feet")))
-              (wrap-program prog
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; The test suite requires a running X server.
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1")))
+          (add-before 'install 'disable-gtk-update-icon-cache
+            (lambda _
+              (setenv "DESTDIR" "/")))
+          (add-after 'install 'wrap-program
+            (lambda* (#:key outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/d-feet")
                 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
-                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
-              #t))))))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)
-       ("python-pep8" ,python-pep8)
-       ("xmllint" ,libxml2)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list `(,glib "bin")
+           intltool
+           itstool
+           libxml2
+           pkg-config
+           python-pep8
+           xorg-server-for-tests))
     (inputs
-     `(("gobject-introspection" ,gobject-introspection)
-       ("gtk+" ,gtk+)
-       ("python" ,python-wrapper)
-       ("hicolor-icon-theme" ,hicolor-icon-theme)
-       ("python-pygobject" ,python-pygobject)))
+     (list gobject-introspection
+           gtk+
+           python-wrapper
+           python-pygobject))
     (home-page "https://wiki.gnome.org/Apps/DFeet")
     (synopsis "D-Bus debugger")
     (description
@@ -6944,7 +7194,7 @@ jQuery.Syntax JavaScript libraries.")
 (define-public yelp
   (package
     (name "yelp")
-    (version "41.0")
+    (version "42.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6952,15 +7202,22 @@ jQuery.Syntax JavaScript libraries.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "11shrqass8ak8m10nayqssa6sbrrxa13ffpamvqi1c0yzkxdk9r5"))))
+                "0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list `(,glib "bin") ; for glib-genmarshal, etc.
-           intltool itstool pkg-config))
+           intltool
+           itstool
+           pkg-config))
     (propagated-inputs
      (list dconf))
     (inputs
-     (list gsettings-desktop-schemas libxslt sqlite webkitgtk yelp-xsl))
+     (list gsettings-desktop-schemas
+           libhandy
+           libxslt
+           sqlite
+           webkitgtk
+           yelp-xsl))
     (home-page "https://wiki.gnome.org/Apps/Yelp")
     (synopsis "GNOME help browser")
     (description
@@ -7004,7 +7261,7 @@ wraps things up in a developer-friendly way.")
 (define-public libgee
   (package
     (name "libgee")
-    (version "0.20.3")
+    (version "0.20.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgee/"
@@ -7012,19 +7269,19 @@ wraps things up in a developer-friendly way.")
                                   "libgee-" version ".tar.xz"))
               (sha256
                (base32
-                "1pm525wm11dhwz24m8bpcln9547lmrigl6cxf3qsbg4cr3pyvdfh"))))
+                "060mbj6ihca315a6wqj47mfzm2881azwm5bl0vwjg9ymay4km1ii"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-introspection-install-dir
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-introspection-install-dir
+            (lambda _
               (substitute* "gee/Makefile.in"
                 (("@INTROSPECTION_GIRDIR@")
-                 (string-append out "/share/gir-1.0/"))
+                 (string-append #$output "/share/gir-1.0/"))
                 (("@INTROSPECTION_TYPELIBDIR@")
-                 (string-append out "/lib/girepository-1.0/")))))))))
+                 (string-append #$output "/lib/girepository-1.0/"))))))))
     (native-inputs
      (list `(,glib "bin") pkg-config))
     (inputs
@@ -7039,7 +7296,7 @@ classes for commonly used data structures.")
 (define-public gexiv2
   (package
     (name "gexiv2")
-    (version "0.12.2")
+    (version "0.14.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7047,16 +7304,32 @@ classes for commonly used data structures.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0k4ljzzz5dwqndw8awvlw3ala8rh3b2rk9i4jzvywc53mi9ba8i3"))))
+                "17nnsslj2wpizpx742w5lxdzcz5mx6jmsqcrli7zddi0zyk7k0p5"))))
     (build-system meson-build-system)
+    (arguments
+     (list
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:configure-flags
+      #~(list (string-append "-Dpython3_girdir="
+                             (python:site-packages %build-inputs %outputs)
+                             "/gi/overrides"))))
     (native-inputs
      (list gcr
-           `(,glib "bin") pkg-config vala))
+           `(,glib "bin")
+           pkg-config
+           python
+           python-pygobject
+           vala))
     (propagated-inputs
      ;; Listed in "Requires" section of gexiv2.pc
      (list exiv2))
     (inputs
-     (list glib gobject-introspection))
+     (list glib
+           gobject-introspection))
     (home-page "https://wiki.gnome.org/Projects/gexiv2")
     (synopsis "GObject wrapper around the Exiv2 photo metadata library")
     (description
@@ -7068,7 +7341,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.30.16")
+    (version "0.31.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/shotwell/"
@@ -7076,7 +7349,7 @@ metadata in photo and video files of various formats.")
                                   "shotwell-" version ".tar.xz"))
               (sha256
                (base32
-                "1yhqfmz49qkls4i6xaznm5ybwzv19jxsqjdic60wn0ykvbxjr269"))))
+                "06awlix23y1cd89n6v9vip48cg08fjq8v6zaw38k5clrrv38y11v"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -7086,31 +7359,31 @@ metadata in photo and video files of various formats.")
            (lambda _
              (substitute* "build-aux/meson/postinstall.py"
                (("gtk-update-icon-cache") (which "true"))
-               (("update-desktop-database") (which "true")))
-             #t)))))
+               (("update-desktop-database") (which "true"))))))))
     (propagated-inputs
      (list dconf))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("vala" ,vala)))
+     (list gettext-minimal
+           `(,glib "bin")
+           itstool
+           pkg-config
+           python))
     (inputs
-     `(("gcr" ,gcr)
-       ("gexiv2" ,gexiv2)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("gstreamer" ,gstreamer)
-       ("json-glib" ,json-glib)
-       ("libgdata" ,libgdata)
-       ("libgee" ,libgee)
-       ("libgphoto2" ,libgphoto2)
-       ("libgudev" ,libgudev)
-       ("libraw" ,libraw)
-       ("libxml2" ,libxml2)
-       ("sqlite" ,sqlite)
-       ("webkitgtk" ,webkitgtk-with-libsoup2)))
+     (list gcr
+           gexiv2
+           gst-plugins-base
+           gstreamer
+           json-glib
+           libgdata
+           libgee
+           libgphoto2
+           libgudev
+           libraw
+           libsecret
+           libwebp
+           libxml2
+           sqlite
+           webkitgtk))
     (home-page "https://wiki.gnome.org/Apps/Shotwell")
     (synopsis "Photo manager for GNOME 3")
     (description
@@ -7123,7 +7396,7 @@ share them with others via social networking and more.")
 (define-public file-roller
   (package
     (name "file-roller")
-    (version "3.40.0")
+    (version "3.42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/file-roller/"
@@ -7131,22 +7404,27 @@ share them with others via social networking and more.")
                                   "file-roller-" version ".tar.xz"))
               (sha256
                (base32
-                "039w1dcpa5ypmv6sm634alk9vbcdkyvy595vkh5gn032jsiqca2a"))))
+                "1iq24g2z7kf1a6kn9asp96lc59r8pxxjvcmm5r7zy47cadnqwhqw"))))
     (build-system meson-build-system)
+    (arguments
+     (list #:glib-or-gtk? #t
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'install 'disable-gtk-update-icon-cache
+                          (lambda _
+                            (setenv "DESTDIR" "/"))))))
     (native-inputs
-     (list desktop-file-utils ; for update-desktop-database
-           intltool
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
            itstool
            pkg-config
-           python
-           `(,gtk+ "bin") ; gtk-update-icon-cache
-           `(,glib "bin")))
+           python))
     ;; TODO: Add libnautilus.
     (inputs
      (list gtk+
-           gdk-pixbuf
            json-glib
            libarchive
+           libhandy
            libnotify
            nettle
            libxml2))
@@ -7160,7 +7438,7 @@ such as gzip tarballs.")
 (define-public gnome-session
   (package
     (name "gnome-session")
-    (version "40.1")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7169,37 +7447,35 @@ such as gzip tarballs.")
               (patches (search-patches "gnome-session-support-elogind.patch"))
               (sha256
                (base32
-                "02z0xr6sv9ibl7awbw9j4y05hf4jk1zgvsbbmh7n27hhjvsvc8pl"))))
+                "1alwjqr36rd0s132qs2clwnxgilcbylps6lm41lr50mn782hdjiw"))))
     (arguments
-     `(#:meson ,meson-0.60
-       #:glib-or-gtk? #t
+     `(#:glib-or-gtk? #t
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-gnome-session
-           (lambda* (#:key inputs outputs #:allow-other-keys)
+           (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
              ;; Make sure 'gnome-session' finds the 'gsettings' program.
-             (let ((glib (assoc-ref inputs "glib:bin"))
-                   (out  (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/gnome-session")
-                 `("PATH" ":" prefix (,(string-append glib "/bin"))))))))
-
+             (wrap-program (search-input-file outputs "bin/gnome-session")
+               `("PATH" ":" prefix
+                 (,(dirname (search-input-file (or native-inputs inputs)
+                                               "bin/gdbus"))))))))
        #:configure-flags
        '("-Ddocbook=false" ; FIXME: disabled because of docbook validation error
-         "-Dman=false" ; FIXME: disabled because of docbook validation error
+         "-Dman=false"   ; FIXME: disabled because of docbook validation error
          "-Delogind=true"
          "-Dsystemd=false"
          "-Dsystemd_session=disable"
          "-Dsystemd_journal=false")))
     (build-system meson-build-system)
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
-       ("pkg-config" ,pkg-config)
-       ("intltool" ,intltool)
-       ("xsltproc" ,libxslt)
-       ("libxml2" ,libxml2) ;for 'XML_CATALOG_FILES'
-       ("docbook-xsl" ,docbook-xsl)
-       ("docbook-xml" ,docbook-xml)
-       ("xmlto" ,xmlto)))
+     (list docbook-xml
+           docbook-xsl
+           `(,glib "bin")               ; for glib-compile-schemas, etc.
+           intltool
+           libxml2                      ;for 'XML_CATALOG_FILES'
+           libxslt
+           pkg-config
+           xmlto))
     (inputs
      (list elogind
            gnome-desktop
@@ -7266,7 +7542,7 @@ configuration program to choose applications starting on login.")
     (inputs
      (list gtk+ readline))
     (synopsis "Javascript bindings for GNOME")
-    (home-page "https://live.gnome.org/Gjs")
+    (home-page "https://wiki.gnome.org/Gjs")
     (description
      "Gjs is a javascript binding for GNOME.  It's mainly based on spidermonkey
 javascript engine and the GObject introspection framework.")
@@ -7275,7 +7551,7 @@ javascript engine and the GObject introspection framework.")
 (define-public gedit
   (package
     (name "gedit")
-    (version "40.1")
+    (version "42.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7283,86 +7559,60 @@ javascript engine and the GObject introspection framework.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "149ngl9qw6h59546lir1pa7hvw23ppsnqlj9mfqphmmn5jl99qsm"))))
+                "1jlgzihi4ywvlr4xj2vbnnxzar8j3mwj0jcn8jp6dh0a3w8jjqiw"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       #:configure-flags
-       ;; Otherwise, the RUNPATH will lack the final path component.
-       (list (string-append "-Dc_link_args=-Wl,-rpath="
-                            (assoc-ref %outputs "out") "/lib/gedit"))
-
-       ;; XXX: Generated .h files are sometimes used before being built.
-       #:parallel-build? #f
-
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "build-aux/meson/post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t))
-         (add-after 'unpack 'patch-libgd-fetch
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libgd (assoc-ref inputs "libgd")))
-               ;; Calling git is unnecessary because libgd is fetched as a
-               ;; native input to this package.
-               (substitute* "meson.build"
-                 ((".*git.*") ""))
-               (copy-recursively libgd "subprojects/libgd")
-               #t)))
-         (add-after 'install 'wrap-gedit
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out               (assoc-ref outputs "out"))
-                   (gtksourceview     (assoc-ref inputs "gtksourceview"))
-                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH"))
-                   (python-path       (getenv "GUIX_PYTHONPATH")))
-               (wrap-program (string-append out "/bin/gedit")
-                 ;; For plugins.
-                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
-                 `("GUIX_PYTHONPATH" ":" prefix (,python-path))
-                 ;; For language-specs.
-                 `("XDG_DATA_DIRS" ":" prefix (,(string-append gtksourceview
-                                                               "/share")))))
-             #t)))))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      ;; Otherwise, the RUNPATH will lack the final path component.
+      #~(list (string-append "-Dc_link_args=-Wl,-rpath="
+                             #$output "/lib/gedit"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "build-aux/meson/post_install.py"
+                (("gtk-update-icon-cache") (which "true")))))
+          (add-after 'unpack 'do-not-invoke-git
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "meson.build"
+                ((".*git.*") ""))))
+          (add-after 'install 'wrap-gedit
+            (lambda* (#:key outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/gedit")
+                ;; For plugins.
+                `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
+                `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
+                ;; For language-specs.
+                `("XDG_DATA_DIRS" ":" prefix
+                  (,(string-append #$(this-package-input "gtksourceview")
+                                   "/share")))))))))
     (propagated-inputs
      (list dconf))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection)
-       ("libgd"
-        ,(origin
-           (method git-fetch)
-           (uri (git-reference
-                 (url "https://gitlab.gnome.org/GNOME/libgd")
-                 (commit "c7c7ff4e05d3fe82854219091cf116cce6b19de0")))
-           (file-name (git-file-name "libgd" version))
-           (sha256
-            (base32 "16yld0ap7qj1n96h4f2sqkjmibg7xx5xwkqxdfzam2nmyfdlrrrs"))))
-       ("pkg-config" ,pkg-config)))
+     (list desktop-file-utils           ;for update-desktop-database
+           `(,glib "bin")               ;for glib-mkenums, etc.
+           gobject-introspection
+           intltool
+           itstool
+           libxml2
+           pkg-config
+           python
+           vala))
     (inputs
-     (list amtk
+     (list adwaita-icon-theme
+           bash-minimal
            glib
+           gsettings-desktop-schemas
            gspell
            gtk+
            gtksourceview-4
            libpeas
-           libxml2
-           iso-codes
-           python-pygobject
-           python
-           tepl
-           gsettings-desktop-schemas
-           libx11
-           vala
-           adwaita-icon-theme
            libsoup
-           gnome-desktop))
+           python
+           python-pygobject))
     (home-page "https://wiki.gnome.org/Apps/Gedit")
     (synopsis "GNOME text editor")
     (description "While aiming at simplicity and ease of use, gedit is a
@@ -7372,7 +7622,7 @@ powerful general purpose text editor.")
 (define-public zenity
   (package
     (name "zenity")
-    (version "3.32.0")
+    (version "3.43.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/zenity/"
@@ -7380,12 +7630,17 @@ powerful general purpose text editor.")
                                   "zenity-" version ".tar.xz"))
               (sha256
                (base32
-                "15fdh8xfdhnwcynyh4byx3mrjxbyprqnwxzi7qn3g5wwaqryg1p7"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list gettext-minimal itstool pkg-config))
-    (inputs
-     (list libnotify webkitgtk))
+                "0czq2vx636xbvg7zbdqkxq41zgm7v1h048awy0cgls0q1hgcmmxh"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'disable-gtk-update-icon-cache
+                          ;; The gtk-update-icon-cache tool is only run when
+                          ;; DESTDIR is unset.
+                          (lambda _
+                            (setenv "DESTDIR" "/"))))))
+    (native-inputs (list gettext-minimal itstool pkg-config))
+    (inputs (list gtk+))
     (synopsis "Display graphical dialog boxes from shell scripts")
     (home-page "https://www.gnome.org")
     (description
@@ -7431,15 +7686,15 @@ to display dialog boxes from the commandline and shell scripts.")
          "-Dinstalled_tests=false"
          ;; The following flags are needed for the bundled clutter
          (string-append "-Dxwayland_path="
-                        (search-input-file %build-inputs "/bin/Xwayland"))
+                        (search-input-file %build-inputs "bin/Xwayland"))
          ;; the remaining flags are needed for the bundled cogl
          (string-append "-Dopengl_libname="
-                        (search-input-file %build-inputs "/lib/libGL.so"))
+                        (search-input-file %build-inputs "lib/libGL.so"))
          (string-append "-Dgles2_libname="
-                        (search-input-file %build-inputs "/lib/libGLESv2.so"))
+                        (search-input-file %build-inputs "lib/libGLESv2.so"))
          "-Degl_device=true"            ;false by default
          "-Dwayland_eglstream=true")    ;false by default
-      #:test-options ''("--verbose")
+      #:test-options '(list "--verbose")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'use-RUNPATH-instead-of-RPATH
@@ -7453,8 +7708,7 @@ to display dialog boxes from the commandline and shell scripts.")
             (lambda* (#:key inputs #:allow-other-keys)
               (substitute* "src/wayland/meta-wayland-egl-stream.c"
                 (("libnvidia-egl-wayland.so.1")
-                 (search-input-file inputs
-                                    "/lib/libnvidia-egl-wayland.so.1")))))
+                 (search-input-file inputs "lib/libnvidia-egl-wayland.so.1")))))
           (add-before 'configure 'set-udev-dir
             (lambda _
               (setenv "PKG_CONFIG_UDEV_UDEVDIR"
@@ -7479,7 +7733,12 @@ to display dialog boxes from the commandline and shell scripts.")
               (when tests?
                 ;; Setup (see the 'test-mutter' CI target at
                 ;; https://gitlab.gnome.org/GNOME/mutter/-/raw/main/.gitlab-ci.yml).
-                (setenv "XDG_RUNTIME_DIR" "runtime-dir")
+                (setenv "HOME" "/tmp")
+                (setenv "XDG_RUNTIME_DIR" (string-append (getcwd)
+                                                         "/runtime-dir"))
+                (mkdir (getenv "XDG_RUNTIME_DIR"))
+                (chmod (getenv "XDG_RUNTIME_DIR") #o700)
+
                 (setenv "GSETTINGS_SCHEMA_DIR" "data")
                 (setenv "MUTTER_DEBUG_DUMMY_MODE_SPECS" "800x600@10.0")
                 (setenv "PIPEWIRE_DEBUG" "2")
@@ -7522,16 +7781,17 @@ to display dialog boxes from the commandline and shell scripts.")
                         (error "`meson test' exited with status"
                                status))))))))))))
     (native-inputs
-     (list desktop-file-utils           ; for update-desktop-database
-           gettext-minimal
-           `(,glib "bin")               ; for glib-compile-schemas, etc.
+     (list desktop-file-utils           ;for update-desktop-database
+           `(,glib "bin")               ;for glib-compile-schemas, etc.
            gobject-introspection
+           intltool
            pkg-config
            xvfb-run
            ;; For git build
            autoconf
            automake
            libtool
+           wayland-protocols-next
            ;; For tests.
            ;; Warnings are configured to be fatal during the tests; add an icon
            ;; theme to please libxcursor.
@@ -7543,29 +7803,28 @@ to display dialog boxes from the commandline and shell scripts.")
            python-dbusmock
            tini))                       ;acting as init (zombie reaper)
     (propagated-inputs
-     (list ;; libmutter.pc refers to these:
-      gsettings-desktop-schemas
-      gtk+
-      ;; mutter-clutter-1.0.pc and mutter-cogl-1.0.pc refer to these:
-      atk
-      cairo
-      gdk-pixbuf
-      glib
-      json-glib
-      libinput
-      libx11
-      libxcomposite
-      libxcvt
-      libxdamage
-      libxext
-      libxfixes
-      libxkbcommon
-      libxml2
-      libxrandr
-      mesa
-      pango
-      eudev
-      xinput))
+     (list gsettings-desktop-schemas-next ;required by libmutter.pc
+           gtk+                           ;required by libmutter.pc
+           ;; mutter-clutter-1.0.pc and mutter-cogl-1.0.pc refer to these:
+           atk
+           cairo
+           eudev
+           gdk-pixbuf
+           glib
+           json-glib
+           libinput
+           libx11
+           libxcomposite
+           libxcvt
+           libxdamage
+           libxext
+           libxfixes
+           libxkbcommon
+           libxml2
+           libxrandr
+           mesa
+           pango
+           xinput))
     (inputs
      (list egl-wayland                  ;for wayland-eglstream-protocols
            elogind
@@ -7599,7 +7858,7 @@ window manager.")
 (define-public gnome-online-accounts
   (package
     (name "gnome-online-accounts")
-    (version "3.43.1")
+    (version "3.45.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7607,44 +7866,34 @@ window manager.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1s5pmy3hx6hhnyi40r7b773py9kn2qbkxnpxv6149z9fl5ikdjrv"))))
-    (outputs '("out" "lib"))
-    (build-system glib-or-gtk-build-system)
+                "15zzzndbfba8a497vxb6cmy1y22l3lfn4sx9s9r59kwzd83i6fxn"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
-       (list (string-append "--libdir=" (assoc-ref %outputs "out") "/lib"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-libgoa-output
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((lib (assoc-ref outputs "lib")))
-               (substitute* '("src/goa/Makefile.in" "src/goa/goa-1.0.pc.in")
-                 (("@prefix@") lib)
-                 (("@exec_prefix@") lib)
-                 (("@libdir@") (string-append lib "/lib"))
-                 (("@includedir@") (string-append lib "/include"))
-                 (("@datadir@") (string-append lib "/share")))
-               ;; Make sure gobject-introspection knows about the output
-               ;; too (see <https://bugs.gnu.org/36535>).
-               (setenv "outputs" "out lib")))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'disable-gtk-update-icon-cache
+            (lambda _
+              (setenv "DESTDIR" "/"))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
-       ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)
-       ("xsltproc" ,libxslt)))
+     (list gettext-minimal
+           `(,glib "bin")               ; for glib-compile-schemas, etc.
+           gobject-introspection
+           libxslt
+           pkg-config
+           vala))
     (propagated-inputs
-     (list glib ; required by goa-1.0.pc
-           gtk+))         ; required by goa-backend-1.0.pc
+     (list glib                         ; required by goa-1.0.pc
+           gtk+))                       ; required by goa-backend-1.0.pc
     (inputs
-     `(("docbook-xsl" ,docbook-xsl)
-       ("json-glib" ,json-glib)
-       ("libsecret" ,libsecret)
-       ("rest" ,rest)
-       ;; WebKitGtk propagates libsoup 3, which causes the build to fail; so
-       ;; use a special variant.
-       ("webkitgtk" ,webkitgtk-with-libsoup2)))
+     (list docbook-xsl
+           gcr
+           json-glib
+           libsecret
+           mit-krb5
+           rest-next
+           webkitgtk))
     (synopsis "Single sign-on framework for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GnomeOnlineAccounts")
     (description
@@ -7654,10 +7903,35 @@ for Google, ownCloud, Facebook, Flickr, Windows Live, Pocket, Foursquare,
 Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
     (license license:lgpl2.0+)))
 
+(define-public gnome-online-accounts-3.44
+  (package
+    (inherit gnome-online-accounts)
+    (name "gnome-online-accounts")
+    (version "3.44.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0hkkxa3zqyl0i4kw1p3ak4alwxw4wydh9al6fzwbcdgl0r0ms79q"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments (substitute-keyword-arguments
+                   (strip-keyword-arguments
+                    '(#:glib-or-gtk?)
+                    (package-arguments gnome-online-accounts))
+                 ((#:phases phases)
+                  #~(modify-phases #$phases
+                      (delete 'disable-gtk-update-icon-cache)))))
+    (inputs (modify-inputs (package-inputs gnome-online-accounts)
+              (replace "rest" rest)
+              (replace "webkitgtk" webkitgtk-with-libsoup2)))))
+
 (define-public evolution-data-server
   (package
     (name "evolution-data-server")
-    (version "3.42.1")
+    (version "3.45.3")
     (source
      (origin
        (method url-fetch)
@@ -7665,75 +7939,80 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "0a7my8spwcaf2i2fz8ndddi1drv6l9gxq0qblmnkxzyhfwm7zrp6"))))
+        (base32 "1zjg9b77qmfin9m16rqa6cpqp1rh63pg3bcnkh25vmklslwhvq7a"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:configure-flags
-       (let* ((lib (string-append (assoc-ref %outputs "out") "/lib"))
-              (runpaths (map (lambda (s)
-                               (string-append lib "/evolution-data-server/" s))
-                             '("addressbook-backends" "calendar-backends"
-                               "camel-providers" "credential-modules"
-                               "registry-modules"))))
-         (list "-DENABLE_GOOGLE=OFF"          ;disable Google Contacts support
-               "-DENABLE_VALA_BINDINGS=ON"
-               (string-append "-DCMAKE_INSTALL_RPATH=" lib ";"
-                              (string-append lib "/evolution-data-server;")
-                              (string-join runpaths ";"))
-               "-DENABLE_INTROSPECTION=ON" ;required for Vala bindings
-               "-DWITH_PHONENUMBER=ON"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             ;; tests/book-migration/test-migration.c:160:test_fetch_contacts:
-             ;; assertion failed (g_slist_length (contacts) == 20): (0 == 20)
-             (delete-file-recursively "tests/book-migration")
-             (substitute* "tests/CMakeLists.txt"
-               (("add_subdirectory\\(book-migration\\)") ""))))
-         (add-after 'unpack 'patch-paths
-          (lambda _
-            (substitute* '("tests/test-server-utils/e-test-server-utils.c"
-                           "tests/libedata-book/data-test-utils.c"
-                           "tests/libedata-book/test-book-cache-utils.c"
-                           "tests/libedata-cal/test-cal-cache-utils.c")
-              (("/bin/rm") (which "rm")))))
-         (add-before 'configure 'dont-override-rpath
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               ;; CMakeLists.txt hard-codes runpath to just the libdir.
-               ;; Remove it so the configure flag is respected.
-               (("SET\\(CMAKE_INSTALL_RPATH .*") "")))))))
+     (list
+      #:configure-flags
+      #~(let* ((lib (string-append #$output "/lib"))
+               (runpaths (map (lambda (s)
+                                (string-append lib "/evolution-data-server/" s))
+                              '("addressbook-backends" "calendar-backends"
+                                "camel-providers" "credential-modules"
+                                "registry-modules"))))
+          (list "-DENABLE_GOOGLE=OFF"   ;disable Google Contacts support
+                "-DENABLE_VALA_BINDINGS=ON"
+                (string-append "-DCMAKE_INSTALL_RPATH=" lib ";"
+                               (string-append lib "/evolution-data-server;")
+                               (string-join runpaths ";"))
+                "-DENABLE_INTROSPECTION=ON"      ;required for Vala bindings
+                "-DENABLE_OAUTH2_WEBKITGTK4=OFF" ;requires webkitgtk-next
+                "-DWITH_PHONENUMBER=ON"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-failing-tests
+            (lambda _
+              ;; tests/book-migration/test-migration.c:160:test_fetch_contacts:
+              ;; assertion failed (g_slist_length (contacts) == 20): (0 == 20)
+              (delete-file-recursively "tests/book-migration")
+              (substitute* "tests/CMakeLists.txt"
+                (("add_subdirectory\\(book-migration\\)") ""))))
+          (add-after 'unpack 'patch-paths
+            (lambda _
+              (substitute* '("tests/test-server-utils/e-test-server-utils.c"
+                             "tests/libedata-book/data-test-utils.c"
+                             "tests/libedata-book/test-book-cache-utils.c"
+                             "tests/libedata-cal/test-cal-cache-utils.c")
+                (("/bin/rm") (which "rm")))))
+          (add-before 'configure 'dont-override-rpath
+            (lambda _
+              (substitute* "CMakeLists.txt"
+                ;; CMakeLists.txt hard-codes runpath to just the libdir.
+                ;; Remove it so the configure flag is respected.
+                (("SET\\(CMAKE_INSTALL_RPATH .*") "")))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection)
-       ("gperf" ,gperf)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("protobuf" ,protobuf)
-       ("vala" ,vala)
-       ("python" ,python-wrapper)))
+     (list `(,glib "bin")               ; for glib-mkenums, etc.
+           gobject-introspection
+           gperf
+           gsettings-desktop-schemas
+           intltool
+           pkg-config
+           protobuf
+           python-wrapper
+           vala))
     (propagated-inputs
      ;; These are all in the Requires field of .pc files.
-     `(("gtk+" ,gtk+)
-       ("libical" ,libical)
-       ("libsecret" ,libsecret)
-       ("libsoup" ,libsoup-minimal-2)
-       ("nss" ,nss)
-       ("sqlite" ,sqlite)))
+     (list glib
+           gtk
+           gtk+
+           json-glib
+           libical
+           libsecret
+           libsoup
+           nss
+           sqlite))
     (inputs
-     `(("bdb" ,bdb)
-       ("boost" ,boost)
-       ("gcr" ,gcr)
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("json-glib" ,json-glib)
-       ("libcanberra" ,libcanberra)
-       ("libgweather" ,libgweather)
-       ("libphonenumber" ,libphonenumber)
-       ("mit-krb5" ,mit-krb5)
-       ("openldap" ,openldap)
-       ("webkitgtk" ,webkitgtk-with-libsoup2)))
+     (list bdb
+           boost
+           gcr
+           gnome-online-accounts
+           json-glib
+           libcanberra
+           libgweather4
+           libphonenumber
+           mit-krb5
+           openldap
+           webkitgtk))
     (synopsis "Store address books and calendars")
     (home-page "https://wiki.gnome.org/Apps/Evolution")
     (description
@@ -7742,6 +8021,30 @@ contacts, tasks, and calendar information.  It was originally developed for
 Evolution (hence the name), but is now used by other packages as well.")
     (license license:lgpl2.0)))
 
+;;; This version can be used for projects with dependencies stuck on libsoup2.
+(define-public evolution-data-server-3.44
+  (package
+    (inherit evolution-data-server)
+    (name "evolution-data-server")
+    (version "3.44.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32 "1sxjrjr31wqbp9g4pf6dwj8rc4mi7c5fbfd489ha92ym7246bin0"))))
+    (inputs
+     (modify-inputs (package-inputs evolution-data-server)
+       (replace "gnome-online-accounts" gnome-online-accounts-3.44)
+       (replace "libgweather4" libgweather)
+       (replace "webkitgtk" webkitgtk-with-libsoup2)))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs evolution-data-server)
+       (delete "gtk")
+       (replace "libsoup" libsoup-minimal-2)))))
+
 (define-public caribou
   (package
     (name "caribou")
@@ -7807,7 +8110,7 @@ users.")
 (define-public network-manager
   (package
     (name "network-manager")
-    (version "1.32.12")
+    (version "1.41.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/NetworkManager/"
@@ -7817,138 +8120,135 @@ users.")
                                        "network-manager-meson.patch"))
               (sha256
                (base32
-                "0jzmz0zw64dgvdn2g7pppr7bkywpbxcbdb1viv6p7zh2lnh3dax8"))))
+                "0v5a5fw1zwa94ksz6d7hyj14wwdxzmswgm81ryhxmyn3nrcf1akg"))))
     (build-system meson-build-system)
     (outputs '("out"
                "doc"))                  ; 8 MiB of gtk-doc HTML
     (arguments
-     `(#:configure-flags
-       (let ((out      (assoc-ref %outputs "out"))
-             (dhclient (search-input-file %build-inputs "/sbin/dhclient")))
-         (list
-          ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
-          ;; component.
-          (string-append "-Dc_link_args=-Wl,-rpath="
-                         out "/lib:"
-                         out "/lib/NetworkManager/" ,version)
-          "-Dsystemd_journal=false"
-          "-Dsession_tracking=elogind"
-          "-Dsuspend_resume=elogind"
-          "-Dsystemdsystemunitdir=no"
-          "-Dsession_tracking_consolekit=false"
-          "-Ddhcpcd=no"
-          "-Ddhcpcanon=no"
-          "-Dcrypto=gnutls"
-          "-Diwd=true"
-          "-Dlibaudit=yes"
-          "-Dqt=false"
-          "-Ddocs=true"
-          "--sysconfdir=/etc"
-          "--localstatedir=/var"
-          (string-append "-Dudev_dir="
-                         out "/lib/udev")
-          (string-append "-Ddbus_conf_dir="
-                         out "/etc/dbus-1/system.d")
-
-          (string-append "-Ddhclient=" dhclient)))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-dlopen-call-to-libjansson.so
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/libnm-glib-aux/nm-json-aux.c"
-               (("(handle = dlopen\\()soname" _ head)
-                (string-append
-                 head "\"" (search-input-file inputs
-                                              "lib/libjansson.so") "\"")))))
-         (add-before 'configure 'pre-configure
-           (lambda _
-             ;; These tests try to test aspects of network-manager's
-             ;; functionality within restricted containers, but they don't
-             ;; cope with being already in the Guix build jail as that jail
-             ;; lacks some features that they would like to proxy over (like
-             ;; a /sys mount).
-             (substitute* "src/core/tests/meson.build"
-               ((".*test-l3cfg.*") ""))
-             (substitute* "src/core/devices/tests/meson.build"
-               ((".*test-acd.*") "")
-               ((".*test-lldp.*") ""))
-             (substitute* "src/core/platform/tests/meson.build"
-               ((".*test-address-linux.*") "")
-               ((".*test-cleanup-linux.*") "")
-               ((".*test-link-linux.*") "")
-               ((".*test-lldp.*") "")
-               ((".*test-route-linux.*") "")
-               ((".*test-tc-linux.*") ""))))
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
-                                          "/xml/dtd/docbook")))
-               (substitute* (find-files "." ".*\\.(xsl|xml)")
-                 (("http://.*/docbookx\\.dtd")
-                  (string-append xmldoc "/docbookx.dtd"))))))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; For the missing /etc/machine-id.
-             (setenv "DBUS_FATAL_WARNINGS" "0")))
-         (add-before 'install 'no-polkit-magic
-           ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
-           (lambda _
-             (setenv "PKEXEC_UID" "something")))
-         (add-after 'install 'move-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (doc (assoc-ref outputs "doc")))
-               (mkdir-p (string-append doc "/share"))
-               (for-each (lambda (directory)
-                           (copy-recursively (string-append out directory)
-                                             (string-append doc directory))
-                           (delete-file-recursively
-                            (string-append out directory)))
-                         '("/share/doc" "/share/gtk-doc"))))))))
+     (list
+      #:configure-flags
+      #~(list
+         ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
+         ;; component.
+         (string-append "-Dc_link_args=-Wl,-rpath="
+                        #$output "/lib:"
+                        #$output "/lib/NetworkManager/" #$version)
+         "-Dsystemd_journal=false"
+         "-Dsession_tracking=elogind"
+         "-Dsuspend_resume=elogind"
+         "-Dsystemdsystemunitdir=no"
+         "-Dsession_tracking_consolekit=false"
+         "-Ddhcpcd=no"
+         "-Ddhcpcanon=no"
+         "-Dcrypto=gnutls"
+         "-Diwd=true"
+         "-Dlibaudit=yes"
+         "-Dqt=false"
+         "-Ddocs=true"
+         "--sysconfdir=/etc"
+         "--localstatedir=/var"
+         (string-append "-Dudev_dir="
+                        #$output "/lib/udev")
+         (string-append "-Ddbus_conf_dir="
+                        #$output "/etc/dbus-1/system.d")
+
+         (string-append "-Ddhclient=" (search-input-file %build-inputs
+                                                         "/sbin/dhclient")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-dlopen-call-to-libjansson.so
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/libnm-glib-aux/nm-json-aux.c"
+                (("(handle = dlopen\\()soname" _ head)
+                 (string-append
+                  head "\"" (search-input-file inputs
+                                               "lib/libjansson.so") "\"")))))
+          (add-before 'configure 'pre-configure
+            (lambda _
+              ;; These tests try to test aspects of network-manager's
+              ;; functionality within restricted containers, but they don't
+              ;; cope with being already in the Guix build jail as that jail
+              ;; lacks some features that they would like to proxy over (like
+              ;; a /sys mount).
+              (substitute* "src/core/tests/meson.build"
+                ((".*test-l3cfg.*") ""))
+              (substitute* "src/core/devices/tests/meson.build"
+                ((".*test-acd.*") "")
+                ((".*test-lldp.*") ""))
+              (substitute* "src/core/platform/tests/meson.build"
+                ((".*test-address-linux.*") "")
+                ((".*test-cleanup-linux.*") "")
+                ((".*test-link-linux.*") "")
+                ((".*test-lldp.*") "")
+                ((".*test-route-linux.*") "")
+                ((".*test-tc-linux.*") ""))))
+          (add-after 'unpack 'patch-docbook-xml
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* (find-files "." ".*\\.(xsl|xml)")
+                (("http://.*/docbookx\\.dtd")
+                 (search-input-file inputs "xml/dtd/docbook/docbookx.dtd")))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; For the missing /etc/machine-id.
+              (setenv "DBUS_FATAL_WARNINGS" "0")))
+          (add-before 'install 'no-polkit-magic
+            ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
+            (lambda _
+              (setenv "PKEXEC_UID" "something")))
+          (add-after 'install 'move-doc
+            (lambda _
+              (mkdir-p (string-append #$output:doc "/share"))
+              (for-each (lambda (directory)
+                          (copy-recursively (string-append #$output directory)
+                                            (string-append #$output:doc
+                                                           directory))
+                          (delete-file-recursively
+                           (string-append #$output directory)))
+                        '("/share/doc" "/share/gtk-doc")))))))
     (propagated-inputs
      (list glib))
     (native-inputs
-     `(("glib:bin" ,glib "bin")         ; for gdbus-codegen
-       ("gtk-doc" ,gtk-doc/stable)
-       ("gobject-introspection" ,gobject-introspection)
-       ("docbook-xml" ,docbook-xml)
-       ("docbook-xsl" ,docbook-xsl)
-       ("intltool" ,intltool)
-       ("libxslt" ,libxslt)
-       ("libxml2" ,libxml2)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)
-       ;; For testing.
-       ("python" ,python-wrapper)
-       ("python-dbus" ,python-dbus)
-       ("python-pygobject" ,python-pygobject)))
+     (list docbook-xml
+           docbook-xsl
+           gettext-minimal
+           `(,glib "bin")               ;for gdbus-codegen
+           gobject-introspection
+           gtk-doc/stable
+           libxml2
+           libxslt
+           perl
+           pkg-config
+           python-dbus
+           python-pygobject
+           python-wrapper
+           vala))
     (inputs
-     `(("curl" ,curl)
-       ("cyrus-sasl" ,cyrus-sasl)
-       ("dbus-glib" ,dbus-glib)
-       ("dnsmasq" ,dnsmasq)
-       ("eudev" ,eudev)
-       ("gnutls" ,gnutls)
-       ("iptables" ,iptables)
-       ("isc-dhcp" ,isc-dhcp)
-       ("iwd" ,iwd)                     ; wpa_supplicant alternative
-       ("jansson" ,jansson)
-       ("libaudit" ,audit)
-       ("libgcrypt" ,libgcrypt)
-       ("libgudev" ,libgudev)
-       ("libndp" ,libndp)
-       ("libnl" ,libnl)
-       ("libselinux" ,libselinux)
-       ("libsoup" ,libsoup)
-       ("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
-       ("modem-manager" ,modem-manager)
-       ("newt" ,newt)                   ;for the 'nmtui' console interface
-       ("openresolv" ,openresolv)       ; alternative resolv.conf manager
-       ("polkit" ,polkit)
-       ("ppp" ,ppp)
-       ("readline" ,readline)
-       ("util-linux" ,util-linux)
-       ("elogind" ,elogind)))
+     (list audit
+           curl
+           cyrus-sasl
+           dbus-glib
+           dnsmasq
+           elogind
+           eudev
+           gnutls
+           iptables
+           isc-dhcp
+           iwd                          ;wpa_supplicant alternative
+           jansson
+           libgcrypt
+           libgudev
+           libndp
+           libnl
+           libpsl
+           libselinux
+           mobile-broadband-provider-info
+           modem-manager
+           newt                         ;for the 'nmtui' console interface
+           openresolv                   ;alternative resolv.conf manager
+           polkit
+           ppp
+           readline
+           util-linux))
     (synopsis "Network connection manager")
     (home-page "https://wiki.gnome.org/Projects/NetworkManager")
     (description
@@ -7967,7 +8267,7 @@ services.")
 (define-public network-manager-openvpn
   (package
     (name "network-manager-openvpn")
-    (version "1.8.12")
+    (version "1.10.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -7976,35 +8276,41 @@ services.")
                     "/NetworkManager-openvpn-" version ".tar.xz"))
               (sha256
                (base32
-                "062kh4zj7jfbwy4zzcwpq2m457bzbpm3l18s0ysnw3mgia3siz8f"))))
+                "00fiyjbp42pdv5h2vdkzxd2rw32ikcinjgxrzdxak61kgw8d8iap"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'patch-path
-           (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
-             (let* ((ovpn (search-input-file inputs "/sbin/openvpn"))
-                    (modprobe (search-input-file inputs "/bin/modprobe"))
-                    (pretty-ovpn (string-append "\"" ovpn "\"")))
-               (for-each
-                (lambda (file)
-                  (substitute* file
-                    (("\"/usr/local/sbin/openvpn\"") pretty-ovpn)
-                    (("\"/usr/sbin/openvpn\"") pretty-ovpn)
-                    (("\"/sbin/openvpn\"") pretty-ovpn)
-                    (("/sbin/modprobe") modprobe)))
-                '("src/nm-openvpn-service.c" "properties/nm-openvpn-editor.c")))
-             #t)))))
+     (list
+      #:configure-flags #~(list "--enable-absolute-paths"
+                                "--localstatedir=/var"
+                                "--with-gtk4=yes")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'configure 'patch-path
+            (lambda* (#:key inputs #:allow-other-keys #:rest args)
+              (let* ((ovpn (search-input-file inputs "/sbin/openvpn"))
+                     (modprobe (search-input-file inputs "/bin/modprobe"))
+                     (pretty-ovpn (string-append "\"" ovpn "\"")))
+                (for-each
+                 (lambda (file)
+                   (substitute* file
+                     (("\"/usr/local/sbin/openvpn\"") pretty-ovpn)
+                     (("\"/usr/sbin/openvpn\"") pretty-ovpn)
+                     (("\"/sbin/openvpn\"") pretty-ovpn)
+                     (("/sbin/modprobe") modprobe)))
+                 '("src/nm-openvpn-service.c"
+                   "properties/nm-openvpn-editor.c"))))))))
     (native-inputs
-     (list pkg-config intltool))
+     (list intltool
+           `(,glib "bin")
+           pkg-config))
     (inputs
      (list gtk+
+           gtk
            kmod
-           openvpn
-           network-manager
            libnma
-           libsecret))
+           libsecret
+           network-manager
+           openvpn))
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "OpenVPN plug-in for NetworkManager")
     (description
@@ -8016,7 +8322,7 @@ to virtual private networks (VPNs) via OpenVPN.")
 (define-public network-manager-vpnc
   (package
     (name "network-manager-vpnc")
-    (version "1.2.6")
+    (version "1.2.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8025,14 +8331,12 @@ to virtual private networks (VPNs) via OpenVPN.")
                     "/NetworkManager-vpnc-" version ".tar.xz"))
               (sha256
                (base32
-                "1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy"))))
+                "1k7vkalslzmz8zvfy76k7z10b9krm7da917gwzyw7zf8afm32pnn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-absolute-paths"
                            "--localstatedir=/var"
-                           ;; libnm-glib has been removed from network-manager
-                           ;; 1de8383ad9fdfc8f552117e5d109bdfa7005634b
-                           "--with-libnm-glib=no")
+                           "--with-gtk4=yes")
        #:phases
        (modify-phases %standard-phases
          (add-after 'configure 'patch-path
@@ -8044,17 +8348,19 @@ to virtual private networks (VPNs) via OpenVPN.")
                     (("\"/usr/local/sbin/vpnc\"") pretty-ovpn)
                     (("\"/usr/sbin/vpnc\"") pretty-ovpn)
                     (("\"/sbin/vpnc\"") pretty-ovpn)
-                    (("/sbin/modprobe") modprobe)))
-             #t)))))
+                    (("/sbin/modprobe") modprobe))))))))
     (native-inputs
-     (list pkg-config intltool))
+     (list `(,glib "bin")
+           intltool
+           pkg-config))
     (inputs
      (list gtk+
+           gtk
            kmod
            vpnc
            network-manager
            libnma
-           libsecret))
+           libsecret))                 ;TODO: remove after it's the default
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "VPNC plug-in for NetworkManager")
     (description
@@ -8066,7 +8372,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
 (define-public network-manager-openconnect
   (package
     (name "network-manager-openconnect")
-    (version "1.2.6")
+    (version "1.2.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8075,10 +8381,12 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
                     "/NetworkManager-openconnect-" version ".tar.xz"))
               (sha256
                (base32
-                "0nlp290nkawc4wqm978n4vhzg3xdqi8kpjjx19l855vab41rh44m"))))
+                "1k6d6cv2c9v8gf0f2js6cklr3ijhaanbz0nhvlwy5n42bmwamvax"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
+     `(#:configure-flags '("--enable-absolute-paths"
+                           "--localstatedir=/var"
+                           "--with-gtk4=yes")
        #:phases
        (modify-phases %standard-phases
          (add-after 'configure 'patch-path
@@ -8089,12 +8397,15 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
                     (pretty-ovpn (string-append "\"" openconnect "\"")))
                (substitute* "src/nm-openconnect-service.c"
                  (("\"/usr(/local)?/s?bin/openconnect\"") pretty-ovpn)
-                 (("/sbin/modprobe") modprobe)))
-             #t)))))
+                 (("/sbin/modprobe") modprobe))))))))
     (native-inputs
-     (list intltool libnma pkg-config))
+     (list `(,glib "bin")
+           intltool
+           libnma
+           pkg-config))
     (inputs
      (list gcr
+           gtk
            gtk+
            kmod
            libsecret
@@ -8119,7 +8430,7 @@ Cisco's AnyConnect SSL VPN.")
 (define-public mobile-broadband-provider-info
   (package
     (name "mobile-broadband-provider-info")
-    (version "20190116")
+    (version "20220725")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8128,10 +8439,11 @@ Cisco's AnyConnect SSL VPN.")
                     "mobile-broadband-provider-info-" version ".tar.xz"))
               (sha256
                (base32
-                "16y5lc7pfdvai9c8xwb825zc3v46039gghbip13fqslf5gw11fic"))))
+                "1k9acdnl4mr6aqh11xbklv2gyww82jddaqmw4aqdzwl7q80swia8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
+    (native-inputs (list libxslt))
     (home-page "https://wiki.gnome.org/Projects/NetworkManager")
     (synopsis "Database of broadband connection configuration")
     (description "Database of broadband connection configuration.")
@@ -8184,7 +8496,7 @@ the available networks and allows users to easily switch between them.")
 (define-public libxml++
   (package
     (name "libxml++")
-    (version "3.2.0")
+    (version "5.0.2")
     (source
      (origin
        (method git-fetch)
@@ -8193,37 +8505,41 @@ the available networks and allows users to easily switch between them.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0wjz591rjlgbah7dcq8i0yn0zw9d62b7g6r0pppx81ic0cx8n8ga"))))
+        (base32 "13jlhz57yjxapplflm8aarczxv6ll3d336y1446mr5n4ylkcc1xz"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-documentation
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
-                                          "/xml/dtd/docbook"))
-                   (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
-                                          "/xml/xsl/docbook-xsl-"
-                                          ,(package-version docbook-xsl))))
-               (substitute* '("examples/dom_xpath/example.xml"
-                              "docs/manual/libxml++_without_code.xml")
-                 (("http://.*/docbookx\\.dtd")
-                  (string-append xmldoc "/docbookx.dtd")))
-               (setenv "SGML_CATALOG_FILES"
-                       (string-append xmldoc "/catalog.xml"))
-               (substitute* "docs/manual/docbook-customisation.xsl"
-                 (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
-                  (string-append xsldoc "/html/chunk.xsl")))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-documentation
+            (lambda* (#:key native-inputs inputs #:allow-other-keys)
+              (let* ((xsl-version #$(package-version docbook-xsl))
+                     (xsldoc (string-append "xml/xsl/docbook-xsl-"
+                                            xsl-version)))
+                (substitute* '("examples/dom_xpath/example.xml"
+                               "docs/manual/libxml++_without_code.xml")
+                  (("http://.*/docbookx\\.dtd")
+                   (search-input-file (or native-inputs inputs)
+                                      "xml/dtd/docbook/docbookx.dtd")))
+                (setenv "SGML_CATALOG_FILES"
+                        (search-input-file (or native-inputs inputs)
+                                           (string-append
+                                            xsldoc "/catalog.xml")))
+                (substitute* "docs/manual/docbook-customisation.xsl"
+                  (("http://docbook.sourceforge.net/release/xsl\
+/current/html/chunk.xsl")
+                   (search-input-file (or native-inputs inputs)
+                                      (string-append xsldoc
+                                                     "/html/chunk.xsl"))))))))))
     (propagated-inputs
-     ;; libxml++-3.0.pc refers to all these.
-     (list glibmm-2.64 libxml2))
+     (list libxml2))                    ;required by .pc file
     (native-inputs
      (list autoconf
            automake
            doxygen
            docbook-xml
            docbook-xsl
-           graphviz ; for dot
+           graphviz                     ;for dot
            libtool
            libxslt
            mm-common
@@ -8242,7 +8558,7 @@ library.")
   (package
     (inherit libxml++)
     (name "libxml++")
-    (version "2.40.1")
+    (version "2.42.2")
     (source
      (origin
        (method git-fetch)
@@ -8251,12 +8567,14 @@ library.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0gbfi4l88w828gmyc9br11l003ylyi4vigp5d1kfgsn0k4cig3y9"))))))
+        (base32 "05slsbhc25z7kwlc28ydl3dfyp7rgbmz1fxj9z6gcvpg3hkghj2m"))))
+    (propagated-inputs (modify-inputs (package-propagated-inputs libxml++)
+                         (append glibmm-2.64)))))
 
 (define-public gdm
   (package
     (name "gdm")
-    (version "40.1")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -8264,7 +8582,7 @@ library.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1zbks7bwbys1pn7sk0aq0dbn09adx51amb441z4z4j28cvma3f5b"))
+                "0m9qmm3vm81jmqlc30a1fb79hsr4l4lpiw0zjxww3gipd6bsqa53"))
               (patches
                (search-patches
                 "gdm-default-session.patch"
@@ -8274,185 +8592,186 @@ library.")
                 "gdm-pass-gdk-pixbuf-loader-env.patch"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags
-       ,#~(list
-           "-Dplymouth=disabled"
-           "-Dsystemd-journal=false"
-
-           ;; Using --with-initial-vt=7 allows GDM to run alongside TTY 1,
-           ;; instead of having to replace it (i.e., stopping the mingetty
-           ;; service for TTY 1 before starting GDM).
-           "-Dinitial-vt=7"
-
-           ;; Use elogind instead of systemd.
-           "-Dlogind-provider=elogind"
-           "-Dsystemdsystemunitdir=no"
-           "-Dsystemduserunitdir=no"
-
-           ;; Use '/etc/environment' for locale settings instead of the
-           ;; systemd-specific '/etc/locale.conf'.
-           "-Dlang-file=/etc/environment"
-
-           (string-append "-Dudev-dir=" #$output "/lib/udev")
-
-           "--localstatedir=/var"
-           (string-append "-Ddefault-path="
-                          (string-join '("/run/setuid-programs"
-                                         "/run/current-system/profile/bin"
-                                         "/run/current-system/profile/sbin")
-                                       ":"))
-           ;; Put GDM in bindir so that glib-or-gtk-build-system wraps the
-           ;; XDG_DATA_DIRS so that it finds its schemas.
-           "--sbindir" (string-append #$output "/bin"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before
-             'configure 'pre-configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; We don't have <systemd/sd-daemon.h>.
-             (substitute* '("common/gdm-log.c"
-                            "daemon/gdm-server.c"
-                            "daemon/gdm-session-worker.c"
-                            "daemon/gdm-session-worker-job.c")
-               (("#include <systemd/sd-daemon\\.h>") ""))
-             ;; Use elogind for sd-login.
-             (substitute* '("common/gdm-common.c"
-                            "daemon/gdm-local-display-factory.c"
-                            "daemon/gdm-manager.c"
-                            "libgdm/gdm-user-switching.c")
-               (("#include <systemd/sd-login\\.h>")
-                "#include <elogind/sd-login.h>"))
-             ;; Look for system-installed sessions in
-             ;; /run/current-system/profile/share.
-             (substitute* '("libgdm/gdm-sessions.c"
-                            "daemon/gdm-session.c"
-                            "daemon/gdm-display.c"
-                            "daemon/gdm-launch-environment.c")
-               (("DATADIR \"/x")
-                "\"/run/current-system/profile/share/x")
-               (("DATADIR \"/wayland")
-                "\"/run/current-system/profile/share/wayland")
-               (("DATADIR \"/gnome")
-                "\"/run/current-system/profile/share/gnome"))
-             (let ((propagate '("GDM_CUSTOM_CONF"
-                                "GDM_DBUS_DAEMON"
-                                "GDM_X_SERVER"
-                                "GDM_X_SESSION"
-                                ;; XXX: Remove this once GNOME Shell is
-                                ;; a dependency of GDM.
-                                "XDG_DATA_DIRS")))
-               (substitute* "daemon/gdm-session.c"
-                 (("set_up_session_environment \\(self\\);")
-                  (apply string-append
-                         "set_up_session_environment (self);\n"
-                         (map (lambda (name)
-                                (string-append
-                                 "gdm_session_set_environment_variable "
-                                 "(self, \"" name "\","
-                                 "g_getenv (\"" name "\"));\n"))
-                              propagate)))))
-             ;; Find the configuration file using an environment variable.
-             (substitute* '("common/gdm-settings.c")
-               (("GDM_CUSTOM_CONF")
-                (string-append "(g_getenv(\"GDM_CUSTOM_CONF\") != NULL"
-                               " ? g_getenv(\"GDM_CUSTOM_CONF\")"
-                               " : GDM_CUSTOM_CONF)")))
-             ;; Use service-supplied path to X.
-             (substitute* '("daemon/gdm-server.c")
-               (("\\(X_SERVER X_SERVER_ARG_FORMAT")
-                "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
-             (substitute* '("daemon/gdm-wayland-session.c"
-                            "daemon/gdm-x-session.c")
-               (("\"dbus-daemon\"")
-                "g_getenv (\"GDM_DBUS_DAEMON\")")
-               (("X_SERVER")
-                "g_getenv (\"GDM_X_SERVER\")")
-               (("GDMCONFDIR \"/Xsession\"")
-                "g_getenv (\"GDM_X_SESSION\")"))
-             ;; Use an absolute path for GNOME Session.
-             (substitute* "daemon/gdm-launch-environment.c"
-               (("\"gnome-session\"")
-                (string-append "\"" (assoc-ref inputs "gnome-session")
-                               "/bin/gnome-session\"")))
-             ;; Do not automatically select the placeholder session.
-             (substitute* "daemon/gdm-session.c"
-               (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]")
-                (string-append "!g_str_has_suffix (base_name, \".desktop\") || "
-                               "(g_strcmp0(search_dirs[i], \""
-                               (assoc-ref outputs "out") "/share/gdm/BuiltInSessions/"
-                               "\") == 0 && "
-                               "g_strcmp0(base_name, \"fail.desktop\") == 0)"))
-               (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];")
-                "{ self->fallback_session_name = g_strdup(\"fail\"); goto out; }"))))
-         (add-before 'install 'install-logo
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (guix-icons (assoc-ref inputs "guix-icons"))
-                    (icon
-                     (string-append guix-icons "/share/icons/hicolor/\
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      #~(list
+         "-Dplymouth=disabled"
+         "-Dsystemd-journal=false"
+
+         ;; Using --with-initial-vt=7 allows GDM to run alongside TTY 1,
+         ;; instead of having to replace it (i.e., stopping the mingetty
+         ;; service for TTY 1 before starting GDM).
+         "-Dinitial-vt=7"
+
+         ;; Use elogind instead of systemd.
+         "-Dlogind-provider=elogind"
+         "-Dsystemdsystemunitdir=no"
+         "-Dsystemduserunitdir=no"
+
+         ;; Use '/etc/environment' for locale settings instead of the
+         ;; systemd-specific '/etc/locale.conf'.
+         "-Dlang-file=/etc/environment"
+
+         (string-append "-Dudev-dir=" #$output "/lib/udev")
+
+         "--localstatedir=/var"
+         (string-append "-Ddefault-path="
+                        (string-join '("/run/setuid-programs"
+                                       "/run/current-system/profile/bin"
+                                       "/run/current-system/profile/sbin")
+                                     ":"))
+         ;; Put GDM in bindir so that glib-or-gtk-build-system wraps the
+         ;; XDG_DATA_DIRS so that it finds its schemas.
+         "--sbindir" (string-append #$output "/bin"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "daemon/gdm-session.c"
+                (("dbus-run-session")
+                 (search-input-file inputs "bin/dbus-run-session")))))
+          (add-before 'configure 'pre-configure
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; We don't have <systemd/sd-daemon.h>.
+              (substitute* '("common/gdm-log.c"
+                             "daemon/gdm-server.c"
+                             "daemon/gdm-session-worker.c"
+                             "daemon/gdm-session-worker-job.c")
+                (("#include <systemd/sd-daemon\\.h>") ""))
+              ;; Use elogind for sd-login.
+              (substitute* '("common/gdm-common.c"
+                             "daemon/gdm-local-display-factory.c"
+                             "daemon/gdm-manager.c"
+                             "libgdm/gdm-user-switching.c")
+                (("#include <systemd/sd-login\\.h>")
+                 "#include <elogind/sd-login.h>"))
+              ;; Look for system-installed sessions in
+              ;; /run/current-system/profile/share.
+              (substitute* '("libgdm/gdm-sessions.c"
+                             "daemon/gdm-session.c"
+                             "daemon/gdm-display.c"
+                             "daemon/gdm-launch-environment.c")
+                (("DATADIR \"/x")
+                 "\"/run/current-system/profile/share/x")
+                (("DATADIR \"/wayland")
+                 "\"/run/current-system/profile/share/wayland")
+                (("DATADIR \"/gnome")
+                 "\"/run/current-system/profile/share/gnome"))
+              (let ((propagate '("GDM_CUSTOM_CONF"
+                                 "GDM_DBUS_DAEMON"
+                                 "GDM_X_SERVER"
+                                 "GDM_X_SESSION"
+                                 ;; XXX: Remove this once GNOME Shell is
+                                 ;; a dependency of GDM.
+                                 "XDG_DATA_DIRS")))
+                (substitute* "daemon/gdm-session.c"
+                  (("set_up_session_environment \\(self\\);")
+                   (apply string-append
+                          "set_up_session_environment (self);\n"
+                          (map (lambda (name)
+                                 (string-append
+                                  "gdm_session_set_environment_variable "
+                                  "(self, \"" name "\","
+                                  "g_getenv (\"" name "\"));\n"))
+                               propagate)))))
+              ;; Find the configuration file using an environment variable.
+              (substitute* '("common/gdm-settings.c")
+                (("GDM_CUSTOM_CONF")
+                 (string-append "(g_getenv(\"GDM_CUSTOM_CONF\") != NULL"
+                                " ? g_getenv(\"GDM_CUSTOM_CONF\")"
+                                " : GDM_CUSTOM_CONF)")))
+              ;; Use service-supplied path to X.
+              (substitute* '("daemon/gdm-server.c")
+                (("\\(X_SERVER X_SERVER_ARG_FORMAT")
+                 "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
+              (substitute* '("daemon/gdm-wayland-session.c"
+                             "daemon/gdm-x-session.c")
+                (("\"dbus-daemon\"")
+                 "g_getenv (\"GDM_DBUS_DAEMON\")")
+                (("X_SERVER")
+                 "g_getenv (\"GDM_X_SERVER\")")
+                (("GDMCONFDIR \"/Xsession\"")
+                 "g_getenv (\"GDM_X_SESSION\")"))
+              ;; Use an absolute path for GNOME Session.
+              (substitute* "daemon/gdm-launch-environment.c"
+                (("\"gnome-session\"")
+                 (format #f "~s"
+                         (search-input-file inputs "bin/gnome-session"))))
+              ;; Do not automatically select the placeholder session.
+              (substitute* "daemon/gdm-session.c"
+                (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]")
+                 (string-append "!g_str_has_suffix (base_name, \".desktop\") || "
+                                "(g_strcmp0(search_dirs[i], \""
+                                #$output "/share/gdm/BuiltInSessions/"
+                                "\") == 0 && "
+                                "g_strcmp0(base_name, \"fail.desktop\") == 0)"))
+                (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];")
+                 "{ self->fallback_session_name = g_strdup(\"fail\"); goto out; }"))))
+          (add-before 'install 'install-logo
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((icon (search-input-file inputs "share/icons/hicolor/\
 scalable/apps/guix-white-icon.svg"))
-                    (schema
-                     (string-append out "/share/glib-2.0/schemas/\
+                    (schema (string-append #$output "/share/glib-2.0/schemas/\
 org.gnome.login-screen.gschema.override")))
-               (mkdir-p (dirname schema))
-               (with-output-to-file schema
-                 (lambda ()
-                   (format #t "\
+                (mkdir-p (dirname schema))
+                (with-output-to-file schema
+                  (lambda ()
+                    (format #t "\
 [org.gnome.login-screen]
 logo='~a'~%" icon))))))
-         ;; GDM requires that there be at least one desktop entry
-         ;; file.  This phase installs a hidden one that simply
-         ;; fails.  This enables users to use GDM with a
-         ;; '~/.xsession' script with no other desktop entry files.
-         ;; See <https://bugs.gnu.org/35068>.
-         (add-after 'install 'install-placeholder-desktop-entry
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (sessions (string-append out "/share/gdm/BuiltInSessions"))
-                    (fail (string-append sessions "/fail.desktop")))
-               (mkdir-p sessions)
-               (with-output-to-file fail
-                 (lambda ()
-                   (for-each
-                    display
-                    '("[Desktop Entry]\n"
-                      "Encoding=UTF-8\n"
-                      "Type=Application\n"
-                      "Name=Fail\n"
-                      "Comment=This session fails immediately.\n"
-                      "NoDisplay=true\n"
-                      "Exec=false\n")))))))
-         ;; GDM needs GNOME Session to run these applications.  We link
-         ;; their autostart files in `share/gdm/greeter/autostart'
-         ;; because GDM explicitly tells GNOME Session to look there.
-         ;;
-         ;; XXX: GNOME Shell should be linked here too, but currently
-         ;; GNOME Shell depends on GDM.
-         (add-after 'install 'link-autostart-files
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (autostart (string-append out "/share/gdm/"
+          ;; GDM requires that there be at least one desktop entry
+          ;; file.  This phase installs a hidden one that simply
+          ;; fails.  This enables users to use GDM with a
+          ;; '~/.xsession' script with no other desktop entry files.
+          ;; See <https://bugs.gnu.org/35068>.
+          (add-after 'install 'install-placeholder-desktop-entry
+            (lambda _
+              (let* ((sessions (string-append #$output
+                                              "/share/gdm/BuiltInSessions"))
+                     (fail (string-append sessions "/fail.desktop")))
+                (mkdir-p sessions)
+                (with-output-to-file fail
+                  (lambda ()
+                    (for-each
+                     display
+                     '("[Desktop Entry]\n"
+                       "Encoding=UTF-8\n"
+                       "Type=Application\n"
+                       "Name=Fail\n"
+                       "Comment=This session fails immediately.\n"
+                       "NoDisplay=true\n"
+                       "Exec=false\n")))))))
+          ;; GDM needs GNOME Session to run these applications.  We link
+          ;; their autostart files in `share/gdm/greeter/autostart'
+          ;; because GDM explicitly tells GNOME Session to look there.
+          ;;
+          ;; XXX: GNOME Shell should be linked here too, but currently
+          ;; GNOME Shell depends on GDM.
+          (add-after 'install 'link-autostart-files
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((autostart (string-append #$output "/share/gdm/"
                                               "greeter/autostart"))
-                    (settings (assoc-ref inputs "gnome-settings-daemon")))
-               (mkdir-p autostart)
-               (with-directory-excursion autostart
-                 (for-each (lambda (desktop)
-                             (symlink desktop (basename desktop)))
-                           (find-files
-                            (string-append settings "/etc/xdg"))))))))))
-    (native-inputs
-     `(("dconf" ,dconf)
-       ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
-       ("gobject-introspection" ,gobject-introspection)
-       ("guix-icons" ,guix-icons)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)
-       ("xmllint" ,libxml2)))
+                    (settings #$(this-package-input "gnome-settings-daemon")))
+                (mkdir-p autostart)
+                (with-directory-excursion autostart
+                  (for-each (lambda (desktop)
+                              (symlink desktop (basename desktop)))
+                            (find-files
+                             (string-append settings "/etc/xdg"))))))))))
+    (native-inputs
+     (list `(,glib "bin")               ;for glib-compile-schemas, etc.
+           dconf
+           gobject-introspection
+           guix-icons
+           intltool
+           itstool
+           libxml2
+           pkg-config))
     (inputs
      (list accountsservice
-           check ;for testing
+           check                        ;for testing
+           dbus
            elogind
            eudev
            gnome-session
@@ -8460,6 +8779,7 @@ logo='~a'~%" icon))))))
            gtk+
            iso-codes
            libcanberra
+           libgudev
            linux-pam))
     (synopsis "Display manager for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GDM/")
@@ -8495,32 +8815,35 @@ usage and information about running processes.")
 (define-public gnome-bluetooth
   (package
     (name "gnome-bluetooth")
-    (version "3.34.5")
+    (version "42.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-bluetooth/"
-                                  (version-major+minor version) "/"
+                                  (version-major version) "/"
                                   "gnome-bluetooth-" version ".tar.xz"))
               (sha256
                (base32
-                "1a9ynlwwkb3wpg293ym517vmrkk63y809mmcv9a21k5yr199x53c"))))
+                "1p5wq3rh9p7fhka57qcds6lvphd26yyc18ilncx95jbcvcfcyvqx"))))
     (build-system meson-build-system)
-    (arguments
-     (list #:meson meson-0.60))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
-       ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
-       ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("python-dbus" ,python-dbus)
-       ("xmllint" ,libxml2)))
+     (list gettext-minimal
+           gobject-introspection
+           `(,glib "bin")               ;for gdbus-codegen, etc.
+           libxml2
+           pkg-config
+           python
+           python-dbus))
     (propagated-inputs
-     ;; gnome-bluetooth-1.0.pc refers to all these.
-     (list glib gtk+))
+     ;; These are all required by the gnome-bluetooth .pc file.
+     (list glib
+           gtk
+           libadwaita))
     (inputs
-     (list eudev libcanberra libnotify python-dbus))
+     (list eudev
+           gsound
+           libnotify
+           python-dbus
+           upower))
     (synopsis "GNOME Bluetooth subsystem")
     (home-page "https://wiki.gnome.org/Projects/GnomeBluetooth")
     (description
@@ -8531,7 +8854,7 @@ devices using the GNOME desktop.")
 (define-public gnome-control-center
   (package
     (name "gnome-control-center")
-    (version "41.2")
+    (version "42.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -8539,86 +8862,68 @@ devices using the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0j72ixhli621psbrma86qxy0spv6gpjx6k9hg2jih97c6dmzqwc2"))
-              (patches (search-patches
-                        "gnome-control-center-libexecdir.patch"))))
+                "0zhw6hcrrcpq1zjkyzr5ipznxnzd2aczrqd7n2y7xbz21mjy62nf"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags
-       (list "-Dcheese=false"
-             (string-append "-Dgnome_session_libexecdir="
-                            (assoc-ref %build-inputs "gnome-session")
-                            "/libexec"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libc   (assoc-ref inputs "libc"))
-                   (tzdata (assoc-ref inputs "tzdata"))
-                   (libgnomekbd (assoc-ref inputs "libgnomekbd"))
-                   (nm-applet   (assoc-ref inputs "network-manager-applet"))
-                   (gnome-desktop (assoc-ref inputs "gnome-desktop")))
-               (substitute* "panels/datetime/tz.h"
-                 (("/usr/share/zoneinfo/zone.tab")
-                  (string-append tzdata "/share/zoneinfo/zone.tab")))
-               (substitute* "tests/datetime/test-endianess.c"
-                 (("/usr/share/locale")
-                  (string-append libc "/share/locale")))
-               (substitute* "panels/region/cc-region-panel.c"
-                 (("\"gkbd-keyboard-display")
-                  (string-append "\"" libgnomekbd
-                                 "/bin/gkbd-keyboard-display")))
-               (substitute* '("panels/network/net-device-bluetooth.c"
-                              "panels/network/net-device-mobile.c"
-                              "panels/network/connection-editor/net-connection-editor.c")
-                 (("\"nm-connection-editor")
-                  (string-append "\"" nm-applet
-                                 "/bin/nm-connection-editor")))
-               (substitute* '("panels/user-accounts/run-passwd.c")
-                 (("/usr/bin/passwd")
-                  "/run/setuid-programs/passwd"))
-               (substitute* "panels/info-overview/cc-info-overview-panel.c"
-                 (("DATADIR \"/gnome/gnome-version.xml\"")
-                  (string-append "\"" gnome-desktop
-                                 "/share/gnome/gnome-version.xml\""))))))
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "build-aux/meson/meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))))
-         (add-before 'install 'no-polkit-magic
-           ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
-           (lambda _
-             (setenv "PKEXEC_UID" "something"))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "panels/datetime/tz.h"
+                (("/usr/share/zoneinfo/zone.tab")
+                 (search-input-file inputs "share/zoneinfo/zone.tab")))
+              (substitute* "tests/datetime/test-endianess.c"
+                (("/usr/share/locale")
+                 (search-input-directory inputs "share/locale")))
+              (substitute* "panels/region/cc-region-panel.c"
+                (("\"gkbd-keyboard-display")
+                 (string-append "\"" (search-input-file
+                                      inputs "bin/gkbd-keyboard-display"))))
+              (substitute* '("panels/network/net-device-bluetooth.c"
+                             "panels/network/net-device-mobile.c"
+                             "panels/network/connection-editor/net-connection-editor.c")
+                (("\"nm-connection-editor")
+                 (string-append "\"" (search-input-file
+                                      inputs "bin/nm-connection-editor"))))
+              (substitute* "panels/user-accounts/run-passwd.c"
+                (("/usr/bin/passwd")
+                 "/run/setuid-programs/passwd"))
+              (substitute* "panels/info-overview/cc-info-overview-panel.c"
+                (("DATADIR \"/gnome/gnome-version.xml\"")
+                 (format #f "~s" (search-input-file
+                                  inputs "share/gnome/gnome-version.xml"))))))
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "build-aux/meson/meson_post_install.py"
+                (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     (list `(,glib "bin")               ;for glib-mkenums, etc.
-           intltool
+     (list docbook-xsl
+           gettext-minimal
+           `(,glib "bin")               ;for glib-mkenums, etc.
+           libxslt
            pkg-config
            python
-           libxslt
-           ;; For tests
-           hicolor-icon-theme
            python-dbusmock
            xorg-server-for-tests))
     (inputs
      (list accountsservice
-           clutter-gtk
            colord-gtk
            cups
            dconf
-           docbook-xsl
            gcr
            gnome-bluetooth
            gnome-desktop
            gnome-online-accounts
-           `(,gnome-online-accounts "lib")
            gnome-session
            gnome-settings-daemon
+           gnutls
            grilo
            gsound
            ibus
-           libcanberra
+           libadwaita
            libgnomekbd
            libgudev
            libgtop
@@ -8626,7 +8931,6 @@ devices using the GNOME desktop.")
            libpwquality
            librsvg                      ;for loading SVG files
            libsecret
-           libsoup-minimal-2
            libxml2
            libwacom
            mesa
@@ -8674,7 +8978,8 @@ properties, screen resolution, and other GNOME parameters.")
         #~(list "-Dsystemd=false"
                 ;; Otherwise, the RUNPATH will lack the final path component.
                 (string-append "-Dc_link_args=-Wl,-rpath="
-                               #$output "/lib/gnome-shell"))
+                               #$output "/lib/gnome-shell")
+                "-Dsoup2=false")
         #:modules '((guix build meson-build-system)
                     (guix build utils)
                     (ice-9 match)
@@ -8828,7 +9133,7 @@ like switching to windows and launching applications.")
 (define-public gtk-vnc
   (package
     (name "gtk-vnc")
-    (version "1.2.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
@@ -8837,11 +9142,10 @@ like switching to windows and launching applications.")
                        (version-major+minor version) "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "0jmr6igyzcj2wmx5v5ywaazvdz3hx6a6rys26yb4l4s71l281bvs"))))
+        (base32 "1kpih1gnp3hmsx4l6pig10zn7gd3s5fwm0k6icax0n859sn669si"))))
     (build-system meson-build-system)
     (arguments
-     `(#:meson ,meson-0.60
-       #:glib-or-gtk? #t))   ; To wrap binaries and/or compile schemas
+     `(#:glib-or-gtk? #t))   ; To wrap binaries and/or compile schemas
     (native-inputs
      (append
       ;; GJS depends on Rust, which is x86_64-only so far, so remove the GJS
@@ -8858,7 +9162,8 @@ like switching to windows and launching applications.")
              python-wrapper
              vala)))
     (inputs
-     (list cairo (librsvg-for-system)))
+     (list cairo
+           (librsvg-for-system)))
     (propagated-inputs
      ;; These are all in Requires or Requires.private of the .pc files.
      (list cyrus-sasl
@@ -8928,6 +9233,11 @@ easy, safe, and automatic.")
              "-Dsystemd_user_services=false")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "utils/trackertestutils/__main__.py"
+               (("/bin/bash")
+                (search-input-file inputs "bin/bash")))))
          (add-before 'configure 'set-shell
            (lambda _
              (setenv "SHELL" (which "bash"))))
@@ -8948,6 +9258,7 @@ easy, safe, and automatic.")
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")
+           glibc-utf8-locales
            gobject-introspection
            docbook-xsl
            docbook-xml
@@ -8962,7 +9273,8 @@ easy, safe, and automatic.")
            python
            vala))
     (inputs
-     (list dbus
+     (list bash-minimal
+           dbus
            libsoup))
     (propagated-inputs
      ;; These are in Requires or Requires.private of tracker-sparql-3.0.pc.
@@ -9119,7 +9431,7 @@ shared object databases, search tools and indexing.")
 (define-public nautilus
   (package
     (name "nautilus")
-    (version "41.1")
+    (version "42.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9127,28 +9439,32 @@ shared object databases, search tools and indexing.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0bsqh241m43x3qb3z0mjakjic610ncl95zhjdgls649phnc30qry"))
-              (patches
-               ;; This patch is already upstream and can be removed next
-               ;; release.
-               (search-patches "nautilus-add-libportal-gtk3.patch"))))
+                "1cncyiyh79w1id6a6s2f0rxmgwl65lp4ml4afa0z35jrnwp2s8cr"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'make-extensible
-           (lambda _
-             (substitute* "src/nautilus-module.c"
-               (("static gboolean initialized = FALSE;" all)
-                (string-append all "
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-tracker-tests
+            ;; The tracker test hangs in the build container (see:
+            ;; https://gitlab.gnome.org/GNOME/nautilus/-/issues/2486).
+            (lambda _
+              (substitute* "test/automated/displayless/meson.build"
+                (("^foreach t: tracker_tests" all)
+                 (string-append "tracker_tests = []\n" all)))))
+          (add-after 'unpack 'make-extensible
+            (lambda _
+              (substitute* "src/nautilus-module.c"
+                (("static gboolean initialized = FALSE;" all)
+                 (string-append all "
 const char *extension_path;
 char **extension_dirs, **d;
 ")
-                )
-               (("load_module_dir \\(NAUTILUS_EXTENSIONDIR\\);" all)
-                (string-append all
-                               "
+                 )
+                (("load_module_dir \\(NAUTILUS_EXTENSIONDIR\\);" all)
+                 (string-append all
+                                "
 extension_path = g_getenv (\"NAUTILUS_EXTENSION_PATH\");
 if (extension_path)
 {
@@ -9158,21 +9474,28 @@ if (extension_path)
     g_strfreev(extension_dirs);
 }
 ")))))
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "build-aux/meson/postinstall.py"
-               (("gtk-update-icon-cache") "true")))))
-       ;; XXX: FAIL: check-nautilus
-       ;;   Settings schema 'org.gnome.nautilus.preferences' is not installed
-       #:tests? #f))
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "build-aux/meson/postinstall.py"
+                (("gtk-update-icon-cache") "true"))))
+          (delete 'check)
+          (add-after 'install 'check
+            (assoc-ref %standard-phases 'check))
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" "/tmp")    ;some tests require a writable HOME
+              (setenv "XDG_DATA_DIRS"
+                      (string-append (getenv "XDG_DATA_DIRS")
+                                     ":" #$output "/share")))))))
     (native-inputs
-     (list desktop-file-utils     ; for update-desktop-database
-           `(,glib "bin")         ; for glib-mkenums, etc.
+     (list desktop-file-utils           ;for update-desktop-database
+           `(,glib "bin")               ;for glib-mkenums, etc.
+           gettext-minimal
            gobject-introspection
-           intltool
            pkg-config
-           python))
+           python
+           python-pygobject))
     (inputs
      (list dconf
            gexiv2
@@ -9186,7 +9509,6 @@ if (extension_path)
            libportal
            libseccomp
            libselinux
-           libsoup-minimal-2 ; to satisfy tracker dependencies
            tracker
            tracker-miners
            ;; XXX: gtk+ is required by libnautilus-extension.pc
@@ -9212,7 +9534,7 @@ files.")
 (define-public baobab
   (package
     (name "baobab")
-    (version "40.0")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9221,22 +9543,24 @@ files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "19yii3bdgivxrcka1c4g6dpbmql5nyawwhzlsph7z6bs68nambm6"))))
+                "1p2hg8qxbvdfax9z4qjhdsxia93zrsdq58krx8zjnn5ipbkan6jb"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
-       ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache
-       ("itstool" ,itstool)
-       ("xmllint" ,libxml2)
-       ("glib" ,glib "bin")
-       ("vala" ,vala)))
+     (list desktop-file-utils           ;for update-desktop-database
+           gettext-minimal
+           `(,glib "bin")
+           `(,gtk+ "bin")               ;for gtk-update-icon-cache
+           itstool
+           libxml2
+           pkg-config
+           python
+           vala))
     (inputs
-     (list gtk+ libhandy))
+     (list gtk
+           libadwaita
+           libhandy))
     (synopsis "Disk usage analyzer for GNOME")
     (description
      "Baobab (Disk Usage Analyzer) is a graphical application to analyse disk
@@ -9276,7 +9600,7 @@ can add your own files to the collection.")
 (define-public gnome-screenshot
   (package
     (name "gnome-screenshot")
-    (version "40.0")
+    (version "41.0")
     (source
      (origin
        (method url-fetch)
@@ -9285,12 +9609,11 @@ can add your own files to the collection.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1qm544ymwibk31s30k47vnn79xg30m18r7l4di0c57g375dak31n"))
-       (patches
-        (search-patches "gnome-screenshot-meson-0.60.patch"))))
+         "15wmikwk62cdi93gas77nqh4fbhlrxrncyfmcd1gfa34jbn7vnsa"))))
     (build-system meson-build-system)
     (arguments
-     '(#:phases
+     '(#:glib-or-gtk? #t
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
            ;; Don't create 'icon-theme.cache'.
@@ -9298,14 +9621,17 @@ can add your own files to the collection.")
              (substitute* "build-aux/postinstall.py"
                (("gtk-update-icon-cache") "true")))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
-       ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
-       ("intltool" ,intltool)
-       ("appstream-glib" ,appstream-glib)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)))
+     (list appstream-glib
+           desktop-file-utils           ; for update-desktop-database
+           gettext-minimal
+           `(,glib "bin")               ; for glib-compile-schemas, etc.
+           pkg-config
+           python))
     (inputs
-     (list gtk+ libcanberra libhandy libx11 libxext))
+     (list gtk+
+           libhandy
+           libx11
+           libxext))
     (home-page "https://gitlab.gnome.org/GNOME/gnome-screenshot")
     (synopsis "Take pictures of your screen")
     (description
@@ -9379,91 +9705,100 @@ associations for GNOME.")
 
 (define-public libgovirt
   (package
-   (name "libgovirt")
-   (version "0.3.8")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major+minor version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "1y0x1wyakj3ya33hgj0w1jkbcn50q21gmn2zyalxysqp55i1ij8x"))))
-   (build-system glib-or-gtk-build-system)
-   (native-inputs
-    (list gettext-minimal
-          `(,glib "bin")
-          gobject-introspection
-          gsettings-desktop-schemas
-          `(,gtk+ "bin")
-          pkg-config))
-   (inputs
-    (list glib-networking ; GIO plugin--for the tests
-          rest))
-   (synopsis "GoVirt Library")
-   (description "GoVirt is a GObject wrapper for the oVirt REST API.")
-   (home-page "https://gitlab.gnome.org/GNOME/libgovirt")
-   (license license:gpl2+)))
+    (name "libgovirt")
+    (version "0.3.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0z118di7cg654f5zb8xn5w60ghgqngsc1p7izr1pw01dkxbw6bxi"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:glib-or-gtk? #t
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'set-home
+                          (lambda _
+                            ;; The tests require a writable HOME.
+                            (setenv "HOME" "/tmp"))))))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           glib-networking              ; GIO plugin--for the tests
+           gobject-introspection
+           gsettings-desktop-schemas
+           pkg-config))
+    (inputs
+     (list rest-next))
+    (synopsis "GoVirt Library")
+    (description "GoVirt is a GObject wrapper for the oVirt REST API.")
+    (home-page "https://gitlab.gnome.org/GNOME/libgovirt")
+    (license license:gpl2+)))
 
 (define-public gnome-weather
   (package
-   (name "gnome-weather")
-   (version "40.1")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "0k9wnyinvx6433r07kvjyahgqc605g7gbpf3d0h6vi4p8x61849x"))))
-   (build-system meson-build-system)
-   (native-inputs
-    `(("gettext" ,gettext-minimal)
-      ("glib:bin" ,glib "bin")
-      ("gobject-introspection" ,gobject-introspection)
-      ("gtk+:bin" ,gtk+ "bin")
-      ("pkg-config" ,pkg-config)))
-   (inputs
-    (list appstream-glib
-          geoclue
-          gjs
-          gnome-desktop
-          libgweather
-          libhandy))
-   (arguments
-    `(#:glib-or-gtk? #t
-      #:meson ,meson-0.60
+    (name "gnome-weather")
+    (version "42.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0rdl0ywdk8jlq819wr1sbdzdvsasz11pp30fylzvprakv28yd7jp"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
       #:phases
-      ,#~(modify-phases %standard-phases
-           (add-after 'unpack 'fix-service-file
-             (lambda _
-               (substitute* "data/org.gnome.Weather.service.in"
-                 (("Exec=[[:graph:]]+")
-                  (string-append "Exec=" #$output
-                                 "/bin/gnome-weather")))))
-           (add-after 'install 'fix-desktop-file
-             ;; FIXME: "gapplication launch org.gnome.Weather" fails for some
-             ;; reason.  See https://issues.guix.gnu.org/issue/39324.
-             (lambda _
-               (let ((applications
-                      (string-append #$output "/share/applications")))
-                 (substitute* (string-append applications
-                                             "/org.gnome.Weather.desktop")
-                   (("Exec=.*") "Exec=gnome-weather\n")))))
-           (add-after 'install 'wrap
-             (lambda _
-               (let ((gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-                 ;; GNOME Weather needs the typelib files of GTK+, Pango etc
-                 ;; at runtime.
-                 (wrap-program (string-append #$output "/bin/gnome-weather")
-                   `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
-   (synopsis "Weather monitoring for GNOME desktop")
-   (description "GNOME Weather is a small application that allows you to
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-service-file
+            (lambda _
+              (substitute* "data/org.gnome.Weather.service.in"
+                (("Exec=[[:graph:]]+")
+                 (string-append "Exec=" #$output
+                                "/bin/gnome-weather")))))
+          (add-after 'unpack 'disable-gtk-update-icon-cache
+            (lambda _
+              (setenv "DESTDIR" "/")))
+          (add-after 'install 'fix-desktop-file
+            ;; FIXME: "gapplication launch org.gnome.Weather" fails for some
+            ;; reason.  See https://issues.guix.gnu.org/issue/39324.
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* (search-input-file
+                            outputs
+                            "share/applications/org.gnome.Weather.desktop")
+                (("Exec=.*") "Exec=gnome-weather\n"))))
+          (add-after 'install 'wrap
+            (lambda* (#:key outputs #:allow-other-keys)
+              ;; GNOME Weather needs the typelib files of GTK+, Pango etc at
+              ;; runtime.
+              (wrap-program (search-input-file outputs "bin/gnome-weather")
+                `("GI_TYPELIB_PATH" ":" prefix
+                  (,(getenv "GI_TYPELIB_PATH")))))))))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config))
+    (inputs
+     (list appstream-glib
+           bash-minimal
+           geoclue
+           gjs
+           gsettings-desktop-schemas-next
+           gtk
+           libadwaita
+           libgweather4))
+    (synopsis "Weather monitoring for GNOME desktop")
+    (description "GNOME Weather is a small application that allows you to
 monitor the current weather conditions for your city, or anywhere in the
 world.")
-   (home-page "https://wiki.gnome.org/Apps/Weather")
-   (license license:gpl2+)))
+    (home-page "https://wiki.gnome.org/Apps/Weather")
+    (license license:gpl2+)))
 
 (define-public gnome
   (package
@@ -9726,7 +10061,7 @@ library.")
     (native-inputs
      (list gobject-introspection intltool pkg-config))
     (inputs
-     (list `(,gnome-online-accounts "lib") json-glib rest))
+     (list gnome-online-accounts json-glib rest))
     (home-page "https://wiki.gnome.org/Projects/Zapojit")
     (synopsis "Library for accessing SkyDrive and Hotmail")
     (description
@@ -9737,7 +10072,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
 (define-public gnome-clocks
   (package
     (name "gnome-clocks")
-    (version "40.0")
+    (version "42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9745,7 +10080,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "02d3jg46sn8d9gd4dsaly22gg5vkbz2gpq4pmwpvncb4rsqk7sn2"))))
+                "1q3gvniwd4dkr1ghqpp05zr7qswdhaxqrn8j6bm3qbh39bdihw8f"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -9754,24 +10089,24 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
          (add-after 'unpack 'skip-gtk-update-icon-cache
            ;; Don't create 'icon-theme.cache'.
            (lambda _
-             (substitute* "build-aux/post-install.py"
-               (("gtk-update-icon-cache") "true")))))))
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false")))))))
     (native-inputs
-     `(("vala" ,vala)
-       ("pkg-config" ,pkg-config)
-       ("glib" ,glib "bin")             ; for glib-compile-resources
-       ("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("itstool" ,itstool)))
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")               ; for glib-compile-resources
+           itstool
+           pkg-config))
     (inputs
-     (list glib
-           gtk+
+     (list geoclue
+           geocode-glib-with-libsoup2
+           glib
+           gnome-desktop
            gsound
-           geoclue
-           geocode-glib
-           libgweather
-           libhandy
-           gnome-desktop))
+           gtk
+           libadwaita
+           libgweather4-with-libsoup2))
     (home-page "https://wiki.gnome.org/Apps/Clocks")
     (synopsis "GNOME's clock application")
     (description
@@ -9782,7 +10117,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
 (define-public gnome-calendar
   (package
     (name "gnome-calendar")
-    (version "40.2")
+    (version "42.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9790,36 +10125,33 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0czasxnmbw2zm21lmxam8qixacagciq3f815s809hn0f9byh2dwy"))))
+                "1ggvnl2jnc24nzpkjvsk57vpckjzb14a7mmnk6jjm84nmqxccz5f"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       ;; gnome-calendar has to be installed before the tests can be run
-       ;; https://bugzilla.gnome.org/show_bug.cgi?id=788224
-       #:tests? #f
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
            ;; Don't create 'icon-theme.cache'.
            (lambda _
-             (substitute* "build-aux/meson/meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))
-             #t)))))
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false")))))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib-bin" ,glib "bin")         ; For glib-compile-schemas
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           `(,glib "bin")               ; For glib-compile-schemas
+           pkg-config))
     (inputs
-     `(("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("libdazzle" ,libdazzle)
-       ("libedataserverui" ,evolution-data-server)
-       ("libgweather" ,libgweather)
-       ("libhandy" ,libhandy)
-       ("geoclue" ,geoclue)))
-    (propagated-inputs
-     (list evolution-data-server))
+     ;; Note: not propagating evolution-data-server-3.44 to keep profiles
+     ;; clean from libsoup2.
+     (list evolution-data-server-3.44
+           geoclue
+           geocode-glib-with-libsoup2
+           gnome-online-accounts-3.44
+           gsettings-desktop-schemas
+           libadwaita
+           libdazzle
+           libgweather4-with-libsoup2))
     (home-page "https://wiki.gnome.org/Apps/Calendar")
     (synopsis "GNOME's calendar application")
     (description
@@ -9876,7 +10208,7 @@ desktop.  It supports multiple calendars, month, week and year view.")
            libportal
            python-pygobject
            evolution-data-server
-           `(,gnome-online-accounts "lib")
+           gnome-online-accounts
            gsettings-desktop-schemas))
     (home-page "https://wiki.gnome.org/Apps/Todo")
     (synopsis "GNOME's ToDo Application")
@@ -9899,7 +10231,6 @@ to perfectly fit the GNOME desktop.")
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
-       #:meson ,meson-0.59
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
@@ -9915,7 +10246,8 @@ to perfectly fit the GNOME desktop.")
            pkg-config
            libxml2))
     (inputs
-     (list gsettings-desktop-schemas gtk+))
+     (list gsettings-desktop-schemas
+           gtk+))
     (home-page "https://wiki.gnome.org/Apps/Dictionary")
     (synopsis "Look up words in dictionary sources")
     (description
@@ -9926,7 +10258,7 @@ existing databases over the internet.")
 (define-public gnome-tweaks
   (package
     (name "gnome-tweaks")
-    (version "40.0")
+    (version "40.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-tweaks/"
@@ -9936,41 +10268,40 @@ existing databases over the internet.")
                (list (search-patch "gnome-tweaks-search-paths.patch")))
               (sha256
                (base32
-                "0sn3xsjhnini0f2dyi1ymrr3fb8mi7w5j5lsyw11rc5h67h3ypzr"))))
+                "1z13xy804hld9q8k0vq5y4j5jk7m0ayqzkli8jxpymwrlcrkpzfg"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags '("-Dlocalstatedir=/tmp"
-                           "-Dsysconfdir=/tmp")
-       #:imported-modules ((guix build python-build-system)
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags #~(list "-Dlocalstatedir=/tmp"
+                                "-Dsysconfdir=/tmp")
+      #:imported-modules `((guix build python-build-system)
                            ,@%meson-build-system-modules)
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           ;; Don't create 'icon-theme.cache'.
-           (lambda _
-             (substitute* "meson-postinstall.py"
-               (("gtk-update-icon-cache") "true"))))
-         (add-after 'install 'wrap
-           (@@ (guix build python-build-system) wrap))
-         (add-after 'wrap 'wrap-gi-typelib-and-python
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out               (assoc-ref outputs "out"))
-                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-               (let ((python-path
-                      (string-append out "/lib/python"
-                                     ,(version-major+minor
-                                       (package-version python))
-                                     "/site-packages")))
-                 (wrap-program (string-append out "/bin/gnome-tweaks")
-                   `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
-                   `("GUIX_PYTHONPATH" ":" prefix (,python-path))))))))))
-    (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-gtk-update-icon-cache
+            ;; Don't create 'icon-theme.cache'.
+            (lambda _
+              (substitute* "meson-postinstall.py"
+                (("gtk-update-icon-cache") "true"))))
+          (add-after 'install 'wrap
+            (assoc-ref python:%standard-phases 'wrap))
+          (add-after 'wrap 'wrap-gi-typelib-and-python
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/gnome-tweaks")
+                `("GI_TYPELIB_PATH" ":" prefix
+                  (,(getenv "GI_TYPELIB_PATH")))
+                `("GUIX_PYTHONPATH" ":" prefix
+                  (,(python:site-packages inputs outputs)))))))))
+    (native-inputs
+     (list `(,glib "bin")               ; for glib-compile-resources, etc.
+           gettext-minimal
+           pkg-config))
     (inputs
-     (list bash-minimal ; to execute the wrapper program
+     (list bash-minimal                 ; to execute the wrapper program
            gnome-desktop
            gtk+
            gobject-introspection
@@ -9993,7 +10324,7 @@ GNOME Shell appearance and extension, etc.")
 (define-public gnome-shell-extensions
   (package
     (name "gnome-shell-extensions")
-    (version "41.0")
+    (version "42.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10001,14 +10332,14 @@ GNOME Shell appearance and extension, etc.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0s7wcsa0ysdgh5zpxpa95id5rz4ajb2r1561v5szjf4b8k0slkyq"))))
+                "1z3k4bvq8f2s0q9q7i093w4hrz289lci7xlib20aqa4z5sivxhhf"))))
     (build-system meson-build-system)
     (arguments
      '(#:configure-flags '("-Dextension_set=all")))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+     (list `(,glib "bin")
+           gettext-minimal
+           pkg-config))
     (propagated-inputs
      (list glib))
     (synopsis "Extensions for GNOME Shell")
@@ -10064,10 +10395,18 @@ compiled.")
     (home-page "https://wiki.gnome.org/Projects/Folks")
     (license license:lgpl2.1+)))
 
+(define-public folks-with-libsoup2
+  (package
+    (inherit folks)
+    (name "folks-with-libsoup2")
+    (inputs
+     (modify-inputs (package-inputs folks)
+       (replace "evolution-data-server" evolution-data-server-3.44)))))
+
 (define-public gfbgraph
   (package
     (name "gfbgraph")
-    (version "0.2.4")
+    (version "0.2.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -10076,26 +10415,18 @@ compiled.")
                     "gfbgraph-" version ".tar.xz"))
               (sha256
                (base32
-                "0yck7dwvjk16a52nafjpi0a39rxwmg0w833brj45acz76lgkjrb0"))))
+                "1qq3cryhby50xms8zh4s6fmw5p0i7dpg1wvsz5ni78cbyyrq3cww"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     `(#:tests? #f                      ; tests appear to require the network
-       #:configure-flags '("--disable-static"
-                           "--enable-gtk-doc"
-                           "--enable-introspection")))
+     `(#:configure-flags '("--disable-static")))
     (native-inputs
      (list gobject-introspection
            gtk-doc/stable
-           pkg-config
-           ;; The 0.2.4 ‘release’ tarball isn't bootstrapped.
-           autoconf
-           automake
-           libtool
-           which))
+           pkg-config))
     (inputs
-     `(("json-glib" ,json-glib)
-       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
-       ("rest" ,rest)))
+     (list gnome-online-accounts
+           json-glib
+           rest))
     (synopsis "GLib/GObject wrapper for the Facebook API")
     (description "This library allows you to use the Facebook API from
 GLib/GObject code.")
@@ -10105,7 +10436,7 @@ GLib/GObject code.")
 (define-public libgnomekbd
   (package
     (name "libgnomekbd")
-    (version "3.26.1")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgnomekbd/"
@@ -10113,14 +10444,21 @@ GLib/GObject code.")
                                   "libgnomekbd-" version ".tar.xz"))
               (sha256
                (base32
-                "0y962ykn3rr9gylj0pwpww7bi20lmhvsw6qvxs5bisbn2mih5jpp"))))
+                "0w78ix6f52xv0hw1h6fzqh47pk1fwr077agma19hdh3kdmb5kp12"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list pkg-config
-           `(,glib "bin") intltool))
+     (list autoconf
+           automake
+           `(,glib "bin")
+           libtool
+           pkg-config
+           gettext-minimal
+           gobject-introspection))
     (propagated-inputs
      ;; Referred to in .h files and .pc.
-     (list glib gtk+ libxklavier))
+     (list glib
+           gtk+
+           libxklavier))
     (home-page "https://www.gnome.org")
     (synopsis "GNOME keyboard configuration library")
     (description
@@ -10171,7 +10509,7 @@ handling the startup notification side.")
 (define-public gnome-calculator
   (package
     (name "gnome-calculator")
-    (version "41.0")
+    (version "42.2")
     (source
      (origin
        (method url-fetch)
@@ -10180,12 +10518,17 @@ handling the startup notification side.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "16fwwfnw1w8p53ffny6zkff5cfsmg7xax9kmfgb7czjqv15w0vd6"))))
+         "1866qn0r9xp7b7j1436kry2k3bdh9ikhz2wm41jxcn1nljyb3nik"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'skip-gtk-update-icon-cache
+           (lambda _
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false"))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a writable HOME.
@@ -10193,14 +10536,14 @@ handling the startup notification side.")
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")               ;for glib-compile-schemas, gio-2.0.
-           `(,gtk+ "bin")               ;for gtk-update-icon-cache
            itstool
-           vala
            pkg-config
-           python))
+           python
+           vala))
     (inputs
-     (list `(,glib "bin")
-           gtksourceview-4
+     (list gsettings-desktop-schemas-next
+           gtksourceview
+           libadwaita
            libgee
            libhandy
            libsoup-minimal-2
@@ -10415,7 +10758,7 @@ kill/reinice processes.")
 (define-public python-pyatspi
   (package
     (name "python-pyatspi")
-    (version "2.34.0")
+    (version "2.45.90")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -10424,7 +10767,7 @@ kill/reinice processes.")
                     "/pyatspi-" version ".tar.xz"))
               (sha256
                (base32
-                "0j3f75j0zd6ca8msg7yr19qsfirqkn9fk8pqbjnlhqrpri455g4p"))))
+                "1fggihg4xmwia0xgjkcraiqk76jvyrj1pcsw99rjh4yn3kygisrh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -10435,8 +10778,7 @@ kill/reinice processes.")
                (("from gi.repository import Atspi")
                 "gi.require_version('Gtk', '3.0')
 from gi.repository import Gtk
-from gi.repository import Atspi"))
-             #t)))))
+from gi.repository import Atspi")))))))
     (native-inputs
      (list pkg-config))
     (inputs
@@ -10455,7 +10797,7 @@ accessibility infrastructure.")
 (define-public orca
   (package
     (name "orca")
-    (version "41.0")
+    (version "42.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -10464,7 +10806,7 @@ accessibility infrastructure.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1gflnsv6d5qn5rh1f16yfa0q0yv8yvd0l5lbwrsdg7z18lafb5vn"))))
+                "097pyav3z5ssic8vwd7v1s7vynpycdpyfr324rr6c7mfzq5vmp7s"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -10477,22 +10819,21 @@ accessibility infrastructure.")
                  (("'xkbcomp'") (format #f "'~a'" xkbcomp))))))
          (add-after 'install 'wrap-orca
            (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out  (assoc-ref outputs "out"))
-                    (prog (string-append out "/bin/orca")))
-               (wrap-program prog
-                 `("GI_TYPELIB_PATH" ":" prefix
-                   (,(getenv "GI_TYPELIB_PATH")))
-                 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
-                   (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
-                 `("GUIX_PYTHONPATH" ":" prefix
-                   (,(getenv "GUIX_PYTHONPATH"))))))))))
+             (wrap-program (search-input-file outputs "bin/orca")
+               `("GI_TYPELIB_PATH" ":" prefix
+                 (,(getenv "GI_TYPELIB_PATH")))
+               `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
+                 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
+               `("GUIX_PYTHONPATH" ":" prefix
+                 (,(getenv "GUIX_PYTHONPATH")))))))))
     (native-inputs
-     (list intltool
+     (list gettext-minimal
            itstool
            pkg-config
            libxml2))
     (inputs
-     (list at-spi2-core
+     (list at-spi2-atk
+           bash-minimal
            gsettings-desktop-schemas
            gstreamer
            gst-plugins-base
@@ -10515,7 +10856,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
 (define-public gspell
   (package
     (name "gspell")
-    (version "1.8.2")
+    (version "1.11.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10523,13 +10864,18 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1miybm1z5cl91i25l7mfqlxhv7j8yy8rcgi0s1bgbb2vm71rb4dv"))
-              (patches (search-patches "gspell-dash-test.patch"))))
+                "14h2w0yzqwaw5dykmhh21sy2c96g17waahg2lxc52xqiyzis8spg"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags (list "--enable-vala")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'disable-problematic-tests
+           (lambda _
+             (substitute* "testsuite/test-checker.c"
+               ;; This test is known to fail with Aspell, as a comment
+               ;; mentions it.  Disable it.
+               ((".*g_test_add_func.*test_dashes.*") ""))))
          (add-before 'check 'pre-check
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Tests require a running X server.
@@ -10546,18 +10892,20 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
     (inputs
      (list iso-codes))
     (native-inputs
-     `(("glib" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)                             ;for VAPI, needed by Geary
-       ("xmllint" ,libxml2)
+     (list `(,glib "bin")
+           gobject-introspection
+           pkg-config
+           vala                         ;for VAPI, needed by Geary
+           libxml2
 
-       ;; For tests.
-       ("aspell-dict-en" ,aspell-dict-en)
-       ("xorg-server" ,xorg-server-for-tests)))
+           ;; For tests.
+           aspell-dict-en
+           xorg-server-for-tests))
     (propagated-inputs
      ;; Referred by .pc file.
-     (list enchant glib gtk+))
+     (list enchant
+           glib
+           gtk+))
     (home-page "https://wiki.gnome.org/Projects/gspell")
     (synopsis "GNOME's alternative spell checker")
     (description
@@ -10616,63 +10964,60 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
 (define-public lollypop
   (package
     (name "lollypop")
-    (version "1.4.24")
+    (version "1.4.35")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://adishatz.org/lollypop/"
                            "lollypop-" version ".tar.xz"))
        (sha256
-        (base32 "10cw3x75siibmnbh4zhfmf2vd08fqjs3lj3l4wpk6zj9h22ncfxw"))))
+        (base32 "0rvwj18x1gs7fgvniijzvlmgmzcgr7il22zclzsn5nkl8xbwgzk0"))))
     (build-system meson-build-system)
     (arguments
-     `(#:imported-modules
-       (,@%meson-build-system-modules
-        (guix build python-build-system))
-       #:modules
-       ((guix build meson-build-system)
-        ((guix build python-build-system) #:prefix python:)
-        (guix build utils))
+     `(#:imported-modules (,@%meson-build-system-modules
+                           (guix build python-build-system))
+       #:modules ((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
        #:glib-or-gtk? #t
-       #:tests? #f                      ; no test suite
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'disable-gtk-update-icon-cache
+           (lambda _
+             (setenv "DESTDIR" "/")))
          (add-after 'install 'wrap-program
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out               (assoc-ref outputs "out"))
-                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-               (wrap-program (string-append out "/bin/lollypop")
-                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
-             #t))
+             (wrap-program (search-input-file outputs "bin/lollypop")
+               `("GI_TYPELIB_PATH" ":" prefix
+                 (,(getenv "GI_TYPELIB_PATH"))))))
          (add-after 'install 'wrap-python
            (assoc-ref python:%standard-phases 'wrap)))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")         ; For glib-compile-resources
-       ("gtk+:bin" ,gtk+ "bin")         ; For gtk-update-icon-cache
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           `(,glib "bin")               ; For glib-compile-resources
+           pkg-config))
     (inputs
-     `(("glib-networking" ,glib-networking)
-       ("gobject-introspection" ,gobject-introspection)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("libnotify" ,libnotify)
-       ("libsecret" ,libsecret)
-       ("libhandy" ,libhandy)
-       ("libsoup" ,libsoup-minimal-2)
-       ("python" ,python)
-       ("python-beautifulsoup4" ,python-beautifulsoup4)
-       ("python-gst" ,python-gst)
-       ("python-pil" ,python-pillow)
-       ("python-pycairo" ,python-pycairo)
-       ("python-pygobject" ,python-pygobject)
-       ("python-pylast" ,python-pylast)
-       ("totem-pl-parser" ,totem-pl-parser)
-       ("webkitgtk" ,webkitgtk)))
+     (list bash-minimal
+           glib-networking
+           gobject-introspection
+           gsettings-desktop-schemas
+           gst-plugins-base
+           libnotify
+           libsecret
+           libhandy
+           libsoup-minimal-2
+           python
+           python-beautifulsoup4
+           python-gst
+           python-pillow
+           python-pycairo
+           python-pygobject
+           python-pylast
+           totem-pl-parser
+           webkitgtk))
     (propagated-inputs
-     (list ;; gst-plugins-base is required to start Lollypop,
-           ;; the others are required to play streaming.
-           gst-plugins-good gst-plugins-ugly))
+     (list gst-plugins-good             ;required to start lollypop
+           gst-plugins-ugly))           ;required for streaming
     (home-page "https://wiki.gnome.org/Apps/Lollypop")
     (synopsis "GNOME music playing application")
     (description
@@ -10707,7 +11052,7 @@ photo-booth-like software, such as Cheese.")
 (define-public cheese
   (package
     (name "cheese")
-    (version "41.0")
+    (version "41.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10715,33 +11060,28 @@ photo-booth-like software, such as Cheese.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1y92glc0d6w323x2bdbc0gdh1jdffvkbv6cwlwm1rx0wgvv1svqh"))))
+                "0iz5cwndl65j13z5pmv0ansln2lyii0h82q775jgc3vk53560aaj"))))
     (arguments
      `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       ;; Tests require GDK.
-       #:tests? #f
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
            (lambda _
              ;; Don't create 'icon-theme.cache'
              (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t))
+               (("gtk-update-icon-cache") (which "true")))))
          (add-after 'install 'wrap-cheese
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out             (assoc-ref outputs "out"))
-                   (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
-               (wrap-program (string-append out "/bin/cheese")
-                 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
-             #t)))))
+             (wrap-program (search-input-file outputs "bin/cheese")
+               `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
+                 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))))))))
     (build-system meson-build-system)
     (native-inputs
      (list docbook-xsl
            docbook-xml-4.3
            gettext-minimal
            `(,glib "bin")
+           gobject-introspection
            gtk-doc/stable
            itstool
            libxml2
@@ -10749,7 +11089,8 @@ photo-booth-like software, such as Cheese.")
            pkg-config
            vala))
     (propagated-inputs
-     (list gnome-video-effects
+     (list bash-minimal
+           gnome-video-effects
            clutter
            clutter-gst
            clutter-gtk
@@ -10759,7 +11100,6 @@ photo-booth-like software, such as Cheese.")
            gstreamer))
     (inputs
      (list gnome-desktop
-           gobject-introspection
            gst-plugins-base
            gst-plugins-good
            gst-plugins-bad
@@ -10773,10 +11113,10 @@ photo-booth-like software, such as Cheese.")
 apply fancy special effects and lets you share the fun with others.")
     (license license:gpl2+)))
 
-(define-public passwordsafe
+(define-public secrets
   (package
-    (name "passwordsafe")
-    (version "5.1")
+    (name "secrets")
+    (version "6.5")
     (source
      (origin
        (method git-fetch)
@@ -10785,53 +11125,63 @@ apply fancy special effects and lets you share the fun with others.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kd43j6i017wdsqj6d5gnxhfv4ijnh3xahlw7md2gh51i8p682j6"))))
+        (base32 "11jd9f0d3fyrs29p8cyzb6i2ib6mzhwwvjnznl55gkggrgnrcb8z"))))
     (build-system meson-build-system)
     (arguments
-     (list #:glib-or-gtk? #t
-           #:meson meson-0.59
-           #:phases
-           #~(modify-phases %standard-phases
-               (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((prog (string-append #$output
-                                              "/bin/gnome-passwordsafe"))
-                         (pylib (string-append
-                                 #$output "/lib/python"
-                                 #$(version-major+minor
-                                    (package-version (this-package-input "python")))
-                                 "/site-packages")))
-                     (wrap-program prog
-                       `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib))
-                       `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-postinstall-script
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))
+              (setenv "DESTDIR" "/")))
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/secrets")
+                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                       ,(python:site-packages inputs outputs)))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
      (list desktop-file-utils
            gettext-minimal
            `(,glib "bin")
            gobject-introspection
-           `(,gtk+ "bin")
            pkg-config))
     (inputs
-     (list glib
+     (list bash-minimal
+           glib
            gsettings-desktop-schemas
-           gtk+
+           gtk
+           libadwaita
            libhandy
            libpwquality
            python
            python-pygobject
-           python-pykeepass))
-    (home-page "https://gitlab.gnome.org/World/PasswordSafe")
+           python-pykeepass
+           python-pyotp))
+    (home-page "https://gitlab.gnome.org/World/secrets")
     (synopsis "Password manager for the GNOME desktop")
     (description
-     "Password Safe is a password manager which makes use of the KeePass v4
+     "Secrets is a password manager which makes use of the KeePass v4
 format.  It integrates perfectly with the GNOME desktop and provides an easy
 and uncluttered interface for the management of password databases.")
     (license license:gpl3+)))
 
+(define-public passwordsafe
+  (deprecated-package "passwordsafe" secrets))
+
 (define-public sound-juicer
   (package
     (name "sound-juicer")
-    (version "3.24.0")
+    (version "3.38.0")
     (source
      (origin
        (method url-fetch)
@@ -10840,18 +11190,31 @@ and uncluttered interface for the management of password databases.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "19qg4xv0f9rkq34lragkmhii1llxsa87llbl28i759b0ks4f6sny"))))
-    (build-system glib-or-gtk-build-system)
+         "08d5d81rz9sj3m5paw8fwbgxmhlbr7bcjdzpmzj832qvg8smydxf"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'disable-gtk-update-icon-cache
+                     (lambda _
+                       (setenv "DESTDIR" "/"))))))
     (native-inputs
-     (list desktop-file-utils intltool itstool pkg-config libxml2))
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           itstool
+           libxml2
+           pkg-config
+           python))
     (inputs
-     (list gtk+
+     (list brasero
            gsettings-desktop-schemas
-           gstreamer
            gst-plugins-base
            gst-plugins-good
+           gstreamer
+           gtk+
            iso-codes
-           brasero
            libcanberra
            libdiscid
            libmusicbrainz
@@ -10967,15 +11330,15 @@ micro-pauses and rest breaks, and restricts you to your daily limit.")
 (define-public ghex
   (package
     (name "ghex")
-    (version "3.18.4")
+    (version "42.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/ghex/"
-                                  (version-major+minor version) "/"
+                                  (version-major version) "/"
                                   "ghex-" version ".tar.xz"))
               (sha256
                (base32
-                "1h1pjrr9wynclfykizqd78dbi785wjz6b63p31k87kjvzy8w3nf2"))))
+                "1vsd6l78pymdrsgdgj7xhxyrf09j4w08zrbvs8qdn8a9na50zm5d"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -10984,20 +11347,19 @@ micro-pauses and rest breaks, and restricts you to your daily limit.")
          (add-after 'unpack 'skip-gtk-update-icon-cache
            ;; Don't create 'icon-theme.cache'.
            (lambda _
-             (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t)))))
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false")))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("glib:bin" ,glib "bin") ; for glib-compile-schemas
-       ("gnome-common" ,gnome-common)
-       ("which" ,which)
-       ("intltool" ,intltool)
-       ("yelp-tools" ,yelp-tools)
-       ("desktop-file-utils" ,desktop-file-utils))) ; for 'desktop-file-validate'
+     (list desktop-file-utils           ;for 'desktop-file-validate'
+           gettext-minimal
+           `(,glib "bin")               ;for glib-compile-schemas
+           gnome-common
+           pkg-config
+           yelp-tools))
     (inputs
-     `(("atk" ,atk)
-       ("gtk" ,gtk+)))
+     (list atk
+           gtk))
     (synopsis "GNOME hexadecimal editor")
     (description "The GHex program can view and edit files in two ways:
 hexadecimal or ASCII.  It is useful for editing binary files in general.")
@@ -11007,7 +11369,7 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
 (define-public libdazzle
   (package
     (name "libdazzle")
-    (version "3.37.1")
+    (version "3.44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libdazzle/"
@@ -11015,7 +11377,7 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
                                   "libdazzle-" version ".tar.xz"))
               (sha256
                (base32
-                "03r5cr11dc031qa3694bpgm3lajrhiiln67kvl7vjj4q0scf7w7x"))))
+                "1blfs61ifv4fywl0wbr1cm3rvmgrv06yiqajbnq0qs72nrgf9lrw"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -11024,15 +11386,17 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
            (lambda _
              ;; Tests require a running X server.
              (system "Xvfb :1 &")
-             (setenv "DISPLAY" ":1")
-             #t)))))
+             (setenv "DISPLAY" ":1"))))))
     (native-inputs
      (list `(,glib "bin") ; glib-compile-resources
+           gobject-introspection
            pkg-config
            ;; For tests.
-           xorg-server-for-tests))
+           xorg-server-for-tests
+           vala))
     (inputs
-     (list glib gobject-introspection gtk+ vala))
+     (list glib
+           gtk+))
     (home-page "https://gitlab.gnome.org/GNOME/libdazzle")
     (synopsis "Companion library to GObject and Gtk+")
     (description "The libdazzle library is a companion library to GObject and
@@ -11045,7 +11409,7 @@ generic enough to work for everyone.")
 (define-public evolution
   (package
     (name "evolution")
-    (version "3.42.1")
+    (version "3.45.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/evolution/"
@@ -11053,53 +11417,58 @@ generic enough to work for everyone.")
                                   "evolution-" version ".tar.xz"))
               (sha256
                (base32
-                "0igfzapdvgfx2gnpwfkjfkn7l5j186wk88ni39vqas1sl7ijlls6"))))
+                "1q4fa5l7k0rax39iwn2spmzxcr2l73mj3644lf8j9mnp5w774c96"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:imported-modules (,@%cmake-build-system-modules
+     (list
+      #:imported-modules `(,@%cmake-build-system-modules
                            (guix build glib-or-gtk-build-system))
-       #:modules ((guix build cmake-build-system)
+      #:modules '((guix build cmake-build-system)
                   ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
                   (guix build utils))
-       #:configure-flags
-       (list "-DENABLE_PST_IMPORT=OFF"    ; libpst is not packaged
-             "-DENABLE_LIBCRYPTUI=OFF")   ; libcryptui hasn't seen a release
-                                          ; in four years and cannot be built.
-       #:phases
-       (modify-phases %standard-phases
-         ;; The build system attempts to install user interface modules to the
-         ;; output directory of the "evolution-data-server" package.  This
-         ;; change redirects that change.
-         (add-after 'unpack 'patch-ui-module-dir
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "src/modules/alarm-notify/CMakeLists.txt"
-               (("\\$\\{edsuimoduledir\\}")
-                (string-append (assoc-ref outputs "out")
-                               "/lib/evolution-data-server/ui-modules")))))
-         (add-after 'install 'glib-or-gtk-compile-schemas
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
-         (add-after 'install 'glib-or-gtk-wrap
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
-    (native-inputs
-     (list `(,glib "bin") ; glib-mkenums
-           pkg-config intltool itstool))
+      #:configure-flags
+      #~(list "-DENABLE_PST_IMPORT=OFF") ;libpst is not packaged
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; The build system attempts to install user interface modules to
+          ;; the output directory of the "evolution-data-server" package;
+          ;; patch it to install to the same location under #$output prefix.
+          (add-after 'unpack 'patch-ui-module-dir
+            (lambda* (#:key outputs #:allow-other-keys)
+              (substitute* "src/modules/alarm-notify/CMakeLists.txt"
+                (("\\$\\{edsuimoduledir\\}")
+                 (string-append
+                  #$output "/lib/evolution-data-server/ui-modules")))
+              (substitute* "src/modules/rss/camel/CMakeLists.txt"
+                (("\\$\\{camel_providerdir}")
+                 (string-append
+                  #$output "/lib/evolution-data-server/camel-providers")))))
+          (add-after 'install 'glib-or-gtk-compile-schemas
+            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+          (add-after 'install 'glib-or-gtk-wrap
+            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (native-inputs
+     (list `(,glib "bin")               ;glib-mkenums
+           intltool
+           itstool
+           pkg-config))
     (inputs
-     `(("enchant" ,enchant)
-       ("evolution-data-server" ,evolution-data-server) ; must be the same version
-       ("gcr" ,gcr)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gnome-autoar" ,gnome-autoar)
-       ("gnome-desktop" ,gnome-desktop)
-       ("gspell" ,gspell)
-       ("highlight" ,highlight)
-       ("libcanberra" ,libcanberra)
-       ("libgweather" ,libgweather)
-       ("libnotify" ,libnotify)
-       ("libsoup" ,libsoup)
-       ("nss" ,nss)
-       ("openldap" ,openldap)
-       ("webkitgtk" ,webkitgtk-with-libsoup2) ; because of evolution-data-server
-       ("ytnef" ,ytnef)))
+     (list cmark
+           enchant
+           evolution-data-server        ;must be the same version
+           gcr
+           gsettings-desktop-schemas
+           gnome-autoar
+           gnome-desktop
+           gspell
+           highlight
+           libcanberra
+           libgweather4
+           libsoup
+           nss
+           openldap
+           webkitgtk
+           ytnef))
     (home-page "https://gitlab.gnome.org/GNOME/evolution")
     (synopsis "Manage your email, contacts and schedule")
     (description "Evolution is a personal information management application
@@ -11238,7 +11607,7 @@ tabs, and it supports drag and drop re-ordering of terminals.")
 (define-public libhandy
   (package
     (name "libhandy")
-    (version "1.5.0")
+    (version "1.7.90")
     (source
      (origin
        (method git-fetch)
@@ -11247,7 +11616,7 @@ tabs, and it supports drag and drop re-ordering of terminals.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19gl0xxybraw2iyn6cdi9w7nps825lb2bhav7d2x51wla0lq3kdc"))))
+        (base32 "1z8sbx7g19c1p8dy0sn0l25qfvrd2j28h269lsqm1y98r818h2k1"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -11271,25 +11640,24 @@ tabs, and it supports drag and drop re-ordering of terminals.")
            (lambda _
              ;; Tests require a running X server.
              (system "Xvfb :1 &")
-             (setenv "DISPLAY" ":1")
-             #t)))))
+             (setenv "DISPLAY" ":1"))))))
     (inputs
      (list gtk+ glade3))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection) ; for g-ir-scanner
-       ("vala" ,vala)
-       ("libxml2" ,libxml2)
-       ("libxslt" ,libxslt)
-       ("docbook-xsl" ,docbook-xsl)
-       ("docbook-xml" ,docbook-xml-4.3)
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)
-       ("gettext" ,gettext-minimal)
+     (list gobject-introspection        ; for g-ir-scanner
+           `(,glib "bin")
+           vala
+           libxml2
+           libxslt
+           docbook-xsl
+           docbook-xml-4.3
+           gtk-doc/stable
+           pkg-config
+           gettext-minimal
 
-       ;; Test suite dependencies.
-       ("xorg-server" ,xorg-server-for-tests)
-       ("hicolor-icon-theme" ,hicolor-icon-theme)))
+           ;; Test suite dependencies.
+           hicolor-icon-theme
+           xorg-server-for-tests))
     (home-page "https://gitlab.gnome.org/GNOME/libhandy/")
     (synopsis "Library full of GTK+ widgets for mobile phones")
     (description "The aim of the handy library is to help with developing user
@@ -11318,7 +11686,7 @@ for usage on small and big screens.")
 (define-public libgit2-glib
   (package
     (name "libgit2-glib")
-    (version "1.0.0.1")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -11326,7 +11694,7 @@ for usage on small and big screens.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0mrb21cgqmbhbxqxwx76yry1ifqj1k4vy6455n6s034m6rlms2j6"))))
+                "1wqypx0xv20vk0zfh20c474z6rdgbxbklcr2wkhl30dgbmbxg3f3"))))
     (build-system meson-build-system)
     (native-inputs
      (list `(,glib "bin") ;; For glib-mkenums
@@ -11336,10 +11704,9 @@ for usage on small and big screens.")
            python-wrapper
            vala))
     (inputs
-     (list glib libssh2))
+     (list libssh2))
     (propagated-inputs
-     (list ;; In Requires of libgit2-glib.pc.
-           libgit2))
+     (list glib libgit2)) ;; In Requires of libgit2-glib.pc.
     (synopsis "GLib wrapper around the libgit2 Git access library")
     (description "libgit2-glib is a GLib wrapper library around the libgit2 Git
 access library.  It only implements the core plumbing functions, not really the
@@ -11560,7 +11927,7 @@ index files needed for Adwaita to be used outside of GNOME.")
 (define-public gnote
   (package
     (name "gnote")
-    (version "41.2")
+    (version "42.1")
     (source
      (origin
        (method url-fetch)
@@ -11568,7 +11935,7 @@ index files needed for Adwaita to be used outside of GNOME.")
                            (version-major version)  "/"
                            "gnote-" version ".tar.xz"))
        (sha256
-        (base32 "0gs2j988rwfrxckb8qxlkyxnvqsv30q32myqish6hssfa51yzc11"))))
+        (base32 "0fam3v9na4ndqdc63866bvhcxrzj478jsx34vsh0777d4ixw883c"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -11580,9 +11947,9 @@ index files needed for Adwaita to be used outside of GNOME.")
                         (("gtk-update-icon-cache") "true")))))))
     (native-inputs
      (list desktop-file-utils
+           gettext-minimal
            `(,glib "bin")
            gobject-introspection
-           intltool
            itstool
            pkg-config
            python))
@@ -11605,7 +11972,7 @@ desktop environment.")
 (define-public polari
   (package
     (name "polari")
-    (version "41.0")
+    (version "42.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/polari/"
@@ -11613,7 +11980,7 @@ desktop environment.")
                                   "/polari-" version ".tar.xz"))
               (sha256
                (base32
-                "1ss0x8idwar1q9p9535kzqb8idy7k2r48vrbjiyccw03cs0mzc53"))))
+                "0gbbjs522a8vdps79m1h3krkizbld61h8r1hn9z41gpc904cz45g"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -11621,39 +11988,43 @@ desktop environment.")
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
            (lambda _
-             (substitute* "meson/meson-postinstall.sh"
-               (("gtk-update-icon-cache") (which "true")))))
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false"))))
          (add-after 'install 'fix-desktop-file
-           ;; Hardcode launcher to be on the safe side
+           ;; Hard-code launcher to be on the safe side.
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* (string-append out "/share/applications/"
-                                           "org.gnome.Polari.desktop")
-                 (("Exec=.*") (string-append "Exec=" out "/bin/polari\n"))))))
+             (substitute* (search-input-file
+                           outputs
+                           "share/applications/org.gnome.Polari.desktop")
+               (("Exec=.*")
+                (string-append "Exec=" (search-input-file outputs "bin/polari")
+                               "\n")))))
          (add-after 'glib-or-gtk-wrap 'wrap-typelib
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/polari")))
-               (wrap-program prog
-                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
+             (wrap-program (search-input-file outputs "bin/polari")
+               `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
+    (native-inputs
+     (list desktop-file-utils
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config
+           yelp-tools))
     (inputs
-     (list glib
+     (list bash-minimal
+           glib
            gsettings-desktop-schemas
            gspell
            gtk
            gjs
            libsecret
-           libsoup-minimal-2
+           libsoup
            telepathy-glib
            telepathy-logger))
-    (native-inputs
-     (list `(,glib "bin")
-           gobject-introspection
-           intltool
-           pkg-config
-           yelp-tools))
     (propagated-inputs
-     (list telepathy-idle telepathy-mission-control))
+     (list telepathy-idle
+           telepathy-mission-control))
     (synopsis "Simple IRC Client")
     (description
      "Polari is a simple Internet Relay Chat (IRC) client that is designed to
@@ -11664,7 +12035,7 @@ integrate seamlessly with the GNOME desktop.")
 (define-public gnome-boxes
   (package
     (name "gnome-boxes")
-    (version "41.1")
+    (version "42.3")
     (source
      (origin
        (method url-fetch)
@@ -11672,34 +12043,35 @@ integrate seamlessly with the GNOME desktop.")
                            (version-major version) "/"
                            "gnome-boxes-" version ".tar.xz"))
        (sha256
-        (base32 "1wzhm8n485cqhbai4qshgrwl05ix881g8gjshilrj6vg8p1li79h"))
-       (patches
-        (search-patches "gnome-boxes-add-guix-logo.patch"))))
+        (base32 "1lv0bdh935qj6wkv3ixg2pcv8yrapj79z02gw4fal3rhz3xggvsn"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:meson ,meson-0.60
-       #:configure-flags (list "-Drdp=false"
-                               (string-append "-Dc_link_args=-Wl,-rpath="
-                                              (assoc-ref %outputs "out")
-                                              "/lib/gnome-boxes"))))
-    (native-inputs
-     (list `(,glib "bin")               ;for glib-compile-resources
-           `(,gtk+ "bin")               ;for gtk-update-icon-cache
-           desktop-file-utils           ;for update-desktop-database
+     (list #:glib-or-gtk? #t
+           #:configure-flags #~(list "-Drdp=false"
+                                     (string-append "-Dc_link_args=-Wl,-rpath="
+                                                    #$output
+                                                    "/lib/gnome-boxes"))
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'disable-gtk-update-icon-cache
+                          (lambda _
+                            (setenv "DESTDIR" "/"))))))
+    (native-inputs
+     (list desktop-file-utils           ;for update-desktop-database
+           gettext-minimal
+           `(,glib "bin")               ;for glib-compile-resources
            itstool
-           intltool
-           vala
            pkg-config
-           python))
+           python
+           vala))
     (inputs
-     (list libarchive
-           glib-networking              ;for TLS support
+     (list glib-networking              ;for TLS support
            gsettings-desktop-schemas
            gtk+
            gtk-vnc
            gtksourceview-4
            json-glib
+           libarchive
+           libgudev
            libhandy
            libosinfo
            libsecret
@@ -11708,12 +12080,11 @@ integrate seamlessly with the GNOME desktop.")
            libvirt
            libvirt-glib
            libxml2
-           spice-gtk
            sparql-query
-           vte
-           webkitgtk-with-libsoup2      ;for webkit2gtk-4.0
+           spice-gtk
            tracker
-           libgudev))
+           vte
+           webkitgtk-with-libsoup2))    ;for webkit2gtk-4.0
     (home-page "https://wiki.gnome.org/Apps/Boxes")
     (synopsis "View, access, and manage remote and virtual systems")
     (description "GNOME Boxes is a simple application to view, access, and
@@ -11780,7 +12151,7 @@ these services on the Guix System.")
            gcr
            glib
            gmime
-           `(,gnome-online-accounts "lib")
+           gnome-online-accounts
            gsettings-desktop-schemas
            gspell
            gsound
@@ -11869,7 +12240,7 @@ card sheets that you’ll find at most office supply stores.")
 (define-public gnome-latex
   (package
     (name "gnome-latex")
-    (version "3.38.0")
+    (version "3.41.2")
     (source
      (origin
        (method url-fetch)
@@ -11877,27 +12248,22 @@ card sheets that you’ll find at most office supply stores.")
                            (version-major+minor version)  "/"
                            "gnome-latex-" version ".tar.xz"))
        (sha256
-        (base32 "0xqd49pgi82dygqnxj08i1v22b0vwwhx3zvdinhrx4jny339yam8"))))
+        (base32 "0cynhmrn99f4f3kddczsc58ak4b9sv2zkfbcyz7z16848nhz047k"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")
            gobject-introspection
            gtk-doc/stable
-           intltool
            itstool
            pkg-config
            vala))
     (inputs
-     (list amtk
-           dconf
+     (list dconf
            glib
-           gsettings-desktop-schemas
            gspell
-           gtk+
-           gtksourceview-4
            libgee
-           tepl-5
+           tepl
            uchardet))
     (home-page "https://wiki.gnome.org/Apps/GNOME-LaTeX")
     (synopsis "LaTeX editor for the GNOME desktop")
@@ -11911,7 +12277,7 @@ and toolbars.")
 (define-public setzer
   (package
     (name "setzer")
-    (version "0.4.1")
+    (version "0.4.8")
     (source
      (origin
        (method git-fetch)
@@ -11920,45 +12286,42 @@ and toolbars.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1rcx2c07jg1ij81pnvg3px49hfbjmkagn68d3gp79z3gcajbp2av"))))
+        (base32 "12w58v7qsd3xfmrxhij8dby9xnvd82hxqb4wc6di7lqz1ayg5lzc"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/setzer"))
-                   (pylib (string-append (assoc-ref outputs "out")
-                                         "/lib/python"
-                                         ,(version-major+minor
-                                           (package-version python))
-                                         "/site-packages")))
-               (wrap-program prog
-                 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib))
-                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
-               #t))))))
+     (list
+      #:glib-or-gtk? #t
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/setzer")
+                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                       ,(python:site-packages inputs outputs)))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("python-wrapper" ,python-wrapper)))
+     (list gettext-minimal
+           python))
     (inputs
-     `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gspell" ,gspell)
-       ("gtk+" ,gtk+)
-       ("gtksourceview" ,gtksourceview-4)
-       ("pango" ,pango)
-       ("poppler" ,poppler)
-       ("python-pdfminer" ,python-pdfminer-six)
-       ("python-pycairo" ,python-pycairo)
-       ("python-pygobject" ,python-pygobject)
-       ("python-pyxdg" ,python-pyxdg)
-       ("webkitgtk" ,webkitgtk)
-       ("xdg-utils" ,xdg-utils)))
+     (list bash-minimal
+           gsettings-desktop-schemas
+           gspell
+           gtk+
+           gtksourceview-4
+           pango
+           poppler
+           python-pdfminer-six
+           python-pexpect
+           python-pycairo
+           python-pygobject
+           python-pyxdg
+           webkitgtk-with-libsoup2
+           xdg-utils))
     (home-page "https://www.cvfosammmm.org/setzer/")
     (synopsis "LaTeX editor written in Python with GTK+")
     (description
@@ -11969,44 +12332,43 @@ GTK+.  It integrates well with the GNOME desktop environment.")
 (define-public apostrophe
   (package
     (name "apostrophe")
-    (version "2.5")
+    (version "2.6.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://gitlab.gnome.org/somas/apostrophe")
+                    (url "https://gitlab.gnome.org/World/apostrophe")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "06yfiflmj3ip7ppcz41nb3xpgb5ggw5h74w0v87yaqqkq7qh31lp"))))
+                "0wsvq2434p650cf3vq5w7a6czbk8in0ra7nji45mvwyfahdyn6j4"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:meson ,meson-0.59              ;fails with 0.60
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-meson
-           (lambda _
-             (substitute* "build-aux/meson_post_install.py"
-               (("gtk-update-icon-cache") "true"))))
-         (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/apostrophe"))
-                   (pylib (string-append (assoc-ref outputs "out")
-                                         "/lib/python"
-                                         ,(version-major+minor
-                                           (package-version
-                                            (this-package-input "python")))
-                                         "/site-packages")))
-               (wrap-program prog
-                 `("PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH") ,pylib))
-                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))
-                 `("PATH" prefix (,(dirname
-                                    (search-input-file inputs
-                                                       "/bin/pandoc")))))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:imported-modules `(,@%meson-build-system-modules
+                           (guix build python-build-system))
+      #:modules '((guix build meson-build-system)
+                  ((guix build python-build-system) #:prefix python:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-meson
+            (lambda _
+              (substitute* "build-aux/meson_post_install.py"
+                (("gtk-update-icon-cache") "true"))))
+          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (search-input-file outputs "bin/apostrophe")
+                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                       ,(python:site-packages inputs outputs)))
+                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))
+                `("PATH" prefix (,(dirname
+                                   (search-input-file inputs
+                                                      "/bin/pandoc"))))))))))
     (inputs
-     (list glib
+     (list bash-minimal
+           glib
            gobject-introspection
            gspell
            gtk+
@@ -12026,7 +12388,7 @@ GTK+.  It integrates well with the GNOME desktop environment.")
            `(,glib "bin")
            pkg-config
            sassc))
-    (home-page "https://gitlab.gnome.org/somas/apostrophe")
+    (home-page "https://gitlab.gnome.org/World/apostrophe")
     (synopsis "Markdown editor written in Python with GTK+")
     (description "Apostrophe is a GTK+ based distraction-free Markdown editor.
 It uses pandoc as back-end for parsing Markdown.")
@@ -12107,54 +12469,57 @@ your operating-system definition:
 (define-public piper
   (package
     (name "piper")
-    (version "0.6")
+    (version "0.7")
     (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/libratbag/piper")
-             (commit version)))
-       (sha256
-        (base32 "02x4d4n0078slj2pl0rvgayrrxvna6y6vj8fxfamvazsh5xyfzwk"))
-       (file-name (git-file-name name version))))
+     (origin (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/libratbag/piper")
+                   (commit version)))
+             (sha256
+              (base32 "0jsvfy0ihdcgnqljfgs41lys1nlz18qvsa0a8ndx3pyr41f8w8wf"))
+             (file-name (git-file-name name version))))
     (build-system meson-build-system)
-    (native-inputs
-     (list gettext-minimal
-           `(,glib "bin")
-           gobject-introspection
-           pkg-config
-           python-flake8))
-    (inputs
-     (list adwaita-icon-theme
-           gtk+
-           `(,gtk+ "bin")
-           libratbag
-           python
-           python-evdev
-           python-lxml
-           python-pycairo
-           python-pygobject))
     (arguments
      `(#:imported-modules ((guix build python-build-system)
                            ,@%meson-build-system-modules)
        #:modules (((guix build python-build-system) #:prefix python:)
                   (guix build meson-build-system)
                   (guix build utils))
-       #:tests? #f ;; The flake8 test fails trying to validate piper.in as code.
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'dont-update-gtk-icon-cache
            (lambda _
              (substitute* "meson.build"
-               (("meson.add_install_script('meson_install.sh')") ""))))
-         ;; TODO: Switch to wrap-script when it is fixed.
+               (("meson.add_install_script\\('meson_install.sh')") ""))))
+         (add-after 'unpack 'do-not-require-flake8
+           (lambda _
+             (substitute* "meson.build"
+               (("find_program\\('flake8'" all)
+                (string-append all ", required : false")))))
          (add-after 'install 'wrap-python
            (assoc-ref python:%standard-phases 'wrap))
          (add-after 'wrap-python 'wrap
-           (lambda* (#:key outputs #:allow-other-keys)
-             (wrap-program
-                 (string-append (assoc-ref outputs "out" )"/bin/piper")
-               `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-script (search-input-file outputs "bin/piper")
+               `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))
+               `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
+                                      ,(python:site-packages inputs outputs)))))))))
+    (native-inputs
+     (list appstream
+           gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config))
+    (inputs
+     (list adwaita-icon-theme
+           gtk+
+           guile-3.0                    ;for wrap-script
+           libratbag
+           python
+           python-evdev
+           python-lxml
+           python-pycairo
+           python-pygobject))
     (home-page "https://github.com/libratbag/piper/")
     (synopsis "Configure bindings and LEDs on gaming mice")
     (description "Piper is a GTK+ application for configuring gaming mice with
@@ -12227,7 +12592,7 @@ audio files.")
 (define-public jsonrpc-glib
   (package
     (name "jsonrpc-glib")
-    (version "3.34.0")
+    (version "3.42.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -12235,14 +12600,16 @@ audio files.")
                                    name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0j05x4xv2cp3cbmp30m68z8g4rdw7b030ip4wszyfj9ya15v5kni"))))
+                "0sr71110gwbv08qwjh410fnhq6v5swn849y4gm314am8gjjqj692"))))
     (build-system meson-build-system)
     (inputs
-     (list json-glib glib))
+     (list glib
+           json-glib))
     (native-inputs
-     (list pkg-config
-           `(,glib "bin") ; for glib-genmarshal, etc.
-           gobject-introspection vala))
+     (list `(,glib "bin") ; for glib-genmarshal, etc.
+           gobject-introspection
+           pkg-config
+           vala))
     (home-page "https://gitlab.gnome.org/GNOME/jsonrpc-glib")
     (synopsis "JSON-RPC library for GLib")
     (description "Jsonrpc-GLib is a library to communicate with JSON-RPC based
@@ -12283,7 +12650,7 @@ GObject introspection bindings.")
 (define-public sysprof
   (package
     (name "sysprof")
-    (version "3.42.1")
+    (version "3.45.1")
     (source
      (origin
        (method url-fetch)
@@ -12291,32 +12658,37 @@ GObject introspection bindings.")
                            (version-major+minor version) "/"
                            "sysprof-" version ".tar.xz"))
        (sha256
-        (base32 "0090986ar3lz9m9fy7l5y9ibzzmgsx54cm6gp8ggsxgf0habi5hp"))))
+        (base32 "16nmr1qs7s2ylhwj58zj6b7in72nw7z72glaz746f2g7dbqs00k4"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
-       (list (string-append "-Dsystemdunitdir="
-                            %output
-                            "/share/systemd"))
-       #:tests? #f ; 3/4 test-model-filter barfs some dbus nonsense
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-install-script
-           (lambda _
-             (substitute* "build-aux/meson/post_install.sh"
-               (("gtk-update-icon-cache") "true")
-               (("update-desktop-database") "true"))
-             #t)))))
+     (list
+      #:configure-flags
+      #~(list (string-append "-Dsystemdunitdir=" #$output "/share/systemd"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-post-install
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false")
+                (("update_desktop_database: true")
+                 "update_desktop_database: false")))))))
     (propagated-inputs
      (list polkit))
     (inputs
-     (list glib gtk+ json-glib libdazzle polkit))
+     (list glib-next
+           gtk
+           json-glib
+           libadwaita
+           libdazzle
+           libunwind
+           polkit))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)
-       ("xmllint" ,libxml2)))
+     (list gettext-minimal
+           `(,glib-next "bin")          ;for gdbus-codegen, etc.
+           itstool
+           libxml2
+           pkg-config))
     ;; This home page is so woefully out of date as to be essentially useless.
     ;; (home-page "http://www.sysprof.com")
     (home-page "https://wiki.gnome.org/Apps/Sysprof")
@@ -12330,10 +12702,36 @@ It uses the kernel's built-in @code{ptrace} feature and handles shared
 libraries.  Applications do not need to be recompiled--or even restarted.")
     (license license:gpl3+)))
 
+(define-public sysprof-3.44
+  (package
+    (inherit sysprof)
+    (name "sysprof")
+    (version "3.44.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/sysprof/"
+                                  (version-major+minor version) "/"
+                                  "sysprof-" version ".tar.xz"))
+              (sha256
+               (base32 "0nq0icbln0ryqzlybr7wyl19mhr3vkqzs6wasn430fwpf5drypdb"))))
+    (inputs (modify-inputs (package-inputs sysprof)
+              (replace "glib" glib)
+              (replace "gtk" gtk+)))
+    (native-inputs (modify-inputs (package-native-inputs sysprof)
+                     (replace "glib" `(,glib "bin"))))
+    (arguments (substitute-keyword-arguments (package-arguments sysprof)
+                 ((#:phases phases '%standard-phases)
+                  #~(modify-phases #$phases
+                      (replace 'disable-post-install
+                        (lambda _
+                          (substitute* "build-aux/meson/post_install.sh"
+                            (("gtk-update-icon-cache") "true")
+                            (("update-desktop-database") "true"))))))))))
+
 (define-public gnome-builder
   (package
     (name "gnome-builder")
-    (version "41.2")
+    (version "42.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -12341,20 +12739,12 @@ libraries.  Applications do not need to be recompiled--or even restarted.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "04p031i999dccbnlbysmr6f93x7dji7b559j6yhdsqbqgxb7ncan"))
-              (patches
-               (search-patches "gnome-builder-update-libportal.patch"))))
+                "02k78mamp1yf9y6wixd864hdf9saw83wdw01f80lhnw60avm2kax"))))
     (build-system meson-build-system)
     (arguments
      (list
-      #:glib-or-gtk? #t ;To wrap binaries and compile schemas
-      #:configure-flags
-      #~(list "-Dnetwork_tests=false"
-              ;; TODO: Enable all plugins...
-              ;; Flatpak plugin wants libsoup 2
-              "-Dplugin_flatpak=false"
-              ;; ... except this one.
-              "-Dplugin_update_manager=false")
+      #:glib-or-gtk? #t                 ;To wrap binaries and compile schemas
+      #:configure-flags #~(list "-Dnetwork_tests=false")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-meson
@@ -12363,47 +12753,47 @@ libraries.  Applications do not need to be recompiled--or even restarted.")
                 (("gtk-update-icon-cache") "true")
                 (("update-desktop-database") "true"))
               (substitute* "src/libide/meson.build"
-                (("/usr/lib") (string-append (assoc-ref inputs
-                                                        "python-pygobject")
-                                             "/lib")))))
-          (add-after 'configure 'fix-ninja
-            (lambda _
-              ;; #43296: meson(?) incorrectly assumes we want to link
-              ;; this PIE against a static libselinux.
-              (substitute* "build.ninja"
-                (("libselinux\\.a") "libselinux.so"))))
+                (("/usr/lib")
+                 (string-append #$(this-package-input "python-pygobject")
+                                "/lib")))))
           (add-before 'check 'pre-check
             (lambda _
               (system "Xvfb :1 &")
               (setenv "DISPLAY" ":1"))))))
-    (inputs (list cmark
-                  clang
-                  devhelp-with-libsoup2
-                  glade3
-                  gspell
-                  gtk+
-                  json-glib
-                  jsonrpc-glib
-                  libdazzle
-                  libgit2-glib
-                  libpeas
-                  libportal
-                  libsoup-minimal-2
-                  llvm
-                  python
-                  python-pygobject
-                  sysprof
-                  template-glib
-                  vte
-                  webkitgtk-with-libsoup2))
-    (propagated-inputs (list gtksourceview-4)) ; needed for settings
-    (native-inputs (list desktop-file-utils  ; for desktop-file-validate
-                         `(,glib "bin")
-                         gettext-minimal
-                         pkg-config
-                         python              ; for meson scripts
-                         vala
-                         xorg-server-for-tests))
+    (inputs
+     (list cmark
+           clang
+           devhelp-with-libsoup2
+           flatpak
+           glade3
+           gspell
+           gtk+
+           json-glib
+           jsonrpc-glib
+           libdazzle
+           libgit2-glib
+           libhandy
+           libpeas
+           libportal
+           libsoup-minimal-2
+           llvm
+           libostree
+           python
+           python-pygobject
+           sysprof-3.44
+           template-glib
+           vte
+           webkitgtk-with-libsoup2))
+    (propagated-inputs
+     (list gtksourceview-4))            ;needed for settings
+    (native-inputs
+     (list desktop-file-utils           ;for desktop-file-validate
+           `(,glib "bin")
+           gettext-minimal
+           pkg-config
+           python                       ;for meson scripts
+           vala
+           xorg-server-for-tests))
     (home-page "https://wiki.gnome.org/Apps/Builder")
     (synopsis "Toolsmith for GNOME-based applications")
     (description
@@ -12442,18 +12832,15 @@ profiler via Sysprof, debugging support, and more.")
          (add-after 'unpack 'skip-gtk-update-icon-cache
            (lambda _
              (substitute* "meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t))
+               (("gtk-update-icon-cache") (which "true")))))
          (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((prog (string-append (assoc-ref outputs "out")
-                                       "/bin/komikku")))
-              (wrap-program prog
-                `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
-                `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
-              #t))))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (wrap-program (search-input-file outputs "bin/komikku")
+               `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
+               `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
     (inputs
-     (list gtk+
+     (list bash-minimal
+           gtk+
            libhandy
            libnotify
            libsecret
@@ -12488,58 +12875,35 @@ developed with the aim of being used with the Librem 5 phone.")
 (define-public libgda
   (package
     (name "libgda")
-    (version "5.2.10")
+    (version "6.0.0")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.gnome.org/GNOME/libgda.git/")
-             (commit (string-append "LIBGDA_" (string-replace-substring
-                                               version "." "_")))))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
        (sha256
-        (base32 "18rg773gq9v3cdywpmrp12c5xyp97ir9yqjinccpi22sksb1kl8a"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Remove the bundled sqlite, but keep its header because code relies
-        ;; on this header variant.
-        '(delete-file "libgda/sqlite/sqlite-src/sqlite3.c"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags '("--enable-system-sqlite" "--enable-vala")
-       ;; There's a race between check_cnc_lock and check_threaded_cnc
-       ;; in tests/multi-threading.
-       #:parallel-tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-glade-install
-           (lambda _
-             (substitute* "configure.ac"
-               (("`\\$PKG_CONFIG --variable=catalogdir gladeui-2\\.0`")
-                "${datadir}/glade/catalogs")
-               (("`\\$PKG_CONFIG --variable=pixmapdir gladeui-2\\.0`")
-                "${datadir}/glade/pixmaps"))
-             #t))
-         (add-before 'check 'pre-check
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Tests require a running X server.
-             (system "Xvfb :1 &")
-             (setenv "DISPLAY" ":1")
-             #t))
-         (add-after 'install 'symlink-glade-module
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((shlib "libgda-ui-5.0.so")
-                    (out (assoc-ref outputs "out"))
-                    (out/lib (string-append out "/lib"))
-                    (moduledir (string-append out/lib "/glade/modules")))
-               (mkdir-p moduledir)
-               (symlink (string-append out/lib "/" shlib)
-                        (string-append moduledir "/" shlib))
-               #t))))))
-    (propagated-inputs
-     (list libxml2))           ; required by libgda-5.0.pc
+        (base32 "0w564z7krgjk19r39mi5qn4kggpdg9ggbyn9pb4aavb61r14npwr"))
+       (patches (search-patches "libgda-cve-2021-39359.patch"
+                                "libgda-fix-build.patch"
+                                "libgda-fix-missing-initialization.patch"
+                                "libgda-skip-postgresql-tests.patch"))))
+    (build-system meson-build-system)
+    (native-inputs
+     (list intltool
+           iso-codes
+           `(,glib "bin")
+           gnome-common
+           gettext-minimal
+           gobject-introspection
+           gtk-doc/stable
+           pkg-config
+           python
+           vala
+           yelp-tools))
     (inputs
-     (list glib
+     (list json-glib
+           glib
            glade3
            gtk+
            libsecret
@@ -12547,21 +12911,8 @@ developed with the aim of being used with the Librem 5 phone.")
            openssl
            sqlite
            vala))
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("autoconf-archive" ,autoconf-archive)
-       ("automake" ,automake)
-       ("glib:bin" ,glib "bin")
-       ("gnome-common" ,gnome-common)
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc/stable)
-       ("intltool" ,intltool)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)
-       ("which" ,which)
-       ("xorg-server" ,xorg-server-for-tests)
-       ("yelp-tools" ,yelp-tools)))
+    (propagated-inputs
+     (list libxml2))                    ; required by libgda-5.0.pc
     (home-page "https://gitlab.gnome.org/GNOME/libgda")
     (synopsis "Uniform data access")
     (description
@@ -12574,44 +12925,43 @@ your data.")
 (define-public gtranslator
   (package
     (name "gtranslator")
-    (version "40.0")
-        (source (origin
+    (version "42.0")
+    (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major version) "/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0d48nc11z0m91scy21ah56ysxns82zvswx8lglvlkig1vqvblgpc"))))
+                "0fzi48s3wz9mf6c1ndpkby83bgshgn2116nqjq31n1j3wszvqrra"))))
     (build-system meson-build-system)
-    (inputs
-     `(("json-glib" ,json-glib)
-       ("jsonrpc-glib" ,jsonrpc-glib)
-       ("gettext" ,gettext-minimal)
-       ("glib" ,glib)
-       ("gtk+" ,gtk+)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gspell" ,gspell)
-       ("libdazzle" ,libdazzle)
-       ("libgda" ,libgda)
-       ("libhandy" ,libhandy)
-       ("libsoup" ,libsoup-minimal-2)))
+    (arguments
+     (list #:build-type "release"   ;otherwise it tries to fetch stuff via git
+           #:glib-or-gtk? #t
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'skip-gtk-update-icon-cache
+                 (lambda _
+                   (substitute* "build-aux/meson/meson_post_install.py"
+                     (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)))
+     (list `(,glib-next "bin")
+           gettext-minimal
+           itstool
+           pkg-config))
+    (inputs
+     (list json-glib
+           jsonrpc-glib
+           gettext-minimal
+           glib-next
+           gsettings-desktop-schemas
+           gspell
+           libgda
+           libhandy
+           libsoup
+           pango))
     (propagated-inputs
-     (list gtksourceview-4)) ; required for source view
-    (arguments
-     `(#:build-type "release"
-       #:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'skip-gtk-update-icon-cache
-           (lambda _
-             (substitute* "build-aux/meson/meson_post_install.py"
-               (("gtk-update-icon-cache") (which "true")))
-             #t)))))
+     (list gtksourceview-4))              ; required for source view
     (home-page "https://wiki.gnome.org/Apps/Gtranslator")
     (synopsis "Translation making program")
     (description
@@ -12687,7 +13037,7 @@ Document Analysis and Recognition program.")
 (define-public libadwaita
   (package
     (name "libadwaita")
-    (version "1.1.0")
+    (version "1.2.rc")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libadwaita/"
@@ -12695,7 +13045,7 @@ Document Analysis and Recognition program.")
                                   "libadwaita-" version ".tar.xz"))
               (sha256
                (base32
-                "03h14mrm453bn03f48rmpf85pvg5cnzzab27cs1c43417s09ixdg"))))
+                "1syg7fkpcsw0q6fy3g79myb9m9bvrnh3rjrm6g4bfg1pnlqf1w22"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -12706,15 +13056,14 @@ Document Analysis and Recognition program.")
              (system "Xvfb :1 &")
              (setenv "DISPLAY" ":1"))))))
     (native-inputs
-     `(("sassc" ,sassc)
-       ("glib:bin" ,glib "bin")
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)
-       ("xvfb" ,xorg-server-for-tests)
-       ("gettext" ,gettext-minimal)))
-    (inputs
-     (list gobject-introspection libportal))
+     (list gettext-minimal
+           `(,glib "bin")
+           gobject-introspection
+           gtk-doc/stable
+           pkg-config
+           sassc
+           vala
+           xorg-server-for-tests))
     (propagated-inputs
      (list gtk))                        ;libadwaita-1.pc 'Requires' it
     (home-page "https://gnome.pages.gitlab.gnome.org/libadwaita/")
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index 01099375d3..0386910ce6 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Prafulla Giri <pratheblackdiamond@gmail.com>
 ;;; Copyright © 2020 Christopher Lam <christopher.lck@gmail.com>
@@ -26,12 +26,6 @@
 
 (define-module (gnu packages gnucash)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix utils)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system cmake)
-  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
@@ -42,9 +36,9 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages finance)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages icu4c)
@@ -56,155 +50,146 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
 
 (define-public gnucash
   ;; TODO: Unbundle libraries such as guile-json found under the "borrowed/"
   ;; directory.
   (package
     (name "gnucash")
-    (version "4.10")
+    (version "4.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/gnucash/gnucash%20%28stable%29/"
                            version "/gnucash-" version ".tar.bz2"))
        (sha256
-        (base32 "0fy9p5fgi2i0x7acg5fnkfdrxxd3dypi3ykvnj53hfbfky8vpm3z"))))
-    (build-system cmake-build-system)
-    (inputs
-     `(("guile" ,guile-3.0)
-       ("boost" ,boost)
-       ("icu4c" ,icu4c)
-       ("glib" ,glib)
-       ("gtk" ,gtk+)
-       ("libdbi" ,libdbi)
-       ("libdbi-drivers" ,libdbi-drivers)
-       ("libofx" ,libofx)
-       ("libxml2" ,libxml2)
-       ("libxslt" ,libxslt)
-       ("webkitgtk" ,webkitgtk-with-libsoup2)
-       ("aqbanking" ,aqbanking)
-       ("python" ,python)
-       ("perl-date-manip" ,perl-date-manip)
-       ("perl-finance-quote" ,perl-finance-quote)
-       ("tzdata" ,tzdata-for-tests)))
-    (native-inputs
-     `(("glib" ,glib "bin")             ; glib-compile-schemas, etc.
-       ("intltool" ,intltool)
-       ("gmp" ,gmp)
-       ("googlemock" ,(package-source googletest))
-       ("googletest" ,googletest)
-       ("gnucash-docs" ,gnucash-docs)
-       ("swig" ,swig)
-       ("pkg-config" ,pkg-config)))
-    (propagated-inputs
-     ;; dconf is required at runtime according to README.dependencies.
-     (list dconf))
+        (base32 "069b216dkpjs9hp32s4bhi6f76lbc81qvbmjmz0dxq3v1piys57q"))))
     (outputs '("out" "doc" "debug" "python"))
+    (build-system cmake-build-system)
     (arguments
-     `(#:test-target "check"
-       #:configure-flags '("-DWITH_PYTHON=ON")
-       #:make-flags '("GUILE_AUTO_COMPILE=0")
-       #:modules ((guix build cmake-build-system)
-                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
-                  (guix build utils))
-       #:imported-modules (,@%gnu-build-system-modules
+     (list
+      #:test-target "check"
+      #:configure-flags #~(list "-DWITH_PYTHON=ON")
+      #:make-flags #~(list "GUILE_AUTO_COMPILE=0")
+      #:imported-modules `(,@%gnu-build-system-modules
                            (guix build cmake-build-system)
                            (guix build glib-or-gtk-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-gmock
-           (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir "gmock")
-             (copy-recursively (assoc-ref inputs "googlemock") "gmock")
-             (setenv "GMOCK_ROOT" (string-append (getcwd) "/gmock/googlemock"))
-             #t))
-         (add-after 'unpack 'set-env-vars
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((tzdata (assoc-ref inputs "tzdata")))
-               ;; At least one test is time-related and requires this
-               ;; environment variable.
-               (setenv "TZDIR"
-                       (string-append tzdata
-                                      "/share/zoneinfo"))
-               (substitute* "CMakeLists.txt"
-                 (("set\\(SHELL /bin/bash\\)")
-                  (string-append "set(SHELL " (which "bash") ")")))
-               #t)))
-         ;; After wrapping gnc-fq-check and gnc-fq-helper we can no longer
-         ;; execute them with perl, so execute them directly instead.
-         (add-after 'unpack 'fix-finance-quote-check
-           (lambda _
-             (substitute* "gnucash/price-quotes.scm"
-                (("\"perl\" \"-w\" ") ""))
-             #t))
-         ;; The qof test requires the en_US, en_GB, and fr_FR locales.
-         (add-before 'check 'install-locales
-           (lambda _
-             (setenv "LOCPATH" (getcwd))
-             (invoke "localedef" "-i" "en_US" "-f" "UTF-8" "./en_US.UTF-8")
-             (invoke "localedef" "-i" "en_GB" "-f" "UTF-8" "./en_GB.UTF-8")
-             (invoke "localedef" "-i" "fr_FR" "-f" "UTF-8" "./fr_FR.UTF-8")
-             #t))
-         ;; There are about 100 megabytes of documentation.
-         (add-after 'install 'install-docs
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((docs (assoc-ref inputs "gnucash-docs"))
-                   (doc-output (assoc-ref outputs "doc")))
-               (mkdir-p (string-append doc-output "/share"))
-               (symlink (string-append docs "/share/gnome")
-                        (string-append doc-output "/share/gnome"))
-               #t)))
-         (add-after 'install 'split-python-bindings
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (python-output (assoc-ref outputs "python"))
-                    (python-bindings (string-append
+      #:modules '((guix build cmake-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-env-vars
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; At least one test is time-related and requires this
+              ;; environment variable.
+              (setenv "TZDIR" (search-input-directory inputs "share/zoneinfo"))
+              (substitute* "CMakeLists.txt"
+                (("set\\(SHELL /bin/bash\\)")
+                 (string-append "set(SHELL " (which "bash") ")")))))
+          ;; After wrapping gnc-fq-check and gnc-fq-helper we can no longer
+          ;; execute them with perl, so execute them directly instead.
+          (add-after 'unpack 'fix-finance-quote-check
+            (lambda _
+              (substitute* "gnucash/price-quotes.scm"
+                (("\"perl\" \"-w\" ") ""))))
+          ;; The qof test requires the en_US, en_GB, and fr_FR locales.
+          (add-before 'check 'install-locales
+            (lambda _
+              (setenv "LOCPATH" (getcwd))
+              (invoke "localedef" "-i" "en_US" "-f" "UTF-8" "./en_US.UTF-8")
+              (invoke "localedef" "-i" "en_GB" "-f" "UTF-8" "./en_GB.UTF-8")
+              (invoke "localedef" "-i" "fr_FR" "-f" "UTF-8" "./fr_FR.UTF-8")))
+          ;; There is about 100 MiB of documentation.
+          (add-after 'install 'install-docs
+            (lambda _
+              (mkdir-p (string-append #$output:doc "/share"))
+              (symlink (string-append
+                        #$(this-package-native-input "gnucash-docs")
+                        "/share/gnome")
+                       (string-append #$output:doc "/share/gnome"))))
+          (add-after 'install 'split-python-bindings
+            (lambda _
+              (let ((python-bindings (string-append
                                       "lib/python"
-                                      ,(version-major+minor
-                                        (package-version python)))))
-               (mkdir-p (string-append python-output "/" python-bindings))
-               (copy-recursively
-                (string-append out "/" python-bindings)
-                (string-append python-output "/" python-bindings))
-               (delete-file-recursively
-                (string-append out "/" python-bindings)))))
-         (add-after 'install-docs 'wrap-programs
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (for-each (lambda (prog)
-                         (wrap-program (string-append (assoc-ref outputs "out")
-                                                      "/bin/" prog)
-                           `("GNC_DBD_DIR" =
-                             (,(string-append
-                                (assoc-ref inputs "libdbi-drivers")
-                                "/lib/dbd")))
-                           `("PERL5LIB" ":" prefix
-                             ,(map (lambda (o)
-                                     (string-append o "/lib/perl5/site_perl/"
-                                                    ,(package-version perl)))
-                                   (if (string=? prog "gnc-fq-helper")
-                                       (list
-                                        ,@(transitive-input-references
-                                           'inputs
-                                           (map (lambda (l)
-                                                  (assoc l (package-inputs this-package)))
-                                                '("perl-finance-quote"
-                                                  "perl-date-manip"))))
-                                       (list
-                                        ,@(transitive-input-references
-                                           'inputs
-                                           (map (lambda (l)
-                                                  (assoc l (package-inputs this-package)))
-                                                '("perl-finance-quote")))))))))
-                       '("gnucash"
-                         "gnc-fq-check"
-                         "gnc-fq-helper"
-                         "gnc-fq-dump"))))
-         (add-after 'install 'glib-or-gtk-compile-schemas
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
-         (add-after 'install 'glib-or-gtk-wrap
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+                                      #$(version-major+minor
+                                         (package-version python)))))
+                (mkdir-p (string-append #$output:python "/" python-bindings))
+                (copy-recursively
+                 (string-append #$output "/" python-bindings)
+                 (string-append #$output:python "/" python-bindings))
+                (delete-file-recursively
+                 (string-append #$output "/" python-bindings)))))
+          (add-after 'install-docs 'wrap-programs
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (for-each
+               (lambda (prog)
+                 (wrap-program (search-input-file
+                                outputs (string-append "bin/" prog))
+                   `("GNC_DBD_DIR" =
+                     (,(search-input-directory inputs "lib/dbd")))
+                   `("PERL5LIB" ":" prefix
+                     ,(map (lambda (o)
+                             (string-append o "/lib/perl5/site_perl/"
+                                            #$(package-version perl)))
+                           (if (string=? prog "gnc-fq-helper")
+                               (list
+                                #$@(transitive-input-references
+                                    'inputs
+                                    (map (lambda (l)
+                                           (assoc l (package-inputs this-package)))
+                                         '("perl-finance-quote"
+                                           "perl-date-manip"))))
+                               (list
+                                #$@(transitive-input-references
+                                    'inputs
+                                    (map (lambda (l)
+                                           (assoc l (package-inputs this-package)))
+                                         '("perl-finance-quote")))))))))
+               '("gnucash"
+                 "gnc-fq-check"
+                 "gnc-fq-helper"
+                 "gnc-fq-dump"))))
+          (add-after 'install 'glib-or-gtk-compile-schemas
+            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+          (add-after 'install 'glib-or-gtk-wrap
+            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (native-inputs
+     (list gmp
+           `(,glib "bin")               ;glib-compile-schemas, etc.
+           gnucash-docs
+           googletest
+           intltool
+           pkg-config
+           swig))
+    (inputs
+     (list aqbanking
+           boost
+           glib
+           gtk+
+           guile-3.0
+           icu4c
+           libdbi
+           libdbi-drivers
+           libofx
+           libxml2
+           libxslt
+           perl-date-manip
+           perl-finance-quote
+           python
+           tzdata-for-tests
+           webkitgtk-with-libsoup2))
+    (propagated-inputs
+     ;; dconf is required at runtime according to README.dependencies.
+     (list dconf))
     (home-page "https://www.gnucash.org/")
     (synopsis "Personal and small business financial accounting software")
     (description
@@ -221,30 +206,31 @@ installed as well as Yelp, the Gnome help browser.")
 ;; This package is not public, since we use it to build the "doc" output of
 ;; the gnucash package (see above).  It would be confusing if it were public.
 (define gnucash-docs
-  (let ((revision ""))              ;set to the empty string when no revision
+  (let ((revision ""))               ;set to the empty string when no revision
     (package
       (name "gnucash-docs")
       (version (package-version gnucash))
       (source
        (origin
          (method url-fetch)
-         (uri (string-append "mirror://sourceforge/gnucash/gnucash%20%28stable%29/"
-                             version "/gnucash-docs-" version ".1" revision ".tar.gz"))
+         (uri (string-append
+               "mirror://sourceforge/gnucash/gnucash%20%28stable%29/"
+               version "/gnucash-docs-" version revision ".tar.gz"))
          (sha256
-          (base32 "0cf2m1lgpq6if89w8anz522nar5kwpfzi0kacymw17m42fzxz0cg"))))
+          (base32 "162qq8p76grczdnsd4qbpxn1d8ap6l2n1a00a601v5hij7rqwfx8"))))
       (build-system cmake-build-system)
       ;; These are native-inputs because they are only required for building the
       ;; documentation.
       (native-inputs
-       `(("libxml2" ,libxml2)
-         ;; The "check" target needs the docbook xml package for validating the
-         ;; DocBook XML during the tests.
-         ("docbook-xml" ,docbook-xml)
-         ("libxslt" ,libxslt)
-         ("docbook-xsl" ,docbook-xsl)
-         ("scrollkeeper" ,scrollkeeper)))
+       ;; The "check" target needs docbook-xml package to validate the DocBook
+       ;; XML during the tests.
+       (list docbook-xml
+             docbook-xsl
+             libxml2
+             libxslt
+             scrollkeeper))
       (arguments
-       `(#:tests? #f)) ;no test target
+       `(#:tests? #f))                  ;no test target
       (home-page "https://www.gnucash.org/")
       (synopsis "Documentation for GnuCash")
       (description
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 78318cfab9..e05970f98c 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -210,8 +210,8 @@ fractional-second-digits-append-item.js")
     (propagated-inputs
      (list nspr))                ; in the Requires.private field of mozjs-*.pc
     (home-page
-     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey")
-    (synopsis "Mozilla javascript engine")
+     "https://spidermonkey.dev/")
+    (synopsis "Mozilla JavaScript engine")
     (description "SpiderMonkey is Mozilla's JavaScript engine written
 in C/C++.")
     (license license:mpl2.0))) ; and others for some files
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 932deba3ad..590b56ea6a 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -567,109 +567,100 @@ printing and other features typical of a source code editor.")
     (home-page "https://developer.gnome.org/gtksourceview/")))
 
 (define-public gtksourceview
- (package
-   (name "gtksourceview")
-   (version "5.4.2")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnome/sources/gtksourceview/"
-                                 (version-major+minor version) "/"
-                                 "gtksourceview-" version ".tar.xz"))
-             (sha256
-              (base32
-               "1rwxnzq2vvck5ni5zsfnmnx2kgasi3a2n29w93g106c4xc3hw55d"))))
-   (build-system meson-build-system)
-   (arguments
-    (list
-     #:phases
-     #~(modify-phases %standard-phases
-         (add-after 'unpack 'patch-build
+  (package
+    (name "gtksourceview")
+    (version "5.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gtksourceview/"
+                                  (version-major+minor version) "/"
+                                  "gtksourceview-" version ".tar.xz"))
+              (sha256
+               (base32
+                "068dqhacvs65gnmrryahm6qs0q050admlpqqi1gy8wgh2p6qrraa"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-gtk-update-icon-cache
            (lambda _
              (substitute* "meson.build"
-               (("gnome.post_install" all)
-                (string-append "# " all)))))
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false"))))
          (add-before 'check 'pre-check
-           (lambda* (#:key inputs native-inputs #:allow-other-kgeys)
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
              (let ((Xvfb (search-input-file (or native-inputs inputs)
-                                            "/bin/Xvfb")))
+                                            "bin/Xvfb")))
                ;; Tests require a running X server.
-               (system (format #f "~a :1 &" Xvfb))
+               (system (string-append Xvfb " :1 &"))
                (setenv "DISPLAY" ":1")
                ;; For the missing /etc/machine-id.
-               (setenv "DBUS_FATAL_WARNINGS" "0")
-               #t))))))
-   (native-inputs
-    (list `(,glib "bin") ; for glib-genmarshal, etc.
-          intltool
-          itstool
-          gobject-introspection
-          pkg-config
-          vala
-          ;; For testing.
-          xorg-server-for-tests
-          shared-mime-info))
-   (propagated-inputs
-    ;; gtksourceview-5.0.pc refers to all these.
-    (list glib gtk libxml2 pcre2))
-   (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
-   (synopsis "GNOME source code widget")
-   (description "GtkSourceView is a text widget that extends the standard
+               (setenv "DBUS_FATAL_WARNINGS" "0")))))))
+    (native-inputs
+     (list `(,glib "bin")               ; for glib-genmarshal, etc.
+           gettext-minimal
+           gi-docgen
+           gobject-introspection-next
+           pkg-config
+           vala
+           ;; For testing.
+           xorg-server-for-tests
+           shared-mime-info))
+    (propagated-inputs
+     ;; gtksourceview-5.pc refers to all these.
+     (list fontconfig
+           fribidi
+           glib-next
+           gtk
+           libxml2
+           pango
+           pcre2))
+    (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
+    (synopsis "GNOME source code widget")
+    (description "GtkSourceView is a text widget that extends the standard
 GTK+ text widget GtkTextView.  It improves GtkTextView by implementing syntax
 highlighting and other features typical of a source code editor.")
-   (license license:lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
+;;; This older version is used by tepl.
 (define-public gtksourceview-4
- (package
-   (inherit gtksourceview)
-   (version "4.2.0")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnome/sources/gtksourceview/"
-                                 (version-major+minor version) "/"
-                                 "gtksourceview-" version ".tar.xz"))
-             (sha256
-              (base32
-               "0xgnjj7jd56wbl99s76sa1vjq9bkz4mdsxwgwlcphg689liyncf4"))))
-   (build-system gnu-build-system)
-   (arguments
-    '(#:phases
-      (modify-phases %standard-phases
-        (add-before
-         'check 'pre-check
-         (lambda* (#:key inputs #:allow-other-keys)
-           (let ((xorg-server (assoc-ref inputs "xorg-server")))
-             ;; Tests require a running X server.
-             (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
-             (setenv "DISPLAY" ":1")
-             ;; For the missing /etc/machine-id.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             #t))))))
-   (native-inputs
-    `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
-      ("intltool" ,intltool)
-      ("itstool" ,itstool)
-      ("gobject-introspection" ,gobject-introspection)
-      ("pkg-config" ,pkg-config)
-      ("vala" ,vala)
-      ;; For testing.
-      ("xorg-server" ,xorg-server-for-tests)
-      ("shared-mime-info" ,shared-mime-info)))
-   (propagated-inputs
-    ;; gtksourceview-3.0.pc refers to all these.
-    (list glib gtk+ libxml2))))
+  (package
+    (inherit gtksourceview)
+    (version "4.8.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gtksourceview/"
+                                  (version-major+minor version) "/"
+                                  "gtksourceview-" version ".tar.xz"))
+              (sha256
+               (base32
+                "10n61sa0g447nx73yapb00z57shp48gfvk1lv1s29ji0cd81j063"))))
+    (native-inputs
+     (modify-inputs (package-native-inputs gtksourceview)
+       (replace "gobject-introspection" gobject-introspection)))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs gtksourceview)
+       (replace "gtk" gtk+)
+       (replace "glib" glib)))))
 
 (define-public gtksourceview-3
- (package (inherit gtksourceview-4)
-   (name "gtksourceview")
-   (version "3.24.10")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnome/sources/" name "/"
-                                 (version-major+minor version) "/"
-                                 name "-" version ".tar.xz"))
-             (sha256
-              (base32
-               "16ym7jwiki4s1pilwr4incx0yg7ll94f1cajrnpndkxxs36hcm5b"))))))
+  (package
+    (inherit gtksourceview-4)
+    (name "gtksourceview")
+    (version "3.24.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1zbpj283b5ycz767hqz5kdq02wzsga65pp4fykvhg8xj6x50f6v9"))))
+    (build-system gnu-build-system)
+    (arguments (substitute-keyword-arguments (package-arguments gtksourceview)
+                 ((#:phases phases)
+                  `(modify-phases ,phases
+                     (delete 'disable-gtk-update-icon-cache)))))))
 
 (define-public gdk-pixbuf
   (package
@@ -992,9 +983,7 @@ application suites.")
            fribidi
            fontconfig
            freetype
-           (if (target-x86-64?)
-               librsvg
-               librsvg-2.40)
+           (librsvg-for-system)
            glib
            libcloudproviders-minimal
            libepoxy
@@ -1103,7 +1092,7 @@ application suites.")
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.6.7")
+    (version "4.8.0")
     (source
      (origin
        (method url-fetch)
@@ -1111,110 +1100,111 @@ application suites.")
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1s0hn1mqw9zzr99bgc5bj90am2x6vr5g5q23mmzmqajy9dy2xzgg"))
+        (base32 "0zxxvjnbmaahvm9lwm007dzgc0yl8qamkp1467c5kqyi6ws21mn8"))
        (patches
         (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
-     `(#:modules ((guix build utils)
+     (list
+      #:modules '((guix build utils)
                   (guix build meson-build-system)
                   ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
-       #:configure-flags
-       (list
-        "-Dbroadway-backend=true"       ;for broadway display-backend
-        "-Dcloudproviders=enabled"      ;for cloud-providers support
-        "-Dtracker=enabled"             ;for filechooser search support
-        "-Dcolord=enabled"              ;for color printing support
-        ,@(if (%current-target-system)
-              ;; If true, gtkdoc-scangobj will try to execute a
-              ;; cross-compiled binary.
-              '("-Dgtk_doc=false")
-              '("-Dgtk_doc=true"))
-        "-Dman-pages=true")
-       #:parallel-tests? #f             ;parallel tests are not supported
-       #:test-options '("--setup=x11"   ;defaults to wayland
-                        ;; Use the same test options as upstream uses for
-                        ;; their CI.
-                        "--suite=gtk"
-                        "--no-suite=gsk-compare-broadway")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
-           (assoc-ref glib-or-gtk:%standard-phases
-                      'generate-gdk-pixbuf-loaders-cache-file))
-         (add-after 'unpack 'patch-rst2man
-           (lambda _
-             (substitute* "docs/reference/gtk/meson.build"
-               (("find_program\\('rst2man'") "find_program('rst2man.py'"))))
-         (add-after 'unpack 'patch
-           (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
-             ;; Correct DTD resources of docbook.
-             (substitute* (find-files "docs" "\\.xml$")
-               (("http://www.oasis-open.org/docbook/xml/4.3/")
-                (string-append
-                 (assoc-ref (or native-inputs inputs) "docbook-xml-4.3")
-                 "/xml/dtd/docbook/")))
-             ;; Disable building of icon cache.
-             (substitute* "meson.build"
-               (("gtk_update_icon_cache: true")
-                "gtk_update_icon_cache: false"))
-             ;; Disable failing tests.
-             (substitute* (find-files "testsuite" "meson.build")
-               (("[ \t]*'empty-text.node',") "")
-               (("[ \t]*'testswitch.node',") "")
-               (("[ \t]*'widgetfactory.node',") "")
-               ;; The unaligned-offscreen test fails for unknown reasons, also
-               ;; on different distributions (see:
-               ;; https://gitlab.gnome.org/GNOME/gtk/-/issues/4889).
-               (("  'unaligned-offscreen',") ""))
-             (substitute* "testsuite/reftests/meson.build"
-               (("[ \t]*'label-wrap-justify.ui',") ""))))
-         (add-before 'build 'set-cache
-           (lambda _
-             (setenv "XDG_CACHE_HOME" (getcwd))))
-         (add-before 'check 'pre-check
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for those variables.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             ;; Required for the calendar test.
-             (setenv "TZDIR" (search-input-directory inputs
-                                                     "share/zoneinfo"))))
-         (add-after 'install 'move-files
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (assoc-ref outputs "bin"))
-                    (doc (assoc-ref outputs "doc")))
-               (for-each mkdir-p
-                         (list
-                          (string-append bin "/bin")
-                          (string-append bin "/share/applications")
-                          (string-append bin "/share/icons")
-                          (string-append bin "/share/man")
-                          (string-append bin "/share/metainfo")
-                          (string-append doc "/share/doc")))
-               ;; Move programs and related files to output 'bin'.
-               (for-each (lambda (dir)
-                           (rename-file
-                            (string-append out dir)
-                            (string-append bin dir)))
-                         (list
-                          "/bin"
-                          "/share/applications"
-                          "/share/icons"
-                          "/share/man"
-                          "/share/metainfo"))
-               ;; Move HTML documentation to output 'doc'.
-               (rename-file
-                (string-append out "/share/doc")
-                (string-append doc "/share/doc"))))))))
+      #:configure-flags
+      #~(list
+         "-Dbroadway-backend=true"      ;for broadway display-backend
+         "-Dcloudproviders=enabled"     ;for cloud-providers support
+         "-Dtracker=enabled"            ;for filechooser search support
+         "-Dcolord=enabled"             ;for color printing support
+         #$@(if (%current-target-system)
+                ;; If true, gtkdoc-scangobj will try to execute a
+                ;; cross-compiled binary.
+                '("-Dgtk_doc=false")
+                '("-Dgtk_doc=true"))
+         "-Dman-pages=true")
+      #:test-options '(list "--setup=x11" ;defaults to wayland
+                            ;; Use the same test options as upstream uses for
+                            ;; their CI.
+                            "--suite=gtk"
+                            "--no-suite=gsk-compare-broadway")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
+            (assoc-ref glib-or-gtk:%standard-phases
+                       'generate-gdk-pixbuf-loaders-cache-file))
+          (add-after 'unpack 'patch-rst2man
+            (lambda _
+              (substitute* "docs/reference/gtk/meson.build"
+                (("find_program\\('rst2man'")
+                 "find_program('rst2man.py'"))))
+          (add-after 'unpack 'patch
+            (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
+              ;; Correct DTD resources of docbook.
+              (substitute* (find-files "docs" "\\.xml$")
+                (("http://www.oasis-open.org/docbook/xml/4.3/")
+                 (string-append #$(this-package-native-input "docbook-xml")
+                                "/xml/dtd/docbook/")))
+              ;; Disable building of icon cache.
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))
+              ;; Disable failing tests.
+              (substitute* (find-files "testsuite" "meson.build")
+                (("[ \t]*'empty-text.node',") "")
+                (("[ \t]*'testswitch.node',") "")
+                (("[ \t]*'widgetfactory.node',") "")
+                ;; The unaligned-offscreen test fails for unknown reasons, also
+                ;; on different distributions (see:
+                ;; https://gitlab.gnome.org/GNOME/gtk/-/issues/4889).
+                (("  'unaligned-offscreen',") ""))
+              (substitute* "testsuite/reftests/meson.build"
+                (("[ \t]*'label-wrap-justify.ui',") "")
+                ;; The inscription-markup.ui fails due to /etc/machine-id
+                ;; related warnings (see:
+                ;; https://gitlab.gnome.org/GNOME/gtk/-/issues/5169).
+                (("[ \t]*'inscription-markup.ui',") ""))))
+          (add-before 'build 'set-cache
+            (lambda _
+              (setenv "XDG_CACHE_HOME" (getcwd))))
+          (add-before 'check 'pre-check
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for those variables.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0")
+              ;; Required for the calendar test.
+              (setenv "TZDIR" (search-input-directory inputs
+                                                      "share/zoneinfo"))))
+          (add-after 'install 'move-files
+            (lambda _
+              (for-each mkdir-p
+                        (list
+                         (string-append #$output:bin "/bin")
+                         (string-append #$output:bin "/share/applications")
+                         (string-append #$output:bin "/share/icons")
+                         (string-append #$output:bin "/share/man")
+                         (string-append #$output:bin "/share/metainfo")
+                         (string-append #$output:doc "/share/doc")))
+              ;; Move programs and related files to output 'bin'.
+              (for-each (lambda (dir)
+                          (rename-file
+                           (string-append #$output dir)
+                           (string-append #$output:bin dir)))
+                        (list
+                         "/bin"
+                         "/share/applications"
+                         "/share/icons"
+                         "/share/man"
+                         "/share/metainfo"))
+              ;; Move HTML documentation to output 'doc'.
+              (rename-file
+               (string-append #$output "/share/doc")
+               (string-append #$output:doc "/share/doc")))))))
     (native-inputs
      (list docbook-xml-4.3
            docbook-xsl
@@ -1254,7 +1244,6 @@ application suites.")
            libgudev                     ;for gstreamer-gl
            libjpeg-turbo
            libpng
-           librsvg
            libtiff
            python
            rest
@@ -1263,7 +1252,7 @@ application suites.")
      ;; Following dependencies are referenced in .pc files.
      (list cairo
            fontconfig
-           librsvg
+           (librsvg-for-system)
            glib
            graphene
            libepoxy
@@ -2542,15 +2531,13 @@ shell scripts.  Example of how to use @code{yad} can be consulted at
    (inputs (list gtk+))
    (native-inputs (list pkg-config))
    (arguments
-    `(#:tests? #f                       ; no check
-      #:make-flags
-      (list (string-append "CC=" ,(cc-for-target))
-            ;; makefile uses PREFIX for the binary location
-            (string-append "PREFIX=" (assoc-ref %outputs "out")
-                           "/bin"))
-      #:phases
-      (modify-phases %standard-phases
-        (delete 'configure))))                    ; no configure script
+    (list
+     #:tests? #f                        ; no check target
+     #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                          (string-append "PREFIX=" #$output))
+     #:phases
+     #~(modify-phases %standard-phases
+         (delete 'configure))))         ; no configure script
    (synopsis "Drag and drop source/target for X")
    (description
     "Dragon is a lightweight drag-and-drop source for X where you can run:
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 43eb448c7e..db653f8c93 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -30,6 +30,7 @@
 ;;; Copyright © 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2021, 2022 Alice BRENON <alice.brenon@ens-lyon.fr>
 ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -75,6 +76,7 @@
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
@@ -297,14 +299,13 @@ systems.")
          "042lrkn0dbpjn5ivj6j26jzb1fwrj8c1aj18ykxja89isg0hiali"))))
     (build-system haskell-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'set-check-variables
-           (lambda _
-             (setenv "PATH" (string-append (getcwd) "/dist/build/alex:"
-                                           (getenv "PATH")))
-             (setenv "alex_datadir" (string-append (getcwd) "/data"))
-             #t)))))
+      (list #:phases
+            #~(modify-phases %standard-phases
+                (add-before 'check 'set-check-variables
+                  (lambda _
+                    (setenv "PATH" (string-append (getcwd) "/dist/build/alex:"
+                                                  (getenv "PATH")))
+                    (setenv "alex_datadir" (string-append (getcwd) "/data")))))))
     (inputs (list ghc-quickcheck))
     (native-inputs
      (list which))
@@ -16099,6 +16100,24 @@ data Dec a
 @end example")
     (license license:bsd-3)))
 
+(define-public ghc-ansi2html
+  (package
+    (name "ghc-ansi2html")
+    (version "0.9")
+    (source (origin
+              (method url-fetch)
+              (uri (hackage-uri "Ansi2Html" version))
+              (sha256
+               (base32
+                "1dqq1rnx1w0cn4w11knmxvn7qy4lg4m39dgw4rs6r2pjqzgrwarh"))))
+    (build-system haskell-build-system)
+    (home-page "http://janzzstimmpfle.de/~jens/software/Ansi2Html/")
+    (synopsis "Convert ANSI Terminal Sequences to nice HTML markup")
+    (description
+     "This package enables integration of terminal screen state in html
+pages.")
+    (license license:bsd-3)))
+
 (define-public ghc-singleton-bool
   (package
     (name "ghc-singleton-bool")
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 0343f58f2c..4be80ecbe0 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -41,6 +41,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages anthy)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -71,7 +72,7 @@
 (define-public ibus
   (package
     (name "ibus")
-    (version "1.5.24")
+    (version "1.5.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ibus/ibus/"
@@ -79,143 +80,149 @@
                                   version "/ibus-" version ".tar.gz"))
               (sha256
                (base32
-                "07s2ly75xv50bqg37mn37i9akqvcfd45k2mbplxrsqk3a2b3mwxb"))))
+                "1pwppcy0xpidxa7db9lykjjjj1rcjrqf5l88f77hgxlnvdddmyvf"))))
     (build-system glib-or-gtk-build-system)
     (outputs '("out" "doc"))
     (arguments
-     `(#:parallel-build? #f ; race condition discovered with emoji support
-       #:configure-flags (list "--enable-python-library"
-                               "--enable-gtk-doc"
-                               "--enable-memconf"
-                               (string-append
-                                "--with-unicode-emoji-dir="
-                                (assoc-ref %build-inputs "unicode-emoji")
-                                "/share/unicode/emoji")
-                               (string-append
-                                "--with-emoji-annotation-dir="
-                                (assoc-ref %build-inputs "unicode-cldr-common")
-                                "/share/unicode/cldr/common/annotations")
-                               (string-append "--with-ucd-dir="
-                                              (assoc-ref %build-inputs "ucd")
-                                              "/share/ucd")
-                               "--enable-wayland")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             ;; These tests require /etc/machine-id.
-             (with-directory-excursion "src/tests"
-               (substitute* '("ibus-share.c" "ibus-compose.c"
-                              "ibus-keypress.c")
-                 (("[ \t]*return g_test_run \\(\\);") "")))))
-         (add-after 'unpack 'patch-docbook-xml
-           (lambda* (#:key inputs #:allow-other-keys)
-             (with-directory-excursion "docs/reference/ibus"
-               (substitute* "ibus-docs.sgml.in"
-                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
-                  (string-append (assoc-ref inputs "docbook-xml")
-                                 "/xml/dtd/docbook/"))))))
-         (add-after 'unpack 'patch-python-target-directories
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((root (string-append (assoc-ref outputs "out")
-                                        "/lib/python"
-                                        ,(version-major+minor (package-version python))
-                                        "/site-packages")))
-               (substitute* "configure"
-                 (("(py2?overridesdir)=.*" _ var)
-                  (string-append var "=" root "/gi/overrides/"))
-                 (("(pkgpython2dir=).*" _ var)
-                  (string-append var root "/ibus"))))))
-         (add-before 'configure 'disable-dconf-update
-           (lambda _
-             (substitute* "data/dconf/Makefile.in"
-               (("dconf update") "echo dconf update"))))
-         (add-after 'unpack 'delete-generated-files
-           (lambda _
-             (for-each (lambda (file)
-                         (let ((c (string-append (string-drop-right file 4) "c")))
-                           (when (file-exists? c)
-                             (format #t "deleting ~a\n" c)
-                             (delete-file c))))
-                       (find-files "." "\\.vala"))))
-         (add-after 'unpack 'fix-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/ibusenginesimple.c"
-               (("/usr/share/X11/locale")
-                (search-input-directory inputs
-                                        "share/X11/locale")))
-             (substitute* "ui/gtk3/xkblayout.vala"
-               (("\"(setxkbmap|xmodmap)\"" _ prog)
-                (string-append "\""
-                               (search-input-file inputs
-                                                  (string-append "bin/" prog))
-                               "\"")))))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; Tests write to $HOME.
-             (setenv "HOME" (getcwd))
-             ;; Tests look for $XDG_RUNTIME_DIR.
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             ;; For missing '/etc/machine-id'.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             ;; Tests require a running X server.
-             (system "Xvfb :1 +extension GLX &")
-             (setenv "DISPLAY" ":1")
-             ;; Tests require running iBus daemon.
-             (system "./bus/ibus-daemon --daemonize")))
-         (add-after 'install 'move-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc")))
-               (mkdir-p (string-append doc "/share"))
-               (rename-file
-                (string-append out "/share/gtk-doc")
-                (string-append doc "/share/gtk-doc")))))
-         (add-after 'wrap-program 'wrap-with-additional-paths
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Make sure 'ibus-setup' runs with the correct PYTHONPATH and
-             ;; GI_TYPELIB_PATH.
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/ibus-setup")
-                 `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
-                 `("GI_TYPELIB_PATH" ":" prefix
-                   (,(getenv "GI_TYPELIB_PATH")
-                    ,(string-append out "/lib/girepository-1.0"))))))))))
+     (list
+      #:configure-flags #~(list "--enable-python-library"
+                                "--enable-gtk-doc"
+                                "--enable-memconf"
+                                (string-append
+                                 "--with-unicode-emoji-dir="
+                                 (search-input-directory %build-inputs
+                                                         "share/unicode/emoji"))
+                                (string-append
+                                 "--with-emoji-annotation-dir="
+                                 (search-input-directory
+                                  %build-inputs
+                                  "share/unicode/cldr/common/annotations"))
+                                (string-append
+                                 "--with-ucd-dir="
+                                 (search-input-directory %build-inputs
+                                                         "share/ucd"))
+                                "--enable-wayland"
+                                "--disable-systemd-services")
+      #:make-flags
+      ;; The GUI tests not only require a DISPLAY, but also a window manager
+      ;; since IBus needs to receive focus-in/out events to test IBus with GTK
+      ;; applications (see: https://github.com/ibus/ibus/issues/2307).
+      #~(list (string-append "DISABLE_GUI_TESTS=ibus-compose "
+                             "ibus-inputcontext-create "
+                             "xkb-latin-layouts "))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-failing-tests
+            (lambda _
+              ;; These tests require /etc/machine-id.
+              (with-directory-excursion "src/tests"
+                (substitute* '("ibus-share.c" "ibus-compose.c"
+                               "ibus-keypress.c")
+                  (("[ \t]*return g_test_run \\(\\);") "")))))
+          (add-after 'unpack 'patch-docbook-xml
+            (lambda* (#:key inputs #:allow-other-keys)
+              (with-directory-excursion "docs/reference/ibus"
+                (substitute* "ibus-docs.sgml.in"
+                  (("http://www.oasis-open.org/docbook/xml/4.1.2/")
+                   (string-append #$(this-package-native-input "docbook-xml")
+                                  "/xml/dtd/docbook/"))))))
+          (add-after 'unpack 'patch-python-target-directories
+            (lambda _
+              (let ((root (string-append #$output
+                                         "/lib/python"
+                                         #$(version-major+minor
+                                            (package-version python))
+                                         "/site-packages")))
+                (substitute* "configure"
+                  (("(py2?overridesdir)=.*" _ var)
+                   (string-append var "=" root "/gi/overrides/"))
+                  (("(pkgpython2dir=).*" _ var)
+                   (string-append var root "/ibus"))))))
+          (add-before 'configure 'disable-dconf-update
+            (lambda _
+              (substitute* "data/dconf/Makefile.in"
+                (("dconf update") "echo dconf update"))))
+          (add-after 'unpack 'delete-generated-files
+            (lambda _
+              (for-each (lambda (file)
+                          (let ((c (string-append (string-drop-right file 4) "c")))
+                            (when (file-exists? c)
+                              (format #t "deleting ~a\n" c)
+                              (delete-file c))))
+                        (find-files "." "\\.vala"))))
+          (add-after 'unpack 'fix-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/ibusenginesimple.c"
+                (("/usr/share/X11/locale")
+                 (search-input-directory inputs "share/X11/locale")))
+              (substitute* "ui/gtk3/xkblayout.vala"
+                (("\"(setxkbmap|xmodmap)\"" _ prog)
+                 (format #f "~s" (search-input-file
+                                  inputs (string-append "bin/" prog)))))))
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests write to $HOME.
+              (setenv "HOME" (getcwd))
+              ;; Tests look for $XDG_RUNTIME_DIR.
+              (setenv "XDG_RUNTIME_DIR" (getcwd))
+              ;; For missing '/etc/machine-id'.
+              (setenv "DBUS_FATAL_WARNINGS" "0")
+              ;; Tests require a running X server.
+              (system "Xvfb :1 +extension GLX &")
+              (setenv "DISPLAY" ":1")
+              ;; Tests require running iBus daemon.
+              (system "./bus/ibus-daemon --daemonize")))
+          (add-after 'install 'move-doc
+            (lambda _
+              (mkdir-p (string-append #$output:doc "/share"))
+              (rename-file
+               (string-append #$output "/share/gtk-doc")
+               (string-append #$output:doc "/share/gtk-doc"))))
+          (add-after 'wrap-program 'wrap-with-additional-paths
+            (lambda* (#:key outputs #:allow-other-keys)
+              ;; Make sure 'ibus-setup' runs with the correct PYTHONPATH and
+              ;; GI_TYPELIB_PATH.
+              (wrap-program (search-input-file outputs "bin/ibus-setup")
+                `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
+                `("GI_TYPELIB_PATH" ":" prefix
+                  (,(getenv "GI_TYPELIB_PATH")
+                   ,(string-append #$output "/lib/girepository-1.0")))))))))
     (inputs
-     `(("dbus" ,dbus)
-       ("dconf" ,dconf)
-       ("glib" ,glib)
-       ("gtk2" ,gtk+-2)
-       ("gtk+" ,gtk+)
-       ("iso-codes" ,iso-codes)
-       ("json-glib" ,json-glib)
-       ("libnotify" ,libnotify)
-       ("libx11" ,libx11)
-       ("libxkbcommon" ,libxkbcommon)
-       ("libxtst" ,libxtst)
-       ("pygobject" ,python-pygobject)
-       ("python" ,python)
-       ("python-dbus" ,python-dbus)
-       ("setxkbmap" ,setxkbmap)
-       ("ucd" ,ucd)
-       ("unicode-cldr-common" ,unicode-cldr-common)
-       ("unicode-emoji" ,unicode-emoji)
-       ("wayland" ,wayland)
-       ("xmodmap" ,xmodmap)))
+     (list bash-minimal
+           dbus
+           dconf
+           glib
+           gtk+-2
+           gtk+
+           iso-codes
+           json-glib
+           libnotify
+           libx11
+           libxkbcommon
+           libxtst
+           python-pygobject
+           python
+           python-dbus
+           setxkbmap
+           ucd
+           unicode-cldr-common
+           unicode-emoji
+           wayland
+           xmodmap))
     (native-inputs
-     `(("docbook-xml" ,docbook-xml-4.1.2)
-       ("glib" ,glib "bin")             ; for glib-genmarshal
-       ("gettext" ,gettext-minimal)
-       ("gnome-common" ,gnome-common)
-       ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler
-       ("gtk+:bin" ,gtk+ "bin")
-       ("gtk-doc" ,gtk-doc)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python-wrapper" ,python-wrapper)
-       ("vala" ,vala)
-       ("which" ,which)
-       ("xorg-server" ,xorg-server-for-tests)))
+     (list docbook-xml-4.1.2
+           `(,glib "bin")               ;for glib-genmarshal
+           gettext-minimal
+           gnome-common
+           gobject-introspection        ;for g-ir-compiler
+           `(,gtk+ "bin")
+           gtk-doc
+           perl
+           pkg-config
+           python-wrapper
+           vala
+           which
+           xorg-server-for-tests))
     (native-search-paths
      (list (search-path-specification
             (variable "IBUS_COMPONENT_PATH")
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 0225f72651..aa8efd97c6 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -391,7 +391,7 @@ many popular formats.")
            mesa
            netcdf
            libpng
-           proj
+           proj-7
            python
            ;("pugixml" ,pugixml)
            sqlite
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index ccc36007b4..d1e04c3ae0 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
-;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +22,7 @@
 (define-module (gnu packages ipfs)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix download)
   #:use-module (guix build-system go)
@@ -229,10 +230,28 @@ written in Go.")
        (file-name (string-append name "-" version "-source"))))
     (build-system go-build-system)
     (arguments
-     `(#:unpack-path "github.com/ipfs/go-ipfs"
-       #:import-path "github.com/ipfs/go-ipfs/cmd/ipfs"))
+     (list
+      #:unpack-path "github.com/ipfs/go-ipfs"
+      #:import-path "github.com/ipfs/go-ipfs/cmd/ipfs"
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; https://github.com/ipfs/kubo/blob/master/docs/command-completion.md
+          (add-after 'install 'install-bashcompletion
+            (lambda _
+              (let ((completiondir (string-append #$output
+                                                  "/etc/bash_completion.d")))
+                (mkdir-p completiondir)
+                (with-output-to-file (string-append completiondir "/ipfs")
+                  (lambda _
+                    (invoke #$(if (%current-target-system)
+                                  "ipfs"
+                                  #~(string-append #$output "/bin/ipfs"))
+                            "commands" "completion" "bash")))))))))
     (native-inputs
-     (list python-minimal-wrapper zsh))
+     (append (if (%current-target-system)
+                 (list this-package)
+                 '())
+             (list python-minimal-wrapper zsh)))
     (home-page "https://ipfs.io")
     (synopsis "Go implementation of IPFS, a peer-to-peer hypermedia protocol")
     (description "IPFS is a global, versioned, peer-to-peer file system.  It
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index ce6bc4fe9d..8b3b172ae9 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -8081,12 +8081,14 @@ more efficient storage-wise than an uncompressed bitmap (as implemented in the
     (name "java-slf4j-api")
     (version "1.7.25")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://www.slf4j.org/dist/slf4j-"
-                                  version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/qos-ch/slf4j")
+                    (commit (string-append "v_" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "13j51sgzmhhdrfa74gkal5zpip7r1440dh7zsi2c8bpb2zs1v8kb"))
+                "15n42zq3k1iyn752nwdcbs44hxns2rmxhglwjfr4np7lxx56apjl"))
               (modules '((guix build utils)))
               ;; Delete bundled jars.
               (snippet
@@ -8182,6 +8184,38 @@ all events to System.err.  Only messages of level INFO and higher are
 printed.")
     (license license:expat)))
 
+(define-public java-slf4j-nop
+  (package
+    (name "java-slf4j-nop")
+    (version "1.7.25")
+    (source (package-source java-slf4j-api))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "slf4j-nop.jar"
+       #:source-dir "slf4j-nop/src/main"
+       #:test-dir "slf4j-nop/src/test"
+       #:phases (modify-phases %standard-phases
+                  ;; The tests need some test classes from slf4j-api
+                  (add-before 'check 'build-slf4j-api-test-helpers
+                    (lambda _
+                      ;; Add current dir to CLASSPATH ...
+                      (setenv "CLASSPATH"
+                              (string-append (getcwd) ":"
+                                             (getenv "CLASSPATH")))
+                      ;; ... and build test helper classes here:
+                      (apply invoke
+                             `("javac" "-d" "."
+                               ,@(find-files "slf4j-api/src/test" ".*\\.java")))))
+                  (replace 'install
+                    (install-from-pom "slf4j-nop/pom.xml")))))
+    (propagated-inputs (list java-slf4j-api))
+    (native-inputs (list java-junit java-hamcrest-core))
+    (home-page "https://www.slf4j.org/")
+    (synopsis "SLF4J binding that silently discards all logging messages")
+    (description "Binding/provider for NOP, an implementation that silently
+discards all logging messages.")
+    (license license:expat)))
+
 (define-public antlr2
   (package
     (name "antlr2")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 6103f0cdd2..3400740649 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -44,7 +44,7 @@
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
-;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com>
 ;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
@@ -1469,7 +1469,7 @@ supported under @file{/sys/class/backlight/}.")
 (define-public v4l2loopback-linux-module
   (package
     (name "v4l2loopback-linux-module")
-    (version "0.12.5")
+    (version "0.12.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1478,7 +1478,7 @@ supported under @file{/sys/class/backlight/}.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qi4l6yam8nrlmc3zwkrz9vph0xsj1cgmkqci4652mbpbzigg7vn"))))
+                "1yghxl7gjr1zxi3a1kiz6d7yh68z64xayzm925zan4jqhrwv1h68"))))
     (build-system linux-module-build-system)
     (arguments
      (list #:tests? #f))                ; no test suite
@@ -8655,11 +8655,11 @@ of Linux application development.")
                (base32
                 "066g4ri2k8pdflclvr2919f6x98gmqrqyj1xyiingw2nn2pwgcf1"))))
     (arguments
-     '(#:configure-flags
-       (list (string-append "-Dudevrulesdir=" (assoc-ref %outputs "out")
-                            "/lib/udev/rules.d")
-             "-Dsystemd=disabled"
-             "-Dsession-managers=[]")))
+     (list
+      #:configure-flags
+      #~(list (string-append "-Dudevrulesdir=" #$output "/lib/udev/rules.d")
+              "-Dsystemd=disabled"
+              "-Dsession-managers=[]")))
     (inputs (modify-inputs (package-inputs pipewire)
               (prepend avahi
                        bluez
@@ -9291,3 +9291,30 @@ desktop.")
 directly from the kernel device and prints a device description and the events
 with the value and the symbolic name.")
     (license license:gpl2+)))
+
+(define-public tp-smapi-module
+  (package
+    (name "tp-smapi-module")
+    (version "0.43")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/linux-thinkpad/tp_smapi")
+                    (commit (string-append "tp-smapi/" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rjb0njckczc2mj05cagvj0lkyvmyk6bw7wkiinv81lw8m90g77g"))))
+    (build-system linux-module-build-system)
+    (arguments
+     `(#:tests? #f))                    ;there are none.
+    (home-page "https://github.com/linux-thinkpad/tp_smapi")
+    (synopsis
+     "Linux Kernel module exposing features of ThinkPad hardware")
+    (description
+     "This package provides a Linux Kernel module that allows to control
+battery charging of specific ThinkPad laptops.  It also includes an improved
+version of the HDAPS driver.  The underlying hardware interfaces are
+@acronym{SMAPI, System Management Application Program Interface} and direct
+access to the embedded controller.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index d07eace479..07fca27e1e 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -35,6 +35,8 @@
 ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2022 Thomas Albers Raviola <thomas@thomaslabs.org>
 ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2022 Trevor Richards <trev@trevdev.ca>
+;;; Copyright © 2022 Artyom Bologov <mail@aartaka.me>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -184,6 +186,34 @@ portable between implementations.")
 (define-public ecl-alexandria
   (sbcl-package->ecl-package sbcl-alexandria))
 
+(define-public sbcl-alea
+  (package
+    (name "sbcl-alea")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/eXodiquas/alea")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cl-alea" version))
+       (sha256
+        (base32 "0nd9fdjli22ygfw3c8k9nh7d36c92866hics5aij6x7ly1q781gz"))))
+    (build-system asdf-build-system/sbcl)
+    (native-inputs (list sbcl-fiveam))
+    (synopsis "Dice rolling library")
+    (description
+     "This package provides a Common Lisp library for dice rolling and working
+with dice-roll statistics.")
+    (home-page "https://github.com/eXodiquas/alea")
+    (license license:expat)))
+
+(define-public cl-alea
+  (sbcl-package->cl-source-package sbcl-alea))
+
+(define-public ecl-alea
+  (sbcl-package->ecl-package sbcl-alea))
+
 (define-public sbcl-map-bind
   (let ((commit "532d55d93540c632e22b2cd264b5daa5f9d3d900")
         (revision "0"))
@@ -292,6 +322,37 @@ collection.")
 (define-public cl-bodge-utilities
   (sbcl-package->cl-source-package sbcl-bodge-utilities))
 
+(define-public sbcl-meta
+  (let ((commit "74faea662139fbbfb9c99341aaed989f5b0e9da3")
+        (revision "0"))
+    (package
+      (name "sbcl-meta")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.common-lisp.net/frideau/meta")
+               (commit commit)))
+         (file-name (git-file-name "cl-meta" version))
+         (sha256
+          (base32 "08s53zj3mcx82kszp1bg2vsb4kydvkc70kj4hpq9h1l5a1wh44cy"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       (list sbcl-named-readtables))
+      (home-page "https://gitlab.common-lisp.net/frideau/meta")
+      (synopsis "Recursive-descent parser DSL for Common Lisp")
+      (description
+       "This package provides a recursive-descent parser DSL for Common Lisp.
+It's intended as a simpler alternative to parser generators.")
+      (license license:bsd-2))))
+
+(define-public cl-meta
+  (sbcl-package->cl-source-package sbcl-meta))
+
+(define-public ecl-meta
+  (sbcl-package->ecl-package sbcl-meta))
+
 (define-public sbcl-bodge-queue
   (let ((commit "948c9a501dcd412689952d09eb7453ec2722336a")
         (revision "0"))
@@ -3808,6 +3869,37 @@ and designers will be able to understand the embedded HTML.")
 (define-public cl-markup-reader
   (sbcl-package->cl-source-package sbcl-markup-reader))
 
+(define-public sbcl-xml-emitter
+  (package
+    (name "sbcl-xml-emitter")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/VitoVan/xml-emitter")
+                    (commit version)))
+              (file-name (git-file-name "cl-xml-emitter" version))
+              (sha256
+               (base32
+                "1w9yx8gc4imimvjqkhq8yzpg3kjrp2y37rjix5c1lnz4s7bxvhk9"))))
+    (build-system asdf-build-system/sbcl)
+    (native-inputs (list sbcl-1am))
+    (inputs (list sbcl-cl-utilities))
+    (synopsis "Common lisp library for emitting XML output")
+    (description
+     "This package provides functions to emit XML, with some complexity for
+handling indentation.  It can be used to produce all sorts of useful XML
+output; it has an RSS 2.0 emitter built in, so you can make RSS feeds
+trivially.")
+    (home-page "https://www.cliki.net/xml-emitter")
+    (license license:expat)))
+
+(define-public cl-xml-emitter
+  (sbcl-package->cl-source-package sbcl-xml-emitter))
+
+(define-public ecl-xml-emitter
+  (sbcl-package->ecl-package sbcl-xml-emitter))
+
 (define-public sbcl-cl-mustache
   (package
     (name "sbcl-cl-mustache")
@@ -7375,8 +7467,8 @@ cl-plumbing libraries.")
   (sbcl-package->ecl-package sbcl-cl-octet-streams))
 
 (define-public sbcl-lzlib
-  (let ((commit "c8102fc8c959b7c418eb60657bd6c8b875f10ba9")
-        (revision "1"))
+  (let ((commit "22767ca12d1c1bd59a7ae1f9c5ef7d2e937206bb")
+        (revision "2"))
     (package
       (name "sbcl-lzlib")
       (version (git-version "2.0" revision commit))
@@ -7388,7 +7480,7 @@ cl-plumbing libraries.")
                (commit commit)))
          (file-name (git-file-name "cl-lzlib" version))
          (sha256
-          (base32 "1glg1y1s1mqgypvxp0ss11cicrddri006wqwhy47lgq7mk5853zz"))))
+          (base32 "1dxzlkay7aqcs65h2f7j7rl4sdjija60dshlahzyllfw174p9d3m"))))
       (build-system asdf-build-system/sbcl)
       (native-inputs
        (list sbcl-fiveam))
@@ -22041,6 +22133,106 @@ instead of #'FOO.
 (define-public ecl-nkeymaps
   (sbcl-package->ecl-package sbcl-nkeymaps))
 
+(define-public sbcl-njson
+  (package
+    (name "sbcl-njson")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/atlas-engineer/njson")
+                    (commit version)))
+              (file-name (git-file-name "cl-njson" version))
+              (sha256
+               (base32
+                "0lv3q1841s4avii1jp89r91jq21sids2ycpy2id0kzhrljzhmy6j"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs (list sbcl-cl-json))
+    (native-inputs (list sbcl-lisp-unit2))
+    (home-page "https://github.com/atlas-engineer/njson")
+    (synopsis "JSON handling framework for Common Lisp")
+    (description
+     "NJSON aims to make it convenient for one to decode, encode,
+and process JSON data, in the minimum keystrokes/minutes possible.
+
+NJSON is parser-independent, with existing Common Lisp JSON parsers being
+loadable as additional system.  @code{cl-json} is included by default, though.
+Conveniences that NJSON provides are:
+
+@itemize
+
+@item @code{encode} and @code{decode} as single entry points for JSON reading
+and writing, be it from streams/string/files, or from those.
+
+@item @code{jget}, @code{jrem}, @code{jtruep}, and their aliases to
+access/delete the decoded objects' properties and check their truth value
+without the need to worry about the low-level details of how these values are
+decoded.
+
+@item @code{jif}, @code{jwhen}, @code{jor}, @code{jand}, and other macros
+mimicking Lisp ones, while using truth values of JSON-decoded data.
+
+@end itemize\n")
+    (license license:bsd-3)))
+
+(define-public cl-njson
+  (sbcl-package->cl-source-package sbcl-njson))
+
+(define-public ecl-njson
+  (sbcl-package->ecl-package sbcl-njson))
+
+(define-public sbcl-nactivitypub
+  (package
+    (name "sbcl-nactivitypub")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/atlas-engineer/nactivitypub")
+                    (commit version)))
+              (file-name (git-file-name "cl-nactivitypub" version))
+              (sha256
+               (base32
+                "07n8a9cfzc96kwsb6z4v5ns09ad2qyq45bjb779azcs7ds144a6r"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs (list sbcl-cl-str
+                  sbcl-dexador
+                  sbcl-local-time
+                  sbcl-lparallel
+                  sbcl-njson
+                  sbcl-quri
+                  sbcl-serapeum))
+    (home-page "https://github.com/atlas-engineer/nactivitypub")
+    (synopsis
+     "Common Lisp implementation of ActivityPub and ActivityStreams standards")
+    (description
+     "This package provides a Common Lisp implementation of ActivityPub and
+ActivityStreams standards for social networking.
+
+Features:
+@itemize
+
+@item Parsing and un-parsing ActivityStreams JSON-LD objects to/from CLOS
+objects with convenient accessors on those.
+
+@item Sending and fetching ActivityStreams objects to/from the
+ActivityStreams-enabled HTTP(S) URLs.
+
+@item Semantic info extraction with methods like @code{name*}, @code{url*},
+@code{author*}, and @code{published*}.
+
+@item No reliance on JSON parser.  @code{njson} is used for parser-independent
+JSON handling.  Load the parser backend you prefer!
+
+@end itemize")
+    (license license:bsd-3)))
+
+(define-public cl-nactivitypub
+  (sbcl-package->cl-source-package sbcl-nactivitypub))
+
+(define-public ecl-nactivitypub
+  (sbcl-package->ecl-package sbcl-nactivitypub))
+
 (define-public sbcl-utils-kt
   (let ((commit "4adfe2889036ab5ffdd3cc2182ca2cc692bf11ff"))
     (package
@@ -23874,6 +24066,67 @@ processing named definitions.")
 (define-public ecl-definitions-systems
   (sbcl-package->ecl-package sbcl-definitions-systems))
 
+(define-public sbcl-draw-cons-tree
+  (let ((commit "04334f5885a85cd7127db8dda3f6d6686a0438b1")
+        (revision "0"))
+    (package
+      (name "sbcl-draw-cons-tree")
+      (version (git-version "1.0" revision commit))
+      ;; https://github.com/quicklisp/quicklisp-projects/issues/2149
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/phoe/draw-cons-tree")
+               (commit commit)))
+         (file-name (git-file-name "cl-draw-cons-tree" version))
+         (sha256
+          (base32 "1523bdkq8a5qn0qp9q7r16w47y6jb0hkfj7hbjfj6mg3xv001s3x"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       (list sbcl-fiveam sbcl-split-sequence))
+      (inputs
+       (list sbcl-alexandria))
+      (synopsis "Draw an ascii picture of a cons tree")
+      (description
+       "@code{cl-draw-cons-tree} draws a cons tree in ASCII-art style.")
+      (home-page "https://github.com/phoe/draw-cons-tree/")
+      (license license:unlicense))))
+
+(define-public cl-draw-cons-tree
+  (sbcl-package->cl-source-package sbcl-draw-cons-tree))
+
+(define-public ecl-draw-cons-tree
+  (sbcl-package->ecl-package sbcl-draw-cons-tree))
+
+(define-public sbcl-cl-morse
+  (package
+    (name "sbcl-cl-morse")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/em7/cl-morse")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cl-morse" version))
+       (sha256
+        (base32 "01sh34nhbsx2dsrb2r1vkd4j8lzm9gjd5jfi8a4cs4m3djjwhh5i"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs (list sbcl-cl-ppcre))
+    (native-inputs (list sbcl-fiveam))
+    (home-page "https://github.com/em7/cl-morse")
+    (synopsis "Morse code translation library for Common Lisp")
+    (description
+     "@code{cl-morse} is a Morse code translation library for Common Lisp.")
+    (license license:bsd-3)))
+
+(define-public cl-morse
+  (sbcl-package->cl-source-package sbcl-cl-morse))
+
+(define-public ecl-cl-morse
+  (sbcl-package->ecl-package sbcl-cl-morse))
+
 (define-public sbcl-smug
   (let ((commit "647a2428df297e1dd183ba7c19574bdb1320ae79")
         (revision "0"))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index e9c623dda3..77706c88ae 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -988,7 +988,7 @@ the HTML documentation of TXR.")
 (define-public txr
   (package
     (name "txr")
-    (version "280")
+    (version "281")
     (source
      (origin
        (method git-fetch)
@@ -997,7 +997,7 @@ the HTML documentation of TXR.")
              (commit (string-append "txr-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ni2yb9dggldgizfp13mvrw5vzk13pg74dpk2lyn9dijqvs293s4"))))
+        (base32 "18sncprahl41hcy9l6mc4vwlaiamkwrs805974g4vci4waccb37k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1236,7 +1236,7 @@ including a built-in database engine and a GUI system.")
 (define-public janet
   (package
     (name "janet")
-    (version "1.24.0")
+    (version "1.24.1")
     (source
      (origin
        (method git-fetch)
@@ -1245,7 +1245,7 @@ including a built-in database engine and a GUI system.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07kyjzbj5g197008n9qwpdnagylzlv8x4zbsf2d233mpskv3dixi"))))
+        (base32 "1zaf2z2x5mgfp2nwj3q6pmcj558mw1772a09xn8b8na0cahxlrmq"))))
     (build-system gnu-build-system)
     (arguments
      (list #:make-flags
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c61428486c..0a12065978 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -1097,7 +1097,7 @@ computing environments.")
 (define-public python-scikit-learn
   (package
     (name "python-scikit-learn")
-    (version "1.0.2")
+    (version "1.1.2")
     (source
      (origin
        (method git-fetch)
@@ -1107,7 +1107,7 @@ computing environments.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1rli53544vlsnmx4v4xcb8fdqcy5n3zksl4plwp76gsmrppb2lig"))))
+         "0wcngyfm2fl3vgyi2aq6j5fvky5185xjzgip64968wqj1hmir5nv"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1128,10 +1128,14 @@ computing environments.")
                ;; Some tests require write access to $HOME.
                (setenv "HOME" "/tmp")
 
-               (invoke "pytest" "sklearn" "-m" "not network"
-                       "-n" (number->string (parallel-job-count))
-                       ;; This test tries to access the internet.
-                       "-k" "not test_load_boston_alternative")))))))
+               ;; Step out of the source directory to avoid interference;
+               ;; we want to run the installed code with extensions etc.
+               (with-directory-excursion "/tmp"
+                 (invoke "pytest" "-vv" "--pyargs" "sklearn"
+                         "-m" "not network"
+                         "-n" (number->string (parallel-job-count))
+                         ;; This test tries to access the internet.
+                         "-k" "not test_load_boston_alternative"))))))))
     (inputs (list openblas))
     (native-inputs
      (list python-cython
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 520d70a0e2..43b4a66890 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
-;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020, 2022 Raghav Gururajan <rg@raghavgururajan.name>
 ;;; Copyright © 2020, 2021 Robert Karszniewicz <avoidr@posteo.de>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
@@ -2338,7 +2338,7 @@ QMatrixClient project.")
 (define-public mtxclient
   (package
     (name "mtxclient")
-    (version "0.8.0")
+    (version "0.8.2")
     (source
      (origin
        (method git-fetch)
@@ -2347,7 +2347,7 @@ QMatrixClient project.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0gkzgq6rzanvgyk47d25nqz7m0lwa3kz5pc0m4w0ada38xwhy2j9"))))
+        (base32 "041ckjvfxapv1q6x9xd8q70x43cz10x7p11aql58lnc0jp0kwry7"))))
     (arguments
      `(#:configure-flags
        (list
@@ -2383,7 +2383,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
 (define-public nheko
   (package
     (name "nheko")
-    (version "0.10.0")
+    (version "0.10.1")
     (source
      (origin
        (method git-fetch)
@@ -2392,7 +2392,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1n7czmv8mamaphpr2cnppddpgmb914pjd7msxng0fim6w7bhil14"))
+        (base32 "0a3wvv7vzh60hvyzy6776v6wa9d6n020684dqbcl4dw608mf4ahk"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -2805,10 +2805,10 @@ validating international phone numbers.")
    (license license:asl2.0)))
 
 (define-public chatty
- (package
-   (name "chatty")
-   (version "0.6.7")
-   (source (origin
+  (package
+    (name "chatty")
+    (version "0.6.7")
+    (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://source.puri.sm/Librem5/chatty.git")
@@ -2823,51 +2823,52 @@ validating international phone numbers.")
               (sha256
                (base32
                 "11q07vjrrjf3k00kk41vm79brpq0qigz7l328br3g0li979kz32v"))))
-   (build-system meson-build-system)
-   (arguments
-    '(#:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'skip-updating-desktop-database
-          (lambda _
-            (substitute* "meson.build"
-              (("meson.add_install_script.*") ""))))
-        (add-before 'check 'pre-check
-          (lambda* (#:key tests? #:allow-other-keys)
-            (when tests?
-              ;; One test requires a running Xorg server.  Start one.
-              (system "Xvfb :1 &")
-              (setenv "DISPLAY" ":1")
-              ;; HOME must be writable for writing configuration files.
-              (setenv "HOME" "/tmp")))))))
-   (native-inputs
-    (list gettext-minimal
-          `(,glib "bin")
-          pkg-config
-          protobuf
-          xorg-server-for-tests))
-   (inputs
-    (list feedbackd
-          folks
-          gnome-desktop
-          gsettings-desktop-schemas
-          gspell
-          json-glib
-          libgcrypt
-          libgee
-          libhandy
-          libolm
-          libphonenumber
-          modem-manager
-          pidgin
-          purple-mm-sms
-          sqlite))
-   (propagated-inputs
-    (list adwaita-icon-theme evolution-data-server))
-   (synopsis "Mobile client for XMPP and SMS messaging")
-   (description "Chatty is a chat program for XMPP and SMS.  It works on mobile
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-updating-desktop-database
+           (lambda _
+             (substitute* "meson.build"
+               (("meson.add_install_script.*") ""))))
+         (add-before 'check 'pre-check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; One test requires a running Xorg server.  Start one.
+               (system "Xvfb :1 &")
+               (setenv "DISPLAY" ":1")
+               ;; HOME must be writable for writing configuration files.
+               (setenv "HOME" "/tmp")))))))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           pkg-config
+           protobuf
+           xorg-server-for-tests))
+    (inputs
+     (list feedbackd
+           folks-with-libsoup2
+           gnome-desktop
+           gsettings-desktop-schemas
+           gspell
+           json-glib
+           libgcrypt
+           libgee
+           libhandy
+           libolm
+           libphonenumber
+           modem-manager
+           pidgin
+           purple-mm-sms
+           sqlite))
+    (propagated-inputs
+     (list adwaita-icon-theme evolution-data-server-3.44))
+    (synopsis "Mobile client for XMPP and SMS messaging")
+    (description "Chatty is a chat program for XMPP and SMS.  It works on mobile
 as well as on desktop platforms.  It's based on libpurple and ModemManager.")
-   (home-page "https://source.puri.sm/Librem5/chatty")
-   (license license:gpl3+)))
+    (home-page "https://source.puri.sm/Librem5/chatty")
+    (license license:gpl3+)))
 
 (define-public mosquitto
   (package
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 17010e6e82..079e233126 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -6895,3 +6895,9 @@ sending MIDI, OSC, and UDP to your audio/visual interfaces like Ableton,
 Renoise, VCV Rack, or SuperCollider.")
       (home-page "https://100r.co/site/orca.html")
       (license license:expat))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index f57aae2d24..ee4d91bd2a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2018, 2020-2022 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2018, 2020, 2021 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
@@ -2731,7 +2731,7 @@ procedure calls (RPCs).")
 (define-public openvswitch
   (package
     (name "openvswitch")
-    (version "2.16.1")
+    (version "3.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2739,7 +2739,7 @@ procedure calls (RPCs).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1x0k0pw6jykrfgb8rq56bp2ghxd433d55pmr8mxy9gbzw1nc1vbi"))))
+                "17hr7x9iahhmskp70pv59v4bsn86r2jmbaw37vs03jsz3k1a57gs"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2751,18 +2751,22 @@ procedure calls (RPCs).")
        (modify-phases %standard-phases
          (add-after 'unpack 'use-absolute-/bin/sh
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((bash (assoc-ref inputs "bash-minimal")))
+             (let ((/bin/sh (search-input-file inputs "bin/sh")))
                (substitute* "ovsdb/ovsdb-server.c"
-                 (("/bin/sh") (string-append bash "/bin/sh"))))))
+                 (("/bin/sh") /bin/sh)))))
          (add-before 'check 'adjust-tests
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((bash (assoc-ref inputs "bash-minimal"))
-                    (/bin/sh (string-append bash "/bin/sh")))
+             (let ((/bin/sh (search-input-file inputs "bin/sh")))
                (with-fluids ((%default-port-encoding "ISO-8859-1"))
                  (substitute* (find-files "tests" ".*(run|testsuite)$")
                    (("#! /bin/sh")
                     (string-append "#! " /bin/sh))
 
+                   ;; grep 3.8 emits a warning for 'egrep' which breaks
+                   ;; expected output; adjust accordingly.
+                   (("egrep")
+                    "grep -E")
+
                    ;; The tests use 'kill -0' to check whether a test has
                    ;; completed, but it does not work in the build container
                    ;; because zombies are not reaped automatically (PID 1 is
@@ -2789,13 +2793,14 @@ ps --no-header -p $1 -o state= | grep -qv '^Z$'"
                      "DBDIR=/tmp"
                      "install"))))))
     (native-inputs
-     `(("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ;; for testing
-       ("bash" ,bash)                   ;for 'compgen'
-       ("procps" ,procps)
-       ("util-linux" ,util-linux)))
+     (list perl
+           pkg-config
+           python-wrapper
+
+           ;; For testing.
+           bash                         ;for 'compgen'
+           procps
+           util-linux))
     (inputs
      (list bash-minimal libcap-ng openssl))
     (synopsis "Virtual network switch")
@@ -2805,6 +2810,8 @@ ps --no-header -p $1 -o state= | grep -qv '^Z$'"
 massive network automation through programmatic extension, while still
 supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,
 IPFIX, RSPAN, CLI, LACP, 802.1ag).")
+    (properties
+     '((release-monitoring-url . "https://www.openvswitch.org/download/")))
     (license                            ; see debian/copyright for detail
      (list license:lgpl2.1              ; xenserver and utilities/bugtool
            license:gpl2                 ; datapath
@@ -3090,8 +3097,9 @@ can be whipped up with little effort.")
        (sha256
         (base32 "0haanralbvd12pvkyihgkmx9ld74dnzm1s7mzparfandl416ibff"))))
     (build-system gnu-build-system)
+    (native-inputs (list pkg-config))
     (inputs
-     (list libcap ncurses))
+     (list jansson libcap ncurses))
     (arguments
      `(#:tests? #f))                    ; tests require network access
     (home-page "https://www.bitwizard.nl/mtr/")
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 949d4486ef..b942703ff3 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -129,7 +129,17 @@ time-stamping or reference clock, sub-microsecond accuracy is possible.")
                         (file-name "ntp-gcc-compat.patch")
                         (sha256
                          (base32
-                          "13d28sg45rflc7kqiv30asrhna8n69wlpwx16l65rravgpvp90h2")))))
+                          "13d28sg45rflc7kqiv30asrhna8n69wlpwx16l65rravgpvp90h2")))
+                      ;; And another one that fixes the build with glibc 2.34:
+                      ;; <https://bugs.ntp.org/show_bug.cgi?id=3741>.
+                      (origin
+                        (method url-fetch)
+                        (uri "https://bugs.ntp.org/attachment.cgi?id=1814\
+&action=diff&collapsed=&headers=1&format=raw")
+                        (file-name "ntp-glibc-compat.patch")
+                        (sha256
+                         (base32
+                          "0z8ndaw3l086mbm42v9gfgxild1yvg0anxf3724lsalvgqlndcj4")))))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/patches/cmake-curl-certificates-3.24.patch b/gnu/packages/patches/cmake-curl-certificates-3.24.patch
new file mode 100644
index 0000000000..ca29c9001e
--- /dev/null
+++ b/gnu/packages/patches/cmake-curl-certificates-3.24.patch
@@ -0,0 +1,21 @@
+Submitted upstream at https://gitlab.kitware.com/cmake/cmake/-/merge_requests/7670.
+
+diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx
+index 28ee24dfe9..fc5405213a 100644
+--- a/Source/cmCurl.cxx
++++ b/Source/cmCurl.cxx
+@@ -38,6 +38,14 @@ std::string cmCurlSetCAInfo(::CURL* curl, const std::string& cafile)
+     ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cafile.c_str());
+     check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
+   }
++  /* Honor the user-configurable OpenSSL environment variables. */
++  else if (cmSystemTools::GetEnv("SSL_CERT_FILE", e)) {
++    ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, e.c_str());
++    check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
++  } else if (cmSystemTools::GetEnv("SSL_CERT_DIR", e)) {
++    ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAPATH, e.c_str());
++    check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: ");
++  }
+ #ifdef CMAKE_FIND_CAFILE
+ #  define CMAKE_CAFILE_FEDORA "/etc/pki/tls/certs/ca-bundle.crt"
+   else if (cmSystemTools::FileExists(CMAKE_CAFILE_FEDORA, true)) {
diff --git a/gnu/packages/patches/cmh-support-fplll.patch b/gnu/packages/patches/cmh-support-fplll.patch
deleted file mode 100644
index fae04f456b..0000000000
--- a/gnu/packages/patches/cmh-support-fplll.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Patch from the CMH git, after the 1.1.0 release.
-
-From 2328c819317dda2171217002268f57c74cedc476 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Emmanuel=20Thom=C3=A9?= <Emmanuel.Thome@inria.fr>
-Date: Tue, 7 Jun 2022 12:17:05 -0700
-Subject: [PATCH] patch suggested by @x-YVicto
-
----
- src/lll.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/lll.cpp b/src/lll.cpp
-index 83dab07..f005931 100644
---- a/src/lll.cpp
-+++ b/src/lll.cpp
-@@ -37,7 +37,7 @@
- #ifdef HAVE_FPLLL
- static void lll_fplll (mpz_t *v, mpz_t **M, const int m, const int n)
- {
--   ZZ_mat <mpz_t> Mp (m, n);
-+   fplll::ZZ_mat <mpz_t> Mp (m, n);
-    int i, j;
- 
-    for (i = 0; i < m; i++)
--- 
-2.36.1
-
diff --git a/gnu/packages/patches/emacs-kv-fix-tests.patch b/gnu/packages/patches/emacs-kv-fix-tests.patch
new file mode 100644
index 0000000000..35a6bf004c
--- /dev/null
+++ b/gnu/packages/patches/emacs-kv-fix-tests.patch
@@ -0,0 +1,30 @@
+From 4702849bfe7462fb6c6303786dac1b670c8f0f8f Mon Sep 17 00:00:00 2001
+From: Andrew Tropin <andrew@trop.in>
+Date: Wed, 14 Sep 2022 09:17:31 +0300
+Subject: [PATCH] remove copypasted kvaq test
+
+---
+ kv-tests.el | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/kv-tests.el b/kv-tests.el
+index 1713e5e..abd6a24 100644
+--- a/kv-tests.el
++++ b/kv-tests.el
+@@ -105,13 +105,6 @@
+   (should-not (equal "b" (kvaq "a" '((:a . :b)("a" . "b")))))
+   (should-not (kvaq "b" '((:a . :b)("a" . "b")))))
+ 
+-(ert-deftest kvaq ()
+-  "Test the simple assq."
+-  (should (equal :b (kvaq :a '((:a . :b)("a" . "b")))))
+-  (should (equal 2 (kvaq 1 '((1 . 2)("a" . "b")))))
+-  (should-not (equal "b" (kvaq "a" '((:a . :b)("a" . "b")))))
+-  (should-not (kvaq "b" '((:a . :b)("a" . "b")))))
+-
+ (ert-deftest kvaqc ()
+   "Test the simple assq."
+   (should (equal :b (kvaqc :a '((:a . :b)("a" . "b")))))
+-- 
+2.37.3
+
diff --git a/gnu/packages/patches/emacs-yasnippet-fix-tests.patch b/gnu/packages/patches/emacs-yasnippet-fix-tests.patch
index 475352d8db..c70cc75d92 100644
--- a/gnu/packages/patches/emacs-yasnippet-fix-tests.patch
+++ b/gnu/packages/patches/emacs-yasnippet-fix-tests.patch
@@ -9,12 +9,13 @@ Content-Transfer-Encoding: 8bit
 - Emacs 28 has a new mode ‘lisp-data-mode’ for Lisp data.
 - A test that was temporarily broken passes again.
 - The default for ‘org-adapt-indentation’ has changed.
+- buffer-list may be called with arguments when native-comp is enabled.
 ---
- yasnippet-tests.el | 41 ++++++++++++++++++++++++++---------------
- 1 file changed, 26 insertions(+), 15 deletions(-)
+ yasnippet-tests.el | 45 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 28 insertions(+), 17 deletions(-)
 
 diff --git a/yasnippet-tests.el b/yasnippet-tests.el
-index b8a7980f..9fadf00c 100644
+index f7ca2bb..7618ab7 100644
 --- a/yasnippet-tests.el
 +++ b/yasnippet-tests.el
 @@ -1,6 +1,6 @@
@@ -55,7 +56,21 @@ index b8a7980f..9fadf00c 100644
        ;; Some org-mode versions leave trailing whitespace, some don't.
        (delete-trailing-whitespace)
        (should (equal expected (buffer-string))))))
-@@ -1390,7 +1393,9 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
+@@ -1195,11 +1198,11 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
+   (let ((saved-sym (make-symbol "yas--buffer-list")))
+     `(let ((,saved-sym (symbol-function 'buffer-list)))
+        (cl-letf (((symbol-function 'buffer-list)
+-                  (lambda ()
++                  (lambda (&rest args)
+                     (cl-remove-if (lambda (buf)
+                                     (with-current-buffer buf
+                                       (eq major-mode 'lisp-interaction-mode)))
+-                                  (funcall ,saved-sym)))))
++                                  (funcall ,saved-sym args)))))
+          ,@body))))
+ 
+ 
+@@ -1356,7 +1359,9 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
                            ,@(if (fboundp 'prog-mode)
                                  '(prog-mode))
                            emacs-lisp-mode
@@ -66,7 +81,7 @@ index b8a7980f..9fadf00c 100644
                (observed (yas--modes-to-activate)))
           (should (equal major-mode (car observed)))
           (should (equal (sort expected #'string<) (sort observed #'string<))))))))
-@@ -1418,7 +1423,11 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
+@@ -1384,7 +1389,11 @@ hello ${1:$(when (stringp yas-text) (funcall func yas-text))} foo${1:$$(concat \
                                       '(prog-mode))
                                 emacs-lisp-mode
                                 and-also-this-one
@@ -79,7 +94,7 @@ index b8a7980f..9fadf00c 100644
                (observed (yas--modes-to-activate)))
           (should (equal expected-first
                          (cl-subseq observed 0 (length expected-first))))
-@@ -1691,9 +1700,11 @@ TODO: be meaner"
+@@ -1657,9 +1666,11 @@ TODO: be meaner"
    "Test expansion of snippets in org source blocks."
    ;; org 9+ no longer runs fontification for text-mode, so our hacks
    ;; don't work.  Note that old ert doesn't have skipping, so we have
@@ -93,3 +108,6 @@ index b8a7980f..9fadf00c 100644
                         :passed :failed)
    (let ((text-mode-hook #'yas-minor-mode))
      (do-yas-org-native-tab-in-source-block "text")))
+-- 
+2.37.2
+
diff --git a/gnu/packages/patches/eog-update-libportal-usage.patch b/gnu/packages/patches/eog-update-libportal-usage.patch
deleted file mode 100644
index 220a16ddc4..0000000000
--- a/gnu/packages/patches/eog-update-libportal-usage.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Fix eog to work with libportal-0.5
-
-This patch is extracted from upstream, see here
-https://gitlab.gnome.org/GNOME/eog/-/commit/a06e6325907e136678b0bbe7058c25d688034afd
-
-diff --git a/meson.build b/meson.build
-index 9a32e4bb..9d49aa45 100644
---- a/meson.build
-+++ b/meson.build
-@@ -165,10 +165,14 @@ config_h.set('HAVE_EXEMPI', enable_xmp)
- # xdg-desktop-portal support with libportal (optional)
- enable_libportal = get_option('libportal')
- if enable_libportal
--  libportal_dep = dependency('libportal', version: '>= 0.3', required: false)
-+  libportal_dep = dependency('libportal', version: '>= 0.5', required: false)
-   assert(libportal_dep.found() and cc.has_header('libportal/portal.h', dependencies: libportal_dep),
-          'xdg-desktop-portal support requested but library not found. Please use -Dlibportal=false')
- 
--  common_deps += libportal_dep
-+  libportal_gtk3_dep = dependency('libportal-gtk3', version: '>= 0.5', required: false)
-+  assert(libportal_gtk3_dep.found() and cc.has_header('libportal-gtk3/portal-gtk3.h', dependencies: libportal_gtk3_dep),
-+         'xdg-desktop-portal support requested but library not found. Please use -Dlibportal=false')
-+
-+  common_deps += [libportal_dep, libportal_gtk3_dep]
- endif
- config_h.set('HAVE_LIBPORTAL', enable_libportal)
-
-diff --git a/src/eog-util.c b/src/eog-util.c
-index 90b9768e..56d23472 100644
---- a/src/eog-util.c
-+++ b/src/eog-util.c
-@@ -45,7 +45,7 @@
- #include <glib/gi18n.h>
- #ifdef HAVE_LIBPORTAL
- #include <libportal/portal.h>
--#include <libportal/portal-gtk3.h>
-+#include <libportal-gtk3/portal-gtk3.h>
- #endif
- 
- void
diff --git a/gnu/packages/patches/gdm-default-session.patch b/gnu/packages/patches/gdm-default-session.patch
index 8325b6102b..27f7035bfb 100644
--- a/gnu/packages/patches/gdm-default-session.patch
+++ b/gnu/packages/patches/gdm-default-session.patch
@@ -4,12 +4,14 @@ and not in the directories listed in $XDG_DATA_DIRS.  The latter includes
 /run/current-system/profile, and only then.
 
 Fixes <https://bugs.gnu.org/37831>.
---- a/daemon/gdm-session.c	2021-07-23 15:16:15.164201000 +0000
-+++ b/daemon/gdm-session.c	2021-09-26 08:18:58.730134555 +0000
-@@ -354,25 +354,19 @@
+diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
+index 4b709731..3b83fcd3 100644
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -362,16 +362,15 @@ get_system_session_dirs (GdmSession *self,
          GArray *search_array = NULL;
          char **search_dirs;
-         int i;
+         int i, j;
 -        const gchar * const *system_data_dirs = g_get_system_data_dirs ();
  
          static const char *x_search_dirs[] = {
@@ -25,43 +27,44 @@ Fixes <https://bugs.gnu.org/37831>.
  
          search_array = g_array_new (TRUE, TRUE, sizeof (char *));
  
-         if (type == NULL || g_str_equal (type, "x11")) {
--                for (i = 0; system_data_dirs[i]; i++) {
--                        gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL);
--                        g_array_append_val (search_array, dir);
--                }
--
-                 g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs));
-         }
+@@ -380,11 +379,6 @@ get_system_session_dirs (GdmSession *self,
  
-@@ -382,16 +376,7 @@
- #ifdef ENABLE_USER_DISPLAY_SERVER
-                 g_array_prepend_val (search_array, wayland_search_dir);
+                 if (g_str_equal (supported_type, "x11") &&
+                     (type == NULL || g_str_equal (type, supported_type))) {
+-                        for (i = 0; system_data_dirs[i]; i++) {
+-                                gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL);
+-                                g_array_append_val (search_array, dir);
+-                        }
+-
+                         g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs));
+                 }
  
--                for (i = 0; system_data_dirs[i]; i++) {
--                        gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL);
--                        g_array_insert_val (search_array, i, dir);
--                }
- #else
--                for (i = 0; system_data_dirs[i]; i++) {
--                        gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL);
--                        g_array_append_val (search_array, dir);
--                }
+@@ -392,11 +386,6 @@ get_system_session_dirs (GdmSession *self,
+ #ifdef ENABLE_WAYLAND_SUPPORT
+                 if (g_str_equal (supported_type, "wayland") &&
+                     (type == NULL || g_str_equal (type, supported_type))) {
+-                        for (i = 0; system_data_dirs[i]; i++) {
+-                                gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL);
+-                                g_array_append_val (search_array, dir);
+-                        }
 -
-                 g_array_append_val (search_array, wayland_search_dir);
+                         g_array_append_val (search_array, wayland_search_dir);
+                 }
  #endif
-         }
-diff -ur a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
---- a/libgdm/gdm-sessions.c	2019-10-07 04:53:35.000000000 -0400
-+++ b/libgdm/gdm-sessions.c	2020-04-18 18:31:42.491348691 -0400
-@@ -245,35 +245,23 @@
+diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
+index d8b4d5cd..7ed8de91 100644
+--- a/libgdm/gdm-sessions.c
++++ b/libgdm/gdm-sessions.c
+@@ -275,7 +275,7 @@ collect_sessions (void)
                  "/etc/X11/sessions/",
                  DMCONFDIR "/Sessions/",
                  DATADIR "/gdm/BuiltInSessions/",
 -                DATADIR "/xsessions/",
 +                "/run/current-system/profile/share/xsessions/"
          };
- 
+         const gchar *supported_session_types_env = NULL;
+         g_auto (GStrv) supported_session_types = NULL;
+@@ -288,29 +288,17 @@ collect_sessions (void)
          names_seen_before = g_hash_table_new (g_str_hash, g_str_equal);
          xorg_search_array = g_ptr_array_new_with_free_func (g_free);
  
diff --git a/gnu/packages/patches/gdm-elogind-support.patch b/gnu/packages/patches/gdm-elogind-support.patch
index 39cd12dd22..5c8e3bd610 100644
--- a/gnu/packages/patches/gdm-elogind-support.patch
+++ b/gnu/packages/patches/gdm-elogind-support.patch
@@ -19,7 +19,7 @@ system and user units.
  6 files changed, 66 insertions(+), 42 deletions(-)
 
 diff --git a/common/meson.build b/common/meson.build
-index 074dd92e1..bca58f7c4 100644
+index 074dd92e..bca58f7c 100644
 --- a/common/meson.build
 +++ b/common/meson.build
 @@ -11,7 +11,7 @@ libgdmcommon_src = files(
@@ -32,10 +32,10 @@ index 074dd92e1..bca58f7c4 100644
    gio_dep,
    gio_unix_dep,
 diff --git a/data/meson.build b/data/meson.build
-index 7c5222eaf..403336c31 100644
+index 2dec4c23..c3452e1c 100644
 --- a/data/meson.build
 +++ b/data/meson.build
-@@ -168,41 +168,53 @@ else
+@@ -164,41 +164,53 @@ else
    service_config.set('PLYMOUTH_QUIT_SERVICE', '')
  endif
  
@@ -115,7 +115,7 @@ index 7c5222eaf..403336c31 100644
  # XSession
  if get_option('gdm-xsession')
 diff --git a/libgdm/meson.build b/libgdm/meson.build
-index 3f8cafbb7..83e95151b 100644
+index 3f8cafbb..83e95151 100644
 --- a/libgdm/meson.build
 +++ b/libgdm/meson.build
 @@ -56,7 +56,7 @@ libgdm_deps = [
@@ -128,12 +128,12 @@ index 3f8cafbb7..83e95151b 100644
  ]
  
 diff --git a/meson.build b/meson.build
-index e6fcf4b8b..a86a486b7 100644
+index 845f673e..d0ca41ef 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -92,21 +92,30 @@ xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp'))
+@@ -96,21 +96,30 @@ xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp'))
  if xdmcp_dep.found() and get_option('tcp-wrappers')
-   libwrap_dep = cc.find_library('libwrap')
+   libwrap_dep = cc.find_library('wrap')
  endif
 -# systemd
 -systemd_dep = dependency('systemd')
@@ -175,7 +175,7 @@ index e6fcf4b8b..a86a486b7 100644
  # Plymouth
  plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
  # Check for Solaris auditing API (ADT)
-@@ -313,6 +322,7 @@ summary({
+@@ -319,6 +328,7 @@ summary({
      'PAM Syslog': have_pam_syslog,
      'Supports PAM Extensions': pam_extensions_supported,
      'SeLinux': libselinux_dep.found(),
@@ -184,7 +184,7 @@ index e6fcf4b8b..a86a486b7 100644
      'Use UserDisplayServer': get_option('user-display-server'),
      'Use SystemdJournal': get_option('systemd-journal'),
 diff --git a/meson_options.txt b/meson_options.txt
-index 14e0b908b..5135d7d66 100644
+index 14e0b908..5135d7d6 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -12,6 +12,7 @@ option('initial-vt', type: 'integer', value: 1, description: 'Initial virtual te
@@ -206,6 +206,3 @@ index 14e0b908b..5135d7d66 100644
  option('tcp-wrappers', type: 'boolean', value: false, description: 'Use TCP wrappers.')
  option('udev-dir', type: 'string', value: '', description: 'Directory for udev rules file.')
  option('user', type: 'string', value: 'gdm', description: 'GDM\'s username.')
--- 
-GitLab
-
diff --git a/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch b/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch
index 4341e3fc30..2c095c8003 100644
--- a/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch
+++ b/gnu/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch
@@ -1,17 +1,11 @@
-From 444250fce55f916af993bc855930c6809686e4bd Mon Sep 17 00:00:00 2001
 From: Josselin Poiret <dev@jpoiret.xyz>
 Date: Tue, 23 Nov 2021 18:39:39 +0000
 Subject: [PATCH] Make GDM pass GDK_PIXBUF_MODULE_FILE to sessions
-
----
- daemon/gdm-launch-environment.c | 1 +
- 1 file changed, 1 insertion(+)
-
 diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c
-index 14ecfac2..3e618321 100644
+index 932c3e8a..a50dcc8c 100644
 --- a/daemon/gdm-launch-environment.c
 +++ b/daemon/gdm-launch-environment.c
-@@ -158,6 +158,7 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment,
+@@ -157,6 +157,7 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment,
                  "WINDOWPATH",
                  "XCURSOR_PATH",
                  "XDG_CONFIG_DIRS",
@@ -19,6 +13,3 @@ index 14ecfac2..3e618321 100644
                  NULL
          };
          char *system_data_dirs;
--- 
-2.33.1
-
diff --git a/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch b/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch
index 366fb91668..83d56ddf69 100644
--- a/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch
+++ b/gnu/packages/patches/gdm-remove-hardcoded-xwayland-path.patch
@@ -1,22 +1,28 @@
 Remove check for hardcoded Xwayland path in gdm.
 
----
- daemon/gdm-local-display-factory.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
 diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
-index da1093bb..37355c06 100644
+index 7de7b99c..065325f4 100644
 --- a/daemon/gdm-local-display-factory.c
 +++ b/daemon/gdm-local-display-factory.c
-@@ -203,7 +203,7 @@ gdm_local_display_factory_use_wayland (void)
+@@ -245,9 +245,9 @@ struct GdmDisplayServerConfiguration {
+         const char *session_type;
+ } display_server_configuration[] = {
  #ifdef ENABLE_WAYLAND_SUPPORT
-         gboolean wayland_enabled = FALSE;
-         if (gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled)) {
--                if (wayland_enabled && g_file_test ("/usr/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) )
-+                if (wayland_enabled)
-                         return TRUE;
-         }
+-        { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" },
++        { "wayland", GDM_KEY_WAYLAND_ENABLE, "", "wayland" },
  #endif
---
-2.33.0
-
+-        { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" },
++        { "xorg", GDM_KEY_XORG_ENABLE, "", "x11" },
+         { NULL, NULL, NULL },
+ };
+ 
+@@ -269,9 +269,6 @@ display_server_enabled (GdmLocalDisplayFactory *factory,
+                 if (!gdm_settings_direct_get_boolean (key, &enabled) || !enabled)
+                         return FALSE;
+ 
+-                if (!g_file_test (binary, G_FILE_TEST_IS_EXECUTABLE))
+-                        return FALSE;
+-
+                 return TRUE;
+         }
+ 
diff --git a/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch b/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch
index 44ab6a9471..6ea0daf6a7 100644
--- a/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch
+++ b/gnu/packages/patches/gdm-wayland-session-wrapper-from-env.patch
@@ -1,14 +1,10 @@
 Get wayland-session wrapper from environment.
 
----
- daemon/gdm-session.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
 diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
-index 4e303e70..1deca4e9 100644
+index 3b83fcd3..e60e6a57 100644
 --- a/daemon/gdm-session.c
 +++ b/daemon/gdm-session.c
-@@ -2888,8 +2888,9 @@ gdm_session_start_session (GdmSession *self,
+@@ -2933,8 +2933,9 @@ gdm_session_start_session (GdmSession *self,
                                                             allow_remote_connections? "--allow-remote-connections " : "",
                                                             command);
                          } else {
@@ -19,7 +15,7 @@ index 4e303e70..1deca4e9 100644
                                                             command);
                          }
                  } else if (run_xsession_script) {
-@@ -2942,8 +2942,9 @@
+@@ -2965,8 +2966,9 @@ gdm_session_start_session (GdmSession *self,
                                                             register_session ? "--register-session " : "",
                                                             self->selected_program);
                          } else {
@@ -30,6 +26,3 @@ index 4e303e70..1deca4e9 100644
                                                             self->selected_program);
                          }
                  } else {
---
-2.33.0
-
diff --git a/gnu/packages/patches/geoclue-config.patch b/gnu/packages/patches/geoclue-config.patch
index dd35b90be5..e4ef6f2d33 100644
--- a/gnu/packages/patches/geoclue-config.patch
+++ b/gnu/packages/patches/geoclue-config.patch
@@ -1,25 +1,27 @@
 Allow the configuration file to be specified via an environment variable.
 
---- geoclue-2.1.10/src/gclue-config.c	2015-04-07 09:50:07.721074380 +0200
-+++ geoclue-2.1.10/src/gclue-config.c	2015-04-07 10:27:26.613171960 +0200
-@@ -235,6 +235,11 @@
+diff --git a/src/gclue-config.c b/src/gclue-config.c
+index 7ab2a67..e41f3df 100644
+--- a/src/gclue-config.c
++++ b/src/gclue-config.c
+@@ -332,6 +332,11 @@ static void
  gclue_config_init (GClueConfig *config)
  {
          GError *error = NULL;
 +	const char *config_file_path;
 +
 +	config_file_path = g_getenv ("GEOCLUE_CONFIG_FILE");
-+	if (config_file_path == NULL)
-+	  config_file_path = CONFIG_FILE_PATH;
++	if (!config_file_path)
++            config_file_path = CONFIG_FILE_PATH;
  
-         config->priv =
-                 G_TYPE_INSTANCE_GET_PRIVATE (config,
-@@ -242,7 +247,7 @@
-                                             GClueConfigPrivate);
+         config->priv = gclue_config_get_instance_private(config);
          config->priv->key_file = g_key_file_new ();
-         g_key_file_load_from_file (config->priv->key_file,
--                                   CONFIG_FILE_PATH,
-+                                   config_file_path,
-                                    0,
+@@ -341,7 +346,7 @@ gclue_config_init (GClueConfig *config)
                                     &error);
          if (error != NULL) {
+                 g_critical ("Failed to load configuration file '%s': %s",
+-                            CONFIG_FILE_PATH, error->message);
++                            config_file_path, error->message);
+                 g_error_free (error);
+ 
+                 return;
diff --git a/gnu/packages/patches/gnome-boxes-add-guix-logo.patch b/gnu/packages/patches/gnome-boxes-add-guix-logo.patch
deleted file mode 100644
index e570675083..0000000000
--- a/gnu/packages/patches/gnome-boxes-add-guix-logo.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Taken from upstream commit: 9091c6849652fa083297bc12645d8c57a962874a.
-
-diff --git a/data/osinfo/guix-1.3.xml b/data/osinfo/guix-1.3.xml
-new file mode 100644
-index 00000000..d4e1c167
---- /dev/null
-+++ b/data/osinfo/guix-1.3.xml
-@@ -0,0 +1,9 @@
-+<libosinfo version="0.0.1">
-+
-+  <!-- Please read README.logos for any questions about usage of product logos in Boxes. !-->
-+
-+  <os id="http://guix.gnu.org/guix/1.3">
-+    <logo>https://gitlab.gnome.org/GNOME/gnome-boxes-logos/-/raw/master/logos/guix.svg</logo>
-+  </os>
-+
-+</libosinfo>
-diff --git a/data/osinfo/meson.build b/data/osinfo/meson.build
-index 46ff1570..d5531e60 100644
---- a/data/osinfo/meson.build
-+++ b/data/osinfo/meson.build
-@@ -7,6 +7,7 @@ osinfo_db = [
-   ['freedos-1.2.xml', 'gnome-boxes/osinfo/os/freedos.org'],
-   ['gnome-nightly.xml', 'gnome-boxes/osinfo/os/gnome.org'],
-   ['gnome-3.38.xml', 'gnome-boxes/osinfo/os/gnome.org'],
-+  ['guix-1.3.xml', 'gnome-boxes/osinfo/os/guix.gnu.org'],
-   ['manjaro-19.0.xml', 'gnome-boxes/osinfo/os/manjaro.org'],
-   ['nixos-20.03.xml', 'gnome-boxes/osinfo/os/nixos.org'],
-   ['opensuse-10.2.xml', 'gnome-boxes/osinfo/os/opensuse.org'],
--- 
-2.34.0
-
diff --git a/gnu/packages/patches/gnome-builder-update-libportal.patch b/gnu/packages/patches/gnome-builder-update-libportal.patch
deleted file mode 100644
index 1cf7f32132..0000000000
--- a/gnu/packages/patches/gnome-builder-update-libportal.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From b3bfa0df53a3749c3b73cb6c4bad5cab3fa549a1 Mon Sep 17 00:00:00 2001
-From: Abderrahim Kitouni <akitouni@gnome.org>
-Date: Sat, 25 Dec 2021 16:25:43 +0100
-Subject: [PATCH] build: use libportal 0.5
-
-This partly reverts 2aea4bd7d0ced77a7d0778517b4505af5dea2dac
----
- build-aux/flatpak/org.gnome.Builder.json                 | 7 ++++---
- meson.build                                              | 2 +-
- src/gstyle/gstyle-color-panel.c                          | 2 +-
- src/plugins/devhelp/gbp-devhelp-page.c                   | 2 +-
- src/plugins/open-with-external/gbp-owe-workbench-addin.c | 2 +-
- 5 files changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/build-aux/flatpak/org.gnome.Builder.json b/build-aux/flatpak/org.gnome.Builder.json
-index 02ac31ede..a32d29b92 100644
---- a/build-aux/flatpak/org.gnome.Builder.json
-+++ b/build-aux/flatpak/org.gnome.Builder.json
-@@ -601,15 +601,16 @@
-             "name" : "libportal",
-             "config-opts" : [
-                 "--libdir=/app/lib",
--                "--buildtype=debugoptimized"
-+                "--buildtype=debugoptimized",
-+                "-Dbackends=gtk3"
-             ],
-             "buildsystem" : "meson",
-             "builddir" : true,
-             "sources" : [
-                 {
-                     "type" : "archive",
--                    "url" : "https://github.com/flatpak/libportal/releases/download/0.4/libportal-0.4.tar.xz",
--                    "sha256" : "3cd5f50907831cf236b40aa14c5a14ccbbf08828cecb3286efa82ce03cacef28"
-+                    "url" : "https://github.com/flatpak/libportal/releases/download/0.5/libportal-0.5.tar.xz",
-+                    "sha256" : "d8c8cb18a34e5eeb26a39c94044c955995b01de0e139caac5e18c076cf821b3b"
-                 }
-             ]
-         },
-diff --git a/meson.build b/meson.build
-index 01737034b..494e0d752 100644
---- a/meson.build
-+++ b/meson.build
-@@ -284,7 +284,7 @@ libjsonrpc_glib_dep = dependency('jsonrpc-glib-1.0', version: '>= 3.41.0')
- libm_dep = cc.find_library('m', required: false)
- libpangoft2_dep = dependency('pangoft2', version: '>= 1.38.0')
- libpeas_dep = dependency('libpeas-1.0', version: '>= 1.22.0')
--libportal_dep = dependency('libportal', version: '>= 0.3', required: false)
-+libportal_dep = dependency('libportal-gtk3', required: false)
- libtemplate_glib_dep = dependency('template-glib-1.0', version: '>= 3.28.0')
- libvte_dep = dependency('vte-2.91', version: '>= 0.65.0')
- libwebkit_dep = dependency('webkit2gtk-4.0', version: '>= 2.26', required: false)
-diff --git a/src/gstyle/gstyle-color-panel.c b/src/gstyle/gstyle-color-panel.c
-index 15742a7be..a6295c168 100644
---- a/src/gstyle/gstyle-color-panel.c
-+++ b/src/gstyle/gstyle-color-panel.c
-@@ -30,7 +30,7 @@
- #include "gstyle-color.h"
- 
- #include <libportal/portal.h>
--#include <libportal/portal-gtk3.h>
-+#include <libportal-gtk3/portal-gtk3.h>
- 
- #define HSV_TO_SCALE_FACTOR (1.0 / 256.0)
- #define CIELAB_L_TO_SCALE_FACTOR (100.0 / 256.0)
-diff --git a/src/plugins/devhelp/gbp-devhelp-page.c b/src/plugins/devhelp/gbp-devhelp-page.c
-index 5d5c52b0d..2ac788414 100644
---- a/src/plugins/devhelp/gbp-devhelp-page.c
-+++ b/src/plugins/devhelp/gbp-devhelp-page.c
-@@ -25,7 +25,7 @@
- #include <webkit2/webkit2.h>
- 
- #include <libportal/portal.h>
--#include <libportal/portal-gtk3.h>
-+#include <libportal-gtk3/portal-gtk3.h>
- 
- #include "gbp-devhelp-page.h"
- #include "gbp-devhelp-search.h"
-diff --git a/src/plugins/open-with-external/gbp-owe-workbench-addin.c b/src/plugins/open-with-external/gbp-owe-workbench-addin.c
-index 51d2da844..816fe643f 100644
---- a/src/plugins/open-with-external/gbp-owe-workbench-addin.c
-+++ b/src/plugins/open-with-external/gbp-owe-workbench-addin.c
-@@ -23,7 +23,7 @@
- #include "gbp-owe-workbench-addin.h"
- 
- #include <libportal/portal.h>
--#include <libportal/portal-gtk3.h>
-+#include <libportal-gtk3/portal-gtk3.h>
- 
- struct _GbpOweWorkbenchAddin
- {
--- 
-GitLab
-
diff --git a/gnu/packages/patches/gnome-screenshot-meson-0.60.patch b/gnu/packages/patches/gnome-screenshot-meson-0.60.patch
deleted file mode 100644
index c80ce9d6a3..0000000000
--- a/gnu/packages/patches/gnome-screenshot-meson-0.60.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Fixes build issue with Meson 0.60.0. Taken from upstream
-https://gitlab.gnome.org/GNOME/gnome-screenshot/-/merge_requests/57
-
-From b60dad3c2536c17bd201f74ad8e40eb74385ed9f Mon Sep 17 00:00:00 2001
-From: Jack Hill <jackhill@jackhill.us>
-Date: Thu, 18 Nov 2021 00:46:58 -0500
-Subject: [PATCH] meson: remove extraneous positional argument
-
-* data/meson.build (desktop_file)
-  (metainfo_file): Remove extraneous positional argument.
-
-Closes #186
----
- data/meson.build | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/data/meson.build b/data/meson.build
-index fd570b3..4e2e2e8 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -1,7 +1,6 @@
- gnome = import('gnome')
- 
- desktop_file = i18n.merge_file(
--  'desktop',
-   type: 'desktop',
-   input: 'org.gnome.Screenshot.desktop.in',
-   output: 'org.gnome.Screenshot.desktop',
-@@ -23,7 +22,6 @@ if desktop_file_validate.found()
- endif
- 
- metainfo_file = i18n.merge_file(
--  'appdata',
-   input: 'org.gnome.Screenshot.metainfo.xml.in',
-   output: 'org.gnome.Screenshot.metainfo.xml',
-   po_dir: join_paths(meson.current_source_dir(), '../po'),
--- 
-2.33.1
-
diff --git a/gnu/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch b/gnu/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch
new file mode 100644
index 0000000000..8bb86467c0
--- /dev/null
+++ b/gnu/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch
@@ -0,0 +1,173 @@
+Names of libraries included in typelib files are opened by dlopen.
+Here we add the full path.
+
+This patch was provided by Luca Bruno <lucabru@src.gnome.org>,
+for 'gobject-introspection' 1.40.0 in Nix.
+
+It has since been updated to work with newer versions of
+gobject-introspection.
+
+diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
+index 1d39ab84..e12ed24e 100644
+--- a/giscanner/scannermain.py
++++ b/giscanner/scannermain.py
+@@ -95,6 +95,39 @@ def get_windows_option_group(parser):
+     return group
+ 
+ 
++def _get_default_fallback_libpath():
++    # Newer multiple-output-optimized stdenv has an environment variable
++    # $outputLib which in turn specifies another variable which then is used as
++    # the destination for the library contents (${!outputLib}/lib).
++    store_path = os.environ.get(os.environ.get("outputLib")) if "outputLib" in os.environ else None
++    if store_path is None:
++        outputs = os.environ.get("outputs", "out").split()
++        if "lib" in outputs:
++            # For multiple output derivations let's try whether there is a $lib
++            # environment variable and use that as the base store path.
++            store_path = os.environ.get("lib")
++        elif "out" in outputs:
++            # Otherwise we have a single output derivation, so the libraries
++            # most certainly will end up in "$out/lib".
++            store_path = os.environ.get("out")
++
++    if store_path is not None:
++        # Even if we have a $lib as output, there still should be a $lib/lib
++        # directory.
++        return os.path.join(store_path, 'lib')
++    else:
++        # If we haven't found a possible scenario, let's return an empty string
++        # so that the shared library won't be prepended with a path.
++        #
++        # Note that this doesn't mean that all hope is lost, because after all
++        # we can still use --fallback-library-path to set one.
++        #
++        # Also, we're not returning None, because that would make it very
++        # difficult to disable adding fallback paths altogether using something
++        # like: --fallback-library-path=""
++        return ""
++
++
+ def _get_option_parser():
+     parser = optparse.OptionParser('%prog [options] sources',
+                                    version='%prog ' + giscanner.__version__)
+@@ -220,6 +253,10 @@ match the namespace prefix.""")
+     parser.add_option("", "--compiler",
+                       action="store", dest="compiler", default=None,
+                       help="the C compiler to use internally")
++    parser.add_option("", "--fallback-library-path",
++                      action="store", dest="fallback_libpath",
++                      default=_get_default_fallback_libpath(),
++                      help="Path to prepend to unknown shared libraries")
+ 
+     group = get_preprocessor_option_group(parser)
+     parser.add_option_group(group)
+diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
+index 9f8ab5df..8aa37c99 100644
+--- a/giscanner/shlibs.py
++++ b/giscanner/shlibs.py
+@@ -57,6 +57,14 @@ def _ldd_library_pattern(library_name):
+     $""" % re.escape(library_name), re.VERBOSE)
+ 
+ 
++def _ldd_library_guix_pattern(library_name):
++    store_dir = re.escape(
++      os.environ.get("NIX_STORE", default="/gnu/store")
++    )
++    pattern = r'(%s(?:/[^/]*)+lib%s[^A-Za-z0-9_-][^\s\(\)]*)'
++    return re.compile(pattern % (store_dir, re.escape(library_name)))
++
++
+ # This is a what we do for non-la files. We assume that we are on an
+ # ELF-like system where ldd exists and the soname extracted with ldd is
+ # a filename that can be opened with dlopen().
+@@ -108,7 +116,8 @@ def _resolve_non_libtool(options, binary, libraries):
+             output = output.decode("utf-8", "replace")
+ 
+         shlibs = resolve_from_ldd_output(libraries, output)
+-        return list(map(sanitize_shlib_path, shlibs))
++        fallback_libpath = options.fallback_libpath or "";
++        return list(map(lambda p: os.path.join(fallback_libpath, p), map(sanitize_shlib_path, shlibs)))
+ 
+ 
+ def sanitize_shlib_path(lib):
+@@ -117,19 +126,18 @@ def sanitize_shlib_path(lib):
+     # In case we get relative paths on macOS (like @rpath) then we fall
+     # back to the basename as well:
+     # https://gitlab.gnome.org/GNOME/gobject-introspection/issues/222
+-    if sys.platform == "darwin":
+-        if not os.path.isabs(lib):
+-            return os.path.basename(lib)
+-        return lib
+-    else:
++
++    # Always use absolute paths if available
++    if not os.path.isabs(lib):
+         return os.path.basename(lib)
++    return lib
+ 
+ 
+ def resolve_from_ldd_output(libraries, output):
+     patterns = {}
+     for library in libraries:
+         if not os.path.isfile(library):
+-            patterns[library] = _ldd_library_pattern(library)
++            patterns[library] = (_ldd_library_pattern(library), _ldd_library_guix_pattern(library))
+     if len(patterns) == 0:
+         return []
+ 
+@@ -141,8 +149,12 @@ def resolve_from_ldd_output(libraries, output):
+         if line.endswith(':'):
+             continue
+         for word in line.split():
+-            for library, pattern in patterns.items():
+-                m = pattern.match(word)
++            for library, (pattern, guix_pattern) in patterns.items():
++                store_dir = os.environ.get("NIX_STORE", default="/gnu/store")
++                if line.find(store_dir) != -1:
++                    m = guix_pattern.match(word)
++                else:
++                    m = pattern.match(word)
+                 if m:
+                     del patterns[library]
+                     shlibs.append(m.group())
+diff --git a/giscanner/utils.py b/giscanner/utils.py
+index 31c7ea48..630002a8 100644
+--- a/giscanner/utils.py
++++ b/giscanner/utils.py
+@@ -114,16 +114,11 @@ def extract_libtool_shlib(la_file):
+     if dlname is None:
+         return None
+ 
+-    # Darwin uses absolute paths where possible; since the libtool files never
+-    # contain absolute paths, use the libdir field
+-    if platform.system() == 'Darwin':
+-        dlbasename = os.path.basename(dlname)
+-        libdir = _extract_libdir_field(la_file)
+-        if libdir is None:
+-            return dlbasename
+-        return libdir + '/' + dlbasename
+-    # Older libtools had a path rather than the raw dlname
+-    return os.path.basename(dlname)
++    dlbasename = os.path.basename(dlname)
++    libdir = _extract_libdir_field(la_file)
++    if libdir is None:
++        return dlbasename
++    return libdir + '/' + dlbasename
+ 
+ 
+ # Returns arguments for invoking libtool, if applicable, otherwise None
+diff --git a/tests/scanner/test_shlibs.py b/tests/scanner/test_shlibs.py
+index a8337c60..7f123103 100644
+--- a/tests/scanner/test_shlibs.py
++++ b/tests/scanner/test_shlibs.py
+@@ -40,7 +40,8 @@ class TestLddParser(unittest.TestCase):
+ 
+         self.assertEqual(
+             sanitize_shlib_path('/foo/bar'),
+-            '/foo/bar' if sys.platform == 'darwin' else 'bar')
++            # Always use an absolute filename for Guix
++            '/foo/bar')
+ 
+     def test_unresolved_library(self):
+         output = ''
diff --git a/gnu/packages/patches/gobject-introspection-cc-1.72.patch b/gnu/packages/patches/gobject-introspection-cc-1.72.patch
new file mode 100644
index 0000000000..d3b1df82af
--- /dev/null
+++ b/gnu/packages/patches/gobject-introspection-cc-1.72.patch
@@ -0,0 +1,15 @@
+Use gcc as the default C compiler if CC is not set.
+
+diff --git a/giscanner/__init__.py b/giscanner/__init__.py
+index 7c2f365a..607fe341 100644
+--- a/giscanner/__init__.py
++++ b/giscanner/__init__.py
+@@ -21,6 +21,8 @@ import os
+ builddir = os.environ.get('UNINSTALLED_INTROSPECTION_BUILDDIR')
+ if builddir is not None:
+     __path__.append(os.path.join(builddir, 'giscanner'))  # type: ignore  # mypy issue #1422
++if not 'CC' in os.environ:
++    os.environ['CC'] = 'gcc'
+ try:
+     from ._version import __version__
+ except ImportError:
diff --git a/gnu/packages/patches/gpaste-fix-paths.patch b/gnu/packages/patches/gpaste-fix-paths.patch
index be63878fe6..bacecd61a9 100644
--- a/gnu/packages/patches/gpaste-fix-paths.patch
+++ b/gnu/packages/patches/gpaste-fix-paths.patch
@@ -1,5 +1,7 @@
 This is copied from NixOS, which is under MIT licence.
 https://github.com/NixOS/nixpkgs/blob/master/pkgs/desktops/gnome/misc/gpaste/
+diff --git a/src/gnome-shell/extension.js b/src/gnome-shell/extension.js
+index c8773fd6..9efbed67 100644
 --- a/src/gnome-shell/extension.js
 +++ b/src/gnome-shell/extension.js
 @@ -6,6 +6,8 @@
@@ -10,15 +12,34 @@ https://github.com/NixOS/nixpkgs/blob/master/pkgs/desktops/gnome/misc/gpaste/
 +
  imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
  imports.gi.versions.GLib = '2.0';
- imports.gi.versions.GPaste = '1.0';
+ imports.gi.versions.GPaste = '2';
+diff --git a/src/gnome-shell/prefs.js b/src/gnome-shell/prefs.js
+index 32244ab2..74b85572 100644
 --- a/src/gnome-shell/prefs.js
 +++ b/src/gnome-shell/prefs.js
 @@ -6,6 +6,8 @@
  
- const Gettext = imports.gettext;
+ imports.gi.versions.GPasteGtk = '4';
  
 +imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@');
 +
- //const { GPaste } = imports.gi;
- 
  const ExtensionUtils = imports.misc.extensionUtils;
+ 
+ const { GPasteGtk } = imports.gi;
+diff --git a/src/libgpaste/gpaste/gpaste-settings.c b/src/libgpaste/gpaste/gpaste-settings.c
+index 7e53eb64..57c399fc 100644
+--- a/src/libgpaste/gpaste/gpaste-settings.c
++++ b/src/libgpaste/gpaste/gpaste-settings.c
+@@ -1013,7 +1013,11 @@ create_g_settings (void)
+     }
+     else
+     {
+-        return g_settings_new (G_PASTE_SETTINGS_NAME);
++        // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library
++        GSettingsSchemaSource *schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL);
++        g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE);
++        g_settings_schema_source_unref (schema_source);
++        return g_settings_new_full (schema, NULL, NULL);
+     }
+ }
+ 
diff --git a/gnu/packages/patches/gspell-dash-test.patch b/gnu/packages/patches/gspell-dash-test.patch
deleted file mode 100644
index 1c9d77cfba..0000000000
--- a/gnu/packages/patches/gspell-dash-test.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Somehow, Aspell 0.60.6.1 and aspell-dict-en-2016.11.20-0 don't consider
-this a valid spelling.  Skip it.
-
-TODO: Migrate to using hunspell. According to upstream, this bug won't be fixed.
-See https://bugzilla.gnome.org/show_bug.cgi?id=772406.
---- a/testsuite/test-checker.c	2017-03-24 09:50:50.000000000 -0400
-+++ b/testsuite/test-checker.c	2017-06-15 21:47:07.116173895 -0400
-@@ -105,10 +105,11 @@
- 	 * be considered deprecated, it is better to use hunspell, so WONTFIX.
- 	 * For more details, see:
- 	 * https://bugzilla.gnome.org/show_bug.cgi?id=772406
-+	 *
-+	 * correctly_spelled = gspell_checker_check_word (checker, "spell-checking", -1, &error);
-+	 * g_assert_no_error (error);
-+	 * g_assert (correctly_spelled);
- 	 */
--	correctly_spelled = gspell_checker_check_word (checker, "spell-checking", -1, &error);
--	g_assert_no_error (error);
--	g_assert (correctly_spelled);
- 
- 	correctly_spelled = gspell_checker_check_word (checker, "nrst-auie", -1, &error);
- 	g_assert_no_error (error);
diff --git a/gnu/packages/patches/hedgewars-network-bsd.patch b/gnu/packages/patches/hedgewars-network-bsd.patch
deleted file mode 100644
index 311ce8bf09..0000000000
--- a/gnu/packages/patches/hedgewars-network-bsd.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From f813f3d5b63bb5be1b5e0b44930e77656c547aad Mon Sep 17 00:00:00 2001
-From: Jens Petersen <none@none>
-Date: Wed, 8 Jul 2020 17:02:45 +0300
-Subject: [PATCH] update server network
-
----
- gameServer/Actions.hs                | 2 +-
- gameServer/CMakeLists.txt            | 3 ++-
- gameServer/ClientIO.hs               | 4 ++--
- gameServer/CoreTypes.hs              | 2 +-
- gameServer/OfficialServer/checker.hs | 5 ++---
- gameServer/Utils.hs                  | 6 +-----
- gameServer/hedgewars-server.cabal    | 3 ++-
- gameServer/hedgewars-server.hs       | 5 +++--
- 8 files changed, 14 insertions(+), 16 deletions(-)
-
-diff --git a/gameServer/Actions.hs b/gameServer/Actions.hs
-index 125d6ea832..c42d17b9a9 100644
---- a/gameServer/Actions.hs
-+++ b/gameServer/Actions.hs
-@@ -709,7 +709,7 @@ processAction RestartServer = do
-         args <- gets (runArgs . serverInfo)
-         io $ do
-             noticeM "Core" "Closing listening socket"
--            sClose sock
-+            close sock
-             noticeM "Core" "Spawning new server"
-             _ <- createProcess (proc "./hedgewars-server" args)
-             return ()
-diff --git a/gameServer/CMakeLists.txt b/gameServer/CMakeLists.txt
-index 5f2c882563..e71650c70c 100644
---- a/gameServer/CMakeLists.txt
-+++ b/gameServer/CMakeLists.txt
-@@ -9,7 +9,8 @@ check_haskell_package_exists(base "Control.Exception" mask 1)
- check_haskell_package_exists(containers "Data.Map" size 1)
- check_haskell_package_exists(vector "Data.Vector" length 1)
- check_haskell_package_exists(bytestring "Data.ByteString" pack 1)
--check_haskell_package_exists(network "Network.BSD" getHostName 0)
-+check_haskell_package_exists(network "Network.Socket" defaultHints 0)
-+check_haskell_package_exists(network-bsd "Network.BSD" getHostName 0)
- check_haskell_package_exists(time "Data.Time" getCurrentTime 0)
- check_haskell_package_exists(mtl "Control.Monad.State" fix 1)
- check_haskell_package_exists(sandi "Codec.Binary.Base64" encode 1)
-diff --git a/gameServer/ClientIO.hs b/gameServer/ClientIO.hs
-index 46dd40ed9f..0c97bde932 100644
---- a/gameServer/ClientIO.hs
-+++ b/gameServer/ClientIO.hs
-@@ -23,7 +23,7 @@ import qualified Control.Exception as Exception
- import Control.Monad.State
- import Control.Concurrent.Chan
- import Control.Concurrent
--import Network
-+import Network.Socket hiding (recv)
- import Network.Socket.ByteString
- import qualified Data.ByteString.Char8 as B
- ----------------
-@@ -90,7 +90,7 @@ clientSendLoop s tId chan ci = do
-             sendAll s $ B.unlines answer `B.snoc` '\n'
- 
-     if isQuit answer then
--        sClose s
-+        close s
-         else
-         clientSendLoop s tId chan ci
- 
-diff --git a/gameServer/CoreTypes.hs b/gameServer/CoreTypes.hs
-index f547df483a..72f35807e3 100644
---- a/gameServer/CoreTypes.hs
-+++ b/gameServer/CoreTypes.hs
-@@ -23,7 +23,7 @@ import Control.Concurrent
- import Data.Word
- import qualified Data.Map as Map
- import Data.Time
--import Network
-+import Network.Socket
- import Data.Function
- import Data.ByteString.Char8 as B
- import Data.Unique
-diff --git a/gameServer/OfficialServer/checker.hs b/gameServer/OfficialServer/checker.hs
-index 37df3208b9..b4ecb8fc57 100644
---- a/gameServer/OfficialServer/checker.hs
-+++ b/gameServer/OfficialServer/checker.hs
-@@ -28,8 +28,7 @@ import System.Directory
- import Control.Monad.State
- import Control.Concurrent.Chan
- import Control.Concurrent
--import Network
--import Network.BSD
-+import Network.BSD hiding (recv)
- import Network.Socket hiding (recv, sClose)
- import Network.Socket.ByteString
- import qualified Data.ByteString.Char8 as B
-@@ -207,7 +206,7 @@ main = withSocketsDo . forever $ do
- 
-     Exception.bracket
-         setupConnection
--        (\s -> noticeM "Core" "Shutting down" >> sClose s)
-+        (\s -> noticeM "Core" "Shutting down" >> close s)
-         (session login password (d ++ "/.hedgewars") exeFullname dataPrefix)
-     where
-         setupConnection = do
-diff --git a/gameServer/Utils.hs b/gameServer/Utils.hs
-index 3d81b7f7c6..9fd80c01ba 100644
---- a/gameServer/Utils.hs
-+++ b/gameServer/Utils.hs
-@@ -41,11 +41,7 @@ import CoreTypes
- 
- 
- sockAddr2String :: SockAddr -> IO B.ByteString
--sockAddr2String (SockAddrInet _ hostAddr) = liftM B.pack $ inet_ntoa hostAddr
--sockAddr2String (SockAddrInet6 _ _ (a, b, c, d) _) =
--    return $ B.pack $ (foldr1 (.)
--        $ List.intersperse (':':)
--        $ concatMap (\n -> (\(a0, a1) -> [showHex a0, showHex a1]) $ divMod n 65536) [a, b, c, d]) []
-+sockAddr2String = liftM (B.pack . fromJust . fst) . getNameInfo [] True False
- 
- maybeRead :: Read a => String -> Maybe a
- maybeRead s = case reads s of
-diff --git a/gameServer/hedgewars-server.cabal b/gameServer/hedgewars-server.cabal
-index 3c7f2418c9..9f764fd997 100644
---- a/gameServer/hedgewars-server.cabal
-+++ b/gameServer/hedgewars-server.cabal
-@@ -57,7 +57,8 @@ Executable checker
-     containers,
-     vector,
-     bytestring,
--    network >= 2.3 && < 3.0,
-+    network >= 2.3,
-+    network-bsd,
-     mtl >= 2,
-     sandi,
-     hslogger,
-diff --git a/gameServer/hedgewars-server.hs b/gameServer/hedgewars-server.hs
-index e47ae2891d..7e6ab8fa38 100644
---- a/gameServer/hedgewars-server.hs
-+++ b/gameServer/hedgewars-server.hs
-@@ -50,10 +50,11 @@ server si = do
-     proto <- getProtocolNumber "tcp"
-     E.bracket
-         (socket AF_INET Stream proto)
--        sClose
-+        close
-         (\sock -> do
-             setSocketOption sock ReuseAddr 1
--            bindSocket sock (SockAddrInet (listenPort si) iNADDR_ANY)
-+            iNADDR_ANY <- addrAddress . head <$> getAddrInfo Nothing (Just "0") (Just (show (listenPort si)))
-+            bind sock iNADDR_ANY
-             listen sock maxListenQueue
-             startServer si{serverSocket = Just sock}
-         )
diff --git a/gnu/packages/patches/libgda-cve-2021-39359.patch b/gnu/packages/patches/libgda-cve-2021-39359.patch
new file mode 100644
index 0000000000..5e14e79393
--- /dev/null
+++ b/gnu/packages/patches/libgda-cve-2021-39359.patch
@@ -0,0 +1,33 @@
+From bebdffb4de586fb43fd07ac549121f4b22f6812d Mon Sep 17 00:00:00 2001
+From: "Douglas R. Reno" <renodr@linuxfromscratch.org>
+Date: Mon, 18 Oct 2021 13:18:01 -0500
+Subject: [PATCH] Fix CVE-2021-39359 by forcing TLS certificate validation
+
+This was done by adding "ssl-use-system-ca-file", TRUE to the options
+for each soup_session_new_with_options() call that was made.
+
+Tested on Linux From Scratch 11.0 and Debian 11.
+
+Fixes #249
+---
+ providers/web/gda-web-provider.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/providers/web/gda-web-provider.c b/providers/web/gda-web-provider.c
+index cf8d14dc3..cc818895f 100644
+--- a/providers/web/gda-web-provider.c
++++ b/providers/web/gda-web-provider.c
+@@ -355,8 +355,8 @@ gda_web_provider_open_connection (GdaServerProvider *provider, GdaConnection *cn
+ 	g_rec_mutex_init (& (cdata->mutex));
+ 	cdata->server_id = NULL;
+ 	cdata->forced_closing = FALSE;
+-	cdata->worker_session = soup_session_new ();
+-	cdata->front_session = soup_session_new_with_options ("max-conns-per-host", 1, NULL);
++	cdata->worker_session = soup_session_new_with_options ("ssl-use-system-ca-file", TRUE, NULL);
++	cdata->front_session = soup_session_new_with_options ("max-conns-per-host", 1, "ssl-use-system-ca-file", TRUE, NULL);
+ 	if (use_ssl) {
+ 		server_url = g_string_new ("https://");
+ 		g_print ("USING SSL\n");
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/libgda-fix-build.patch b/gnu/packages/patches/libgda-fix-build.patch
new file mode 100644
index 0000000000..35f5b9694b
--- /dev/null
+++ b/gnu/packages/patches/libgda-fix-build.patch
@@ -0,0 +1,131 @@
+Taken from upstream.
+
+From 4c2369083c5941ffada100e4a7e4702e681585e3 Mon Sep 17 00:00:00 2001
+From: taozuhong <taozuhong@gmail.com>
+Date: Tue, 11 Jan 2022 15:03:28 +0800
+Subject: [PATCH] fixed compile error
+
+---
+ libgda/Gda-6.0-custom.vala |  3 +++
+ libgda/sql-parser/lemon.c  | 39 +++++++++++++++++++-------------------
+ 2 files changed, 22 insertions(+), 20 deletions(-)
+
+diff --git a/libgda/Gda-6.0-custom.vala b/libgda/Gda-6.0-custom.vala
+index d046c5c24..4d1408648 100644
+--- a/libgda/Gda-6.0-custom.vala
++++ b/libgda/Gda-6.0-custom.vala
+@@ -92,7 +92,10 @@ namespace Gda {
+ 	[CCode (cheader_filename = "libgda.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gda_sql_statement_get_type ()")]
+ 	[Compact]
+ 	public class SqlStatement {
++		#if VALA_0_50
++		#else
+ 		public static Gda.SqlStatementContentsInfo get_contents_infos (Gda.SqlStatementType type);
++		#endif
+ 	}
+ 
+ }
+diff --git a/libgda/sql-parser/lemon.c b/libgda/sql-parser/lemon.c
+index a6fe75bb9..a3c727777 100644
+--- a/libgda/sql-parser/lemon.c
++++ b/libgda/sql-parser/lemon.c
+@@ -11,6 +11,7 @@
+ #include <string.h>
+ #include <ctype.h>
+ #include <stdlib.h>
++#include <stdint.h>
+ #include <assert.h>
+ #include <gio/gio.h>
+ 
+@@ -40,7 +41,7 @@ static const char **made_files = NULL;
+ static int made_files_count = 0;
+ static int successful_exit = 0;
+ 
+-static char *msort(char*,char**,int(*)(const char*,const char*));
++static uintptr_t msort(uintptr_t, uintptr_t*, int(*)(const uintptr_t, const uintptr_t));
+ 
+ /*
+ ** Compilers are getting increasingly pedantic about type conversions
+@@ -396,8 +397,7 @@ static int actioncmp(
+ static struct action *Action_sort(
+   struct action *ap
+ ){
+-  ap = (struct action *)msort((char *)ap,(char **)&ap->next,
+-                              (int(*)(const char*,const char*))actioncmp);
++  ap = (struct action *)msort(ap, &ap->next, actioncmp);
+   return ap;
+ }
+ 
+@@ -1277,14 +1277,14 @@ void Configlist_closure(struct lemon *lemp)
+ 
+ /* Sort the configuration list */
+ void Configlist_sort(){
+-  current = (struct config *)msort((char *)current,(char **)&(current->next),Configcmp);
++  current = (struct config *)msort(current, &(current->next), Configcmp);
+   currentend = 0;
+   return;
+ }
+ 
+ /* Sort the basis configuration list */
+ void Configlist_sortbasis(){
+-  basis = (struct config *)msort((char *)current,(char **)&(current->bp),Configcmp);
++  basis = (struct config *)msort(current, &(current->bp), Configcmp);
+   basisend = 0;
+   return;
+ }
+@@ -1577,7 +1577,7 @@ int main(G_GNUC_UNUSED int argc, char **argv)
+ /*
+ ** Return a pointer to the next structure in the linked list.
+ */
+-#define NEXT(A) (*(char**)(((unsigned long)A)+offset))
++#define NEXT(A) (*(uintptr_t *)(((uintptr_t)A)+offset))
+ 
+ /*
+ ** Inputs:
+@@ -1594,13 +1594,13 @@ int main(G_GNUC_UNUSED int argc, char **argv)
+ **   The "next" pointers for elements in the lists a and b are
+ **   changed.
+ */
+-static char *merge(
+-  char *a,
+-  char *b,
+-  int (*cmp)(const char*,const char*),
+-  int offset
++static uintptr_t merge(
++  uintptr_t a,
++  uintptr_t b,
++  int (*cmp)(const uintptr_t, const uintptr_t),
++  uintptr_t offset
+ ){
+-  char *ptr, *head;
++  uintptr_t ptr, *head;
+ 
+   if( a==0 ){
+     head = b;
+@@ -1646,16 +1646,15 @@ static char *merge(
+ **   The "next" pointers for elements in list are changed.
+ */
+ #define LISTSIZE 30
+-static char *msort(
+-  char *list,
+-  char **next,
+-  int (*cmp)(const char*,const char*)
++static uintptr_t msort(
++  uintptr_t list,
++  uintptr_t *next,
++  int (*cmp)(const uintptr_t, const uintptr_t)
+ ){
+-  unsigned long offset;
+-  char *ep;
+-  char *set[LISTSIZE];
++  uintptr_t ep;
++  uintptr_t set[LISTSIZE];
+   int i;
+-  offset = (unsigned long)next - (unsigned long)list;
++  uintptr_t offset = (uintptr_t)next - (uintptr_t)list;
+   for(i=0; i<LISTSIZE; i++) set[i] = 0;
+   while( list ){
+     ep = list;
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/libgda-fix-missing-initialization.patch b/gnu/packages/patches/libgda-fix-missing-initialization.patch
new file mode 100644
index 0000000000..59c4a21e28
--- /dev/null
+++ b/gnu/packages/patches/libgda-fix-missing-initialization.patch
@@ -0,0 +1,26 @@
+Taken from upstream.
+
+From a4a3930ecfc4dc815b7a18dbb7338c165ea08f4e Mon Sep 17 00:00:00 2001
+From: Pavlo Solntsev <p.sun.fun@gmail.com>
+Date: Sun, 19 Sep 2021 22:54:33 -0500
+Subject: [PATCH] Test: Fixing missing initialization
+
+---
+ libgda/thread-wrapper/test-itsignaler.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libgda/thread-wrapper/test-itsignaler.c b/libgda/thread-wrapper/test-itsignaler.c
+index d0c15ae17..7ac4e958a 100644
+--- a/libgda/thread-wrapper/test-itsignaler.c
++++ b/libgda/thread-wrapper/test-itsignaler.c
+@@ -203,6 +203,7 @@ test2 (void)
+ 	CbData cbdata;
+ 	cbdata.counter = 0;
+ 	cbdata.loop = loop;
++	cbdata.its = its;
+ 	itsignaler_add (its, NULL, (ITSignalerFunc) source_callback, &cbdata, NULL);
+ 	itsignaler_unref (its);
+   g_mutex_unlock (&mutex);
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/libgda-skip-postgresql-tests.patch b/gnu/packages/patches/libgda-skip-postgresql-tests.patch
new file mode 100644
index 0000000000..28fef585ac
--- /dev/null
+++ b/gnu/packages/patches/libgda-skip-postgresql-tests.patch
@@ -0,0 +1,91 @@
+Taken from upstream.
+
+From b0cd77e588620465b78f7c017d3f240e13936aa3 Mon Sep 17 00:00:00 2001
+From: Pavlo Solntsev <p.sun.fun@gmail.com>
+Date: Sun, 19 Sep 2021 22:51:38 -0500
+Subject: [PATCH] Test: Skip test if no server available
+
+Two variables will be checked. If they set
+and provide all needed information the test
+will be executed. If they are not set, the test
+will return TRUE and will terminate with
+termination status EXIT_SUCCESS.
+---
+ tests/db/check-db-catalog-postgresql.c   | 16 ++++++++++++++++
+ tests/test-server-operation-postgresql.c | 16 ++++++++++++++++
+ 2 files changed, 32 insertions(+)
+
+diff --git a/tests/db/check-db-catalog-postgresql.c b/tests/db/check-db-catalog-postgresql.c
+index 5b8e9395c..bf9a8942c 100644
+--- a/tests/db/check-db-catalog-postgresql.c
++++ b/tests/db/check-db-catalog-postgresql.c
+@@ -25,6 +25,9 @@
+ #include <libgda/libgda.h>
+ #include "../test-cnc-utils.h"
+ 
++#define PROVIDER_DB_CREATE_PARAMS "POSTGRESQL_DBCREATE_PARAMS"
++#define PROVIDER_CNC_PARAMS "POSTGRESQL_CNC_PARAMS"
++
+ typedef struct {
+   GdaDbCatalog *catalog;
+   GdaConnection *cnc;
+@@ -359,6 +362,19 @@ main (gint   argc,
+ {
+   setlocale (LC_ALL,"");
+ 
++  const gchar *db_create_str;
++  const gchar *cnc_params;
++
++  db_create_str = g_getenv (PROVIDER_DB_CREATE_PARAMS);
++  cnc_params = g_getenv (PROVIDER_CNC_PARAMS);
++
++  if (!db_create_str || !cnc_params) {
++      g_print ("Please set POSTGRESQL_DBCREATE_PARAMS and POSTGRESQL_CNC_PARAMS variable"
++	      "with dbname, host, user and port (usually 5432)\n");
++      g_print ("Test will not be performed\n");
++      return EXIT_SUCCESS;
++  }
++
+   g_test_init (&argc,&argv,NULL);
+ 
+   g_test_add ("/test-db-postgresql/meta-tables",
+diff --git a/tests/test-server-operation-postgresql.c b/tests/test-server-operation-postgresql.c
+index 37796c4be..860f41a18 100644
+--- a/tests/test-server-operation-postgresql.c
++++ b/tests/test-server-operation-postgresql.c
+@@ -38,9 +38,12 @@
+ #include <glib/gi18n.h>
+ #include <locale.h>
+ #include <libgda/libgda.h>
++/*#include <stdlib.h>*/
+ #include "test-cnc-utils.h"
+ 
+ #define PROVIDER_NAME "PostgreSQL"
++#define PROVIDER_DB_CREATE_PARAMS "POSTGRESQL_DBCREATE_PARAMS"
++#define PROVIDER_CNC_PARAMS "POSTGRESQL_CNC_PARAMS"
+ 
+ #define GDA_PGSQL_ERROR_HANDLE(e) (g_print("Error: %s: %s\n", G_STRLOC, e && e->message ? e->message : "No default"));
+ 
+@@ -1335,6 +1338,19 @@ main(gint argc, gchar *argv[])
+ {
+   setlocale (LC_ALL,"");
+ 
++  const gchar *db_create_str;
++  const gchar *cnc_params;
++
++  db_create_str = g_getenv (PROVIDER_DB_CREATE_PARAMS);
++  cnc_params = g_getenv (PROVIDER_CNC_PARAMS);
++
++  if (!db_create_str || !cnc_params) {
++      g_print ("Please set POSTGRESQL_DBCREATE_PARAMS and POSTGRESQL_CNC_PARAMS variable"
++	      "with dbname, host, user and port (usually 5432)\n");
++      g_print ("Test will not be performed\n");
++      return EXIT_SUCCESS;
++  }
++
+   g_test_init (&argc,&argv,NULL);
+ 
+   g_test_add ("/test-server-operation-sqlite/old-so-module",
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/nautilus-add-libportal-gtk3.patch b/gnu/packages/patches/nautilus-add-libportal-gtk3.patch
deleted file mode 100644
index cefa47cc64..0000000000
--- a/gnu/packages/patches/nautilus-add-libportal-gtk3.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 55cfd66ccca391fc144f5863ff6bfc1f3b137e2d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= <antoniojpfernandes@gmail.com>
-Date: Tue, 21 Dec 2021 17:42:27 +0000
-Subject: [PATCH] general: Add libportal-gtk3 dependency
-
-The portal-gtk3.h header has been moved into a separate library which
-binds gtk3 explicitly.
-
-https://github.com/flatpak/libportal/pull/53
----
- build-aux/flatpak/org.gnome.Nautilus.json | 5 +++--  ;; Changes removed in Guix
- build-aux/flatpak/org.gnome.Nautilus.yml  | 3 ++-    ;; Changes removed in Guix
- meson.build                               | 4 +++-
- src/meson.build                           | 1 +
- src/nautilus-files-view.c                 | 2 +-
- 5 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 927216636..4626fa0bb 100644
---- a/meson.build
-+++ b/meson.build
-@@ -122,8 +122,10 @@ gnome_desktop = dependency('gnome-desktop-3.0', version: '>= 3.0.0')
- gtk = dependency('gtk+-3.0', version: '>= 3.22.27')
- libhandy = dependency('libhandy-1', version: '>= 1.1.90')
- libportal = []
-+libportal_gtk3 = []
- if get_option('libportal')
--  libportal = dependency('libportal', version: '>= 0.3')
-+  libportal = dependency('libportal', version: '>= 0.5')
-+  libportal_gtk3 = dependency('libportal-gtk3', version: '>= 0.5')
- endif
- selinux = []
- if get_option('selinux')
-diff --git a/src/meson.build b/src/meson.build
-index 682d6f3a3..d7fb76d53 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -285,6 +285,7 @@ nautilus_deps = [
-   libgd_dep,
-   libhandy,
-   libportal,
-+  libportal_gtk3,
-   nautilus_extension,
-   selinux,
-   tracker_sparql,
-diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
-index dfb7fb26c..a24005a11 100644
---- a/src/nautilus-files-view.c
-+++ b/src/nautilus-files-view.c
-@@ -93,7 +93,7 @@
- 
- #ifdef HAVE_LIBPORTAL
- #include <libportal/portal.h>
--#include <libportal/portal-gtk3.h>
-+#include <libportal-gtk3/portal-gtk3.h>
- #endif
- 
- /* Minimum starting update inverval */
--- 
-GitLab
-
diff --git a/gnu/packages/patches/network-manager-plugin-path.patch b/gnu/packages/patches/network-manager-plugin-path.patch
index ec6767aaac..cd2447cf03 100644
--- a/gnu/packages/patches/network-manager-plugin-path.patch
+++ b/gnu/packages/patches/network-manager-plugin-path.patch
@@ -3,39 +3,47 @@ From: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= <sleep_walker@gnu.org>
 Date: Wed, 3 Jul 2019 13:31:54 +0200
 Subject: [PATCH] respect NM_VPN_PLUGIN_DIR
 
---- a/src/core/vpn/nm-vpn-manager.c	2021-10-29 13:20:01.062917840 -0400
-+++ b/src/core/vpn/nm-vpn-manager.c	2021-10-29 13:26:46.094397018 -0400
-@@ -211,6 +211,7 @@
-     GSList *             infos, *info;
-     const char *         conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc();
-     const char *         conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib();
-+    const char *         conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user ();
+Rebased by Maxim Cournoyer on 2022/08/23.
+
+diff --git a/src/core/vpn/nm-vpn-manager.c b/src/core/vpn/nm-vpn-manager.c
+index 6bf8edaee5..9bd960ba86 100644
+--- a/src/core/vpn/nm-vpn-manager.c
++++ b/src/core/vpn/nm-vpn-manager.c
+@@ -209,8 +209,9 @@ nm_vpn_manager_init(NMVpnManager *self)
+     NMVpnManagerPrivate *priv = NM_VPN_MANAGER_GET_PRIVATE(self);
+     GFile               *file;
+     GSList              *infos, *info;
+-    const char          *conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc();
+-    const char          *conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib();
++    const char          *conf_dir_etc  = _nm_vpn_plugin_info_get_default_dir_etc();
++    const char          *conf_dir_lib  = _nm_vpn_plugin_info_get_default_dir_lib();
++    const char          *conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user();
  
      /* Watch the VPN directory for changes */
      file              = g_file_new_for_path(conf_dir_lib);
-@@ -229,6 +230,14 @@
+@@ -229,6 +230,14 @@ nm_vpn_manager_init(NMVpnManager *self)
              g_signal_connect(priv->monitor_etc, "changed", G_CALLBACK(vpn_dir_changed), self);
      }
  
-+    file              = g_file_new_for_path (conf_dir_user);
-+    priv->monitor_etc = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL);
-+    g_object_unref (file);
++    file              = g_file_new_for_path(conf_dir_user);
++    priv->monitor_etc = g_file_monitor_directory(file, G_FILE_MONITOR_NONE, NULL, NULL);
++    g_object_unref(file);
 +    if (priv->monitor_etc) {
 +        priv->monitor_id_etc =
-+            g_signal_connect (priv->monitor_etc, "changed", G_CALLBACK (vpn_dir_changed), self);
++            g_signal_connect(priv->monitor_etc, "changed", G_CALLBACK(vpn_dir_changed), self);
 +    }
 +
      /* first read conf_dir_lib. The name files are not really user configuration, but
       * plugin configuration. Hence we expect ~newer~ plugins to install their files
       * in /usr/lib/NetworkManager. We want to prefer those files.
-@@ -243,6 +252,11 @@
+@@ -243,6 +252,11 @@ nm_vpn_manager_init(NMVpnManager *self)
          try_add_plugin(self, info->data);
      g_slist_free_full(infos, g_object_unref);
  
 +    infos = _nm_vpn_plugin_info_list_load_dir(conf_dir_user, TRUE, 0, NULL, NULL);
 +    for (info = infos; info; info = info->next)
-+            try_add_plugin (self, info->data);
-+    g_slist_free_full (infos, g_object_unref);
++        try_add_plugin(self, info->data);
++    g_slist_free_full(infos, g_object_unref);
 +
      priv->active_services = g_hash_table_new_full(nm_str_hash, g_str_equal, g_free, NULL);
  }
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index fdbcb8e1e1..dd5e6bae9a 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages patchutils)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix licenses)
@@ -40,6 +42,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages less)
   #:use-module (gnu packages mail)
@@ -441,6 +444,41 @@ Users can login allowing them to change the state of patches.")
     (home-page "http://jk.ozlabs.org/projects/patchwork/")
     (license gpl2+)))
 
+(define-public wiggle
+  (package
+    (name "wiggle")
+    (version "1.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/neilbrown/wiggle")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "18ilzr9sbal1j8p1d94ilm1j5blac5cngvcvjpdmgmpw6diy2ldf"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:make-flags
+      #~(list "CFLAGS=-I. -O3" "INSTALL=install" "STRIP=-s"
+              (string-append "CC=" #$(cc-for-target))
+              (string-append "BINDIR=" #$output "/bin")
+              (string-append "MANDIR=" #$output "/share/man")
+              (string-append "PREFIX=" #$output))
+      #:test-target "test"
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure))))
+    (home-page "http://neil.brown.name/wiggle/")
+    (inputs (list ncurses))
+    (native-inputs (list groff))
+    (synopsis "Apply patches with conflicts")
+    (description
+     "@code{wiggle} attempts to apply patches to a target file even if the
+patches do not match perfectly.")
+    (license gpl2+)))
+
 (define-public pwclient
   (package
     (name "pwclient")
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 09ecd252bc..3580476e33 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -315,6 +315,25 @@ When present, Poppler is able to correctly render CJK and Cyrillic text.")
     (license (list license:bsd-3
                    license:gpl2))))
 
+;; XXX: Remove it on core-updates.  It is only needed for evince 42.3 that
+;; requires a recent poppler.
+(define-public poppler-next
+  (package/inherit poppler
+    (name "poppler-next")
+    (version "22.09.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://poppler.freedesktop.org/poppler-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0bhyli95h3dkirjc0ibh08s4nim6rn7f38sbfzdwln8k454gga6p"))))
+    (native-inputs
+     (list pkg-config
+           `(,glib "bin") ; glib-mkenums, etc.
+           gobject-introspection
+           python)) ))
+
 (define-public poppler-qt5
   (package/inherit poppler
    (name "poppler-qt5")
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 770426d779..6263e90f1f 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -167,3 +168,26 @@ exec ~a \"$@\""
              (inherit original)
              (variable "PKG_CONFIG_PATH_FOR_BUILD")))
           (package-native-search-paths %pkg-config)))))
+
+(define-public pkgconf
+  (package
+    (name "pkgconf")
+    (version "1.9.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append  "https://distfiles.dereferenced.org/"
+                                   name "/" name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "17b9cl2s99pzgblaj0yg49k3m0by5x78vwg4879vckymhys5bcsz"))))
+    (build-system gnu-build-system)
+    (arguments (list #:tests? #f))      ;TODO: package kyua
+    (home-page "http://pkgconf.org/")
+    (synopsis "Package compiler and linker metadata toolkit")
+    (description "@command{pkgconf} is a program which helps to configure
+compiler and linker flags for development libraries.  It is similar to
+pkg-config from freedesktop.org.  @code{libpkgconf} is a library which
+provides access to most of pkgconf's functionality, to allow other tooling
+such as compilers and IDEs to discover and use libraries configured by
+pkgconf.")
+    (license isc)))
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 8143088d11..3548345326 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -835,7 +835,7 @@ of Pandas
 (define-public python-pingouin
   (package
     (name "python-pingouin")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      ;; The PyPI tarball does not contain the tests.
      (origin
@@ -846,18 +846,25 @@ of Pandas
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "10v3mwcmyc7rd2957cbmfcw66yw2y0fz7zcfyx46q8slbmd1d8d4"))))
+         "0czy7cpn6xx9fs6wbz6rq2lpkb1a89bzxj1anf2f9in1m5qyrh83"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'loosen-requirements
+           (lambda _
+             (substitute* '("requirements.txt" "setup.py")
+               ;; Remove sklearn pinning since it works fine with 1.1.2:
+               ;; https://github.com/raphaelvallat/pingouin/pull/300
+               (("scikit-learn<1\\.1\\.0")
+                "scikit-learn"))))
          ;; On loading, Pingouin uses the outdated package to check if a newer
          ;; version is available on PyPI. This check adds an extra dependency
          ;; and is irrelevant to Guix users. So, disable it.
          (add-after 'unpack 'remove-outdated-check
            (lambda _
              (substitute* "setup.py"
-               (("'outdated',") ""))
+               (("\"outdated\",") ""))
              (substitute* "pingouin/__init__.py"
                (("^from outdated[^\n]*") "")
                (("^warn_if_outdated[^\n]*") ""))))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index d2bfe29b6f..9bdc139f21 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4984,12 +4984,17 @@ hard or impossible to fix in cssselect.")
                ;; The tests are prone to get stuck. Use pytest-timeout’s --timeout
                ;; flag to get a meaningful idea about where.
                (invoke "pytest" "-vv" "--timeout=300"
-                       "-k" ,(string-append
+                       "--timeout-method=thread"
+                       "-k" (string-append
                               ;; Timeout, because SIGINT cannot be sent to child.
                               "not test_signals_sigint_pycode_continue "
                               "and not test_signals_sigint_pycode_stop "
                               "and not test_signals_sigint_uvcode "
                               "and not test_signals_sigint_uvcode_two_loop_runs "
+                              ;; This test is racy and prone to get stuck on
+                              ;; various platforms, possibly a aiohttp issue:
+                              ;;  https://github.com/MagicStack/uvloop/issues/412
+                              "and not test_remote_shutdown_receives_trailing_data "
                               ;; It looks like pytest is preventing
                               ;; custom stdout/stderr redirection,
                               ;; even with -s.
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 109878a1a0..72bb841208 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -4381,6 +4381,18 @@ via commands such as @command{rst2man}, as well as supporting Python code.")
     ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
     (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
 
+;; TODO: Make this the default in the next rebuild cycle.
+(define-public python-docutils-0.19
+  (package
+    (inherit python-docutils)
+    (version "0.19")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "docutils" version))
+              (sha256
+               (base32
+                "1rprvir116g5rz2bgzkzgyn6mv0z8582rz7bgxbpy2y3adkmm69k"))))))
+
 ;; awscli refuses to be built with docutils < 0.16.
 (define-public python-docutils-0.15
   (package
@@ -10469,21 +10481,20 @@ plugin for flake8 to check PEP-8 naming conventions.")
                           (invoke "pytest") #t))))))
     (native-inputs (list python-mock python-pytest python-testpath))))
 
-
-(define-public python-pep621
+(define-public python-pyproject-metadata
   (package
-    (name "python-pep621")
-    (version "0.4.0")
+    (name "python-pyproject-metadata")
+    (version "0.6.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FFY00/python-pep621")
+             (url "https://github.com/FFY00/python-pyproject-metadata")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0nzig7bmzf0xx5svxlf065mrzihr0ci4p1yaxka9flqjba98flpr"))))
+         "00zahgw9zjfqwf0218bj5k732aibnn68cq1p8f0wmbirb7fy5k31"))))
     (build-system python-build-system)
     (arguments
      (list
@@ -10511,7 +10522,7 @@ plugin for flake8 to check PEP-8 naming conventions.")
                         "install" "--no-deps" "--prefix" #$output whl)))))))
     (propagated-inputs (list python-packaging))
     (native-inputs (list python-pypa-build python-pytest python-tomli))
-    (home-page "https://github.com/FFY00/python-pep621")
+    (home-page "https://github.com/FFY00/python-pyproject-metadata")
     (synopsis "Dataclass for PEP 621 metadata")
     (description "This project does not implement the parsing of
 @file{pyproject.toml} containing PEP 621 metadata.  Instead, given a Python
@@ -10520,6 +10531,10 @@ validate this input and generate a PEP 643-compliant metadata
 file (e.g. @file{PKG-INFO}).")
     (license license:expat)))
 
+;; pep621 was renamed to pyproject-metadata.
+(define-public python-pep621
+  (deprecated-package "python-pep621" python-pyproject-metadata))
+
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
@@ -18813,21 +18828,20 @@ from the header, as well as section details and data available.")
 (define-public python-qrcode
   (package
     (name "python-qrcode")
-    (version "6.1")
+    (version "7.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "qrcode" version))
        (sha256
-        (base32 "0sa3n298b9jpz6zn0birnjii3mg9sihjq28n9nzjlzv09y2m6ljh"))))
+        (base32 "0y35jlwfvkgn9341lzshyaqgpp61vysjh107vhdd96ya83r6ynip"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Tests require packaging 'pymaging'.
      '(#:tests? #f))
     (propagated-inputs
      (list python-lxml ; for SVG output
-           python-pillow ; for PNG output
-           python-six))
+           python-pillow)) ; for PNG output
     (home-page "https://github.com/lincolnloop/python-qrcode")
     (synopsis "QR Code image generator")
     (description "This package provides a pure Python QR Code generator
@@ -20623,14 +20637,14 @@ ignoring formatting changes.")
 (define-public python-tqdm
   (package
     (name "python-tqdm")
-    (version "4.62.3")
+    (version "4.64.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "tqdm" version))
          (sha256
            (base32
-             "03cjj8jl8iybvfjbpvdql5qfslzfv043g7w6nx8rhv2h2xrdwnfk"))))
+             "1r7i9kswpnrx4ppfvzz6discb04j1rqkqxdwa2sc2la900m6hksz"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -23485,13 +23499,13 @@ source via the Abstract Syntax Tree.")
 (define-public python-astunparse
   (package
     (name "python-astunparse")
-    (version "1.6.2")
+    (version "1.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "astunparse" version))
        (sha256
-        (base32 "0rzbc44xcvzjhhiy7wac96mgal5mcjz1mfq8rmvgswskf4kf9cys"))))
+        (base32 "0wh8jjvwafxc7rvbyb13cdwndkicm7cry1bd8p1q9l7has23mnas"))))
     (build-system python-build-system)
     (arguments '(#:tests? #f))          ; there are none
     (propagated-inputs
@@ -23506,17 +23520,25 @@ distribution.")
 (define-public python-gast
   (package
     (name "python-gast")
-    (version "0.5.2")
+    (version "0.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "gast" version))
        (sha256
-        (base32 "1xv77kzghiqfm4fnvlv0p878ma152dvcfkly3jij89lqigxcw7zq"))))
+        (base32 "1sidaczriw54pfkj3523y9j9q2harrczc1qqgnfaylz641ca5gng"))))
     (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "pytest" "-vv")))))))
+    (native-inputs
+     (list python-pytest))
     (propagated-inputs
      (list python-astunparse))
-    (home-page "https://pypi.org/project/gast/")
+    (home-page "https://github.com/serge-sans-paille/gast/")
     (synopsis "Generic Python AST that abstracts the underlying Python version")
     (description
      "GAST provides a compatibility layer between the AST of various Python
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index a1ef352263..541e1e6c06 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1381,7 +1381,7 @@ set of plugins for interacting with pulseaudio and GStreamer.")))
     (description "The @code{qtshadertools} module provides APIs and tools
 supporting shader pipeline functionality as offered in Qt Quick to operate on
 Vulkan, OpenGL and other main graphic APIs.")
-    (license (package-home-page qtbase))))
+    (license (package-license qtbase))))
 
 (define-public qtmultimedia
   (package
@@ -4233,3 +4233,9 @@ and import their menus over DBus.")
 services using the XML based SOAP protocol and without the need for a dedicated
 web server.")
     (license (list license:gpl2 license:gpl3))))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm
index 5f549ef234..98cd33baef 100644
--- a/gnu/packages/rsync.scm
+++ b/gnu/packages/rsync.scm
@@ -29,6 +29,7 @@
   #:use-module (gnu packages digest)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages popt)
+  #:use-module (gnu packages tls)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -39,27 +40,26 @@
 (define-public rsync
   (package
    (name "rsync")
-   (version "3.2.5")
+   (version "3.2.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://rsync.samba.org/ftp/rsync/src/rsync-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1flsqq01dmbz0m2vwn4sj46zb9yxlrfc6xy3gf393xyd6lbd5i1a"))))
+              "1lslaj1s7mpgf4v5lxhhiyy4ffmxaxy9cbplx8gx8dvqnax6aczv"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       ;; The bundled copies are preferred by default.
       (list "--without-included-zlib"
-            "--without-included-popt"
-            ;; Avoid these dependencies for now.
-            "--disable-openssl")))
+            "--without-included-popt")))
    (native-inputs
     (list perl))
    (inputs
     (list acl
           lz4
+          openssl
           popt
           xxhash
           zlib
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 2fb43f13cb..d6e8795698 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -557,13 +557,33 @@ safety and thread safety guarantees.")
    rust-1.57 "1.58.1" "1iq7kj16qfpkx8gvw50d8rf7glbm6s0pj2y1qkrz7mi56vfsyfd8"))
 
 (define rust-1.59
-  (rust-bootstrapped-package
-   ;; Verified that it *doesn't* build with 1.57. e.g.:
-   ;; * error: `doc(primitive)` should never have been stable
-   ;; * error[E0522]: definition of an unknown language item:
-   ;;   `generator_return`
-   ;; * error[E0206]: the trait `Copy` may not be implemented for this type
-   rust-1.58 "1.59.0" "1yc5bwcbmbwyvpfq7zvra78l0r8y3lbv60kbr62fzz2vx2pfxj57"))
+  (let ((base-rust
+          (rust-bootstrapped-package
+            ;; Verified that it *doesn't* build with 1.57. e.g.:
+            ;; * error: `doc(primitive)` should never have been stable
+            ;; * error[E0522]: definition of an unknown language item:
+            ;;   `generator_return`
+            ;; * error[E0206]: the trait `Copy` may not be implemented for this type
+            rust-1.58 "1.59.0" "1yc5bwcbmbwyvpfq7zvra78l0r8y3lbv60kbr62fzz2vx2pfxj57")))
+    (package
+      (inherit base-rust)
+        (arguments
+         (if (target-riscv64?)
+           (substitute-keyword-arguments (package-arguments base-rust)
+             ((#:phases phases)
+              `(modify-phases ,phases
+                 (add-after 'unpack 'revert-riscv-pause-instruction
+                   (lambda _
+                     ;; This fails with:
+                     ;; error: unknown directive, referring to '.insn'.
+                     ;; This is due to building with llvm < 14.
+                     ;; https://github.com/rust-lang/stdarch/issues/1291
+                     ;; Partial roll-back from this commit:
+                     ;; https://github.com/rust-lang/stdarch/pull/1271
+                     (substitute*
+                       "library/stdarch/crates/core_arch/src/riscv_shared/mod.rs"
+                       (("\\.insn i 0x0F, 0, x0, x0, 0x010") ".word 0x0100000F")))))))
+           (package-arguments base-rust))))))
 
 (define rust-1.60
   (rust-bootstrapped-package
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 48de75783e..2523889a8d 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,6 +35,7 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (gnu packages)
+  #:use-module (guix gexp)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -113,7 +115,7 @@ joystick, and graphics hardware.")
   (package
     (inherit sdl)
     (name "sdl2")
-    (version "2.0.18")
+    (version "2.24.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -121,37 +123,36 @@ joystick, and graphics hardware.")
                               version ".tar.gz"))
               (sha256
                (base32
-                "073iwmggkvvl82fssqb7xzbb4awraprjig6zxav0p8dz7pbhrm4l"))))
+                "15vd9najhjh6s9z9hhx7zp51iby690a1g3h7kcwjvyb82x5w7r4i"))))
     (arguments
      (substitute-keyword-arguments (package-arguments sdl)
        ((#:configure-flags flags)
-        `(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
-                   "--disable-kmsdrm-shared")
-             ,flags))
+        #~(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
+                    "--disable-kmsdrm-shared")
+                  #$flags))
        ((#:make-flags flags ''())
-        `(cons*
-          ;; SDL dlopens libudev, so make sure it is in rpath. This overrides
-          ;; the LDFLAG set in sdl’s configure-flags, which isn’t necessary
-          ;; as sdl2 includes Mesa by default.
-          (string-append "LDFLAGS=-Wl,-rpath,"
-                         (assoc-ref %build-inputs "eudev") "/lib")
-          ,flags))))
+        #~(cons*
+           ;; SDL dlopens libudev, so make sure it is in rpath. This overrides
+           ;; the LDFLAG set in sdl’s configure-flags, which isn’t necessary
+           ;; as sdl2 includes Mesa by default.
+           (string-append "LDFLAGS=-Wl,-rpath,"
+                          #$(this-package-input "eudev") "/lib")
+           #$flags))))
     (inputs
      ;; SDL2 needs to be built with ibus support otherwise some systems
      ;; experience a bug where input events are doubled.
      ;;
      ;; For more information, see: https://dev.solus-project.com/T1721
      (modify-inputs (package-inputs sdl)
-       (prepend
-           dbus
-           eudev                        ;for discovering input devices
-         fcitx                          ;helps with CJK input
-         glib
-         ibus
-         libxkbcommon
-         libxcursor
-         wayland                        ;enables X11 cursor support
-         wayland-protocols)))
+       (append dbus
+               eudev                    ;for discovering input devices
+               fcitx                    ;helps with CJK input
+               glib
+               ibus
+               libxkbcommon
+               libxcursor               ;enables X11 cursor support
+               wayland
+               wayland-protocols)))
     (license license:bsd-3)))
 
 (define-public libmikmod
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 84c4af68a3..82be343dab 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
 ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2022 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -361,20 +362,21 @@ Search Engine.  It is written in C and based on GTK3.")
 (define-public recoll
   (package
     (name "recoll")
-    (version "1.31.2")
+    (version "1.32.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.lesbonscomptes.com/recoll/"
                            "recoll-" version ".tar.gz"))
        (sha256
-        (base32 "0m1w5hf2n09lbzmzvlrm2lks4lci9vvjxy2mcmgb2avgly7v5vfk"))))
+        (base32 "1fkx6dk8s808ay4hf7ycfcs38kywmavsjqm02pwrnl8bpgsac26a"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
        (list "--disable-webkit"
              "--disable-python-module"
              "--without-systemd"
+             "--with-inotify"
              (string-append "QMAKEPATH=" (assoc-ref %build-inputs "qtbase")
                             "/bin/qmake"))
        #:phases
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 06860dc5b2..e70b9ef706 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -57,6 +57,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages shells)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages tmux)
   #:use-module (gnu packages vim))
 
@@ -271,6 +272,38 @@ interactive terminal.  This helps in reviewing commands before running them,
 particularly in catching syntax errors.")
     (license license:bsd-3)))
 
+(define-public grml-zsh-config
+  (package
+    (name "grml-zsh-config")
+    (version "0.19.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://deb.grml.org/pool/main/g/grml-etc-core/grml-etc-core_"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "05fri77028znjnvmh8mz3424rn8ilysj7hn8br2hk1qwkp4zzwp9"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases
+            %standard-phases
+          (add-before 'install 'make-doc
+            (lambda _ (with-directory-excursion "doc" (invoke "make")))))
+      #:install-plan
+      #~'(("etc/skel/.zshrc"  "etc/skel/.zshrc")
+          ("etc/zsh/keephack" "etc/zsh/keephack")
+          ("etc/zsh/zshrc"    "etc/zsh/zshrc")
+          ("doc/grmlzshrc.5"  "share/man/man5/grmlzshrc.5"))))
+    (native-inputs (list txt2tags))
+    (home-page "https://grml.org/zsh/")
+    (synopsis "Grml's zsh configuration")
+    (description "This package provides an interactive setup for zsh
+preconfigured by the Grml project.")
+    (license license:gpl2)))
+
 (define-public sh-z
   (package
     (name "sh-z")
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index dc3a90bbcb..85902a8d96 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015, 2017, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016-2019, 2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
@@ -385,6 +385,33 @@ grid layout.  It is no longer maintained and users are encouraged to use
 @code{sphinx-design} instead.")
     (license license:expat)))
 
+(define-public python-sphinx-tabs
+  (package
+    (name "python-sphinx-tabs")
+    (version "3.4.1")
+    (home-page "https://github.com/executablebooks/sphinx-tabs")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "sphinx-tabs" version))
+              (sha256
+               (base32
+                "0cmqw5ck2jcxqyf5ibz543idspq0g0fdzxh3fpah1r0nhfg9z86j"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f                ;TODO: requires sphinx-testing and rinohtype
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'loosen-docutils-requirement
+                    (lambda _
+                      (substitute* "setup.py"
+                        (("docutils~=0\\.18\\.0")
+                         "docutils>=0.17.0")))))))
+    (propagated-inputs
+     (list python-docutils python-pygments python-sphinx))
+    (synopsis "Tabbed views for Sphinx")
+    (description
+     "Create tabbed content in Sphinx documentation when building HTML.")
+    (license license:expat)))
+
 (define-public python-sphinxcontrib-programoutput
   (package
     (name "python-sphinxcontrib-programoutput")
@@ -986,7 +1013,7 @@ automated way to document command-line programs.  It scans
 (define-public python-sphinx-theme-builder
   (package
     (name "python-sphinx-theme-builder")
-    (version "0.2.0a14")
+    (version "0.2.0b1")
     (source
      (origin
        (method git-fetch)               ;no tests in pypi archive
@@ -996,7 +1023,7 @@ automated way to document command-line programs.  It scans
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1brqp34q716gglliallbgq4m63hl3nk8j6w8wcl8f2vvnkch6v98"))))
+         "15gvwzd4l3wcmd6fns8xvv44yzxmamr1nfn28mp12sdw2y10v2ba"))))
     (build-system python-build-system)
     (arguments
      (list
@@ -1023,7 +1050,7 @@ automated way to document command-line programs.  It scans
            python-click
            python-nodeenv
            python-packaging
-           python-pep621
+           python-pyproject-metadata
            python-rich
            python-sphinx-autobuild
            python-tomli))
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 1f2553fa74..93625b0fe9 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -11965,7 +11965,8 @@ lines in a document.  Package options include @code{singlespacing},
 @code{onehalfspacing}, and @code{doublespacing}.  Alternatively the spacing
 can be changed as required with the @code{\\singlespacing},
 @code{\\onehalfspacing}, and @code{\\doublespacing} commands.  Other size
-spacings also available.")))
+spacings also available.")
+    (license license:lppl)))
 
 (define-public texlive-pgfgantt
   (package
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 7898d520f0..2264e3ccb6 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -68,6 +68,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
@@ -972,6 +973,25 @@ source code.")
 and Cython.")
       (license license:expat))))
 
+(define-public txt2tags
+  (package
+    (name "txt2tags")
+    (version "3.7")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "txt2tags" version))
+              (sha256
+               (base32
+                "12hpnvdy7dgarq6ini9jp7dp2zcmvpax04zbl3jb84kd423r75i7"))))
+    (build-system python-build-system)
+    (native-inputs (list python-tox))
+    (home-page "https://txt2tags.org")
+    (synopsis "Convert between markup languages")
+    (description
+     "txt2tags is a document generator.  It reads a text file with minimal
+markup and converts it to multiple formats.")
+    (license license:gpl2)))
+
 (define-public go-github.com-mattn-go-runewidth
   (let ((commit "703b5e6b11ae25aeb2af9ebb5d5fdf8fa2575211")
         (version "0.0.4")
diff --git a/gnu/packages/uml.scm b/gnu/packages/uml.scm
index 603bbd0678..6b9f023dd2 100644
--- a/gnu/packages/uml.scm
+++ b/gnu/packages/uml.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,14 +32,14 @@
 (define-public plantuml
   (package
     (name "plantuml")
-    (version "1.2022.3")
+    (version "1.2022.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/plantuml/"
                                   version "/plantuml-" version ".tar.gz"))
               (sha256
                (base32
-                "1k5c97iicdvamkcdaz7c2b79qaciz5gvgs7n67as7hcbm2q85q3b"))))
+                "0lcvp6hdlzgh6ia14zzdc6h9hn8xrm9w9dcx5jpzhs8nbygkazvj"))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 813037a421..2c94a8ac4c 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1734,7 +1734,7 @@ execution of any hook written in any language before every commit.")
 (define-public mercurial
   (package
     (name "mercurial")
-    (version "6.2.1")
+    (version "6.2.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://www.mercurial-scm.org/"
@@ -1743,7 +1743,14 @@ execution of any hook written in any language before every commit.")
                                       "mercurial-openssl-compat.patch"))
              (sha256
               (base32
-               "1nl2726szaxyrxlyssrsir5c6vb4ci0i6g969i6xaahw1nidgica"))))
+               "1pr00hdk3l9095fhq6302fgj0wmbqhqs93y4r457ba4pyjjrvyly"))
+             (modules '((guix build utils)))
+             (snippet
+              '(substitute* (find-files "tests" "\\.(t|sh)$")
+                 ;; grep 3.8 emits deprecation warnings for 'egrep' and
+                 ;; 'fgrep' which breaks expected test output.
+                 (("egrep") "grep -E")
+                 (("fgrep") "grep -F")))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index ee360fc0b6..8c0f187be1 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2293,7 +2293,7 @@ the last played position, etc.")
 (define-public gallery-dl
   (package
     (name "gallery-dl")
-    (version "1.20.5")
+    (version "1.23.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mikf/gallery-dl"
@@ -2301,7 +2301,7 @@ the last played position, etc.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0149hd4nh7bk2yqjdnvrkvag5mwgsb6gxrgfcd88q4cv3k2ji42h"))))
+                "12rhzf8cwsvlg0vxzydgc7x04gmccxkjk8ghb5s8lk0gjp7ysqkh"))))
     (build-system python-build-system)
     (inputs (list python-requests ffmpeg))
     (home-page "https://github.com/mikf/gallery-dl")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 2860894bbd..cebcc9742d 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -61,6 +61,7 @@
   #:use-module (gnu packages cluster)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages containers)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
@@ -172,8 +173,10 @@
        (modules '((guix build utils)))
        (snippet
         '(begin
-           ;; Delete the bundled meson copy.
-           (delete-file-recursively "meson")))))
+           ;; Delete bundled code that we provide externally.
+           ;; TODO: Unbundle SeaBIOS!
+           (for-each delete-file-recursively
+                     '("dtc" "meson" "slirp"))))))
     (outputs '("out" "static" "doc"))   ;5.3 MiB of HTML docs
     (build-system gnu-build-system)
     (arguments
@@ -190,6 +193,8 @@
                 (string-append "--host-cc=" gcc)
                 (string-append "--prefix=" out)
                 "--sysconfdir=/etc"
+                "--enable-slirp=system"
+                "--enable-fdt=system"
                 (string-append "--smbd=" out "/libexec/samba-wrapper")
                 "--disable-debug-info"  ;for space considerations
                 ;; The binaries need to be linked against -lrt.
@@ -329,6 +334,7 @@ exec smbd $@")))
     (inputs
      (list alsa-lib
            bash-minimal
+           dtc
            glib
            gtk+
            libaio
@@ -339,6 +345,7 @@ exec smbd $@")))
            libjpeg-turbo
            libpng
            libseccomp
+           libslirp
            liburing
            libusb                       ;USB pass-through support
            mesa
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index e2ae3626e7..e92cb22d7d 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -5809,14 +5809,14 @@ tools like SSH (Secure Shell) to reach the outside world.")
 (define-public stunnel
   (package
   (name "stunnel")
-  (version "5.61")
+  (version "5.66")
   (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
                           version ".tar.gz"))
       (sha256
-       (base32 "0yjx07r5wc987s4z0wm37381fa3az2s4mrhyjxypx3rd92k0rsli"))))
+       (base32 "172pkzp8qilj0gd92bhdi96739gjpgbcav5c7a4gd98s9mq7i0am"))))
   (build-system gnu-build-system)
   (arguments
    (list #:configure-flags
@@ -8256,3 +8256,9 @@ You can feed it URLs one at a time, or schedule regular imports.  It saves
 snapshots of the URLs you feed it in several formats.")
     (home-page "https://archivebox.io/")
     (license license:expat)))
+
+;;;
+;;; Avoid adding new packages to the end of this file. To reduce the chances
+;;; of a merge conflict, place them above by existing packages with similar
+;;; functionality or similar names.
+;;;
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 89cd7ebd6b..aa7f7aafe8 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -124,7 +124,7 @@ the WPE-flavored port of WebKit.")
 engine that uses Wayland for graphics output.")
     (license license:bsd-2)))
 
-(define %webkit-version "2.36.7")
+(define %webkit-version "2.36.7")       ;webkit2gtk4
 
 (define-public webkitgtk
   (package
@@ -279,11 +279,46 @@ propagated by default) such as @code{gst-plugins-good} and
                    license:bsd-2
                    license:bsd-3))))
 
-;;; Required by gnome-online-accounts as webkitgtk propagates libsoup 3, which
-;;; causes the build to fail.  Also required by e.g. emacs-next-pgtk,
-;;; emacs-xwidgets, and some other GNOME packages for webkit2gtk-4.0.  See
-;;; also the upstream tracker for libsoup 3:
-;;; https://gitlab.gnome.org/GNOME/libsoup/-/issues/218
+(define-public webkitgtk-next
+  (package
+    (inherit webkitgtk)
+    (name "webkitgtk")
+    (version "2.37.91")                 ;webkit2gtk5
+    (source (origin
+              (inherit (package-source webkitgtk))
+              (method url-fetch)
+              (uri (string-append "https://www.webkitgtk.org/releases/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32 "0r2d1dbx6s8bad011dkmx7j34gcxlz9bs14pip1qn7n1rhgxb3qi"))))
+    (build-system cmake-build-system)
+    (arguments
+     (substitute-keyword-arguments (package-arguments webkitgtk)
+       ((#:configure-flags flags)
+        #~(cons* "-DENABLE_INTROSPECTION=ON"
+                 "-DUSE_GTK4=ON"
+                 (delete "-DENABLE_GTKDOC=ON" #$flags)))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (add-before 'build 'set-CC
+              (lambda _
+                ;; Some Perl scripts check for the CC environment variable, else
+                ;; use /usr/bin/gcc.
+                (setenv "CC" "gcc")))))))
+    (native-inputs
+     (modify-inputs (package-native-inputs webkitgtk)
+       (delete "docbook-xml" "gtk-doc")
+       (append gi-docgen)))
+    (propagated-inputs
+     (modify-inputs (package-propagated-inputs webkitgtk)
+       (replace "gtk+" gtk)))
+    (inputs
+     (modify-inputs (package-inputs webkitgtk)
+       (delete "gtk+-2" "libnotify")))))
+
+;;; Required by e.g. emacs-next-pgtk, emacs-xwidgets, and some other GNOME
+;;; packages for webkit2gtk-4.0.  See also the upstream tracker for libsoup 3:
+;;; https://gitlab.gnome.org/GNOME/libsoup/-/issues/218.
 (define-public webkitgtk-with-libsoup2
   (package/inherit webkitgtk
     (name "webkitgtk-with-libsoup2")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index f6ddc1ee55..87bed6e8b9 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -56,6 +56,7 @@
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;; Copyright © 2022 Elais Player <elais@fastmail.com>
+;;; Copyright © 2022 Trevor Richards <trev@trevdev.ca>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1653,7 +1654,7 @@ modules for building a Wayland compositor.")
 (define-public swaylock
   (package
     (name "swaylock")
-    (version "1.5")
+    (version "1.6")
     (source
      (origin
        (method git-fetch)
@@ -1662,12 +1663,12 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
+        (base32 "1ihdvx6gdinzabvnazjmkk3ajrp7ngg0jzfwcjqn4hcjv64s0lam"))))
     (build-system meson-build-system)
     (inputs (list cairo gdk-pixbuf libxkbcommon
                   ;("linux-pam" ,linux-pam) ; FIXME: Doesn't work.
                   wayland))
-    (native-inputs (list pango pkg-config scdoc wayland-protocols))
+    (native-inputs (list pango pkg-config scdoc wayland-protocols-next))
     (home-page "https://github.com/swaywm/sway")
     (synopsis "Screen locking utility for Wayland compositors")
     (description "Swaylock is a screen locking utility for Wayland compositors.")
@@ -1729,7 +1730,7 @@ display a clock or apply image manipulation techniques to the background image."
 (define-public waybar
   (package
     (name "waybar")
-    (version "0.9.9")
+    (version "0.9.13")
     (source
      (origin
        (method git-fetch)
@@ -1738,7 +1739,7 @@ display a clock or apply image manipulation techniques to the background image."
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bp9ygqv3kawwxf53j1r98r0xxg81cx00jsmymmlrd8psgsd6yy9"))))
+        (base32 "15fy21cipih80amv78g7g4k2gylf107phbv0fjacn3w3n0i3cf2k"))))
     (build-system meson-build-system)
     (inputs (list date
                   fmt
@@ -2256,6 +2257,29 @@ one in Emacs.")
 PNG files.")
     (license license:gpl3+)))
 
+(define-public sbcl-stumpwm-notify
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-notify")
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     (list sbcl-bordeaux-threads
+           sbcl-dbus
+           sbcl-xml-emitter
+           (list stumpwm "lib")))
+    (arguments
+     '(#:asd-systems '("notify")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "util/notify"))))))
+    (home-page "https://github.com/stumpwm/stumpwm-contrib")
+    (synopsis "Notifications server for StumpWM")
+    (description "This module implements org.freedesktop.Notifications
+interface[fn:dbus-spec].  It shows notifications using stumpwm:message
+by default.")
+    (license license:gpl3+)))
+
 (define-public lemonbar
   (package
     (name "lemonbar")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index a88d9afa7a..0d595992cc 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -42,7 +42,7 @@
 ;;; Copyright © 2020 James Smith <jsubuntuxp@disroot.org>
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;; Copyright © 2020, 2021 Zheng Junjie <873216071@qq.com>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;; Copyright © 2021 Renzo Poddighe <renzo@poddighe.nl>
@@ -1344,28 +1344,39 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "1.10")
+    (version "2.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/linuxwacom/libwacom/releases/download/"
-                    "libwacom-" version "/libwacom-" version ".tar.bz2"))
+                    "libwacom-" version "/libwacom-" version ".tar.xz"))
               (sha256
                (base32
-                "14aj4ss1chxxgaprs9sfriia2ch9wj9rqay0ndkzk1m7jx2qrjgn"))))
-    (build-system glib-or-gtk-build-system)
+                "056l5dndd8654bmwlxxhvx8082s7pp9bg0wm68zb56iz3rv25l6h"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("--disable-static")))
+     (list
+      #:configure-flags #~(list "--default-library=shared")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'fix-tests
+                     (lambda _
+                       ;; Do not attempt to run systemd-specific commands.
+                       (substitute* "test/test_udev_rules.py"
+                         (("(systemd-hwdb|systemctl)")
+                          "true")))))))
     (native-inputs
      (list pkg-config
            ;; For tests.
-           python))
+           python
+           python-evdev
+           python-libevdev
+           python-pytest
+           python-pyudev))
     (inputs
-     (list gtk+ libgudev eudev libxml2))
+     (list gtk+ eudev libxml2))
     (propagated-inputs
-     ;; libwacom includes header files that include GLib, and libinput uses
-     ;; those header files.
-     (list glib))
+     ;; libwacom.pc 'Requires' these:
+     (list glib libgudev))
     (home-page "https://linuxwacom.github.io/")
     (synopsis "Helper library for Wacom tablet settings")
     (description
@@ -1378,7 +1389,7 @@ Wacom tablet applet.")
 (define-public xf86-input-wacom
   (package
     (name "xf86-input-wacom")
-    (version "0.39.0")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
@@ -1387,25 +1398,19 @@ Wacom tablet applet.")
              "xf86-input-wacom-" version "/"
              "xf86-input-wacom-" version ".tar.bz2"))
        (sha256
-        (base32 "11qk58az6qwii774ga45h5yqzipwn56f0d74kdbajqdv45p85gqj"))))
+        (base32 "04ks577ag2yir7kssv8zhig4rx9xqj2wifmlrcmy4k9lgw379di3"))))
     (arguments
-     `(#:configure-flags
-       (list (string-append "--with-sdkdir="
-                            (assoc-ref %outputs "out")
-                            "/include/xorg")
-             (string-append "--with-xorg-conf-dir="
-                            (assoc-ref %outputs "out")
-                            "/share/X11/xorg.conf.d"))))
+     (list #:configure-flags
+           #~(list (string-append "--with-sdkdir=" #$output "/include/xorg")
+                   (string-append "--with-xorg-conf-dir=" #$output
+                                  "/share/X11/xorg.conf.d"))))
     (build-system gnu-build-system)
-    (native-inputs
-     (list pkg-config))
-    (inputs
-     (list xorg-server libxrandr libxinerama libxi eudev))
+    (native-inputs (list pkg-config))
+    (inputs (list xorg-server libxrandr libxinerama libxi eudev))
     (home-page "https://linuxwacom.github.io/")
     (synopsis "Wacom input driver for X")
-    (description
-     "The xf86-input-wacom driver is the wacom-specific X11 input driver for
-the X.Org X Server version 1.7 and later (X11R7.5 or later).")
+    (description "The xf86-input-wacom driver is the wacom-specific X11 input
+driver for the X.Org X Server version 1.7 and later (X11R7.5 or later).")
     (license license:x11)))
 
 (define-public redshift
@@ -1576,7 +1581,7 @@ to an arbitrary balanced color.")
 (define-public gammastep
   (package
     (name "gammastep")
-    (version "2.0.8")
+    (version "2.0.9")
     (source
      (origin
        (method git-fetch)
@@ -1585,20 +1590,20 @@ to an arbitrary balanced color.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "071f3iqdbblb3awnx48j19kspk6l2g3658za80i2mf4gacgq9fm1"))))
+        (base32 "1rcciccnwhxh97wlr9gcirdxv33za369jsrgrfzcp3042824pm8i"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-python-and-typelib
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Gammastep GUI needs Typelib files from GTK and access
-             ;; to Python libraries.
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/gammastep-indicator")
-               `("PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
-               `("GI_TYPELIB_PATH" ":" prefix
-                 (,(getenv "GI_TYPELIB_PATH")))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'install 'wrap-python-and-typelib
+            (lambda _
+              ;; Gammastep GUI needs Typelib files from GTK and access to
+              ;; Python libraries.
+              (wrap-program (string-append #$output "/bin/gammastep-indicator")
+                `("PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
+                `("GI_TYPELIB_PATH" ":" prefix
+                  (,(getenv "GI_TYPELIB_PATH")))))))))
     (native-inputs
      (list autoconf
            automake
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 0ec0863f72..1b8562a619 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
-;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org>
 ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
 ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
@@ -5314,7 +5314,7 @@ application-facing EGL functions.")
 (define-public egl-wayland
   (package
     (name "egl-wayland")
-    (version "1.1.9")
+    (version "1.1.10")
     (source
      (origin
        (method git-fetch)
@@ -5323,7 +5323,7 @@ application-facing EGL functions.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1iz86cpc4v7izckrcslllnw0vvvgsxg1sr65yb8s9d0f8xa8djdd"))))
+        (base32 "13hdczhsicp4bfkcjg2npslwjaqrajjv867gxjnmvk77scr09dvm"))))
     (build-system meson-build-system)
     (native-inputs
      (list libglvnd ;needed for headers
@@ -6696,66 +6696,68 @@ box, and a calendar.  It uses GTK+, and will match your desktop theme.")
 (define-public xvfb-run
   (package
     (name "xvfb-run")
-    (version "1.20.10-3")
+    (version "1.20.11-1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://debian/pool/main/x/xorg-server/"
                            "xorg-server_" version ".diff.gz"))
        (sha256
-        (base32 "08gs9ni8ss8rw4n9cql1s8q05mj517vk1vm1varj1dsx75k4j25v"))))
+        (base32 "0hq8a2rw2ginxsifrpj3rsf2shxl69ylkc1650ij5vwjhxdr82hh"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'unpack
-           ;; Apply the source patch to an empty directory.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((source (assoc-ref inputs "source"))
-                    (diff.gz (basename source))
-                    (diff (substring diff.gz 0 (string-rindex diff.gz #\.))))
-               (mkdir "source")
-               (chdir "source")
-               (copy-file source diff.gz)
-               (invoke "gunzip" diff.gz)
-               (invoke "patch" "-Np1" "-i" diff)
-               (chdir "debian/local"))))
-         (delete 'configure)            ; nothing to configure
-         (replace 'build
-           (lambda _
-             (chmod "xvfb-run" #o755)
-             (substitute* "xvfb-run"
-               (("(\\(| )(fmt|stty|awk|cat|kill|getopt|mktemp|touch|rm|mcookie)"
-                 _ prefix command)
-                (string-append prefix (which command)))
-               ;; These also feature in UI messages, so be more strict.
-               (("(AUTHFILE |command -v |exec )(Xvfb|xauth)"
-                 _ prefix command)
-                (string-append prefix (which command))))))
-         (replace 'check
-           ;; There are no tests included.  Here we test whether we can run
-           ;; a simple client and whether xvfb-run --help succeeds
-           ;; without xvfb-run itself relying on $PATH.
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (let ((old-PATH (getenv "PATH"))
-                     (xterm (which "xterm")))
-                 (unsetenv "PATH")
-                 (invoke "./xvfb-run" xterm "-e" "true")
-                 (invoke "./xvfb-run" "--help")
-                 (setenv "PATH" old-PATH)))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (man (string-append out "/share/man/man1")))
-               (install-file "xvfb-run" bin)
-               (install-file "xvfb-run.1" man)))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'unpack
+            ;; Apply the source patch to an empty directory.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let*  ((diff.gz (basename #$source))
+                      (diff (substring diff.gz 0 (string-rindex diff.gz #\.))))
+                (mkdir "source")
+                (chdir "source")
+                (copy-file #$source diff.gz)
+                (invoke "gunzip" diff.gz)
+                (invoke "patch" "-Np1" "-i" diff)
+                (chdir "debian/local"))))
+          (delete 'configure)           ; nothing to configure
+          (replace 'build
+            (lambda* (#:key inputs #:allow-other-keys)
+              (chmod "xvfb-run" #o755)
+              (substitute* "xvfb-run"
+                (("(\\(| )(fmt|stty|awk|cat|kill|getopt|mktemp|touch|rm|mcookie)"
+                  _ prefix command)
+                 (string-append prefix (which command)))
+                ;; These also feature in UI messages, so be more strict.
+                (("(AUTHFILE |command -v |exec )(Xvfb|xauth)"
+                  _ prefix command)
+                 (string-append prefix
+                                (search-input-file
+                                 inputs (string-append "bin/" command)))))))
+          (replace 'check
+            ;; There are no tests included.  Here we test whether we can run
+            ;; a simple client and whether xvfb-run --help succeeds
+            ;; without xvfb-run itself relying on $PATH.
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (let ((old-PATH (getenv "PATH"))
+                      (xterm (which "xterm")))
+                  (unsetenv "PATH")
+                  (invoke "./xvfb-run" xterm "-e" "true")
+                  (invoke "./xvfb-run" "--help")
+                  (setenv "PATH" old-PATH)))))
+          (replace 'install
+            (lambda _
+              (let ((bin (string-append #$output "/bin"))
+                    (man (string-append #$output "/share/man/man1")))
+                (install-file "xvfb-run" bin)
+                (install-file "xvfb-run.1" man)))))))
     (inputs
-     (list util-linux ; for getopt
-           xauth xorg-server))
+     (list util-linux                   ; for getopt
+           xauth
+           xorg-server))
     (native-inputs
-     (list xterm))               ; for the test
+     (list xterm))                      ; for the test
     ;; This script is not part of the upstream xorg-server.  It is provided only
     ;; as a patch added to Debian's package.
     (home-page "https://packages.debian.org/sid/xorg-server-source")
@@ -6766,7 +6768,7 @@ within a virtual X server environment.  It sets up an X authority file or uses
 an existing user-specified one, writes a cookie to it, and then starts the
 @command{Xvfb} X server as a background process.  It also takes care of killing
 the server and cleaning up before returning the exit status of the command.")
-    (license (list license:x11                    ; the script
+    (license (list license:x11          ; the script
                    license:gpl2+))))              ; the man page
 
 (define-public setroot
diff --git a/gnu/services/security.scm b/gnu/services/security.scm
index fd5bf19730..15fae7a628 100644
--- a/gnu/services/security.scm
+++ b/gnu/services/security.scm
@@ -179,11 +179,6 @@
 (define (fail2ban-jail-configuration-serialize-symbol field-name value)
   (fail2ban-jail-configuration-serialize-string field-name (symbol->string value)))
 
-(define (fail2ban-jail-configuration-serialize-extra-content field-name value)
-  (if (maybe-value-set? value)
-      (string-append "\n" value "\n")
-      ""))
-
 (define-maybe integer (prefix fail2ban-jail-configuration-))
 (define-maybe string (prefix fail2ban-jail-configuration-))
 (define-maybe boolean (prefix fail2ban-jail-configuration-))
@@ -204,7 +199,7 @@
    "Backend to use to detect changes in the @code{log-path}.  The default is
 'auto.  To consult the defaults of the jail configuration, refer to the
 @file{/etc/fail2ban/jail.conf} file of the @code{fail2ban} package."
-fail2ban-jail-configuration-serialize-backend)
+   fail2ban-jail-configuration-serialize-backend)
   (max-retry
    maybe-integer
    "The number of failures before a host get banned
@@ -273,7 +268,7 @@ names matching their filter name.")
    maybe-symbol
    "The encoding of the log files handled by the jail.
 Possible values are: @code{'ascii}, @code{'utf-8} and @code{'auto}."
-fail2ban-jail-configuration-serialize-log-encoding)
+   fail2ban-jail-configuration-serialize-log-encoding)
   (log-path
    (list-of-strings '())
    "The file names of the log files to be monitored.")
@@ -281,9 +276,10 @@ fail2ban-jail-configuration-serialize-log-encoding)
    (list-of-fail2ban-jail-actions '())
    "A list of @code{<fail2ban-jail-action-configuration>}.")
   (extra-content
-   maybe-string
-   "Extra content for the jail configuration."
-   fail2ban-jail-configuration-serialize-extra-content)
+   (text-config '())
+   "Extra content for the jail configuration, provided as a list of file-like
+objects."
+   serialize-text-config)
   (prefix fail2ban-jail-configuration-))
 
 (define list-of-fail2ban-jail-configurations?
@@ -312,8 +308,9 @@ extensions.")
    (list-of-fail2ban-jail-configurations '())
    "Instances of @code{<fail2ban-jail-configuration>} explicitly provided.")
   (extra-content
-   maybe-string
-   "Extra raw content to add to the end of the @file{jail.local} file."))
+   (text-config '())
+   "Extra raw content to add to the end of the @file{jail.local} file,
+provided as a list of file-like objects."))
 
 (define (serialize-fail2ban-configuration config)
   (let* ((jails (fail2ban-configuration-jails config))
@@ -322,9 +319,7 @@ extensions.")
     (interpose
      (append (map serialize-fail2ban-jail-configuration
                   (append jails extra-jails))
-             (list (if (maybe-value-set? extra-content)
-                       extra-content
-                       ""))))))
+             (list (serialize-text-config 'extra-content extra-content))))))
 
 (define (config->fail2ban-etc-directory config)
   (let* ((fail2ban (fail2ban-configuration-fail2ban config))
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 4fd4b2a497..61f759a19d 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -344,6 +344,31 @@ as shepherd package."
           (use-modules (srfi srfi-34)
                        (system repl error-handling))
 
+          (define (call-with-file file flags proc)
+            (let ((port #f))
+              (dynamic-wind
+                (lambda ()
+                  (set! port (open file flags)))
+                (lambda ()
+                  (proc port))
+                (lambda ()
+                  (close-port port)
+                  (set! port #f)))))
+
+          ;; There's code run from shepherd that uses 'call-with-input-file' &
+          ;; co.--e.g., the 'urandom-seed' service.  Starting from Shepherd
+          ;; 0.9.2, users need to make sure not to leak non-close-on-exec file
+          ;; descriptors to child processes.  To address that, replace the
+          ;; standard bindings with O_CLOEXEC variants.
+          (set! call-with-input-file
+                (lambda (file proc)
+                  (call-with-file file (logior O_RDONLY O_CLOEXEC)
+                                  proc)))
+          (set! call-with-output-file
+                (lambda (file proc)
+                  (call-with-file file (logior O_WRONLY O_CREAT O_CLOEXEC)
+                                  proc)))
+
           ;; Specify the default environment visible to all the services.
           ;; Without this statement, all the environment variables of PID 1
           ;; are inherited by child services.
@@ -387,7 +412,7 @@ as shepherd package."
             ;; call; this avoids situations where services wrongfully lead
             ;; PID 1 to read from stdin (the console), which users may not
             ;; have access to (see <https://bugs.gnu.org/23697>).
-            (redirect-port (open-input-file "/dev/null")
+            (redirect-port (open "/dev/null" (logior O_RDONLY O_CLOEXEC))
                            (current-input-port)))))
 
     (scheme-file "shepherd.conf" config)))
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 8b480e1bd3..cb6227403b 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -965,6 +965,7 @@ that will be listening to receive secret keys on port 1004, TCP."
                          (generate-host-keys? #f)))
              (guix-service-type
               config => (guix-configuration
+                         (inherit config)
                          (generate-substitute-key? #f))))))))
 
 
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index b144cf7076..5bac496f01 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -1393,7 +1393,7 @@ files.")
   (replacement       anonip-configuration-replacement  ;string
                      (default #f))
   (ipv4mask          anonip-configuration-ipv4mask     ;number
-                     (default #f)) 
+                     (default #f))
   (ipv6mask          anonip-configuration-ipv6mask     ;number
                      (default #f))
   (increment         anonip-configuration-increment    ;number
@@ -1425,35 +1425,41 @@ files.")
                          (format #false "~a=~a"
                                  option value))))
                (list)))))
-    (list (shepherd-service
-           (provision (list (symbol-append 'anonip- (string->symbol output))))
-           (requirement '(user-processes))
-           (documentation "Anonimyze the given log file location with anonip.")
-           (start #~(lambda _
-                      (unless (file-exists? #$input)
-                          (mknod #$input 'fifo #o600 0))
-                      (let ((pid (fork+exec-command
-                                  (append
-                                      (list #$(file-append (anonip-configuration-anonip config)
-                                                           "/bin/anonip")
-                                            (string-append "--input=" #$input)
-                                            (string-append "--output=" #$output))
-                                      (if #$(anonip-configuration-skip-private? config)
-                                          '("--skip-private") (list))
-                                    '#$(optional anonip-configuration-column "--column")
-                                    '#$(optional anonip-configuration-ipv4mask "--ipv4mask")
-                                    '#$(optional anonip-configuration-ipv6mask "--ipv6mask")
-                                    '#$(optional anonip-configuration-increment "--increment")
-                                    '#$(optional anonip-configuration-replacement "--replacement")
-                                    '#$(optional anonip-configuration-delimiter "--delimiter")
-                                    '#$(optional anonip-configuration-regex "--regex"))
-                                  ;; Run in a UTF-8 locale
-                                  #:environment-variables
-                                  (list (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales
-                                                       "/lib/locale")
-                                        "LC_ALL=en_US.utf8"))))
-                        pid)))
-           (stop #~(make-kill-destructor))))))
+    (list
+     (shepherd-service
+      (provision
+       (list (symbol-append 'anonip- (string->symbol output))))
+      (requirement '(user-processes))
+      (documentation
+       "Anonimyze the given log file location with anonip.")
+      (start
+       #~(lambda _
+           (unless (file-exists? #$input)
+             (mknod #$input 'fifo #o600 0))
+           (let ((pid
+                  (fork+exec-command
+                   (append
+                    (list #$(file-append (anonip-configuration-anonip config)
+                                         "/bin/anonip")
+                          (string-append "--input=" #$input)
+                          (string-append "--output=" #$output))
+                    (if #$(anonip-configuration-skip-private? config)
+                        '("--skip-private") (list))
+                    '#$(optional anonip-configuration-column "--column")
+                    '#$(optional anonip-configuration-ipv4mask "--ipv4mask")
+                    '#$(optional anonip-configuration-ipv6mask "--ipv6mask")
+                    '#$(optional anonip-configuration-increment "--increment")
+                    '#$(optional anonip-configuration-replacement
+                                 "--replacement")
+                    '#$(optional anonip-configuration-delimiter "--delimiter")
+                    '#$(optional anonip-configuration-regex "--regex"))
+                   ;; Run in a UTF-8 locale
+                   #:environment-variables
+                   (list (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales
+                                        "/lib/locale")
+                         "LC_ALL=en_US.utf8"))))
+             pid)))
+      (stop #~(make-kill-destructor))))))
 
 (define anonip-service-type
   (service-type
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index 6a6918bfdd..3808b60445 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -108,13 +108,29 @@ environment variable\n" source-directory))
         (format #t "expanded load paths for ~{~a~^, ~}\n"
                 (map basename diff))))))
 
+(define* (add-install-to-native-load-path #:key outputs #:allow-other-keys)
+  "Append the native-site-lisp of OUTPUT to EMACSNATIVELOADPATH."
+  (let ((native-load-path (or (false-if-exception
+                               (string-split (getenv "EMACSNATIVELOADPATH") #\:))
+                              '()))
+        (install-directory (string-append (assoc-ref outputs "out")
+                                          "/lib/emacs/native-site-lisp")))
+    (setenv "EMACSNATIVELOADPATH"
+            ;; Emacs pushes these directories in reverse order, so the
+            ;; last one will be the first.
+            (string-join `(,@native-load-path ,install-directory)
+                         ":"))))
+
 (define* (build #:key outputs inputs #:allow-other-keys)
   "Compile .el files."
+  ;; Ensure that already compiled files in the working directory don't shadow
+  ;; the build.  Might happen, because check runs first.
+  (for-each delete-file (find-files "." "\\.el[cn]$"))
   (let* ((emacs (search-input-file inputs "/bin/emacs"))
          (out (assoc-ref outputs "out")))
     (setenv "SHELL" "sh")
     (parameterize ((%emacs emacs))
-      (emacs-byte-compile-directory (elpa-directory out)))))
+      (emacs-compile-directory (elpa-directory out)))))
 
 (define* (patch-el-files #:key outputs #:allow-other-keys)
   "Substitute the absolute \"/bin/\" directory with the right location in the
@@ -343,6 +359,8 @@ for libraries following the ELPA convention."
   (modify-phases gnu:%standard-phases
     (replace 'unpack unpack)
     (add-after 'unpack 'expand-load-path expand-load-path)
+    (add-after 'expand-load-path 'add-install-to-native-load-path
+      add-install-to-native-load-path)
     (delete 'bootstrap)
     (delete 'configure)
     (delete 'build)
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 8ee547f2b3..b2280ae70c 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -38,6 +38,7 @@
 
             emacs-generate-autoloads
             emacs-byte-compile-directory
+            emacs-compile-directory
             emacs-header-parse
 
             as-display
@@ -105,7 +106,14 @@ true, evaluate using dynamic scoping."
   (let* ((file (string-append directory "/" name "-autoloads.el"))
          (expr `(let ((backup-inhibited t)
                       (generated-autoload-file ,file))
-                  (update-directory-autoloads ,directory))))
+                  (cond
+                   ((require 'loaddefs-gen nil t)
+                    ;; Emacs >= 29
+                    (loaddefs-generate ,directory ,file))
+                   ((fboundp 'make-directory-autoloads)
+                    ;; Emacs 28
+                    (make-directory-autoloads ,directory ,file))
+                   (t (update-directory-autoloads ,directory))))))
     (emacs-batch-eval expr #:dynamic? #t)))
 
 (define* (emacs-byte-compile-directory dir)
@@ -115,6 +123,35 @@ true, evaluate using dynamic scoping."
                 (byte-recompile-directory (file-name-as-directory ,dir) 0 1))))
     (emacs-batch-eval expr)))
 
+(define* (emacs-compile-directory dir)
+  "Compile all files in DIR to native code.
+
+If native code is not supported, compile to bytecode instead."
+  (emacs-batch-eval
+    `(let ((byte-compile-debug t)       ; for proper exit status
+           (byte+native-compile (native-comp-available-p))
+           (files (directory-files-recursively ,dir "\\.el$")))
+       (mapc
+        (lambda (file)
+          (let (byte-to-native-output-file
+                ;; First entry is the eln-cache of the homeless shelter,
+                ;; second entry is the install directory.
+                (eln-dir (and (native-comp-available-p)
+                              (cadr native-comp-eln-load-path))))
+            (if byte+native-compile
+                (native-compile file
+                                (comp-el-to-eln-filename file eln-dir))
+                (byte-compile-file file))
+            ;; Sadly, we can't use pcase because quasiquote works different in
+            ;; Emacs.  See `batch-byte+native-compile' in comp.el for the
+            ;; actual shape of byte-to-native-output-file.
+            (unless (null byte-to-native-output-file)
+              (rename-file (car byte-to-native-output-file)
+                           (cdr byte-to-native-output-file)
+                           t))))
+       files))
+    #:dynamic? #t))
+
 (define (emacs-header-parse section file)
   "Parse the header SECTION in FILE and return it as a string."
   (emacs-batch-script
diff --git a/guix/import/gnome.scm b/guix/import/gnome.scm
index 49ad7169fd..9d8cd8ec76 100644
--- a/guix/import/gnome.scm
+++ b/guix/import/gnome.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,9 +25,11 @@
   #:use-module (json)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
+  #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (web uri)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 regex)
   #:export (%gnome-updater))
 
 ;;; Commentary:
@@ -60,18 +63,26 @@ not be determined."
   (define %not-dot
     (char-set-complement (char-set #\.)))
 
-  (define (even-minor-version? version)
-    (match (string-tokenize version %not-dot)
-      (((= string->number major) (= string->number minor) (= string->number micro))
-       ;; This is for things like GLib, with version strings like "2.72.3".
-       (and minor (even? minor) micro))
-      (((= string->number major) (= string->number minor))
-       ;; GNOME applications have version strings like "42.1" (only two
-       ;; integers) and are not subject to the odd/even policy.  MAJOR and
-       ;; MINOR should be valid numbers though; "43.alpha" is rejected.
-       (and major minor))
-      (_
-       #f)))
+  (define (pre-release-text? text)
+    (string-match "^(alpha|beta|rc)" text))
+
+  (define (release-version? version)
+    "Predicate to check if VERSION matches the format of a GNOME release
+version.  A release version can have more than one form, depending on the
+GNOME component, but typically it takes the form of a major-minor tuple, where
+minor can also be prefixed wih \"alpha\", \"beta\" or \"rc\".  For more
+information about the GNOME versioning scheme, see:
+https://discourse.gnome.org/t/new-gnome-versioning-scheme/4235"
+    (define components (string-tokenize version %not-dot))
+    (if (any pre-release-text? components)
+        #f                              ;ignore pre-releases
+        (match components
+          (((= string->number major) (= string->number minor) . _)
+           ;; Any other 3+ components versions such as "2.72.2".
+           (and major minor))
+          (((= string->number major) . _)
+           ;; A GNOME version strings like "42.1".
+           major))))
 
   (define upstream-name
     ;; Some packages like "NetworkManager" have camel-case names.
@@ -99,7 +110,7 @@ not be determined."
          (let* ((releases (assoc-ref releases upstream-name))
                 (latest   (fold (match-lambda*
                                   (((key . value) result)
-                                   (cond ((even-minor-version? key)
+                                   (cond ((release-version? key)
                                           (match result
                                             (#f
                                              (cons key value))
diff --git a/nix/libstore/misc.cc b/nix/libstore/misc.cc
index 97618089bd..d4e6d1b4af 100644
--- a/nix/libstore/misc.cc
+++ b/nix/libstore/misc.cc
@@ -59,14 +59,6 @@ void computeFSClosure(StoreAPI & store, const Path & path,
 }
 
 
-Path findOutput(const Derivation & drv, string id)
-{
-    foreach (DerivationOutputs::const_iterator, i, drv.outputs)
-        if (i->first == id) return i->second.path;
-    throw Error(format("derivation has no output `%1%'") % id);
-}
-
-
 static void dfsVisit(StoreAPI & store, const PathSet & paths,
     const Path & path, PathSet & visited, Paths & sorted,
     PathSet & parents)
diff --git a/nix/libstore/misc.hh b/nix/libstore/misc.hh
index edbf24047e..f70cda9fd0 100644
--- a/nix/libstore/misc.hh
+++ b/nix/libstore/misc.hh
@@ -21,10 +21,6 @@ void computeFSClosure(StoreAPI & store, const Path & path,
     PathSet & paths, bool flipDirection = false,
     bool includeOutputs = false, bool includeDerivers = false);
 
-/* Return the path corresponding to the output identifier `id' in the
-   given derivation. */
-Path findOutput(const Derivation & drv, string id);
-
 bool willBuildLocally(const Derivation & drv);
 
 bool substitutesAllowed(const Derivation & drv);
diff --git a/nix/libstore/store-api.cc b/nix/libstore/store-api.cc
index 0de0b6b298..781fb9e693 100644
--- a/nix/libstore/store-api.cc
+++ b/nix/libstore/store-api.cc
@@ -236,17 +236,6 @@ string showPaths(const PathSet & paths)
     return s;
 }
 
-
-void exportPaths(StoreAPI & store, const Paths & paths,
-    bool sign, Sink & sink)
-{
-    foreach (Paths::const_iterator, i, paths) {
-        writeInt(1, sink);
-        store.exportPath(*i, sign, sink);
-    }
-    writeInt(0, sink);
-}
-
 Path readStorePath(Source & from)
 {
     Path path = readString(from);
@@ -277,10 +266,4 @@ namespace nix {
 std::shared_ptr<StoreAPI> store;
 
 
-std::shared_ptr<StoreAPI> openStore(bool reserveSpace)
-{
-    return std::shared_ptr<StoreAPI>(new LocalStore(reserveSpace));
-}
-
-
 }
diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh
index 7d2ad2270d..82a79e50e2 100644
--- a/nix/libstore/store-api.hh
+++ b/nix/libstore/store-api.hh
@@ -365,22 +365,10 @@ Paths topoSortPaths(StoreAPI & store, const PathSet & paths);
 extern std::shared_ptr<StoreAPI> store;
 
 
-/* Factory method: open the Nix database, either through the local or
-   remote implementation. */
-std::shared_ptr<StoreAPI> openStore(bool reserveSpace = true);
-
-
 /* Display a set of paths in human-readable form (i.e., between quotes
    and separated by commas). */
 string showPaths(const PathSet & paths);
 
-
-/* Export multiple paths in the format expected by ‘nix-store
-   --import’. */
-void exportPaths(StoreAPI & store, const Paths & paths,
-    bool sign, Sink & sink);
-
-
 MakeError(SubstError, Error)
 MakeError(BuildError, Error) /* denotes a permanent build failure */