summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi57
-rw-r--r--etc/news.scm75
-rw-r--r--gnu/local.mk20
-rw-r--r--gnu/packages/accessibility.scm10
-rw-r--r--gnu/packages/animation.scm4
-rw-r--r--gnu/packages/backup.scm11
-rw-r--r--gnu/packages/calendar.scm4
-rw-r--r--gnu/packages/disk.scm59
-rw-r--r--gnu/packages/display-managers.scm65
-rw-r--r--gnu/packages/electronics.scm2
-rw-r--r--gnu/packages/freedesktop.scm127
-rw-r--r--gnu/packages/geo.scm7
-rw-r--r--gnu/packages/gimp.scm34
-rw-r--r--gnu/packages/glib.scm532
-rw-r--r--gnu/packages/gnome-xyz.scm660
-rw-r--r--gnu/packages/gnome.scm2299
-rw-r--r--gnu/packages/gnupg.scm2
-rw-r--r--gnu/packages/gnuzilla.scm1
-rw-r--r--gnu/packages/graphics.scm4
-rw-r--r--gnu/packages/gstreamer.scm32
-rw-r--r--gnu/packages/gtk.scm206
-rw-r--r--gnu/packages/guile-xyz.scm2
-rw-r--r--gnu/packages/kde-frameworks.scm6
-rw-r--r--gnu/packages/kde-games.scm2
-rw-r--r--gnu/packages/kde-multimedia.scm1
-rw-r--r--gnu/packages/kde-pim.scm1
-rw-r--r--gnu/packages/kde-utils.scm1
-rw-r--r--gnu/packages/linux.scm57
-rw-r--r--gnu/packages/mastodon.scm4
-rw-r--r--gnu/packages/maths.scm1
-rw-r--r--gnu/packages/mp3.scm1
-rw-r--r--gnu/packages/ocaml.scm6
-rw-r--r--gnu/packages/package-management.scm2
-rw-r--r--gnu/packages/patches/accountsservice-extensions.patch5
-rw-r--r--gnu/packages/patches/appstream-force-reload-stemmer.patch89
-rw-r--r--gnu/packages/patches/calls-disable-application-test.patch72
-rw-r--r--gnu/packages/patches/calls-disable-sip-test.patch44
-rw-r--r--gnu/packages/patches/cogl-fix-double-free.patch32
-rw-r--r--gnu/packages/patches/duc-fix-test-sh.patch70
-rw-r--r--gnu/packages/patches/eudev-rules-directory.patch9
-rw-r--r--gnu/packages/patches/feedbackd-use-system-gmobile.patch42
-rw-r--r--gnu/packages/patches/gdm-elogind-support.patch93
-rw-r--r--gnu/packages/patches/gegl-compatibility-old-librsvg.patch80
-rw-r--r--gnu/packages/patches/gitg-fix-positional-argument.patch36
-rw-r--r--gnu/packages/patches/glib-networking-gnutls-binding.patch21
-rw-r--r--gnu/packages/patches/glib-skip-failing-test.patch3
-rw-r--r--gnu/packages/patches/gmobile-make-it-installable.patch89
-rw-r--r--gnu/packages/patches/gnome-control-center-firmware-security.patch33
-rw-r--r--gnu/packages/patches/gtk2-harden-list-store.patch42
-rw-r--r--gnu/packages/patches/libcall-ui-make-it-installable.patch81
-rw-r--r--gnu/packages/patches/libgda-disable-data-proxy-test.patch59
-rw-r--r--gnu/packages/patches/mm-common-reproducible-tarball.patch40
-rw-r--r--gnu/packages/patches/mutter-fix-inverted-test.patch290
-rw-r--r--gnu/packages/patches/nautilus-extension-search-path.patch64
-rw-r--r--gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch40
-rw-r--r--gnu/packages/patches/pdfpc-build-with-vala-0.56.patch40
-rw-r--r--gnu/packages/patches/shared-mime-info-xdgmime-path.patch22
-rw-r--r--gnu/packages/patches/zathura-use-struct-initializers.patch68
-rw-r--r--gnu/packages/pcre.scm16
-rw-r--r--gnu/packages/pdf.scm73
-rw-r--r--gnu/packages/polkit.scm2
-rw-r--r--gnu/packages/python-xyz.scm74
-rw-r--r--gnu/packages/ruby.scm1
-rw-r--r--gnu/packages/suckless.scm2
-rw-r--r--gnu/packages/task-management.scm32
-rw-r--r--gnu/packages/telegram.scm10
-rw-r--r--gnu/packages/telephony.scm105
-rw-r--r--gnu/packages/text-editors.scm11
-rw-r--r--gnu/packages/tor-browsers.scm1
-rw-r--r--gnu/packages/virtualization.scm2
-rw-r--r--gnu/packages/web-browsers.scm2
-rw-r--r--gnu/packages/xml.scm6
-rw-r--r--gnu/services/base.scm116
-rw-r--r--gnu/services/dbus.scm37
-rw-r--r--gnu/services/desktop.scm129
-rw-r--r--gnu/services/xorg.scm2
-rw-r--r--guix/profiles.scm2
77 files changed, 4002 insertions, 2380 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 6a3b85d54a..69a904473c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19929,9 +19929,23 @@ Type of the service that runs udev, a service which populates the
 @file{/dev} directory dynamically, whose value is a
 @code{<udev-configuration>} object.
 
-This service type can be @emph{extended} using procedures
-@code{udev-rules-service} along with @code{file->udev-rule} or
-@code{udev-rule} which simplify the process of writing udev rules.
+Since the file names for udev rules and hardware description files
+matter, the configuration items for rules and hardware cannot simply be
+plain file-like objects with the rules content, because the name would
+be ignored.  Instead, they are directory file-like objects that contain
+optional rules in @file{lib/udev/rules.d} and optional hardware files in
+@file{lib/udev/hwdb.d}.  This way, the service can be configured with
+whole packages from which to take rules and hwdb files.
+
+The @code{udev-service-type} can be @emph{extended} with file-like
+directories that respect this hierarchy.  For convenience, the
+@code{udev-rule} and @code{file->udev-rule} can be used to construct
+udev rules, while @code{udev-hardware} and @code{file->udev-hardware}
+can be used to construct hardware description files.
+
+In an @code{operating-system} declaration, this service type can be
+@emph{extended} using procedures @code{udev-rules-service} and
+@code{udev-hardware-service}.
 @end defvar
 
 @deftp {Data Type} udev-configuration
@@ -19939,10 +19953,17 @@ Data type representing the configuration of udev.
 
 @table @asis
 @item @code{udev} (default: @code{eudev}) (type: file-like)
-Package object of the udev service.
+Package object of the udev service.  This package is used at run-time,
+when compiled for the target system.  In order to generate the
+@file{hwdb.bin} hardware index, it is also used when generating the
+system definition, compiled for the current system.
 
 @item @code{rules} (default: @var{'()}) (type: list-of-file-like)
-List of file-like objects denoting udev-rule files.
+List of file-like objects denoting udev rule files under a sub-directory.
+
+@item @code{hardware} (default: @var{'()}) (type: list-of-file-like)
+List of file-like objects denoting udev hardware description files under
+a sub-directory.
 
 @end table
 @end deftp
@@ -19965,6 +19986,11 @@ upon detecting a USB device with a given product identifier.
 @end lisp
 @end deffn
 
+@deffn {Procedure} udev-hardware @var{file-name} @var{contents}
+Return a udev hardware description file named @var{file-name} containing
+the hardware information @var{contents}.
+@end deffn
+
 @deffn {Procedure} udev-rules-service @var{name} @var{rules} [#:groups '()]
 Return a service that extends @code{udev-service-type} with @var{rules}
 and @code{account-service-type} with @var{groups} as system groups.
@@ -19984,6 +20010,11 @@ with the previously defined rule @code{%example-udev-rule}.
 @end lisp
 @end deffn
 
+@deffn {Procedure} udev-hardware-service @var{name} @var{hardware}
+Return a service that extends @code{udev-service-type} with
+@var{hardware}.  The service name is @code{@var{name}-udev-hardware}.
+@end deffn
+
 @deffn {Procedure} file->udev-rule @var{file-name} @var{file}
 Return a udev-rule file named @var{file-name} containing the rules
 defined within @var{file}, a file-like object.
@@ -20008,12 +20039,16 @@ The following example showcases how we can use an existing rule file.
 @end lisp
 @end deffn
 
-Additionally, Guix package definitions can be included in @var{rules} in
-order to extend the udev rules with the definitions found under their
-@file{lib/udev/rules.d} sub-directory.  In lieu of the previous
-@var{file->udev-rule} example, we could have used the
-@var{android-udev-rules} package which exists in Guix in the @code{(gnu
-packages android)} module.
+Since guix package definitions can be included in @var{rules} in order
+to use all their rules under the @file{lib/udev/rules.d} sub-directory,
+then in lieu of the previous @var{file->udev-rule} example, we could
+have used the @var{android-udev-rules} package which exists in Guix in
+the @code{(gnu packages android)} module.
+
+@deffn {Procedure} file->udev-hardware @var{file-name} @var{file}
+Return a udev hardware description file named @var{file-name} containing
+the rules defined within @var{file}, a file-like object.
+@end deffn
 
 The following example shows how to use the @var{android-udev-rules}
 package so that the Android tool @command{adb} can detect devices
diff --git a/etc/news.scm b/etc/news.scm
index ab7fa4c0d5..9443475455 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -20,6 +20,9 @@
 ;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com>
 ;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
 ;; Copyright © 2024 Wilko Meyer <w@wmeyer.eu>
+;; Copyright © 2024 Hilton Chain <hako@ultrarare.space>
+;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
+;; Copyright © 2024 Vivien Kraus <vivien@planete-kraus.eu>
 ;;
 ;; Copying and distribution of this file, with or without modification, are
 ;; permitted in any medium without royalty provided the copyright notice and
@@ -28,6 +31,78 @@
 (channel-news
  (version 0)
 
+ (entry (commit "523f3def65ab061a87f4fc9e6f9008e6a78fafb5")
+        (title
+         (en "GNOME updated to version 44 with a more modular desktop service")
+         (de "GNOME auf Version 44 aktualisiert mit modularem Dienst")
+         (fr "Mise à jour de GNOME en version 44 avec un service plus modulaire")
+         (zh "GNOME 44 更新,帶來更加模塊化的桌面服務"))
+        (body
+         (en "The @code{gnome-desktop-service-type} now differentiates between
+shell, utilities, and extra-packages among other fields to bring more structure
+in its configuration.
+
+With the update to GNOME 44, some shell extensions have been deprecated and
+others removed.  If any @code{gnome-shell-extension-@dots{}} package causes
+an error while running your usual update routine, make sure to remove it from
+your profile.")
+         (de "Der Dienst @code{gnome-desktop-service-type} unterscheidet nun
+unter anderem zwischen den Feldern shell, utilities und extra-packages, und
+bringt so etwas mehr Struktur in die Konfiguration.
+
+Mit dem Update zu GNOME 44 wurden einige Erweiterungen als obsolet deklariert
+und andere entfernt.  Falls ein Paket, dessen Name mit
+@code{gnome-shell-extension-} beginnt, zu einem Fehler während Ihrer
+Update-Routine führt, entfernen Sie es von Ihrem Profil.")
+         (fr "Le service @code{gnome-desktop-service-type} sépare
+maintenant les champs @code{shell}, @code{utilities} et @code{extra-
+packages} (entre autres) pour donner plus de structure à sa
+configuration.
+
+Pendant la mise à jour vers GNOME 44, certaines extensions du shell ont
+été dépréciées et d’autres supprimées. Si un paquet nommé
+@code{gnome-shell-extension-@dots{}} émet une erreur quand vous
+effectuez la mise à jour, vous devriez l’enlever de votre profil.")
+         (zh "@code{gnome-desktop-service-type} 設置新增 @code{shell}、
+@code{utilities}、@code{extra-packages} 等字段,使得 GNOME 桌面配置更加模塊化。
+
+隨着 GNOME 44 更新,一些 GNOME Shell 拓展已被棄用或刪除。更新中若有關於
+@code{gnome-shell-extension-@dots{}} 軟件包的錯誤,請將對應軟件包從 profile 中
+刪除。")))
+
+ (entry (commit "06d01c610e3bee61e38a177aecda5982d5b338ae")
+        (title
+         (en "The GNOME Display Manager uses Wayland by default")
+         (de "GNOME Display Manager nutzt nun Wayland als Vorgabe")
+         (fr "GDM utilise Wayland par défaut")
+         (zh "GNOME 顯示管理器(GDM)服務默認啓用 Wayland 支持"))
+        (body
+         (en "The @code{gdm-service-type} is configured to use Wayland instead
+of Xorg by default.")
+         (de "Der Dienst @code{gdm-service-type} verwendet nun Wayland
+als Vorgabe anstelle von Xorg.")
+         (fr "Le service @code{gdm-service-type} est configuré par défaut pour
+utiliser Wayland au lieu de Xorg.")
+         (zh "@code{gdm-service-type} 預設已由 Xorg 改爲 Wayland。")))
+
+ (entry (commit "498db4de1f09414adf68a3a383f0178434035179")
+        (title
+         (en "The udev service also manages hardware configuration files")
+         (de "Udev verwaltet nun auch Hardwarekonfigurationen")
+         (fr "Le service udev gère maintenant les configurations de matériel")
+         (zh "udev 服務現可管理硬件配置文件"))
+        (body
+         (en "The @code{udev-service-type} can now be configured and extended
+with eudev hardware configuration files (named @dfn{hwdb} by the eudev
+project).")
+         (de "Der Udev-Dienst kann nun mit Hardwaredatenbanken (auch als
+@dfn{hwdb} bekannt) konfiguriert und erweitert werden.")
+         (fr "Le type de service @code{udev-service-type} peut maintenant être
+configuré et étendu avec des fichiers de configuration de matériel (appelés
+@dfn{hwdb} par le projet eudev).")
+         (zh "現可使用 eudev 的硬件配置文件(@dfn{hwdb})設置及拓展
+@code{udev-service-type}。")))
+
  (entry (commit "ff1251de0bc327ec478fc66a562430fbf35aef42")
         (title
          (en "Daemon vulnerability allowing store corruption has been fixed")
diff --git a/gnu/local.mk b/gnu/local.mk
index 5429dc498c..e4ff3817dc 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -60,6 +60,7 @@
 # Copyright © 2023 Ivana Drazovic <iv.dra@hotmail.com>
 # Copyright © 2023 Andy Tai <atai@atai.org>
 # Copyright © 2023 B. Wilson <elaexuotee@wilsonb.com>
+# Copyright © 2023 Bruno Victal <mirai@makinata.eu>
 # Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
 # Copyright © 2023 Herman Rimm <herman@rimm.ee>
 # Copyright © 2023 Troy Figiel <troy@troyfigiel.com>
@@ -939,6 +940,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch	\
   %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch	\
   %D%/packages/patches/aoflagger-use-system-provided-pybind11.patch \
+  %D%/packages/patches/appstream-force-reload-stemmer.patch	\
   %D%/packages/patches/apr-fix-atomics.patch			\
   %D%/packages/patches/apr-skip-getservbyname-test.patch	\
   %D%/packages/patches/aria2-unbundle-wslay.patch		\
@@ -1012,6 +1014,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/calibre-no-updates-dialog.patch		\
   %D%/packages/patches/calibre-remove-test-sqlite.patch		\
   %D%/packages/patches/calibre-remove-test-unrar.patch		\
+  %D%/packages/patches/calls-disable-application-test.patch	\
+  %D%/packages/patches/calls-disable-sip-test.patch		\
   %D%/packages/patches/camlboot-dynamically-allocate-stack-signal.patch	\
   %D%/packages/patches/catdoc-CVE-2017-11110.patch		\
   %D%/packages/patches/ccextractor-add-missing-header.patch	\
@@ -1059,6 +1063,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/clucene-pkgconfig.patch			\
   %D%/packages/patches/cmake-curl-certificates-3.24.patch	\
   %D%/packages/patches/coda-use-system-libs.patch		\
+  %D%/packages/patches/cogl-fix-double-free.patch		\
   %D%/packages/patches/collectd-5.11.0-noinstallvar.patch		\
   %D%/packages/patches/combinatorial-blas-awpm.patch		\
   %D%/packages/patches/combinatorial-blas-io-fix.patch		\
@@ -1110,6 +1115,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch	\
   %D%/packages/patches/dstat-skip-devices-without-io.patch	\
   %D%/packages/patches/dtc-meson-cell-overflow.patch		\
+  %D%/packages/patches/duc-fix-test-sh.patch                    \
   %D%/packages/patches/dune-common-skip-failing-tests.patch	\
   %D%/packages/patches/dune-grid-add-missing-include-cassert.patch	\
   %D%/packages/patches/dune-istl-fix-solver-playground.patch	\
@@ -1179,6 +1185,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spFactor.patch			\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
   %D%/packages/patches/fbreader-fix-icon.patch		\
+  %D%/packages/patches/feedbackd-use-system-gmobile.patch	\
   %D%/packages/patches/fenics-dolfin-algorithm.patch		\
   %D%/packages/patches/fenics-dolfin-demo-init.patch		\
   %D%/packages/patches/fenics-dolfin-boost.patch		\
@@ -1315,10 +1322,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/ghostscript-no-header-uuid.patch		\
   %D%/packages/patches/ghostscript-no-header-creationdate.patch \
   %D%/packages/patches/git-filter-repo-generate-doc.patch	\
-  %D%/packages/patches/gitg-fix-positional-argument.patch	\
   %D%/packages/patches/gklib-suitesparse.patch			\
   %D%/packages/patches/glib-appinfo-watch.patch			\
-  %D%/packages/patches/glib-networking-gnutls-binding.patch	\
   %D%/packages/patches/glib-skip-failing-test.patch		\
   %D%/packages/patches/glibc-2.33-riscv64-miscompilation.patch	\
   %D%/packages/patches/glibc-CVE-2019-7309.patch		\
@@ -1356,10 +1361,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/glibc-2.29-supported-locales.patch     	\
   %D%/packages/patches/glibc-supported-locales.patch     	\
   %D%/packages/patches/glslang-install-static-libs.patch     	\
+  %D%/packages/patches/gmobile-make-it-installable.patch	\
   %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-2048-fix-positional-argument.patch	\
+  %D%/packages/patches/gnome-control-center-firmware-security.patch	\
   %D%/packages/patches/gnome-control-center-libexecdir.patch	\
   %D%/packages/patches/gnome-dictionary-meson-i18n.patch	\
   %D%/packages/patches/gnome-online-miners-tracker-3.patch	\
@@ -1418,6 +1425,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/guile-rsvg-pkgconfig.patch		\
   %D%/packages/patches/guile-emacs-fix-configure.patch		\
   %D%/packages/patches/gtk2-fix-builder-test.patch		\
+  %D%/packages/patches/gtk2-harden-list-store.patch		\
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
   %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
   %D%/packages/patches/gtk2-theme-paths.patch			\
@@ -1515,6 +1523,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch		\
   %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/julia-Use-MPFR-4.2.patch	                \
+  %D%/packages/patches/libcall-ui-make-it-installable.patch	\
   %D%/packages/patches/libcss-check-format.patch		\
   %D%/packages/patches/libextractor-tidy-support.patch		\
   %D%/packages/patches/libftdi-fix-paths-when-FTDIPP-set.patch	\
@@ -1575,6 +1584,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libcyaml-libyaml-compat.patch		\
   %D%/packages/patches/libexpected-use-provided-catch2.patch	\
   %D%/packages/patches/libgda-cve-2021-39359.patch		\
+  %D%/packages/patches/libgda-disable-data-proxy-test.patch     \
   %D%/packages/patches/libgda-fix-build.patch			\
   %D%/packages/patches/libgda-fix-missing-initialization.patch	\
   %D%/packages/patches/libgda-skip-postgresql-tests.patch	\
@@ -1695,7 +1705,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
-  %D%/packages/patches/mm-common-reproducible-tarball.patch	\
   %D%/packages/patches/mpc123-initialize-ao.patch		\
   %D%/packages/patches/mpg321-CVE-2019-14247.patch		\
   %D%/packages/patches/mpg321-gcc-10.patch			\
@@ -1707,7 +1716,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/musl-cross-locale.patch			\
-  %D%/packages/patches/mutter-fix-inverted-test.patch		\
   %D%/packages/patches/mutt-store-references.patch		\
   %D%/packages/patches/m17n-lib-1.8.0-use-pkg-config-for-freetype.patch	\
   %D%/packages/patches/nanosvg-prusa-slicer.patch		\
@@ -1777,6 +1785,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/opentaxsolver-file-browser-fix.patch     \
   %D%/packages/patches/open-zwave-hidapi.patch			\
   %D%/packages/patches/orangeduck-mpc-fix-pkg-config.patch	\
+  %D%/packages/patches/orbit2-fix-array-allocation-32bit.patch \
   %D%/packages/patches/orpheus-cast-errors-and-includes.patch	\
   %D%/packages/patches/osip-CVE-2017-7853.patch			\
   %D%/packages/patches/ots-no-include-missing-file.patch	\
@@ -1788,6 +1797,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/pam-krb5-CVE-2020-10595.patch		\
   %D%/packages/patches/pango-skip-libthai-test.patch		\
   %D%/packages/patches/password-store-tree-compat.patch		\
+  %D%/packages/patches/pdfpc-build-with-vala-0.56.patch         \
   %D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch			\
   %D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
   %D%/packages/patches/plasp-fix-normalization.patch \
@@ -2043,6 +2053,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libsequoia-remove-store.patch		\
   %D%/packages/patches/serf-python3.patch			\
   %D%/packages/patches/shakespeare-spl-fix-grammar.patch		\
+  %D%/packages/patches/shared-mime-info-xdgmime-path.patch	\
   %D%/packages/patches/sharutils-CVE-2018-1000097.patch		\
   %D%/packages/patches/slim-config.patch			\
   %D%/packages/patches/slim-login.patch				\
@@ -2221,6 +2232,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xygrib-fix-finding-data.patch		\
   %D%/packages/patches/xygrib-newer-proj.patch			\
   %D%/packages/patches/yggdrasil-extra-config.patch	\
+  %D%/packages/patches/zathura-use-struct-initializers.patch    \
   %D%/packages/patches/zig-0.9-riscv-support.patch		\
   %D%/packages/patches/zig-do-not-link-against-librt.patch	\
   %D%/packages/patches/zig-use-baseline-cpu-by-default.patch	\
diff --git a/gnu/packages/accessibility.scm b/gnu/packages/accessibility.scm
index 0b5fb79f13..1b5fd6db50 100644
--- a/gnu/packages/accessibility.scm
+++ b/gnu/packages/accessibility.scm
@@ -129,6 +129,11 @@ terminals.")
          "PYTHON_ROOT=/"
          (string-append "TCL_DIR=" #$output "/lib")
          "INSTALL_WRITABLE_DIRECTORY=no-thanks")
+      #:imported-modules `((guix build python-build-system)
+                           ,@%glib-or-gtk-build-system-modules)
+      #:modules '((guix build utils)
+                  (guix build glib-or-gtk-build-system)
+                  ((guix build python-build-system) #:prefix python:))
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'fix-errors
@@ -142,7 +147,10 @@ terminals.")
                  (string-append "extra_link_args = ['-Wl,-rpath="
                                 #$output
                                 "/lib'], "
-                                "extra_compile_args = "))))))))
+                                "extra_compile_args = ")))))
+          (add-before 'install 'set-pythonpath
+            (assoc-ref python:%standard-phases
+                       'add-install-to-pythonpath)))))
     (native-inputs
      (list clisp
            python-cython
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index d6bd3fd03d..3bcf1cc8f0 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -109,7 +109,7 @@ rendering vector based animations and art in realtime.")
                (base32
                 "1jnahpxvrdxrll7b7av3zxabm5j3nlz6m3vg4sib2278v1wf91yc"))))
     (build-system gnu-build-system)
-    (inputs (list glibmm-2.64))
+    (inputs (list glibmm-2.66))
     (native-inputs (list pkg-config))
     (home-page "https://www.synfig.org")
     (synopsis "Extended C++ template library")
@@ -149,7 +149,7 @@ C++ @dfn{Standard Template Library} (STL).")
            fftw
            fontconfig
            freetype
-           glibmm-2.64
+           glibmm-2.66
            imagemagick
            libxml++-2
            libsigc++
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 253ab74a19..604102bc7b 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -121,6 +121,7 @@
     (build-system python-build-system)
     (native-inputs
      (list gettext-minimal ; for msgfmt
+           gobject-introspection
            util-linux ; setsid command, for the tests
            par2cmdline
            python-fasteners
@@ -135,7 +136,8 @@
     (propagated-inputs
      (list python-lockfile python-pygobject python-urllib3))
     (inputs
-     (list dbus ; dbus-launch (Gio backend)
+     (list bash-minimal ; to run the wrapped program
+           dbus ; dbus-launch (Gio backend)
            librsync
            lftp
            gnupg ; gpg executable needed
@@ -175,7 +177,12 @@
                                                    "share/zoneinfo"))
                    ;; Some things respect TMPDIR, others hard-code /tmp, and the
                    ;; defaults don't match up, breaking test_restart.  Fix it.
-                   (setenv "TMPDIR" "/tmp"))))))
+                   (setenv "TMPDIR" "/tmp")))
+               (add-after 'wrap 'gi-wrap
+                 (lambda _
+                   (let ((prog (string-append #$output "/bin/duplicity")))
+                     (wrap-program prog
+                       `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
     (home-page "https://duplicity.gitlab.io/duplicity-web/")
     (synopsis "Encrypted backup using rsync algorithm")
     (description
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 7c75b22587..a71da5ad0e 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -123,7 +123,7 @@ the <tz.h> library for handling time zones and leap seconds.")
 (define-public libical
   (package
     (name "libical")
-    (version "3.0.16")
+    (version "3.0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -131,7 +131,7 @@ the <tz.h> library for handling time zones and leap seconds.")
                     version "/libical-" version ".tar.gz"))
               (sha256
                (base32
-                "0cqc1wpalxmxjx8dmcaga9w8kd5l7944hqmidz43hifaf7fhaixl"))))
+                "06vqbxg4f3i03087grjncfy9pbvmlhg4v1ajhwr400l7nrnrmnmw"))))
     (build-system cmake-build-system)
     (arguments
      (list
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index b0117d77ce..2e2c5739cc 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -1562,36 +1562,39 @@ reliably with @code{bmaptool} than with traditional tools, like @code{dd} or
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0sglcn38rgn6y3m5ahngizyn3x2rzhqjphs7g0ppnlinkz56rcv4"))))
+                "0sglcn38rgn6y3m5ahngizyn3x2rzhqjphs7g0ppnlinkz56rcv4"))
+              (patches
+               (search-patches "duc-fix-test-sh.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out")))
-               (substitute* "src/duc/cmd-ui.c"
-                 (("ncursesw/ncurses.h") "ncurses.h"))
-               (substitute* "examples/index.cgi"
-                 (("/usr/local/bin/duc")
-                  (string-append out "/bin/duc"))))))
-         (add-after 'install 'install-examples
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
-               (copy-recursively "examples" (string-append doc "/examples")))))
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (substitute* "test.sh"
-               ;; Keep the test logs where --keep-failed can see them.
-               (("^(DUC_TEST_DIR=).*" _ assign)
-                (format #f "~a~a/test-directory~%" assign (getcwd)))
-               ;; XXX ‘actual size’ differed on my system (a consistent 348160
-               ;; bytes where the tests expect 540672).  However, the ‘apparent
-               ;; size’ matches, as does the actual test output.  Good enough…?
-               ((" [0-9]*B actual") " [0-9]*B actual"))
-             (when tests?
-               (invoke "./test.sh"))))))) ; no ‘check’ target
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out")))
+                (substitute* "src/duc/cmd-ui.c"
+                  (("ncursesw/ncurses.h") "ncurses.h"))
+                (substitute* "examples/index.cgi"
+                  (("/usr/local/bin/duc")
+                   (string-append out "/bin/duc"))))))
+          (add-after 'install 'install-examples
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (doc (string-append out "/share/doc/" #$name "-" #$version)))
+                (copy-recursively "examples" (string-append doc "/examples")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (substitute* "test.sh"
+                ;; Keep the test logs where --keep-failed can see them.
+                (("^(DUC_TEST_DIR=).*" _ assign)
+                 (format #f "~a~a/test-directory~%" assign (getcwd)))
+                ;; XXX ‘actual size’ differed on my system (a consistent 348160
+                ;; bytes where the tests expect 540672).  However, the ‘apparent
+                ;; size’ matches, as does the actual test output.  Good enough…?
+                ((" [0-9]*B actual") " [0-9]*B actual"))
+              (when tests?
+                (invoke "./test.sh"))))))) ; no ‘check’ target
     (native-inputs
      (list autoconf automake libtool pkg-config))
     (inputs
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 2df4e6311b..e3381a1665 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -330,36 +330,37 @@ experience for your users, your family and yourself")
                                        "lightdm-vnc-ipv6.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:parallel-tests? #f             ; fails when run in parallel
-       #:configure-flags
-       (list "--localstatedir=/var"
-             "--enable-gtk-doc"
-             ;; Otherwise the test suite fails on such a warning.
-             "CFLAGS=-Wno-error=missing-prototypes")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/shared-data-manager.c"
-               (("/bin/rm")
-                (search-input-file inputs "bin/rm")))
-             (substitute* '("data/users.conf"
-                            "common/user-list.c")
-               (("/bin/false")
-                (search-input-file inputs "bin/false"))
-               (("/usr/sbin/nologin")
-                (search-input-file inputs "sbin/nologin")))
-             (substitute* "src/seat.c"
-               (("/bin/sh")
-                (search-input-file inputs "bin/sh")))))
-         (add-before 'check 'pre-check
-           (lambda _
-             (wrap-program "tests/src/test-python-greeter"
-               `("GUIX_PYTHONPATH"      ":" prefix (,(getenv "GUIX_PYTHONPATH")))
-               `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
-             ;; Avoid printing locale warnings, which trip up the text
-             ;; matching tests.
-             (unsetenv "LC_ALL"))))))
+     (list
+      #:parallel-tests? #f             ; fails when run in parallel
+      #:configure-flags
+      #~(list "--localstatedir=/var"
+              "--enable-gtk-doc"
+              ;; Otherwise the test suite fails on such a warning.
+              "CFLAGS=-Wno-error=missing-prototypes")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/shared-data-manager.c"
+                (("/bin/rm")
+                 (search-input-file inputs "bin/rm")))
+              (substitute* '("data/users.conf"
+                             "common/user-list.c")
+                (("/bin/false")
+                 (search-input-file inputs "bin/false"))
+                (("/usr/sbin/nologin")
+                 (search-input-file inputs "sbin/nologin")))
+              (substitute* "src/seat.c"
+                (("/bin/sh")
+                 (search-input-file inputs "bin/sh")))))
+          (add-before 'check 'pre-check
+            (lambda _
+              (wrap-program "tests/src/test-python-greeter"
+                `("GUIX_PYTHONPATH"      ":" prefix (,(getenv "GUIX_PYTHONPATH")))
+                `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
+              ;; Avoid printing locale warnings, which trip up the text
+              ;; matching tests.
+              (unsetenv "LC_ALL"))))))
     (inputs
      (list audit
            bash-minimal                 ;for cross-compilation
@@ -381,7 +382,9 @@ experience for your users, your family and yourself")
            libtool
            vala                         ;for Vala bindings
            ;; For tests
-           dbus
+           ;; All tests fail with dbus >= 1.15.2, see
+           ;; https://github.com/canonical/lightdm/issues/346
+           dbus-1.15.0
            python-wrapper
            python-pygobject
            which
diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
index 83a92abc4e..aaf762b02b 100644
--- a/gnu/packages/electronics.scm
+++ b/gnu/packages/electronics.scm
@@ -210,7 +210,7 @@ them usable as simple logic analyzer and/or oscilloscope hardware.")
       ;; and "glib" in Requires
       (propagated-inputs
        (list glib
-             glibmm-2.64
+             glibmm-2.66
              libserialport
              libusb
              libftdi
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 5518d38af5..78443d6f5c 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -33,6 +33,7 @@
 ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;; Copyright © 2023 Alex Devaure <ajadevaure@gmail.com>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
 ;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -139,7 +140,7 @@
 (define-public appstream
   (package
     (name "appstream")
-    (version "0.15.6")
+    (version "0.16.4")
     (source
      (origin
        (method url-fetch)
@@ -148,11 +149,14 @@
                        "appstream/releases/"
                        "AppStream-" version ".tar.xz"))
        (sha256
-        (base32 "03pirmc5r4izl6mzff879g7pk1nxq03kgpr2yvnnqnlb6r0ckmi3"))))
+        (base32 "1val1b3dggn9g33q2r9q7wsl75a64x4lcvswvkcjjbvakkbj5xyl"))
+       (patches
+        (search-patches "appstream-force-reload-stemmer.patch"))))
     (build-system meson-build-system)
     (arguments
      (list
       #:glib-or-gtk? #t
+      #:configure-flags #~(list "-Dsystemd=false")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-libstemmer
@@ -162,11 +166,6 @@
               (substitute* "meson.build"
                 (("/usr/include")
                  (dirname libstemmer.h))))))
-          (add-after 'unpack 'disable-failing-tests
-            (lambda _
-              (substitute* "tests/test-pool.c"
-                (("[ \t]*g_test_add_func \\(\"/AppStream/PoolRead?.*;")
-                 ""))))
           (add-before 'check 'check-setup
             (lambda _
               (setenv "HOME" (getcwd)))))))
@@ -482,6 +481,115 @@ method framework.")
 display servers.  It supports many different languages and emoji.")
     (license license:gpl3+)))
 
+;; Private package used by shared-mime-info.
+(define xdgmime
+  ;; No public release, match commit to the one used in the
+  ;; shared-mime-info release.
+  (let ((commit "179296748e92bd91bf531656632a1056307fb7b7")
+        (revision "2"))
+    (package
+      (name "xdgmime")
+      (version (git-version "0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.freedesktop.org/xdg/xdgmime.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "04bpbqlkmwi2pqx1lj3awa9f9gwp4n91fpnz8hbbd0hl8x41przm"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:tests? #f  ; no tests
+        #:make-flags #~(list (string-append "DESTDIR=" #$output)
+                             #$(string-append "CC=" (cc-for-target)))
+        #:imported-modules `((guix build copy-build-system)
+                             ,@%gnu-build-system-modules)
+        #:modules `((guix build gnu-build-system)
+                    ((guix build copy-build-system) #:prefix copy:)
+                    (guix build utils))
+        #:phases
+        #~(modify-phases %standard-phases
+            ;; Package uses a hand-crafted Makefile.
+            (delete 'configure)
+            (replace 'install
+              (lambda args
+                (apply (assoc-ref copy:%standard-phases 'install)
+                       #:install-plan
+                       '(("src" "bin/" #:include ("print-mime-data"
+                                                  "test-mime-data"
+                                                  "test-mime")))
+                       args))))))
+      (home-page "https://gitlab.freedesktop.org/xdg/xdgmime/")
+      (synopsis "Module that parses the freedesktop.org MIME spec")
+      (description "This module is used for shared-mime-info package tests.")
+      (license (list license:lgpl2.1+ license:artistic2.0)))))
+
+;; Note: when updating shared-mime-info, don't forget to update xdgmime's commit
+;; to the one used in the release.
+(define-public shared-mime-info
+  (package
+    (name "shared-mime-info")
+    (version "2.3")
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://gitlab.freedesktop.org/xdg/shared-mime-info.git")
+                   (commit version)))
+             (file-name (git-file-name name version))
+             (sha256
+              (base32
+               "0w8sbhz00sk6k8pyiykfig4rm22jyibalj7g22j9qf3d2nfy8ivh"))
+             (patches (search-patches "shared-mime-info-xdgmime-path.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      #~(list (string-append
+               "-Dxdgmime-path="
+               (dirname
+                (search-input-file %build-inputs "/bin/test-mime")))
+              "-Dupdate-mimedb=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Don't patch shebangs for the test files.
+          (replace 'patch-source-shebangs
+            (lambda _
+              (let ((pred (lambda (file stat)
+                            (and (eq? 'regular (stat:type stat))
+                                 (not (string-prefix? "./tests/mime-detection"
+                                                      file))))))
+                (for-each patch-shebang
+                          (find-files "." pred #:stat lstat)))))
+          ;; The docs have no install rule.
+          (add-after 'install 'install-doc
+            (lambda* (#:key source #:allow-other-keys)
+              (let ((dest (string-append #$output:doc "/share/doc")))
+                (with-directory-excursion "data/shared-mime-info-spec-html"
+                  (install-file "shared-mime-info-spec.html"
+                                (string-append dest "/html")))
+                (install-file (string-append source
+                                             "/data/shared-mime-info-spec.xml")
+                              dest)))))))
+    (inputs
+     (list glib libxml2))
+    (native-inputs
+     (list gettext-minimal pkg-config python xdgmime
+           ;; For 'doc' output.
+           docbook-xml-4.1.2 docbook-xsl xmlto))
+    (outputs (list "out" "doc"))
+    (home-page "https://www.freedesktop.org/wiki/Software/shared-mime-info")
+    (synopsis "Database of common MIME types")
+    (description
+     "The shared-mime-info package contains the core database of common types
+and the update-mime-database command used to extend it.  It requires glib2 to
+be installed for building the update command.  Additionally, it uses intltool
+for translations, though this is only a dependency for the maintainers.  This
+database is translated at Transifex.")
+    (license license:gpl2+)))
+
 (define-public xdg-utils
   (package
     (name "xdg-utils")
@@ -1659,7 +1767,7 @@ message bus.")
 (define-public accountsservice
   (package
     (name "accountsservice")
-    (version "22.08.8")
+    (version "23.13.9")
     (source
      (origin
        (method url-fetch)
@@ -1667,7 +1775,7 @@ message bus.")
                            "accountsservice/accountsservice-"
                            version ".tar.xz"))
        (sha256
-        (base32 "14d3lwik048h62qrzg1djdd2sqmxf3m1r859730pvzhrd6krg6ch"))
+        (base32 "0kwjkff5m7gnzpns6cy27az90w7sxzwzygyzwy90kyi4mvg4rnmd"))
        (patches (search-patches "accountsservice-extensions.patch"))))
     (build-system meson-build-system)
     (arguments
@@ -1708,6 +1816,7 @@ message bus.")
            docbook-xsl
            gettext-minimal
            `(,glib "bin")               ; for gdbus-codegen, etc.
+           glibc-locales                    ;for tests
            gobject-introspection
            gtk-doc
            libxml2                      ;for XML_CATALOG_FILES
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index e7a032640d..601cd11bbd 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -470,7 +470,7 @@ topology functions.")
 (define-public gnome-maps
   (package
     (name "gnome-maps")
-    (version "43.0")                    ;for libsoup 3 support
+    (version "44.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -478,7 +478,7 @@ topology functions.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1r1l6ajs6zz316m8zac5r0l3qgdv616xh376bfn2fflcnz7wys08"))))
+                "026488yb6azwb2sm0yy0iaipk914l3agvb7d8azks4kyjqlslyb8"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -520,11 +520,10 @@ topology functions.")
            glib-networking
            gnome-online-accounts
            gsettings-desktop-schemas
-           gtk+
+           gtk
            libadwaita
            libgee
            libgweather4
-           libhandy
            librsvg
            libsecret
            libshumate
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 8987a4502d..b458a6397c 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -251,23 +251,23 @@ provided, as well as a framework to add new color models and data types.")
      (list babl glib json-glib))
     (inputs
      ;; All inputs except libjpeg and libpng are optional.
-     `(("cairo" ,cairo)
-       ("gdk-pixbuf" ,gdk-pixbuf)
-       ("gexiv2" ,gexiv2)
-       ("jasper" ,jasper)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libnsgif" ,libnsgif)
-       ("libpng" ,libpng)
-       ("libraw" ,libraw)
-       ("librsvg" ,(librsvg-for-system))
-       ("libspiro" ,libspiro)
-       ("libtiff" ,libtiff)
-       ("libwebp" ,libwebp)
-       ("maxflow" ,maxflow)
-       ("openexr" ,openexr-2)
-       ("pango" ,pango)
-       ("poppler" ,poppler)
-       ("sdl2" ,sdl2)))
+     (list cairo
+           gdk-pixbuf
+           gexiv2
+           jasper
+           libjpeg-turbo
+           libnsgif
+           libpng
+           libraw
+           (librsvg-for-system)
+           libspiro
+           libtiff
+           libwebp
+           maxflow
+           openexr-2
+           pango
+           poppler
+           sdl2))
     (native-inputs
      (list `(,glib "bin")               ; for gtester
            gobject-introspection
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index b5eb4602da..cf066a8aa6 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -37,6 +37,7 @@
 
 (define-module (gnu packages glib)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
@@ -105,7 +107,7 @@
 (define dbus
   (package
     (name "dbus")
-    (version "1.14.0")
+    (version "1.15.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -113,49 +115,57 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "1m7bibavml4gx9d67j403l0kzd1a4z8lhrpxb2as3q4nfpiwrmyc"))
+                "016j3rqc8m62bg0h7z4rpvbvm5bg0hbjrld733f0aby8drz5kz44"))
               (patches (search-patches "dbus-helper-search-path.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags
-       (list
-        ;; Install the system bus socket under /var.
-        "--localstatedir=/var"
+     (list
+      #:configure-flags
+      #~(list
+         ;; Install the system bus socket under /var.
+         "--localstatedir=/var"
 
-        ;; Install the session bus socket under /tmp.
-        "--with-session-socket-dir=/tmp"
+         ;; Install the session bus socket under /tmp.
+         "--with-session-socket-dir=/tmp"
 
-        ;; Build shared libraries only.
-        "--disable-static"
+         ;; Build shared libraries only.
+         "--disable-static"
 
-        ;; Use /etc/dbus-1 for system-wide config.
-        ;; Look for configuration file under
-        ;; /etc/dbus-1.  This is notably required by
-        ;; 'dbus-daemon-launch-helper', which looks for
-        ;; the 'system.conf' file in that place,
-        ;; regardless of what '--config-file' was
-        ;; passed to 'dbus-daemon' on the command line;
-        ;; see <https://bugs.freedesktop.org/show_bug.cgi?id=92458>.
-        "--sysconfdir=/etc")
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'install
-                  (lambda _
-                    ;; Don't try to create /var and /etc.
-                    (invoke "make"
-                            "localstatedir=/tmp/dummy"
-                            "sysconfdir=/tmp/dummy"
-                            "install"))))))
+         ;; Use /etc/dbus-1 for system-wide config.
+         ;; Look for configuration file under
+         ;; /etc/dbus-1.  This is notably required by
+         ;; 'dbus-daemon-launch-helper', which looks for
+         ;; the 'system.conf' file in that place,
+         ;; regardless of what '--config-file' was
+         ;; passed to 'dbus-daemon' on the command line;
+         ;; see <https://bugs.freedesktop.org/show_bug.cgi?id=92458>.
+         "--sysconfdir=/etc")
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'install
+            (lambda _
+              ;; Don't try to create /var and /etc.
+              (invoke "make"
+                      "localstatedir=/tmp/dummy"
+                      "sysconfdir=/tmp/dummy"
+                      "install"))))))
     (native-inputs
-     (list pkg-config
-           ;; Dependencies to generate the doc.
+     ;; Some dependencies are required to generate the documentation.  Also,
+     ;; quoting NEWS for 1.15.8: “Autotools-generated files are no longer
+     ;; included in the tarball release.”
+     (list autoconf
+           autoconf-archive
+           automake
            docbook-xml-4.4
            docbook-xsl
            doxygen
-           xmlto
+           libtool
            libxml2 ;for XML_CATALOG_FILES
            libxslt
-           yelp-tools))
+           which
+           xmlto
+           yelp-tools
+           pkg-config))
     (inputs
      (list expat
            ;; Add a dependency on libx11 so that 'dbus-launch' has support for
@@ -199,6 +209,21 @@ shared NFS home directories.")
                   (("@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session-local.conf")
                    "/var/run/jami/session-local.conf")))))))))))
 
+(define-public dbus-1.15.0
+  ;; Dbus 1.15.2 has a breaking change.
+  (hidden-package
+   (package/inherit dbus
+     (version "1.15.0")
+     (source (origin
+               (method url-fetch)
+               (uri (string-append
+                     "https://dbus.freedesktop.org/releases/dbus/dbus-"
+                     version ".tar.xz"))
+               (sha256
+                (base32
+                 "02k4zm5h24clwp4csp2r3xp2lxib31jlk3xkgdj2c0njkb5whwsh"))
+               (patches (search-patches "dbus-helper-search-path.patch")))))))
+
 ;;; The reason this is not enabled in the regular dbus package is because it
 ;;; impacts the performance of D-Bus (including its library) as a whole, even
 ;;; when the DBUS_VERBOSE environment variable is not set.
@@ -207,7 +232,7 @@ shared NFS home directories.")
     (name "dbus-verbose")
     (arguments (substitute-keyword-arguments (package-arguments dbus)
                  ((#:configure-flags flags '())
-                  `(cons "--enable-verbose-mode" ,flags))))
+                  #~(cons "--enable-verbose-mode" #$flags))))
     (synopsis "D-Bus with verbose mode enabled for debugging")
     (description "This variant D-Bus package is built with verbose mode, which
 eases debugging of D-Bus services by printing various debug information when
@@ -217,7 +242,7 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
 (define glib
   (package
     (name "glib")
-    (version "2.72.3")
+    (version "2.78.0")
     (source
      (origin
        (method url-fetch)
@@ -226,14 +251,14 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                        name "/" (string-take version 4) "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1w25sf2wxkkah2p2w189q58mza3zv8z1fh2q1m82sldq4kva4faa"))
+        (base32 "0c3vagxl77wma85qinbj974jvw96n5bvch2m7hqcwxq8fa5spsj4"))
        (patches
         (search-patches "glib-appinfo-watch.patch"
                         "glib-skip-failing-test.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
-           (substitute* "tests/spawn-test.c"
+           (substitute* "glib/tests/spawn-test.c"
              (("/bin/sh") "sh"))))))
     (build-system meson-build-system)
     (outputs '("out"                    ;libraries, locales, etc
@@ -258,6 +283,9 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                                                #$output:bin "/bin"))
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-G_TEST_SRCDIR
+            (lambda _
+              (setenv "G_TEST_SRCDIR" (string-append (getcwd) "/gio/tests"))))
           ;; Needed to pass the test phase on slower ARM and i686 machines.
           (add-after 'unpack 'increase-test-timeout
             (lambda _
@@ -273,9 +301,19 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                 (substitute* '("unix.c" "utils.c")
                   (("[ \t]*g_test_add_func.*;") "")))
               (with-directory-excursion "gio/tests"
-                (substitute* '("contenttype.c" "gdbus-address-get-session.c"
-                               "gdbus-peer.c" "appinfo.c" "desktop-app-info.c")
-                  (("[ \t]*g_test_add_func.*;") "")))
+                (substitute* '("contenttype.c"
+                               "gdbus-address-get-session.c"
+                               "gdbus-server-auth.c"
+                               "gdbus-peer.c"
+                               "appinfo.c"
+                               "desktop-app-info.c")
+                  (("[ \t]*g_test_add_func.*;") ""))
+                (unless (which "update-desktop-database")
+                  (substitute* "file.c"
+                    (("[ \t]*g_test_add_func.*query-default-handler.*;") "")))
+                (substitute* '("portal-support-snap.c")
+                  (("g_test_init .*")
+                   "return EXIT_SUCCESS;")))
 
               #$@(if (target-x86-32?)
                      ;; Comment out parts of timer.c that fail on i686 due to
@@ -325,7 +363,7 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                          (substitute* '("appmonitor.c"
                                         "async-splice-output-stream.c"
                                         "autoptr.c"
-                                        "contexts.c"       
+                                        "contexts.c"
                                         "converter-stream.c"
                                         "file.c"
                                         "g-file-info.c"
@@ -334,13 +372,13 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
                                         "gapplication.c"
                                         "gdbus-connection-flush.c"
                                         "gdbus-connection.c"
-                                        "gdbus-names.c"    
+                                        "gdbus-names.c"
                                         "gdbus-server-auth.c"
                                         "gsocketclient-slow.c"
                                         "gsubprocess.c"
                                         "io-stream.c"
                                         "live-g-file.c"
-                                        "memory-monitor.c" 
+                                        "memory-monitor.c"
                                         "mimeapps.c"
                                         "network-monitor-race.c"
                                         "network-monitor.c"
@@ -455,10 +493,10 @@ information, refer to the @samp{dbus-daemon(1)} man page.")))
       python
       python-wrapper))
     (propagated-inputs
-     (list libffi             ;in the Requires.private field of gobject-2.0.pc
-           pcre               ;in the Requires.private field of glib-2.0.pc
-           `(,util-linux "lib")  ;for libmount
-           zlib))                ;in the Requires.private field of glib-2.0.pc
+     (list libffi            ; in the Requires.private field of gobject-2.0.pc
+           pcre2             ; in the Requires.private field of glib-2.0.pc
+           `(,util-linux "lib") ;for libmount
+           zlib))               ; in the Requires.private field of glib-2.0.pc
     (native-search-paths
      ;; This variable is not really "owned" by GLib, but several related
      ;; packages refer to it: gobject-introspection's tools use it as a search
@@ -482,106 +520,47 @@ 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"))))
-                       '())
-              #$@(if (system-hurd?)
-                     '((with-directory-excursion "gio/tests"
-                         ;; FAIL
-                         (substitute* '("appmonitor.c"
-                                        "gdbus-server-auth.c"
-                                        "live-g-file.c"
-                                        "socket.c")
-                           (("return (g_test_run|session_bus_run)" all call)
-                            (string-append "return 0;// " call))
-                           ((" (ret|rtv|result) = (g_test_run|session_bus_run)"
-                             all var call)
-                            (string-append " " var " = 0;// " call))
-                           (("[ \t]*g_test_add_func.*;") ""))))
-                     '())))))))
-    (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.
-  (package/inherit glib
-    (properties (alist-delete 'hidden? (package-properties glib)))
-    (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
-    (native-inputs
-     (modify-inputs (package-native-inputs glib)
-       (prepend docbook-xml-4.2
-                docbook-xml
-                docbook-xsl
-                gtk-doc
-                libxml2
-                libxslt)))
-    (arguments
-     (substitute-keyword-arguments (package-arguments glib)
-       ((#:configure-flags flags ''())
-        #~(cons "-Dgtk_doc=true"
-                (delete "-Dman=false" #$flags)))
-       ((#:phases phases)
-        #~(modify-phases #$phases
-            (add-after 'install 'move-doc
-              (lambda _
-                (let ((html "/share/gtk-doc"))
-                  (mkdir-p (string-append #$output:doc "/share"))
-                  (rename-file
-                   (string-append #$output html)
-                   (string-append #$output:doc html)))))))))))
+  (let ((base glib))
+    (package/inherit base
+      (properties (alist-delete 'hidden? (package-properties base)))
+      (outputs (cons "doc" (package-outputs base))) ; 20 MiB of GTK-Doc reference
+      (native-inputs
+       `(("docbook-xml-4.2" ,docbook-xml-4.2)
+         ("docbook-xml-4.5" ,docbook-xml)
+         ("docbook-xsl" ,docbook-xsl)
+         ("gtk-doc" ,gtk-doc)
+         ("libxml2" ,libxml2)
+         ("xsltproc" ,libxslt)
+         ,@(package-native-inputs base)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:configure-flags flags ''())
+          #~(cons "-Dgtk_doc=true"
+                  (delete "-Dman=false" #$flags)))
+         ((#:phases phases)
+          #~(modify-phases #$phases
+              (add-after 'unpack 'patch-docbook-xml
+                (lambda* (#:key inputs #:allow-other-keys)
+                  (with-directory-excursion "docs"
+                    (substitute* (find-files "." "\\.xml$")
+                      (("http://www.oasis-open.org/docbook/xml/4\\.5/")
+                       (string-append (assoc-ref inputs "docbook-xml-4.5")
+                                      "/xml/dtd/docbook/"))
+                      (("http://www.oasis-open.org/docbook/xml/4\\.2/")
+                       (string-append (assoc-ref inputs "docbook-xml-4.2")
+                                      "/xml/dtd/docbook/"))))))
+              (add-after 'install 'move-doc
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (let* ((out (assoc-ref outputs "out"))
+                         (doc (assoc-ref outputs "doc"))
+                         (html (string-append "/share/gtk-doc")))
+                    (mkdir-p (string-append doc "/share"))
+                    (rename-file
+                     (string-append out html)
+                     (string-append doc html))))))))))))
 
 (define (python-extension-suffix python triplet)
   "Determine the suffix for C extensions for PYTHON when compiled
@@ -622,14 +601,14 @@ be used when cross-compiling."
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-    (version "1.72.0")
+    (version "1.78.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 "1g5aps3b20ck96ahy7fjl4nhp9nabkd9rlqd0s1qzn3111cqxzh2"))
+              (base32 "1d0vhi83q0xc7kg3zn32wy7n16f3dd5blicyh5v8w9gpkbcsnyxx"))
              (patches (search-patches
                        "gobject-introspection-cc.patch"
                        "gobject-introspection-girepository.patch"
@@ -723,10 +702,7 @@ provide bindings to call into the C library.")
               (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)))))
+                        "gobject-introspection-absolute-shlib-path-1.72.patch"))))))
 
 (define intltool
   (package
@@ -825,7 +801,7 @@ translated.")
 (define dbus-glib
   (package
     (name "dbus-glib")
-    (version "0.110")
+    (version "0.112")
     (source (origin
              (method url-fetch)
              (uri
@@ -833,7 +809,7 @@ translated.")
                              version ".tar.gz"))
              (sha256
               (base32
-               "09g8swvc95bk1z6j8sw463p2v0dqmgm2zjfndf7i8sbcyq67dr3w"))))
+               "0fhlkdqyzbh89bdslwsfc5fbdvkiv6g840ami4rnwa6dvz60smbx"))))
     (build-system gnu-build-system)
     (arguments
      (if (%current-target-system)
@@ -861,7 +837,7 @@ by GDBus included in Glib.")
 (define-public libaccounts-glib
   (package
     (name "libaccounts-glib")
-    (version "1.25")
+    (version "1.26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -870,7 +846,7 @@ by GDBus included in Glib.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "19rhk9f97m736d5ia26vfcbjp5kgi454558yhf9mrwm4iw5d9pk4"))))
+                "1fdvvzbz23q5c0jnzryinkmcymd0zcs2pdn4fvibg34pvybb4li9"))))
     (build-system meson-build-system)
     (native-inputs (list dbus
                          `(,glib "bin")
@@ -914,7 +890,7 @@ credentials and service-specific settings.")
 (define libsigc++
   (package
     (name "libsigc++")
-    (version "3.0.6")
+    (version "3.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsigc++/"
@@ -922,7 +898,7 @@ credentials and service-specific settings.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1kn57b039lg20182lnchl1ys27vf34brn43f895cal8nc7sdq3mp"))))
+                "05qf10lp5vxsi5fbzdphqhbzmys12mxvg4gh14p9zqynvwvkpln3"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -985,7 +961,7 @@ libraries.")
 (define glibmm
   (package
     (name "glibmm")
-    (version "2.72.1")
+    (version "2.78.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/glibmm/"
@@ -993,7 +969,7 @@ libraries.")
                                   "/glibmm-" version ".tar.xz"))
               (sha256
                (base32
-                "1n2w2pcpbxjbsxynmar3i5ibr7src6gnrdxb9nn57p5miai4jxia"))))
+                "0l7gld1ghynlxdm55l8dn3w4lfbwgrkw7flbdnh04vwrchjqfbjx"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -1034,28 +1010,25 @@ libraries.")
 useful for C++.")
     (license license:lgpl2.1+)))
 
-(define-public glibmm-next
+(define-public glibmm-2.76
   (package
-   (inherit glibmm)
-   (version "2.76.0")
-   (name "glibmm")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/glibmm/"
-                                (version-major+minor version)
-                                "/glibmm-" version ".tar.xz"))
-            (sha256
-             (base32
-              "1cia8vrpwzn8zwalws42mga5hi965840m5s8dvfzv55xx86dhdw6"))))
-   (propagated-inputs
-    (modify-inputs (package-propagated-inputs glibmm)
-      (replace "glib" glib-next)))))
+    (inherit glibmm)
+    (name "glibmm")
+    (version "2.76.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/glibmm/"
+                                  (version-major+minor version)
+                                  "/glibmm-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1cia8vrpwzn8zwalws42mga5hi965840m5s8dvfzv55xx86dhdw6"))))))
 
- (define-public glibmm-2.64
+ (define-public glibmm-2.66
    (package
     (inherit glibmm)
     (name "glibmm")
-    (version "2.64.5")
+    (version "2.66.6")
     (source
      (origin
        (method url-fetch)
@@ -1064,7 +1037,7 @@ useful for C++.")
                        (version-major+minor version)
                        "/glibmm-" version ".tar.xz"))
        (sha256
-        (base32 "11m37sbx0i18cl17d0fkq0bik4bbzlb5n8kcl651jhci5ipci3sh"))))
+        (base32 "0bqm9vqwhas69q6n89wd2xgxvrlkpxra13dzsx8m67hqk0jp8n2k"))))
      (propagated-inputs
       (modify-inputs (package-propagated-inputs glibmm)
         (replace "libsigc++" libsigc++-2)))))
@@ -1072,7 +1045,7 @@ useful for C++.")
 (define-public python-pygobject
   (package
     (name "python-pygobject")
-    (version "3.42.2")
+    (version "3.46.0")
     (source
      (origin
        (method url-fetch)
@@ -1080,32 +1053,31 @@ useful for C++.")
                            (version-major+minor version)
                            "/pygobject-" version ".tar.xz"))
        (sha256
-        (base32
-         "0my95gjnps093inzznbipkhf25cffbc32v9is2fq8wvh59g6ks5d"))
+        (base32 "1z6aagb46fhhdd0bb3zk6dfdw3s4y2fva0vv3jpwjj6mvar0hq22"))
        (modules '((guix build utils)))
        (snippet
-        '(begin
-           ;; We disable these tests in a snippet so that they are inherited
-           ;; by the Python 2 variant which is built differently.
-           (with-directory-excursion "tests"
-             ;; FIXME: These tests require Gdk and/or Gtk 4.
-             (for-each delete-file
-                       '("test_atoms.py" "test_overrides_gtk.py"))
-             #t)))))
+        ;; We disable these tests in a snippet so that they are inherited
+        ;; by the Python 2 variant which is built differently.
+        #~(with-directory-excursion "tests"
+            ;; FIXME: These tests require Gdk and/or Gtk 4.
+            (for-each delete-file
+                      '("test_atoms.py" "test_overrides_gtk.py"
+                        "test_overrides_gdk.py"))))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               ;; The default 90 seconds can be too low on slower machines.
-               (invoke "meson" "test" "--timeout-multiplier" "5")))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                ;; The default 90 seconds can be too low on slower machines.
+                (invoke "meson" "test" "--timeout-multiplier" "5")))))))
     (native-inputs
-     `(("glib-bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)
-       ("python-pytest" ,python-pytest)
-       ("python-wrapper" ,python-wrapper))) ; For patching shebangs
+     (list `(,glib "bin")
+           pkg-config
+           python-pytest
+           python-wrapper)) ; For patching shebangs
     (inputs
      (list python python-pycairo gobject-introspection))
     (propagated-inputs
@@ -1124,7 +1096,7 @@ useful for C++.")
 (define-public perl-glib
   (package
     (name "perl-glib")
-    (version "1.3293")
+    (version "1.3294")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1132,7 +1104,7 @@ useful for C++.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "005m3inz12xcsd5sr056cm1kbhmxsx2ly88ifbdv6p6cwz0s05kk"))))
+                "1fsw9sjfz1irlhnsk5n1xpb181vvq1dsxrw5vrsp066cdflga5fp"))))
     (build-system perl-build-system)
     (native-inputs
      (list perl-extutils-depends perl-extutils-pkgconfig))
@@ -1150,14 +1122,14 @@ up the Gnome environment, and are used in many unrelated projects.")
 (define-public perl-glib-object-introspection
   (package
     (name "perl-glib-object-introspection")
-    (version "0.049")
+    (version "0.051")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/"
                            "Glib-Object-Introspection-" version ".tar.gz"))
        (sha256
-        (base32 "0mxg6pz8qfyipw0ypr54alij0c4adzg94f62702b2a6hkp5jhij6"))))
+        (base32 "12802l87mx65lswiwlc394fkb74cmsqn88n2qy119b40rhfn2sb5"))))
     (build-system perl-build-system)
     (native-inputs
      (list perl-extutils-depends perl-extutils-pkgconfig))
@@ -1195,6 +1167,11 @@ libraries.  Examples include gtk+, webkit, libsoup and many more.")
        ;;   EOFError: EOF read where object expected
        ;;   make[2]: *** [Makefile:1906: _gen/register-dbus-glib-marshallers-body.h] Error 1
        #:parallel-build? #f
+       ;; When spawned in parallel, the dbus daemons may fail to shut down
+       ;; cleanly.  This issue appears to have been closed upstream due to low
+       ;; information, but still continues to haunt folks.  See also
+       ;; <https://gitlab.freedesktop.org/telepathy/telepathy-glib/-/issues/134>.
+       #:parallel-tests? #f
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'disable-failing-tests
@@ -1321,7 +1298,7 @@ Some codes examples can be find at:
   ;; file.
   (package
     (name "sdbus-c++")
-    (version "1.3.0")
+    (version "1.4.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1330,7 +1307,7 @@ Some codes examples can be find at:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "03maivi3nj4g5wcydk9ih703ivmqkc93yip47wlyjni6dhikzzsb"))))
+                "111l2rl0pg9r5cdrhqpac4v22cnq41skxxfk3cng81l0n05v1sh0"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -1341,11 +1318,20 @@ Some codes examples can be find at:
                                 ;; Do not install tests.
                                 "-DTESTS_INSTALL_PATH=/tmp"
                                 "-DCMAKE_VERBOSE_MAKEFILE=ON")
-      #:phases #~(modify-phases %standard-phases
-                   (add-after 'unpack 'do-not-install-tests
-                     (lambda _
-                       (substitute* "tests/CMakeLists.txt"
-                         (("/etc/dbus-1/system.d") "/tmp")))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-install-tests
+            (lambda _
+              (substitute* "tests/CMakeLists.txt"
+                (("/etc/dbus-1/system.d") "/tmp"))))
+          (add-after 'unpack 'fix-elogind-requirement
+            (lambda _
+              ;; sdbus-c++.pc requires 'elogind', but it should
+              ;; require 'libelogind'. Fixed after 1.4.0 with
+              ;; fb9e4ae37152648a67814458d3ff673b1d3ca089
+              (substitute* "pkgconfig/sdbus-c++.pc.in"
+                (("@LIBSYSTEMD@")
+                 "libelogind")))))))
     (native-inputs (list googletest pkg-config))
     (inputs (list expat))
     (propagated-inputs (list elogind)) ;required by sdbus-c++.pc
@@ -1359,7 +1345,7 @@ of abstraction on top of @code{sd-bus}, the C D-Bus implementation by systemd.")
 (define-public appstream-glib
   (package
     (name "appstream-glib")
-    (version "0.7.18")
+    (version "0.8.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://people.freedesktop.org/~hughsient/"
@@ -1367,45 +1353,47 @@ of abstraction on top of @code{sd-bus}, the C D-Bus implementation by systemd.")
                                   "appstream-glib-" version ".tar.xz"))
               (sha256
                (base32
-                "00j0kkgf224nzmrha72g8pd72mymhph7vaisj35i4ffy7cpd47na"))))
+                "15lbrmyx94cf6p6svq02yiskh31xidq092c711pqs16mml06a9bi"))))
     (build-system meson-build-system)
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("gsettings" ,gsettings-desktop-schemas) ; for ‘org.gnome.system.proxy’
-       ("glib:bin" ,glib "bin")         ; for glib-compile-resources
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal
+           `(,glib "bin") ;for glib-compile-resources
+           gsettings-desktop-schemas ;for ‘org.gnome.system.proxy’
+           pkg-config))
     (propagated-inputs
-     `(("gcab" ,gcab) ; for .pc file
-       ("gdk-pixbuf" ,gdk-pixbuf) ; for .pc file
-       ("libuuid" ,util-linux "lib"))) ; for .pc file
+     (list gcab ;for .pc file
+           gdk-pixbuf ;same
+           `(,util-linux "lib"))) ;libuuid, for .pc file
     (inputs
-     `(("glib" ,glib)
-       ("gperf" ,gperf)
-       ("gtk+" ,gtk+)
-       ("json-glib" ,json-glib)
-       ("libarchive" ,libarchive)
-       ("libsoup" ,libsoup-minimal-2)))
+     (list curl
+           gperf
+           gtk+
+           json-glib
+           libarchive
+           glib))
     (arguments
-     `(#:configure-flags
-       (list "-Ddep11=false"
-             "-Dintrospection=false"    ; avoid g-ir-scanner dependency
-             "-Drpm=false"
-             "-Dstemmer=false")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-tests
-           (lambda _
-             (substitute* "libappstream-glib/as-self-test.c"
-               (("g_test_add_func.*as_test_store_local_appdata_func);") ""))
-             #t))
-         (add-before 'check 'set-home
-           (lambda _
-             ;; Some tests want write access there.
-             (setenv "HOME" "/tmp"))))))
+     (list
+      #:configure-flags
+      #~(list "-Ddep11=false"
+              "-Dintrospection=false"    ; avoid g-ir-scanner dependency
+              "-Drpm=false"
+              "-Dstemmer=false")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-tests
+            (lambda _
+              (substitute* "libappstream-glib/as-self-test.c"
+                (("g_test_add_func.*as_test_store_local_appdata_func);") ""))))
+          (add-before 'check 'set-home
+            (lambda _
+              ;; Some tests want write access there.
+              (setenv "HOME" "/tmp"))))))
     (home-page "https://github.com/hughsie/appstream-glib")
     (synopsis "Library for reading and writing AppStream metadata")
-    (description "This library provides objects and helper methods to help
-reading and writing @uref{https://www.freedesktop.org/wiki/Distributions/AppStream,AppStream}
+    (description
+     "This library provides objects and helper methods to help
+reading and writing
+@uref{https://www.freedesktop.org/wiki/Distributions/AppStream,AppStream}
 metadata.")
     (license license:lgpl2.1+)))
 
@@ -1464,7 +1452,7 @@ other API remains the same.")
 (define-public template-glib
   (package
     (name "template-glib")
-    (version "3.34.0")
+    (version "3.36.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1472,21 +1460,18 @@ other API remains the same.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1z9xkin5fyfh071ma9y045jcw83hgx33dfbjraw6cxk0qdmfysr1"))))
+                "0j4rc4jvxk5pzmx5831s90m9g4cfyp10hxd1ndiyg34806jg6800"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-D" "enable_gtk_doc=true")))
-    (inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib" ,glib)
-       ("gobject-introspection" ,gobject-introspection)))
+     (list #:configure-flags #~'("-D" "gtk_doc=true")))
+    (inputs (list gettext-minimal glib gobject-introspection))
     (native-inputs
-     `(("bison" ,bison)
-       ("flex" ,flex)
-       ("glib:bin" ,glib "bin") ;; For glib-mkenums
-       ("gtk-doc" ,gtk-doc/stable)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list bison
+           flex
+           `(,glib "bin") ;for glib-mkenums
+           gtk-doc/stable
+           pkg-config
+           vala))
     (home-page "https://gitlab.gnome.org/GNOME/template-glib")
     (synopsis "Library for template expansion")
     (description
@@ -1501,7 +1486,7 @@ simple methods via GObject-Introspection.")
 (define-public xdg-dbus-proxy
   (package
     (name "xdg-dbus-proxy")
-    (version "0.1.2")
+    (version "0.1.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/flatpak/xdg-dbus-proxy"
@@ -1509,7 +1494,7 @@ simple methods via GObject-Introspection.")
                                   "/xdg-dbus-proxy-" version ".tar.xz"))
               (sha256
                (base32
-                "03sj1h0c2l08xa8phw013fnxr4fgav7l2mkjhzf9xk3dykwxcj8p"))))
+                "1yv10v7gpv5z0iii7p3rs2h9wx6sigldycjlkpyyal06iapwy786"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config
@@ -1573,3 +1558,38 @@ to the host system, optionally with filters applied.")
     (description "A small little utility to run a couple of executables under a
 new DBus session for testing.")
     (license license:gpl3)))
+
+(define-public libdex
+  (package
+    (name "libdex")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32 "0fj4bggygdxgfsdrhc3zg1y2065g0skpz1l2bqwl0jqn9m3zbdc1"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:configure-flags #~'("-D" "docs=true")))
+    (native-inputs
+     (list gobject-introspection
+           gi-docgen
+           pkg-config
+           vala))
+    (inputs
+     (list glib
+           libsoup))
+    (home-page "https://gitlab.gnome.org/GNOME/libdex")
+    (synopsis "Library for future-based programming with glib")
+    (description
+     "Dex provides Future-based programming for GLib-based applications.
+
+It both integrates with and brings new features for application and library
+authors who want to manage concurrent code.
+
+Dex also provides Fibers which allow writing synchronous looking code in C
+that uses asynchronous and future-based APIs.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index ae70d0be9f..d81cf034a1 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -61,6 +61,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages ibus)
   #:use-module (gnu packages inkscape)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
@@ -541,7 +542,7 @@ copy, move, delete, or edit your files.")
 (define-public gnome-shell-extension-unite-shell
   (package
     (name "gnome-shell-extension-unite-shell")
-    (version "69")
+    (version "72") ;Listed as compatible on extensions.gnome.org
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -550,7 +551,7 @@ copy, move, delete, or edit your files.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "10yh6ylyp43ykcza180iak08wfypay3raqf3p0vrj9ngm98qzq70"))))
+                "006m54ribfbqij0p3zzglzqjw1rbvw0f9468j7p6zdaf43vdvhgc"))))
     (build-system copy-build-system)
     (native-inputs (list `(,glib "bin") gettext-minimal))
     (inputs (list xprop))
@@ -579,7 +580,7 @@ Ubuntu Unity Shell.")
 (define-public gnome-shell-extension-appindicator
   (package
     (name "gnome-shell-extension-appindicator")
-    (version "42")
+    (version "53")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -588,7 +589,7 @@ Ubuntu Unity Shell.")
                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "1lf3aqb924nzhj87rhy2zvm5pcfqcklhfw21m6ic3i7wzd9r7cnc"))
+                "0lyfznsq5x287vpz133y593s7s4mz9i4x2491sgqvir891zwsivy"))
               (file-name (git-file-name name version))))
     (build-system meson-build-system)
     (native-inputs (list jq gnu-gettext
@@ -603,7 +604,7 @@ GNOME Shell.")
 (define-public gnome-shell-extension-clipboard-indicator
   (package
     (name "gnome-shell-extension-clipboard-indicator")
-    (version "42")
+    (version "47")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -615,7 +616,7 @@ GNOME Shell.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0wf2k33pbwjdf8i4y3aw32fgvjbh751qh7504lwhnl02rcq5dc88"))
+                "00v0v454y6hblzsx06aaysxbs6aky89vnkf7ydzxrddns24c2wix"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove pre-compiled settings schemas and translations from
@@ -628,15 +629,16 @@ GNOME Shell.")
                             (find-files "locale" "\\.mo$"))))))
     (build-system copy-build-system)
     (arguments
-     '(#:install-plan
-       '(("." "share/gnome-shell/extensions/clipboard-indicator@tudmotu.com"
-          #:include-regexp ("\\.css$" "\\.compiled$" "\\.js(on)?$" "\\.mo$" "\\.xml$")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'compile-schemas
-           (lambda _
-             (with-directory-excursion "schemas"
-               (invoke "glib-compile-schemas" ".")))))))
+     (list
+      #:install-plan
+      #~'(("." "share/gnome-shell/extensions/clipboard-indicator@tudmotu.com"
+           #:include-regexp ("\\.css$" "\\.compiled$" "\\.js(on)?$" "\\.mo$" "\\.xml$")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'compile-schemas
+            (lambda _
+              (with-directory-excursion "schemas"
+                (invoke "glib-compile-schemas" ".")))))))
     (native-inputs
      (list `(,glib "bin") gettext-minimal))
     (home-page "https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator")
@@ -648,7 +650,7 @@ that caches clipboard history.")
 (define-public gnome-shell-extension-customize-ibus
   (package
     (name "gnome-shell-extension-customize-ibus")
-    (version "82")
+    (version "86")
     (source
      (origin
        (method git-fetch)
@@ -657,21 +659,23 @@ that caches clipboard history.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00brnyahphl4ql9yh74wpb9kmzyb4b5k4rkw40hvxvqw4qwgs24r"))))
+        (base32 "1psnbhqbqrp68dri0q98y7ikwz9z3701lcy8vvgixb2bh71y7519"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags
-       (list (string-append "VERSION=" ,version)
-             (string-append "INSTALLBASE=" (assoc-ref %outputs "out")
-                            "/share/gnome-shell/extensions"))
+     (list
+      #:make-flags
+       #~(list (string-append "VERSION=" #$version)
+               (string-append "INSTALLBASE=" #$output
+                              "/share/gnome-shell/extensions"))
        #:tests? #f ; No test target
        #:phases
-       (modify-phases %standard-phases
+       #~(modify-phases %standard-phases
          (delete 'bootstrap)
          (delete 'configure))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib:bin" ,glib "bin")))
+     (list gettext-minimal `(,glib "bin")))
+    (propagated-inputs
+     (list ibus))
     (home-page "https://github.com/openSUSE/Customize-IBus")
     (synopsis "GNOME Shell Extension for IBus Customization")
     (description "Customize IBus provides full customization of appearance,
@@ -679,50 +683,13 @@ behavior, system tray and input source indicator for IBus.")
     (license license:gpl3+)))
 
 (define-public gnome-shell-extension-topicons-redux
-  (package
-    (name "gnome-shell-extension-topicons-redux")
-    (version "6")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://gitlab.com/pop-planet/TopIcons-Redux.git")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1dli9xb545n3xlj6q4wl0y5gzkm903zs47p8fiq71pdvbr6v38rj"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     (list `(,glib "bin")))
-    (arguments
-     `(#:tests? #f                      ;no test defined in the project
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke "make"
-                       "install"
-                       (string-append
-                        "INSTALL_PATH="
-                        out
-                        "/share/gnome-shell/extensions"))))))))
-    (home-page "https://gitlab.com/pop-planet/TopIcons-Redux")
-    (synopsis "Display legacy tray icons in the GNOME Shell top panel")
-    (description "Many applications, such as chat clients, downloaders, and
-some media players, are meant to run long-term in the background even after you
-close their window.  These applications remain accessible by adding an icon to
-the GNOME Shell Legacy Tray.  However, the Legacy Tray was removed in GNOME
-3.26.  TopIcons Redux brings those icons back into the top panel so that it's
-easier to keep track of applications running in the background.")
-    (license license:gpl2+)))
+  (deprecated-package "gnome-shell-extension-topicons-redux"
+                      gnome-shell-extension-appindicator))
 
 (define-public gnome-shell-extension-dash-to-dock
   (package
     (name "gnome-shell-extension-dash-to-dock")
-    (version "73")
+    (version "79")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -731,23 +698,25 @@ easier to keep track of applications running in the background.")
                                            version))))
               (sha256
                (base32
-                "1l0isbrgfc8v46l1yc5l4myz7qnlxzyfyiifipp86z9d79d8klzw"))
+                "0fsfhgpg8441x28jzhjspb9i9c5502c2fcgdvfggcsmz0sf3v95y"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f
-       #:make-flags (list (string-append "INSTALLBASE="
-                                         (assoc-ref %outputs "out")
-                                         "/share/gnome-shell/extensions"))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'bootstrap)
-         (delete 'configure))))
+     (list
+      #:tests? #f
+      #:make-flags #~(list (string-append "INSTALLBASE="
+                                          #$output
+                                          "/share/gnome-shell/extensions"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'bootstrap)
+          (delete 'configure))))
     (native-inputs
-     `(("glib:bin" ,glib "bin")
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("sassc" ,sassc)))
+     (list
+      `(,glib "bin")
+      intltool
+      pkg-config
+      sassc))
     (propagated-inputs
      (list glib))
     (synopsis "Transforms GNOME's dash into a dock")
@@ -760,7 +729,7 @@ faster window switching.")
 (define-public gnome-shell-extension-gsconnect
   (package
     (name "gnome-shell-extension-gsconnect")
-    (version "50")       ; See GNOME Shell supported versions in metadata.json
+    (version "55")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -770,77 +739,77 @@ faster window switching.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0vg87fdihs5kp7apgyd32ldjmwzmrxaimsc005yjyy8m3f65sjmr"))))
+                "158qbjl6m807g0fy15dvhwwwy6z8r0g7kh9gjyhm7n3y14v5p8wz"))))
     (build-system meson-build-system)
     (arguments
-     `(#:tests? #f ;; every test fails
-       #:configure-flags
-       (let* ((out (assoc-ref %outputs "out"))
-              (name+version (strip-store-file-name out))
-              (gschema-dir (string-append out
-                                          "/share/gsettings-schemas/"
-                                          name+version
-                                          "/glib-2.0/schemas"))
-              (gnome-shell (assoc-ref %build-inputs "gnome-shell"))
-              (openssh (assoc-ref %build-inputs "openssh"))
-              (openssl (assoc-ref %build-inputs "openssl")))
-         (list
-          (string-append "-Dgnome_shell_libdir=" gnome-shell "/lib")
-          (string-append "-Dgsettings_schemadir=" gschema-dir)
-          (string-append "-Dopenssl_path=" openssl "/bin/openssl")
-          (string-append "-Dsshadd_path=" openssh "/bin/ssh-add")
-          (string-append "-Dsshkeygen_path=" openssh "/bin/ssh-keygen")
-          (string-append "-Dsession_bus_services_dir=" out "/share/dbus-1/services")
-          "-Dpost_install=true"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'fix-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((glib (assoc-ref inputs "glib:bin"))
-                    (gapplication (string-append glib "/bin/gapplication"))
-                    (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
-               (substitute* "data/org.gnome.Shell.Extensions.GSConnect.desktop.in"
-                 (("gapplication") gapplication))
-               (for-each
-                (lambda (file)
-                  (substitute* file
-                    (("'use strict';")
-                     (string-append "'use strict';\n\n"
-                                    "'" gi-typelib-path "'.split(':').forEach("
-                                    "path => imports.gi.GIRepository.Repository."
-                                    "prepend_search_path(path));"))))
-                '("src/extension.js" "src/prefs.js"))
-               #t)))
-         (add-after 'install 'wrap-daemons
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (service-dir
-                     (string-append out "/share/gnome-shell/extensions"
-                                    "/gsconnect@andyholmes.github.io/service"))
+     (list
+      #:tests? #f ;; every test fails
+      #:configure-flags
+      #~(let ((out #$output)
+              (gnome-shell #$(this-package-input "gnome-shell"))
+              (openssh #$(this-package-input "openssh"))
+              (openssl #$(this-package-input "openssl")))
+          (list
+           (string-append "-Dgnome_shell_libdir=" gnome-shell "/lib")
+           (string-append "-Dopenssl_path=" openssl "/bin/openssl")
+           (string-append "-Dsshadd_path=" openssh "/bin/ssh-add")
+           (string-append "-Dsshkeygen_path=" openssh "/bin/ssh-keygen")
+           (string-append "-Dsession_bus_services_dir=" out "/share/dbus-1/services")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'skip-post-installation
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false")
+                (("update_desktop_database: true")
+                 "update_desktop_database: false"))))
+          (add-before 'configure 'fix-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((gapplication (search-input-file inputs "/bin/gapplication"))
                     (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
-               (wrap-program (string-append service-dir "/daemon.js")
-                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
-               #t))))))
+                (substitute* "data/org.gnome.Shell.Extensions.GSConnect.desktop.in"
+                  (("gapplication") gapplication))
+                (for-each
+                 (lambda (file)
+                   (substitute* file
+                     (("'use strict';")
+                      (string-append "'use strict';\n\n"
+                                     "'" gi-typelib-path "'.split(':').forEach("
+                                     "path => imports.gi.GIRepository.Repository."
+                                     "prepend_search_path(path));"))))
+                 '("src/extension.js" "src/prefs.js")))))
+          (add-after 'install 'wrap-daemons
+            (lambda _
+              (let* ((out #$output)
+                     (service-dir
+                      (string-append out "/share/gnome-shell/extensions"
+                                     "/gsconnect@andyholmes.github.io/service"))
+                     (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+                (wrap-program (string-append service-dir "/daemon.js")
+                  `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
     (inputs
-     `(("at-spi2-core" ,at-spi2-core)
-       ("caribou" ,caribou)
-       ("evolution-data-server" ,evolution-data-server)
-       ("gjs" ,gjs)
-       ("glib" ,glib)
-       ("glib:bin" ,glib "bin")
-       ("gsound" ,gsound)
-       ("gnome-shell" ,gnome-shell)
-       ("gtk+" ,gtk+)
-       ("nautilus" ,nautilus)
-       ("openssh" ,openssh)
-       ("openssl" ,openssl)
-       ("python-pygobject" ,python-pygobject)
-       ("upower" ,upower)))
+     (list
+      at-spi2-core
+      caribou
+      evolution-data-server
+      gjs
+      glib
+      `(,glib "bin") ;for /bin/gapplication
+      gsound
+      gnome-shell
+      gtk+
+      nautilus
+      openssh
+      openssl
+      python-pygobject
+      upower))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("gobject-introspection" ,gobject-introspection)
-       ("libxml2" ,libxml2)
-       ("pkg-config" ,pkg-config)))
+     (list
+      gettext-minimal
+      gobject-introspection
+      libxml2
+      pkg-config))
     (home-page "https://github.com/GSConnect/gnome-shell-extension-gsconnect/wiki")
     (synopsis "Connect GNOME Shell with your Android phone")
     (description "GSConnect is a complete implementation of KDE Connect
@@ -849,58 +818,10 @@ notifications or files, and other features like SMS messaging and remote
 control.")
     (license license:gpl2)))
 
-(define-public gnome-shell-extension-hide-app-icon
-  (let ((commit "4188aa5f4ba24901a053a0c3eb0d83baa8625eab")
-        (revision "0"))
-    (package
-      (name "gnome-shell-extension-hide-app-icon")
-      (version (git-version "2.7" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url (string-append "https://github.com/michael-rapp"
-                                   "/gnome-shell-extension-hide-app-icon.git"))
-               (commit commit)))
-         (sha256
-          (base32
-           "1i28n4bz6wrhn07vpxkr6l1ljyn7g8frp5xrr11z3z32h2hxxcd6"))
-         (file-name (git-file-name name version))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:tests? #f                ; no test target
-         #:make-flags (list (string-append "EXTENSIONS_DIR="
-                                           (assoc-ref %outputs "out")
-                                           "/share/gnome-shell/extensions"))
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)      ; no configure script
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out"))
-                     (pre "/share/gnome-shell/extensions/")
-                     (dir "hide-app-icon@mrapp.sourceforge.com"))
-                 (copy-recursively dir (string-append out pre dir))
-                 #t))))))
-      (native-inputs
-       (list `(,glib "bin") intltool))
-      (propagated-inputs
-       (list glib))
-      (synopsis "Hide app icon from GNOME's panel")
-      (description "This extension hides the icon and/or title of the
-currently focused application in the top panel of the GNOME shell.")
-      (home-page
-       "https://github.com/michael-rapp/gnome-shell-extension-hide-app-icon/")
-      (license
-        ;; README.md and LICENSE.txt disagree -- the former claims v3, the
-        ;; latter v2.  No mention of "or later" in either place or in the code.
-        (list license:gpl2
-              license:gpl3)))))
-
 (define-public gnome-shell-extension-just-perfection
   (package
     (name "gnome-shell-extension-just-perfection")
-    (version "22.0")
+    (version "26.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -909,36 +830,37 @@ currently focused application in the top panel of the GNOME shell.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r4rflppcp05kwhzmh07dzi7znc4kch4nc8mzw61arj3qsfq2qqj"))))
+                "0dvq2mb04b557g9nz4pm90x2c2jc1dwwbg2is1gkx38yk0dsj6r3"))))
     (build-system copy-build-system)
     (arguments
-     `(#:install-plan
-       '(("src"
-          "share/gnome-shell/extensions/just-perfection-desktop@just-perfection"
-          #:include-regexp ("\\.css$" "\\.compiled$" "\\.js(on)?$" "\\.ui$"))
-         ("locale"
-          "share/gnome-shell/extensions/just-perfection-desktop@just-perfection/"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'drop-executable-bits
-           (lambda _
-             (for-each
-              (lambda (file)
-                (let ((stat (lstat file)))
-                  (chmod file (logand (stat:mode stat) (lognot #o111)))))
-              (find-files "." #:directories? #f))))
-         (add-before 'install 'build
-           (lambda _
-             (invoke "glib-compile-schemas" "src/schemas")
-             (for-each
-              (lambda (file)
-                (let* ((base (basename file))
-                       (noext (substring base 0 (- (string-length base) 3)))
-                       (dest (string-append "locale/" noext "/LC_MESSAGES/"))
-                       (out (string-append dest "just-perfection.mo")))
-                  (mkdir-p dest)
-                  (invoke "msgfmt" "-c" file "-o" out)))
-              (find-files "po" "\\.po$")))))))
+     (list
+      #:install-plan
+      #~'(("src"
+           "share/gnome-shell/extensions/just-perfection-desktop@just-perfection"
+           #:include-regexp ("\\.css$" "\\.compiled$" "\\.js(on)?$" "\\.ui$"))
+          ("locale"
+           "share/gnome-shell/extensions/just-perfection-desktop@just-perfection/"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'drop-executable-bits
+            (lambda _
+              (for-each
+               (lambda (file)
+                 (let ((stat (lstat file)))
+                   (chmod file (logand (stat:mode stat) (lognot #o111)))))
+               (find-files "." #:directories? #f))))
+          (add-before 'install 'build
+            (lambda _
+              (invoke "glib-compile-schemas" "src/schemas")
+              (for-each
+               (lambda (file)
+                 (let* ((base (basename file))
+                        (noext (substring base 0 (- (string-length base) 3)))
+                        (dest (string-append "locale/" noext "/LC_MESSAGES/"))
+                        (out (string-append dest "just-perfection.mo")))
+                   (mkdir-p dest)
+                   (invoke "msgfmt" "-c" file "-o" out)))
+               (find-files "po" "\\.po$")))))))
     (native-inputs
      (list `(,glib "bin") gettext-minimal))
     (home-page "https://gitlab.gnome.org/jrahmatzadeh/just-perfection")
@@ -948,10 +870,14 @@ GNOME Shell itself does not provide out of the box, such as the ability to hide
 certain elements or change animation speeds.")
     (license license:gpl3)))
 
+(define-public gnome-shell-extension-hide-app-icon
+  (deprecated-package "gnome-shell-extension-hide-app-icon"
+                      gnome-shell-extension-just-perfection))
+
 (define-public gnome-shell-extension-dash-to-panel
   (package
     (name "gnome-shell-extension-dash-to-panel")
-    (version "56")
+    (version "56") ;Compatible with GNOME 44
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -963,22 +889,24 @@ certain elements or change animation speeds.")
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f
-       #:make-flags (list (string-append "INSTALLBASE="
-                                         (assoc-ref %outputs "out")
-                                         "/share/gnome-shell/extensions")
-                          (string-append "VERSION="
-                                         ,(package-version
-                                           gnome-shell-extension-dash-to-panel)))
+     (list
+      #:tests? #f
+      #:make-flags #~(list (string-append "INSTALLBASE="
+                                          #$output
+                                          "/share/gnome-shell/extensions")
+                           (string-append "VERSION="
+                                          #$version))
        #:phases
-       (modify-phases %standard-phases
-         (delete 'bootstrap)
-         (delete 'configure))))
+       #~(modify-phases %standard-phases
+           (delete 'bootstrap)
+           (delete 'configure))))
     (native-inputs
-     (list intltool pkg-config))
+     (list
+      `(,glib "bin")
+      intltool
+      pkg-config))
     (propagated-inputs
-     (list glib
-           `(,glib "bin")))
+     (list glib))
     (synopsis "Icon taskbar for GNOME Shell")
     (description "This extension moves the dash into the gnome main
 panel so that the application launchers and system tray are combined
@@ -987,26 +915,33 @@ into a single panel, similar to that found in KDE Plasma and Windows 7+.")
     (license license:gpl2+)))
 
 (define-public gnome-shell-extension-noannoyance
-  (let ((revision "1")
-        (commit "b759d10fd2799bc084007fdd927b62637c3dbd2c"))
+  ;; There are different forks of the NoAnnoyance extension. This is the one
+  ;; named “NoAnnoyance (fork)” at
+  ;; https://extensions.gnome.org/extension/6109/noannoyance-fork/ because it
+  ;; supports newer GNOME Shell versions than the previously used “NoAnnoyance
+  ;; v2”.
+  (let ((commit "5e9e6a1878d2a1d961f5d59505f15339c5b7e17e")
+        ;; “NoAnnoyance v2” version 17 correlates with
+        ;; c6804a47063659f9f48d13a0942b78ce98aac72b, from which we count
+        ;; commits.
+        (revision "6"))
     (package
       (name "gnome-shell-extension-noannoyance")
-      ;; XXX: There is no version noted anywhere in the source.  Thus, infer it
-      ;;      from <https://extensions.gnome.org/extension/2182/noannoyance/>.
-      (version (git-version "16" revision commit))
+      (version (git-version "17" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/bdaase/noannoyance")
+                      (url "https://github.com/jirkavrba/noannoyance")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0hh7fdqvx54h9j41ia2jl0nq1d5i66k7blw41ya6hkh7201r4anp"))
+                  "0br9zrwvn499kh3db84hhw1kl02jpchwb5ldfp892p15vwih8yrf"))
                 (file-name (git-file-name name version))))
       (build-system copy-build-system)
       (arguments
-       '(#:install-plan
-         '(("." "share/gnome-shell/extensions/noannoyance@daase.net"))))
+       (list
+        #:install-plan
+        #~'(("." "share/gnome-shell/extensions/noannoyance@vrba.dev"))))
       (synopsis "Remove 'Window is ready' annotation")
       (description "One of the many extensions that remove this message.
 It uses ES6 syntax and claims to be more actively maintained than others.")
@@ -1053,7 +988,7 @@ notebooks and tiling window managers.")
 (define-public gnome-shell-extension-night-theme-switcher
   (package
     (name "gnome-shell-extension-night-theme-switcher")
-    (version "65")
+    (version "74")
     (source
      (origin
        (method git-fetch)
@@ -1062,7 +997,7 @@ notebooks and tiling window managers.")
               "https://gitlab.com/rmnvgr/nightthemeswitcher-gnome-shell-extension")
              (commit version)))
        (sha256
-        (base32 "0qhi2g2lh6m8vhrmmfi60977f0i4k9x1zj68lrvpzzlqndz8cgh9"))
+        (base32 "1hiydjyn7shc32i81r70sqip9p3hhig7pqq1h7hsz9bc4qlyri7b"))
        (file-name (git-file-name name version))))
     (build-system meson-build-system)
     (native-inputs (list pkg-config (list glib "bin")))
@@ -1090,7 +1025,7 @@ dark, switch backgrounds and run custom commands at sunset and sunrise.")
                (search-patches "gpaste-fix-paths.patch"))))
     (build-system meson-build-system)
     (native-inputs
-     (list gcr
+     (list gcr-3
            gettext-minimal
            gobject-introspection
            (list glib "bin")            ; for glib-compile-resources
@@ -1134,91 +1069,50 @@ store an history of everything you do, so that you can get back to older
 copies you now want to paste.")
     (license license:bsd-2)))
 
-(define-public gnome-shell-extension-vertical-overview
+(define-public gnome-shell-extension-v-shell
   (package
-    (name "gnome-shell-extension-vertical-overview")
-    (version "10")
+    (name "gnome-shell-extension-v-shell")
+    (version "37")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/RensAlthuis/vertical-overview")
+             (url "https://github.com/G-dH/vertical-workspaces")
              (commit (string-append "v" version))))
        (sha256
         (base32
-         "1sqkbg93qqrq47wyfnh2flg7dpsmv5c2pmkx8kgqhnbl7j2kgi0l"))
-       (file-name (git-file-name name version))
-       (snippet
-        '(begin (delete-file "schemas/gschemas.compiled")))))
+         "1h9f3g1dswxkka0yyj51610w86mwl46ylch19b51gj5mmxlyvzlv"))
+       (file-name (git-file-name name version))))
     (build-system copy-build-system)
     (arguments
-     `(#:install-plan
-       '(("." ,(string-append
-                "share/gnome-shell/extensions/"
-                "vertical-overview@RensAlthuis.github.com")
-          #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
-                            "\\.xml$" "\\.compiled$")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'compile-schemas
-           (lambda _
-             (with-directory-excursion "schemas"
-               (invoke "glib-compile-schemas" ".")))))))
+     (list
+      #:install-plan
+      #~'(("." #$(string-append
+                  "share/gnome-shell/extensions/"
+                  "vertical-workspaces@G-dH.github.com")
+           #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
+                             "\\.xml$" "\\.compiled$" "\\.gresource$")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'build
+            (lambda _
+              (invoke "make" "all"))))))
     (native-inputs
-     (list `(,glib "bin")))  ; for glib-compile-resources
-    (home-page "https://github.com/RensAlthuis/vertical-overview")
-    (synopsis "Provides a vertical overview in Gnome 40 and upper")
-    (description "This Gnome extension replaces the new horizontally oriented
-Gnome overview with something that resembles the old vertically oriented
-style.")
+     (list gettext-minimal `(,glib "bin")))
+    (home-page "https://github.com/G-dH/vertical-workspaces")
+    (synopsis "Shell configuration with horizontal or vertical workspaces")
+    (description "V-Shell (Vertical Workspaces) lets the user configure different parts of the
+shell, including panels, corners, workspaces.")
     (license license:gpl3)))
 
-(define-public gnome-shell-extension-jiggle
-  (package
-    (name "gnome-shell-extension-jiggle")
-    (version "8")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/jeffchannell/jiggle/")
-             (commit version)))
-       (sha256
-        (base32
-         "1wbdx2bp22bdwj51ckgivwglkmckr7z8kfwvc8nv4y376hjz5jxz"))
-       (file-name (git-file-name name version))
-       (snippet
-        '(begin (delete-file "schemas/gschemas.compiled")))))
-    (build-system copy-build-system)
-    (arguments
-     `(#:install-plan
-       '(("." ,(string-append
-                "share/gnome-shell/extensions/"
-                "jiggle@jeffchannell.com")
-          #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
-                            "\\.xml$" "\\.compiled$")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-version
-           (lambda _
-             (substitute* "metadata.json"
-               (("\"40.0\"") "\"40\", \"41\""))))
-         (add-before 'install 'compile-schemas
-           (lambda _
-             (with-directory-excursion "schemas"
-               (invoke "glib-compile-schemas" ".")))))))
-    (native-inputs
-     (list `(,glib "bin")))  ; for glib-compile-resources
-    (home-page "https://github.com/jeffchannell/jiggle")
-    (synopsis "Mouse cursor enlargement for small and fast movements")
-    (description "Jiggle is a Gnome Shell extension that highlights the cursor
-position when the mouse is moved rapidly.")
-    (license license:gpl2)))
+(define-public gnome-shell-extension-vertical-overview
+  (deprecated-package "gnome-shell-extension-vertical-overview"
+                      gnome-shell-extension-v-shell))
 
 (define-public gnome-shell-extension-burn-my-windows
   (package
     (name "gnome-shell-extension-burn-my-windows")
-    (version "22")
+    (version "40")
     (source
      (origin
        (method git-fetch)
@@ -1227,25 +1121,26 @@ position when the mouse is moved rapidly.")
              (commit (string-append "v" version))))
        (sha256
         (base32
-         "185xrf330d9bflmk0l61cnzlylnppb2v4yz6v6ygkk4zpwyil8np"))
+         "16n6ilszdn67835clqlr4flna69x9k00k5qrm55765dv2ny9jdcq"))
        (file-name (git-file-name name version))))
     (build-system copy-build-system)
     (arguments
-     `(#:install-plan
-       '(("." ,(string-append
-                "share/gnome-shell/extensions/"
-                "burn-my-windows@schneegans.github.com")
-          #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
-                            "\\.xml$" "\\.compiled$" "\\.gresource$")))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'compile-resources
-           (lambda _
-             (invoke "make" "resources/burn-my-windows.gresource")))
-         (add-before 'install 'compile-schemas
-           (lambda _
-             (with-directory-excursion "schemas"
-               (invoke "glib-compile-schemas" ".")))))))
+     (list
+      #:install-plan
+      #~'(("." #$(string-append
+                  "share/gnome-shell/extensions/"
+                  "burn-my-windows@schneegans.github.com")
+           #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
+                             "\\.xml$" "\\.compiled$" "\\.gresource$")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'install 'compile-resources
+            (lambda _
+              (invoke "make" "resources/burn-my-windows.gresource")))
+          (add-before 'install 'compile-schemas
+            (lambda _
+              (with-directory-excursion "schemas"
+                (invoke "glib-compile-schemas" ".")))))))
     (native-inputs
      (list `(,glib "bin")))  ; for glib-compile-resources
     (home-page "https://github.com/Schneegans/Burn-My-Windows")
@@ -1257,7 +1152,7 @@ animation of closing windowed applications.")
 (define-public gnome-shell-extension-blur-my-shell
   (package
     (name "gnome-shell-extension-blur-my-shell")
-    (version "44")
+    (version "47")
     (source
      (origin
        (method git-fetch)
@@ -1267,7 +1162,7 @@ animation of closing windowed applications.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0h7yfvrrg5r821mzrp42c09jws06mw6v9avvkfykqj8n8qnslmyx"))))
+         "1a8prh6893zk8rnfi9q7waga2x7kx564jzmsdyhiffdbazbv8p6y"))))
     (build-system copy-build-system)
     (arguments
      '(#:install-plan
@@ -1296,7 +1191,7 @@ GNOME Shell, including the top panel, dash and overview.")
 (define-public gnome-shell-extension-radio
   (package
     (name "gnome-shell-extension-radio")
-    (version "20")
+    (version "21")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1306,7 +1201,7 @@ GNOME Shell, including the top panel, dash and overview.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "01dmziad9g7bs3hr59aaz3mivkc6rqfyb9bz2v202zk22vcr5a2y"))))
+                "1ghk95q3lhliz3his58hh2ql4p9csh6llzip412vwf29zdkr58s2"))))
     (build-system copy-build-system)
     (arguments
      (list
@@ -1325,69 +1220,6 @@ GNOME Shell, including the top panel, dash and overview.")
 directly inside GNOME Shell.  It can manage stations and play streams.")
     (license license:gpl3+)))
 
-(define-public gnome-shell-extension-sound-output-device-chooser
-  (package
-    (name "gnome-shell-extension-sound-output-device-chooser")
-    (version "43")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/kgshank/gse-sound-output-device-chooser")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "1qk6ypyqbv8zwwlky6cgk9hgp1zh32jmzw4wza200g4v94ifkwm9"))))
-    (build-system gnu-build-system)
-    (arguments
-     (list
-      #:tests? #f ; no check target
-      #:make-flags #~(list (string-append "INSTALL_DIR="
-                                          #$output
-                                          "/share/gnome-shell/extensions"))
-      #:phases
-      #~(modify-phases %standard-phases (delete 'configure))))
-    (native-inputs (list gettext-minimal `(,glib "bin")))
-    (inputs (list python))
-    (home-page
-     "https://extensions.gnome.org/extension/906/sound-output-device-chooser")
-    (synopsis "Sound output chooser for GNOME Shell")
-    (description "This extension shows a list of sound output and input devices
-in the status menu below the volume slider.  Various active ports like HDMI,
-Speakers etc. of the same device are also displayed for selection.")
-    (license license:gpl3+)))
-
-(define-public gnome-shell-extension-transparent-window
-  (let ((commit "cc9bc70c192dd565fa6f1d1b28d9a20f99684f2a")
-        (revision "45"))
-    (package
-      (name "gnome-shell-extension-transparent-window")
-      (version (git-version "0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url (string-append "https://github.com/pbxqdown/"
-                                   "gnome-shell-extension-transparent-window"))
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1f9iqqjpmmylqz0ws8cy5rs475bwzi7jy44q9ip44ig2acz2wxzp"))))
-      (build-system copy-build-system)
-      (arguments
-       (list
-        #:install-plan
-        #~'(("."
-             #$(string-append "/share/gnome-shell/extensions"
-                              "/transparent-window@pbxqdown.github.com")))))
-      (home-page
-       "https://github.com/pbxqdown/gnome-shell-extension-transparent-window")
-      (synopsis "Change the opacity of windows in GNOME Shell")
-      (description "This extension adds keybindings to change the opacity
-of windows.")
-      (license license:expat))))
 
 (define-public gnome-shell-extension-vitals
   (package
@@ -1707,7 +1539,7 @@ that are completely black and completely white.")
 (define-public eiciel
   (package
     (name "eiciel")
-    (version "0.9.13.1")
+    (version "0.10.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1716,19 +1548,27 @@ that are completely black and completely white.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0rhhw0h1hyg5kvxhjxkdz03vylgax6912mg8j4lvcz6wlsa4wkvj"))))
+                "0lhnrxhbg80pqjy9f8yiqi7x48rb6m2cmkffv25ssjynsmdnar0s"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:tests? #f ; no tests
-       #:configure-flags
-       (list (string-append "-Dnautilus-extension-dir="
-                            (assoc-ref %outputs "out")
-                            "/lib/nautilus/site-extensions"))))
+     (list
+      #:glib-or-gtk? #t
+      #:tests? #f ; no tests
+      #:configure-flags
+      #~(list (string-append "-Dnautilus-extension-dir="
+                             #$output
+                             "/lib/nautilus/site-extensions"))
+      #: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")))))))
     (native-inputs
-     (list gettext-minimal pkg-config))
+     (list gettext-minimal `(,glib "bin") itstool pkg-config))
     (inputs
-     (list acl attr glibmm-2.64 gtkmm-3 nautilus))
+     (list acl attr glibmm gtkmm nautilus))
     (home-page "https://rofi.roger-ferrer.org/eiciel")
     (synopsis "Manage extended file attributes")
     (description "Eiciel is a plugin for nautilus to graphically edit ACL and
@@ -1790,7 +1630,7 @@ track stocks, currencies and cryptocurrencies.")
     ;; Note to maintainer: VLS must be built with a Vala toolchain the same
     ;; version or newer. Therefore when you update this package you may need
     ;; to update Vala too.
-    (version "0.48.3")
+    (version "0.48.7")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1798,7 +1638,7 @@ track stocks, currencies and cryptocurrencies.")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
-               (base32 "1gnvc91gdp3wj9r3r3xxfr09f9lw39cfypn2q5f0443dhhmp059j"))))
+               (base32 "1ini6nd5yim6mql13b9mb15gs02gm08x7zphd0vlv9jxl2646pjn"))))
     (build-system meson-build-system)
     (arguments '(#:glib-or-gtk? #t))
     (inputs
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 06256066bc..42f758f8d8 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -77,6 +77,7 @@
 ;;; Copyright © 2023 Juliana Sims <juli@incana.org>
 ;;; Copyright © 2023 Dominik Delgado Steuter <d@delgado.nrw>
 ;;; Copyright © 2023 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2024 Dariqq <dariqq@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -95,6 +96,7 @@
 
 (define-module (gnu packages gnome)
   #:use-module (gnu packages)
+  #:use-module (gnu packages accessibility)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages aspell)
@@ -146,6 +148,7 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages hardware)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages ibus)
   #:use-module (gnu packages icu4c)
@@ -212,6 +215,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages telephony)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
@@ -234,6 +238,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
+  #:use-module (guix deprecation)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -813,7 +818,7 @@ tomorrow, the rest of the week and for special occasions.")
 (define-public gnome-photos
   (package
     (name "gnome-photos")
-    (version "43.beta")                 ;for geocode-glib 2 support
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -823,7 +828,7 @@ tomorrow, the rest of the week and for special occasions.")
                        name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1pry45dy4sjw8y63vxw2b499brcxzpkd4hmg2vbqy538r79ah2g9"))))
+         "17l2bkdg8iracgw2mgx5vqfs3d6cdvd22mfdqq4jiinkjw1j33p7"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -856,6 +861,7 @@ tomorrow, the rest of the week and for special occasions.")
            pkg-config))
     (inputs
      (list babl
+           bash-minimal
            cairo
            gegl-0.4.44
            geocode-glib
@@ -887,7 +893,7 @@ cloud integration is offered through GNOME Online Accounts.")
 (define-public gnome-music
   (package
     (name "gnome-music")
-    (version "42.1")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -897,35 +903,36 @@ cloud integration is offered through GNOME Online Accounts.")
                        name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0w42xnp6xy3sfakb4s0wq7xfg7p507whz5gzss5b2mkbm2k7yx67"))))
+         "0l8xiw1nv8agskrpgiyr7kinna3gms1hv5d64hh4fqifaz4smlcv"))))
     (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.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*
-                 ((out (assoc-ref outputs "out"))
-                  (pylib (string-append out "/lib/python"
-                                        ,(version-major+minor
-                                          (package-version python))
-                                        "/site-packages")))
-               (wrap-program (string-append out "/bin/gnome-music")
-                 `("GI_TYPELIB_PATH" =
-                   (,(getenv "GI_TYPELIB_PATH")))
-                 `("GST_PLUGIN_SYSTEM_PATH" =
-                   (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
-                 `("GRL_PLUGIN_PATH" =
-                   (,(getenv "GRL_PLUGIN_PATH")))
-                 `("GUIX_PYTHONPATH" =
-                   (,(getenv "GUIX_PYTHONPATH") ,pylib)))))))))
+     (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.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* ((out (assoc-ref outputs "out"))
+                     (pylib (string-append out "/lib/python"
+                                           #$(version-major+minor
+                                              (package-version
+                                               (this-package-input "python")))
+                                           "/site-packages")))
+                (wrap-program (string-append out "/bin/gnome-music")
+                  `("GI_TYPELIB_PATH" =
+                    (,(getenv "GI_TYPELIB_PATH")))
+                  `("GST_PLUGIN_SYSTEM_PATH" suffix
+                    (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
+                  `("GRL_PLUGIN_PATH" =
+                    (,(getenv "GRL_PLUGIN_PATH")))
+                  `("GUIX_PYTHONPATH" =
+                    (,(getenv "GUIX_PYTHONPATH") ,pylib)))))))))
     (native-inputs
      (list desktop-file-utils
            gettext-minimal
@@ -934,7 +941,8 @@ cloud integration is offered through GNOME Online Accounts.")
            itstool
            pkg-config))
     (inputs
-     (list gnome-online-accounts
+     (list bash-minimal
+           gnome-online-accounts
            grilo
            grilo-plugins
            gst-plugins-base
@@ -946,7 +954,7 @@ cloud integration is offered through GNOME Online Accounts.")
            libadwaita
            libdazzle
            libmediaart
-           libsoup-minimal-2
+           libsoup
            python-pycairo
            python-pygobject
            python
@@ -1136,7 +1144,7 @@ as a \"boring window manager for the adult in you.\"")
 (define-public mm-common
   (package
     (name "mm-common")
-    (version "1.0.3")
+    (version "1.0.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/mm-common/"
@@ -1144,26 +1152,21 @@ as a \"boring window manager for the adult in you.\"")
                                   "mm-common-" version ".tar.xz"))
               (sha256
                (base32
-                "1x8yvjy0yg17qyhmqws8xh2k8dvzrhpwqz7j1cfwzalrb1i9c5g8"))
-              (patches
-               (search-patches
-                "mm-common-reproducible-tarball.patch"))))
+                "1rv211kalivq8zlq7s7bd3dhm4f33jhrwf1vxrfbrnmwgl1lcp5m"))))
     (build-system meson-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "util/mm-common-prepare.in"
-               (("ln") (search-input-file inputs "/bin/ln"))
-               (("cp") (search-input-file inputs "/bin/cp"))
-               (("sed") (search-input-file inputs "/bin/sed"))
-               (("cat") (search-input-file inputs "/bin/cat"))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "util/mm-common-prepare.in"
+                (("ln") (search-input-file inputs "/bin/ln"))
+                (("cp") (search-input-file inputs "/bin/cp"))
+                (("sed") (search-input-file inputs "/bin/sed"))
+                (("cat") (search-input-file inputs "/bin/cat"))))))))
     (native-inputs
-     `(("coreutils" ,coreutils)
-       ("gettext" ,gettext-minimal)
-       ("pkg-config" ,pkg-config)
-       ("sed" ,sed)))
+     (list coreutils gettext-minimal pkg-config sed))
     (inputs
      (list python))
     (synopsis "Module of GNOME C++ bindings")
@@ -1330,7 +1333,7 @@ It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
 (define-public gssdp
   (package
     (name "gssdp")
-    (version "1.5.2")
+    (version "1.6.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1338,13 +1341,16 @@ It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "07hn2xma2yh17v7rlvcaibkn16bx4l9qig3mlb8hdp6qfiraqh7b"))))
+                "0iil7wgix0nzhf3i2w6g1wjqly49r9rsffca97ai9kr2vfpvbv9g"))))
     (build-system meson-build-system)
+    (arguments
+     (list #:configure-flags #~'("-Dgtk_doc=true")))
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")
            gi-docgen
            gobject-introspection
+           pandoc
            pkg-config
            vala))
     (inputs
@@ -1379,7 +1385,7 @@ a debugging tool, @command{gssdp-device-sniffer}.")
 (define-public gupnp
   (package
     (name "gupnp")
-    (version "1.5.4")
+    (version "1.6.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1387,17 +1393,20 @@ a debugging tool, @command{gssdp-device-sniffer}.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y0v0m6afnx879hjvhj2lrawp9qhpyp8mbds0yp544imghajk0wq"))))
+                "0kx0ymsab4x927ir2a5f7mfk9sck5kswbig6n38r4dwbqzl51p69"))))
     (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)))))))
+     (list
+      #:configure-flags #~'("-Dgtk_doc=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              ;; Tests require a writable HOME.
+              (setenv "HOME" (getcwd)))))))
     (native-inputs
      (list gettext-minimal
+           gi-docgen
            `(,glib "bin")
            gobject-introspection
            gtk-doc/stable
@@ -1526,7 +1535,7 @@ extraction, and lookup for applications on the desktop.")
 (define-public gnome-initial-setup
   (package
     (name "gnome-initial-setup")
-    (version "42.2")
+    (version "44.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-initial-setup/"
@@ -1534,7 +1543,7 @@ extraction, and lookup for applications on the desktop.")
                                   "/gnome-initial-setup-" version ".tar.xz"))
               (sha256
                (base32
-                "0yxy39a7d2whphd0jskvra5q8zy4v7m7lziy5fxibgls4j5xk0sd"))))
+                "0y61y3rvz1hqmhjxl9mjwxcdvdxslyaghajav6l79a9yxi859508"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -1558,28 +1567,27 @@ extraction, and lookup for applications on the desktop.")
            pkg-config))
     (inputs
      (list accountsservice
-           cheese
            elogind
            gdm
            geoclue
            gnome-desktop
-           gnome-online-accounts-3.44
+           gnome-online-accounts
            gstreamer
            ibus
            json-glib
            mit-krb5
+           libadwaita
            libgnomekbd
-           libgweather4-with-libsoup2
-           libhandy
+           libgweather4
            libnma
            libpwquality
            libsecret
            network-manager
            packagekit
            polkit
-           rest
+           rest-next
            upower
-           webkitgtk-with-libsoup2))
+           webkitgtk))
     (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
@@ -1622,7 +1630,7 @@ sharing to the masses.")
 (define-public sushi
   (package
     (name "sushi")
-    (version "42.0")
+    (version "44.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1630,21 +1638,22 @@ sharing to the masses.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0848gidl0ab8i5pa70mv8jzchmd9kqa8sn1lg977hyasyixdpn25"))))
+                "1sa3x8w8fhjj641yx5praabkqxfdsnafqnlb8jx2g451mvh2y03c"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'glib-or-gtk-wrap 'wrap-typelib
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((prog (string-append (assoc-ref outputs "out")
-                                        "/bin/sushi")))
-               ;; Put existing typelibs before sushi's deps, so as to
-               ;; correctly infer gdk-pixbuf.
-               (wrap-program prog
-                 `("GI_TYPELIB_PATH" suffix
-                   (,(getenv "GI_TYPELIB_PATH"))))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'glib-or-gtk-wrap 'wrap-typelib
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((prog (string-append (assoc-ref outputs "out")
+                                         "/bin/sushi")))
+                ;; Put existing typelibs before sushi's deps, so as to
+                ;; correctly infer gdk-pixbuf.
+                (wrap-program prog
+                  `("GI_TYPELIB_PATH" suffix
+                    (,(getenv "GI_TYPELIB_PATH"))))))))))
     (native-inputs
      (list `(,glib "bin")
            gettext-minimal
@@ -1677,7 +1686,7 @@ to preview files on the GNOME desktop.")
 (define-public rygel
   (package
     (name "rygel")
-    (version "0.41.2")
+    (version "0.42.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1685,12 +1694,12 @@ to preview files on the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0wivd60hn115ar3hsrsa595kpxzp8gwq30ksh32qlq8j9dhlq65i"))))
+                "17yqnw802vp92cs7ci7kjrixbj446gcriai2dggal4375qnn0cqi"))))
     (build-system meson-build-system)
     (arguments
      ;; Disable the tracker plugin.
-     '(#:configure-flags
-       (list "-Dplugins=external,gst-launch,lms,media-export,
+     (list #:configure-flags
+           #~(list "-Dplugins=external,gst-launch,lms,media-export,
 mpris,playbin,ruih,tracker3")))
     (native-inputs
      (list gettext-minimal
@@ -1720,6 +1729,9 @@ mpris,playbin,ruih,tracker3")))
            libxslt
            libunistring
            tracker))
+    (propagated-inputs
+     ;; The .pc files require.private gmodule-2.0
+     (list glib))
     (synopsis "Share audio, video, and pictures with other devices")
     (description
      "Rygel is a home media solution (@dfn{UPnP AV MediaServer and
@@ -1777,7 +1789,7 @@ client devices can handle.")
            pkg-config
            vala))
     (inputs
-     (list gcr
+     (list gcr-3
            (if (supported-package? gtk) gtk gtk+)
            iso-codes
            mobile-broadband-provider-info
@@ -1804,8 +1816,19 @@ project.")
                (base32
                 "07xvaf8s0fiv0035nk8zpzymn5www76w2a1vflrgqmp9plw8yd6r"))))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-introspection-install-dir
+            (lambda _
+              (substitute* "libmenu/Makefile.in"
+                (("@INTROSPECTION_GIRDIR@")
+                 (string-append #$output "/share/gir-1.0/"))
+                (("@INTROSPECTION_TYPELIBDIR@")
+                 (string-append #$output "/lib/girepository-1.0/"))))))))
     (native-inputs
-     (list gettext-minimal glib pkg-config))
+     (list gettext-minimal glib gobject-introspection pkg-config))
     (synopsis "Menu support for GNOME desktop")
     (description "GNOME Menus contains the libgnome-menu library, the layout
 configuration files for the GNOME menu, as well as a simple menu editor.")
@@ -1815,50 +1838,51 @@ configuration files for the GNOME menu, as well as a simple menu editor.")
 (define-public deja-dup
   (package
     (name "deja-dup")
-    (version "43.4")
+    (version "45.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.gnome.org/World/deja-dup/-/archive/"
                                   version "/deja-dup-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mr2g009w0zm5rj8dg1k77c7zdwylih2yszm8vh8wkw6al6bzfh3"))))
+                "000cwy1haiglkvn5plmhrs2a1fhpcpw6z4mdzck7ybmky795amza"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags
-       (list
-        ;; Otherwise, the RUNPATH will lack the final path component.
-        (string-append "-Dc_link_args=-Wl,-rpath="
-                       (assoc-ref %outputs "out") "/lib/deja-dup"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((python (assoc-ref inputs "python")))
-               (substitute* '("libdeja/duplicity/DuplicityInstance.vala"
-                              "libdeja/tests/scripts/instance-error.test")
-                 (("/bin/rm")
-                  (which "rm")))
-               (substitute* "libdeja/tests/runner.vala"
-                 (("/bin/sh")
-                  (which "sh")))
-               (substitute* "libdeja/tests/scripts/instance-error.test"
-                 (("`which python3`")
-                  (string-append python "/bin/python3"))))))
-         (add-after 'unpack 'patch-libgpg-error
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((libgpg-error (assoc-ref inputs "libgpg-error")))
-               (substitute* "meson.build"
-                 (("(gpgerror_libs = ).*" _ var)
-                  (format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))))
-         (add-after 'install 'wrap-program
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Add duplicity to the search path
-             (wrap-program (string-append (assoc-ref outputs "out")
-                                          "/bin/deja-dup")
-               `("PATH" ":" prefix
-                 (,(string-append (assoc-ref inputs "duplicity") "/bin")))))))))
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags
+      #~(list
+         ;; Otherwise, the RUNPATH will lack the final path component.
+         (string-append "-Dc_link_args=-Wl,-rpath="
+                        (assoc-ref %outputs "out") "/lib/deja-dup"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((python (assoc-ref inputs "python")))
+                (substitute* '("libdeja/duplicity/DuplicityInstance.vala"
+                               "libdeja/tests/scripts/instance-error.test")
+                  (("/bin/rm")
+                   (which "rm")))
+                (substitute* "libdeja/tests/runner.vala"
+                  (("/bin/sh")
+                   (which "sh")))
+                (substitute* "libdeja/tests/scripts/instance-error.test"
+                  (("`which python3`")
+                   (string-append python "/bin/python3"))))))
+          (add-after 'unpack 'patch-libgpg-error
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((libgpg-error (assoc-ref inputs "libgpg-error")))
+                (substitute* "meson.build"
+                  (("(gpgerror_libs = ).*" _ var)
+                   (format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))))
+          (add-after 'install 'wrap-program
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Add duplicity to the search path
+              (wrap-program (string-append (assoc-ref outputs "out")
+                                           "/bin/deja-dup")
+                `("PATH" ":" prefix
+                  (,(dirname (search-input-file inputs "/bin/duplicity"))))))))))
     (inputs
      (list bash-minimal
            duplicity
@@ -1933,7 +1957,7 @@ and running smart commands.")
 (define-public gnome-user-docs
   (package
    (name "gnome-user-docs")
-   (version "42.0")
+   (version "44.6")
    (source
     (origin
       (method url-fetch)
@@ -1941,7 +1965,7 @@ and running smart commands.")
                           (version-major version)
                           "/gnome-user-docs-" version ".tar.xz"))
       (sha256
-       (base32 "01g9smkk2sj3yrih2wjn6vx9av855n7w6nqf9wpxvfq086h7vcmj"))))
+       (base32 "0ds2mccrgmb4jgw196jjm7xzlvnir8k80g1v55sd4nn00prc1b9g"))))
    (build-system gnu-build-system)
    (native-inputs
     (list gettext-minimal itstool pkg-config libxml2))
@@ -1950,7 +1974,7 @@ and running smart commands.")
     "The GNOME User Documentation explains how to use the GNOME desktop and its
 components.  It covers usage and setup of the core GNOME programs by end-users
 and system administrators.")
-   (home-page "https://live.gnome.org/DocumentationProject")
+   (home-page "https://wiki.gnome.org/DocumentationProject")
    (license license:cc-by3.0)))
 
 (define-public dia
@@ -2026,7 +2050,7 @@ formats like PNG, SVG, PDF and EPS.")
     (inputs
      (list cyrus-sasl glib-networking vala))
     (propagated-inputs
-     `(("gcr" ,gcr)
+     `(("gcr" ,gcr-3)
        ("glib" ,glib)
        ("gnome-online-accounts" ,gnome-online-accounts)
        ("json-glib" ,json-glib)
@@ -2072,7 +2096,7 @@ to other formats.")
 (define-public gnome-characters
   (package
     (name "gnome-characters")
-    (version "42.0")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -2081,7 +2105,7 @@ to other formats.")
                            "/gnome-characters-" version ".tar.xz"))
        (sha256
         (base32
-         "1y40g7k7yyzikbbxhf69q4c0221lga1cli1p617v99pq2swgz82x"))))
+         "02zm3w43lvsnld3681z9w1428pwdza2gv4k05vwsx461ih15rc85"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -2089,7 +2113,11 @@ to other formats.")
       #:phases #~(modify-phases %standard-phases
                    (add-after 'unpack 'disable-gtk-update-icon-cache
                      (lambda _
-                       (setenv "DESTDIR" "/")))
+                       (substitute* "meson.build"
+                         (("gtk_update_icon_cache: true")
+                          "gtk_update_icon_cache: false")
+                         (("update_desktop_database: true")
+                          "update_desktop_database: false"))))
                    (add-after 'install 'wrap
                      (lambda* (#:key outputs #:allow-other-keys)
                        ;; GNOME Characters needs Typelib files from GTK and
@@ -2104,13 +2132,13 @@ to other formats.")
            pkg-config
            python-minimal))
     (inputs
-     (list gjs
+     (list bash-minimal  ;for wrap-program
+           gjs
            gnome-desktop
            gtk
            libadwaita
-           libhandy
            libunistring))
-    (home-page "https://wiki.gnome.org/Apps/CharacterMap")
+    (home-page "https://wiki.gnome.org/Apps/Characters")
     (synopsis "Find and insert unusual characters")
     (description "Characters is a simple utility application to find
 and insert unusual characters.  It allows you to quickly find the
@@ -2142,7 +2170,7 @@ commonly used macros.")
 (define-public gnome-contacts
   (package
     (name "gnome-contacts")
-    (version "42.0")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-contacts/"
@@ -2150,17 +2178,21 @@ commonly used macros.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "05jj5kiab13crm18r166w7h31jpny7f3px98q7d2ix93vj7w60l8"))))
+                "1vbvvv8954j4znczqa41j892rvj36k21ah5f5lwgcsphq4xidlbx"))))
     (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")))))))
+     (list
+      #:glib-or-gtk? #t
+      ;; FIXME: Cannot build the Valadoc, because both gtk+ and gtk are in the
+      ;; same profile (evolution-data-server propagates both).
+      #:configure-flags #~'("-Ddocs=false")
+      #: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")))))))
     (native-inputs
      (list desktop-file-utils
            docbook-xml
@@ -2172,19 +2204,19 @@ commonly used macros.")
            libxslt
            pkg-config))
     (inputs
-     (list evolution-data-server-3.44
+     (list evolution-data-server
            gnome-desktop
-           gnome-online-accounts-3.44
+           gnome-online-accounts
            gst-plugins-base
            gtk
            libadwaita
            libgee
-           libhandy
            libportal
+           qrencode
            telepathy-glib
            vala))
     (propagated-inputs
-     (list folks-with-libsoup2
+     (list folks
            telepathy-mission-control))
     (synopsis "GNOME's integrated address book")
     (description
@@ -2196,7 +2228,7 @@ offline sources, providing a centralized place for managing your contacts.")
 (define-public gnome-desktop
   (package
     (name "gnome-desktop")
-    (version "42.4")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -2205,7 +2237,7 @@ offline sources, providing a centralized place for managing your contacts.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "09ddr5fzhh02fcn7xl1wy18qfsdqryd5msl2nbhdnsbr0vawkqhw"))))
+         "0hlxqprraiwnccf98dykbhx80j31c3scdi7i3jy19fl4bms77is2"))))
     (build-system meson-build-system)
     (arguments
      '(#:phases
@@ -2249,7 +2281,7 @@ offline sources, providing a centralized place for managing your contacts.")
            xorg-server-for-tests))
     (propagated-inputs
      ;; Required by gnome-desktop-3.0.pc.
-     (list gsettings-desktop-schemas-next
+     (list gsettings-desktop-schemas
            gtk
            gtk+
            iso-codes
@@ -2332,7 +2364,7 @@ The gnome-about program helps find which version of GNOME is installed.")
 (define-public gnome-font-viewer
   (package
     (name "gnome-font-viewer")
-    (version "42.0")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-font-viewer/"
@@ -2340,7 +2372,7 @@ The gnome-about program helps find which version of GNOME is installed.")
                                   "/gnome-font-viewer-" version ".tar.xz"))
               (sha256
                (base32
-                "1k4dhk5dmkpxb5xpr9vrl7k2fdpi2fidzni1l2hhb891zzgvi8ng"))))
+                "15wzpdbx9wrw4r5l04srw89ak3j3jcmrvpbm27pw53121grisld1"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -2366,7 +2398,6 @@ The gnome-about program helps find which version of GNOME is installed.")
            gnome-desktop
            gtk
            libadwaita
-           libhandy
            libxml2))
     (home-page "https://gitlab.gnome.org/GNOME/gnome-font-viewer")
     (synopsis "GNOME Fonts")
@@ -2378,7 +2409,7 @@ the font would look under various sizes.")
 (define-public gcr
   (package
     (name "gcr")
-    (version "3.41.1")
+    (version "4.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2386,7 +2417,7 @@ the font would look under various sizes.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kx2pv272p0qc0nq1287gciyn34d95yxg41vq3lzxfzyqaijhwdv"))))
+                "10x3yg0vp22lpib4hfivr7140wn6iv0qha3f46wikaab50lsvslw"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -2399,11 +2430,11 @@ the font would look under various sizes.")
               (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
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
+                    (add-before 'check 'pre-check
             (lambda _
               ;; Some tests expect to write to $HOME.
               (setenv "HOME" "/tmp")))
@@ -2437,11 +2468,9 @@ the font would look under various sizes.")
            pkg-config
            python-wrapper
            vala))
-    ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
-    (propagated-inputs
-     (list glib
-           gtk+
-           p11-kit))
+    ;; GLib and p11-kit are mentioned in gck.pc and gcr.pc
+    ;; GTK is kept for symmetry with gcr-3, which propagates gtk+.
+    (propagated-inputs (list glib gtk p11-kit))
     (home-page "https://www.gnome.org")
     (synopsis "Libraries for displaying certificates and accessing key stores")
     (description
@@ -2450,6 +2479,31 @@ accessing key stores.  It also provides the viewer for crypto files on the
 GNOME Desktop.")
     (license license:lgpl2.1+)))
 
+(define-public gcr-3
+  (package
+    (inherit gcr)
+    (name "gcr")
+    (version "3.41.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version)  "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1dqsgrb62fgmy4w63bjl3b525nil4idrrdcscia1h3isaly0zlds"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments gcr)
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (replace 'skip-gtk-update-icon-cache
+              ;; Don't create 'icon-theme.cache'.
+              (lambda _
+                (substitute* "meson_post_install.py"
+                  (("gtk-update-icon-cache") "true"))))))))
+    ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
+    (propagated-inputs (list glib gtk+ p11-kit))))
+
 (define-public gdl
   (package
     (name "gdl")
@@ -2575,7 +2629,7 @@ GNOME Desktop.")
                             "1"))))))))
     (inputs
      (list dbus
-           gcr
+           gcr-3
            libgcrypt
            linux-pam
            openssh))
@@ -2592,7 +2646,7 @@ GNOME Desktop.")
            pkg-config
            python-wrapper))             ;for tests
     (propagated-inputs
-     (list gcr))
+     (list gcr-3))
 
     ;; XXX: There are concerning test failures on i686-linux and other 32-bit
     ;; platforms: <https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/124>.
@@ -2684,7 +2738,7 @@ on the GNOME Desktop with a single simple application.")
 (define-public gsettings-desktop-schemas
   (package
     (name "gsettings-desktop-schemas")
-    (version "42.0")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -2693,7 +2747,7 @@ on the GNOME Desktop with a single simple application.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1li3fcqwnw20f4j0i21i88fygm0hli8gmzkn4apgf8ynkrd371k6"))))
+         "03pc3wlfmf07586x89h63fr42pdpvqx64ak4ks298nchmmff8bgb"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -2720,21 +2774,6 @@ 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 gsettings-desktop-schemas-next
-  (package
-    (inherit gsettings-desktop-schemas)
-    (name "gsettings-desktop-schemas-next") ;to avoid propagation conflicts
-    (version "42.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://gnome/sources/" name "/"
-                           (version-major version)  "/"
-                           name "-" version ".tar.xz"))
-       (sha256
-        (base32
-         "1li3fcqwnw20f4j0i21i88fygm0hli8gmzkn4apgf8ynkrd371k6"))))))
-
 (define-public python-liblarch
   (package
     (name "python-liblarch")
@@ -2872,7 +2911,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
 (define-public adwaita-icon-theme
   (package
     (name "adwaita-icon-theme")
-    (version "43")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2880,7 +2919,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1iiflc6rfpshipl23mszlv2lzm8d1a7pxwsx2ma5bam669ywffif"))))
+                "0k3638gkdpjcr9pbsmpfj7vdqdm9s04j4d5sh1fx5v5z3dhcb2a8"))))
     (build-system gnu-build-system)
     (arguments
      (list #:make-flags
@@ -2920,39 +2959,6 @@ GNOME and KDE desktops to the icon names proposed in the specification.")
 guidelines.")
     (license license:public-domain)))
 
-(define-public shared-mime-info
-  (package
-    (name "shared-mime-info")
-    (version "1.15")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/"
-                   "b27eb88e4155d8fccb8bb3cd12025d5b/shared-mime-info-" version
-                   ".tar.xz"))
-             (sha256
-              (base32
-               "146vynj78wcwdq0ms52jzm1r4m6dzi1rhyh3h4xyb6bw8ckv10pl"))))
-    (build-system gnu-build-system)
-    (arguments
-     ;; The build system appears not to be parallel-safe.
-     '(#:parallel-build? #f))
-    (inputs
-     (list glib libxml2))
-    (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)))
-    (home-page "https://www.freedesktop.org/wiki/Software/shared-mime-info")
-    (synopsis "Database of common MIME types")
-    (description
-     "The shared-mime-info package contains the core database of common types
-and the update-mime-database command used to extend it.  It requires glib2 to
-be installed for building the update command.  Additionally, it uses intltool
-for translations, though this is only a dependency for the maintainers.  This
-database is translated at Transifex.")
-    (license license:gpl2+)))
-
 (define-public system-config-printer
   (package
     (name "system-config-printer")
@@ -3059,7 +3065,7 @@ configuring CUPS.")
 (define-public libnotify
   (package
     (name "libnotify")
-    (version "0.7.9")
+    (version "0.8.3")
     (source
      (origin
        (method url-fetch)
@@ -3068,7 +3074,7 @@ configuring CUPS.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0qa7cx6ra5hwqnxw95b9svgjg5q6ynm8y843iqjszxvds5z53h36"))))
+         "1h7nn9pz797bfmpz3d0s46yjv4ydppnzwifzdx0d6shm8vwkx3zf"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -3092,10 +3098,11 @@ configuring CUPS.")
            gobject-introspection
 
            ;; For the documentation.
+           gi-docgen
            gtk-doc/stable
            libxslt
            docbook-xsl))
-    (home-page "https://developer-next.gnome.org/libnotify/")
+    (home-page "https://gitlab.gnome.org/GNOME/libnotify/")
     (synopsis "GNOME desktop notification library")
     (description
      "Libnotify is a library that sends desktop notifications to a
@@ -3107,7 +3114,7 @@ some form of information without getting in the user's way.")
 (define-public libpeas
   (package
     (name "libpeas")
-    (version "1.32.0")
+    (version "1.36.0")
     (source
      (origin
        (method url-fetch)
@@ -3116,21 +3123,23 @@ some form of information without getting in the user's way.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "03ixrhfkywcb409dd0hybyb6i291phwy8si4kc17g29fl07m49fn"))))
+         "0k3v4c9xs7pxpckkagl9ba70nlxl2n23w6ixc8bqd3ndrk1bjz19"))))
     (build-system meson-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-before 'check 'start-xserver
-           (lambda* (#:key inputs #:allow-other-keys)
-             (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 ~a &"
-                               (search-input-file inputs "bin/Xvfb")
-                               disp))))))))
+     (list
+      #:configure-flags #~'("-Dvapi=true" "-Dgtk_doc=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'start-xserver
+            (lambda* (#:key inputs #:allow-other-keys)
+              (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 ~a &"
+                                (search-input-file inputs "bin/Xvfb")
+                                disp))))))))
     (inputs
      (list gtk+
            glade3
@@ -3139,12 +3148,14 @@ some form of information without getting in the user's way.")
     (native-inputs
      (list pkg-config
            gettext-minimal
+           gi-docgen
            `(,glib "bin")
            gobject-introspection
-           xorg-server-for-tests))
+           xorg-server-for-tests
+           vala))
     (propagated-inputs
      ;; The .pc file "Requires" gobject-introspection.
-     (list gobject-introspection))
+     (list glib gobject-introspection))
     (home-page "https://wiki.gnome.org/Projects/Libpeas")
     (synopsis "GObject plugin system")
     (description
@@ -3448,7 +3459,7 @@ XML/CSS rendering engine.")
 (define-public libgsf
   (package
     (name "libgsf")
-    (version "1.14.50")
+    (version "1.14.52")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3456,7 +3467,7 @@ XML/CSS rendering engine.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0llf5rpg2rg9pdz8j38dl5z82zi9kmsn639wb2fhcfc3fz820v3f"))))
+                "1w5whjq1yf6c3k0gijfkc44zrr9gamxlr8yaddfy1h7sp4ack0ci"))))
     (build-system glib-or-gtk-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -3786,38 +3797,41 @@ functionality was designed to be as reusable and portable as possible.")
                                     upstream-name "-" version ".tar.bz2")))
               (sha256
                (base32
-                "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"))))
+                "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"))
+              (patches
+               (search-patches "orbit2-fix-array-allocation-32bit.patch"))))
     (build-system gnu-build-system)
     (arguments
-     `(;; The "timeout-server" test hangs when run in parallel.
-       #:parallel-tests? #f
-       #:configure-flags
-       '(;; We don't need static libraries, plus they don't build reproducibly
-         ;; (non-deterministic ordering of .o files in the archive.)
-         "--disable-static"
-
-         ;; The programmer kindly gives us a hook to turn off deprecation
-         ;; warnings ...
-         "DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
-       ;; ... which they then completly ignore !!
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-parallel-build
-           ;; Parallel build fails because of a failed dependency,
-           ;; https://bugzilla.gnome.org/show_bug.cgi?id=732274
-           (lambda _
-             (substitute* "src/services/name/Makefile.am"
-               (("orbit_name_server_2_DEPENDENCIES = \\$(DEPS) CosNaming.h")
-                "orbit_name_server_2_DEPENDENCIES = \
+     (list
+      ;; The "timeout-server" test hangs when run in parallel.
+      #:parallel-tests? #f
+      #:configure-flags
+      #~'(;; We don't need static libraries, plus they don't build reproducibly
+          ;; (non-deterministic ordering of .o files in the archive.)
+          "--disable-static"
+
+          ;; The programmer kindly gives us a hook to turn off deprecation
+          ;; warnings ...
+          "DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
+      ;; ... which they then completly ignore !!
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-parallel-build
+            ;; Parallel build fails because of a failed dependency,
+            ;; https://bugzilla.gnome.org/show_bug.cgi?id=732274
+            (lambda _
+              (substitute* "src/services/name/Makefile.am"
+                (("orbit_name_server_2_DEPENDENCIES = \\$(DEPS) CosNaming.h")
+                 "orbit_name_server_2_DEPENDENCIES = \
 $(DEPS) CosNaming.h libname-server-2.a"))))
-         (add-before 'configure 'ignore-deprecations
-           (lambda _
-             (substitute* "linc2/src/Makefile.in"
-               (("-DG_DISABLE_DEPRECATED")
-                "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))))))
-    (inputs (list glib libidl))
-    (native-inputs
-     (list pkg-config))
+          (add-before 'configure 'ignore-deprecations
+            (lambda _
+              (substitute* "linc2/src/Makefile.in"
+                (("-DG_DISABLE_DEPRECATED")
+                 "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))))))
+    ;; These are required in the installed pkg-config files.
+    (propagated-inputs (list glib libidl))
+    (native-inputs (list pkg-config))
     (home-page "https://projects.gnome.org/orbit2/")
     (synopsis "CORBA 2.4-compliant Object Request Broker")
     (description  "ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb)
@@ -4420,7 +4434,7 @@ engineering.")
 (define-public seahorse
   (package
     (name "seahorse")
-    (version "42.0")
+    (version "43.0")
     (source
      (origin
        (method url-fetch)
@@ -4428,7 +4442,7 @@ engineering.")
                            (version-major version) "/" name "-"
                            version ".tar.xz"))
        (sha256
-        (base32 "0c6nafhn4gcjwd1xbs5bjq9785114fc0pbhxbwp7wynyz3msq365"))))
+        (base32 "0bc3xbjzwa4245m6nqzl3v6hzp9hyfbf50iwgwi5hdjglzxin7av"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -4437,15 +4451,18 @@ engineering.")
          (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")
+               (("update_desktop_database: true")
+                "update_desktop_database: false"))))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a writable HOME.
              (setenv "HOME" (getcwd)))))))
     (inputs
      (list gtk+
-           gcr
+           gcr-3
            gnupg
            gpgme
            openldap
@@ -4454,7 +4471,7 @@ engineering.")
            libhandy
            libpwquality
            libsecret
-           libsoup-minimal-2))
+           libsoup-minimal))
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")
@@ -4473,7 +4490,7 @@ passwords in the GNOME keyring.")
 (define-public vala
   (package
     (name "vala")
-    (version "0.56.3")
+    (version "0.56.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/vala/"
@@ -4481,7 +4498,7 @@ passwords in the GNOME keyring.")
                                   "vala-" version ".tar.xz"))
               (sha256
                (base32
-                "1gwrnr0d0bqkh6m4bgz39mh3pcswcj43hyijlwgwp2bvpwhn41p1"))))
+                "0mzmldhf6474dp2jkxj160kkafdz32c2l5f8xnm05p4vr9lc50lk"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      (list
@@ -4541,7 +4558,7 @@ targeting the GNOME stack simple.")
 (define-public vte
   (package
     (name "vte")
-    (version "0.70.2")
+    (version "0.72.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/vte/"
@@ -4549,7 +4566,7 @@ targeting the GNOME stack simple.")
                                   "vte-" version ".tar.xz"))
               (sha256
                (base32
-                "102d6cd9f96czlq01ixhymfp0z20khw0dl5bgvan9xg31lwb85ad"))))
+                "0p4apgwi8v7ccid2bif6zdffk09jl90yy66awhff9jairakbckf7"))))
     (build-system meson-build-system)
     (arguments
      (list #:configure-flags #~(list "-Dvapi=true"
@@ -4722,7 +4739,7 @@ configuration storage systems.")
 (define-public json-glib-minimal
   (package
     (name "json-glib-minimal")
-    (version "1.6.2")
+    (version "1.6.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/json-glib/"
@@ -4730,14 +4747,16 @@ configuration storage systems.")
                                   "/json-glib-" version ".tar.xz"))
               (sha256
                (base32
-                "092g2dyy1hhl0ix9kp33wcab0pg1qicnsv0cj5ms9g9qs336cgd3"))))
+                "03j9ba2sccbz954smk3n1swwnvpzl8yhwwin6vixvxligaz9iv4n"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t))           ; To wrap binaries and/or compile schemas
+     (list #:glib-or-gtk? #t            ;to wrap binaries, compile schemas
+           #:configure-flags #~(list "-Dgtk_doc=disabled")))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("glib" ,glib "bin")             ;for glib-mkenums and glib-genmarshal
-       ("pkg-config" ,pkg-config)))
+     (list
+      gettext-minimal
+      `(,glib "bin")                     ;for glib-mkenums and glib-genmarshal
+      pkg-config))
     (inputs
      (list bash-minimal))
     (propagated-inputs
@@ -4756,8 +4775,7 @@ GLib and GObject, and integrates JSON with GLib data types.")
     (arguments
      (substitute-keyword-arguments (package-arguments json-glib-minimal)
        ((#:configure-flags _)
-        #~(list "-Ddocs=true"
-                "-Dman=true"
+        #~(list "-Dman=true"
                 #$@(if (%current-target-system)
                        ;; If enabled, gtkdoc-scangobj will try to execute a
                        ;; cross-compiled binary.
@@ -4765,7 +4783,8 @@ GLib and GObject, and integrates JSON with GLib data types.")
                           ;; Trying to build introspection data when cross-compiling
                           ;; causes errors during linking.
                           "-Dintrospection=disabled")
-                       #~())))
+                       #~("-Dgtk_doc=enabled"
+                          "-Dintrospection=enabled"))))
        ((#:phases phases '%standard-phases)
         #~(modify-phases #$phases
             ;; When cross-compiling, there are no docs to move.
@@ -4778,19 +4797,15 @@ GLib and GObject, and integrates JSON with GLib data types.")
                         (lambda _
                           (mkdir-p (string-append #$output:doc "/share"))
                           (rename-file
-                           (string-append #$output "/share/gtk-doc")
+                           (string-append #$output "/share/doc")
                            (string-append #$output:doc
-                                          "/share/gtk-doc"))))))))))
+                                          "/share/doc"))))))))))
     (native-inputs
      (if (%current-target-system)
          ;; No docs, no additional inputs.
          (package-native-inputs json-glib-minimal)
          (modify-inputs (package-native-inputs json-glib-minimal)
-                        (prepend docbook-xml-4.3
-                                 docbook-xsl
-                                 gobject-introspection
-                                 gtk-doc
-                                 libxslt))))))
+                        (prepend gi-docgen gobject-introspection))))))
 
 (define-public libxklavier
   (package
@@ -4840,7 +4855,7 @@ indicators etc).")
 (define-public glib-networking
   (package
     (name "glib-networking")
-    (version "2.72.2")
+    (version "2.76.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/glib-networking/"
@@ -4848,12 +4863,11 @@ indicators etc).")
                                   "glib-networking-" version ".tar.xz"))
               (sha256
                (base32
-                "0s42l6dkajciqc99zp6dc9l8yv9g8w7d8mgv97l7h7drgd60hand"))
-              (patches
-               (search-patches "glib-networking-gnutls-binding.patch"))))
+                "0ax4h0abi9yxrpmm1p491qjxc8d2k1kaa9hhzgyixrfxjjcqlsaw"))))
     (build-system meson-build-system)
     (native-inputs
-     (list pkg-config gettext-minimal))
+     (list `(,glib "bin") ; for gio-querymodules
+           pkg-config gettext-minimal))
     (inputs
      (list glib gnutls gsettings-desktop-schemas libproxy))
     (home-page "https://wiki.gnome.org/Projects/GLib")
@@ -4995,7 +5009,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libshumate
   (package
     (name "libshumate")
-    (version "1.0.0.beta")              ;no stable release yet
+    (version "1.0.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5003,25 +5017,35 @@ libxml to ease remote use of the RESTful API.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "13xrc07fm0967gzbqab8k0l3dnknh00p0a6f2dm7k0aa56q41sda"))))
+                "0v4m07vxm3m4a2vqkp2wfsc3zsf92fpigc1k8yq49vkpj7gxikx8"))))
     (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")
+    (arguments
+     (list #:configure-flags #~(list "-Dlibsoup3=true")
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'check
+                 (lambda* (#:key tests? test-options #:allow-other-keys)
+                   (when tests?
+                     ;; Some tests expect to write to $HOME.
+                     (setenv "HOME" "/tmp")
+                     (setenv "XDG_RUNTIME_DIR" "/tmp/run")
+                     (setenv "XDG_CACHE_HOME" "/tmp/cache")
 
-                                      ;; Tests require a running X server.
-                                      (system "Xvfb :1 &")
-                                      (setenv "DISPLAY" ":1"))))))
+                     ;; Tests require a running X server.
+                     (system "Xvfb :1 &")
+                     (setenv "DISPLAY" ":1")
+
+                     (apply invoke "dbus-run-session" "--" "meson" "test"
+                            "--print-errorlogs" test-options)))))))
     (native-inputs
      (list gi-docgen
            `(,glib "bin")
            gobject-introspection
            pkg-config
-           xorg-server-for-tests))
+           ;; For tests:
+           xorg-server-for-tests
+           dbus
+           at-spi2-core))
     (propagated-inputs
      ;; All the libraries are listed as "Requires' in the .pc file.
      (list cairo
@@ -5040,7 +5064,7 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
 (define-public libsoup-minimal
   (package
     (name "libsoup-minimal")
-    (version "3.0.7")
+    (version "3.4.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -5048,28 +5072,29 @@ as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "1j7p3cz6hwi9js9rp0pbas7cdln97yg9v2l1nv5imhcr6p7r1pzb"))))
+                "1an5n2sa70f40my4g20lk38s5ib99c32bzzg8gm91v9nbxr6f719"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Dgtk_doc=false")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-tests
-           (lambda _
-             ;; This test fails due to missing /etc/nsswitch.conf
-             ;; in the build environment.
-             (substitute* "tests/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.*") "")))))))
+     (list
+      #:configure-flags #~(list "-Ddocs=disabled")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack '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.*") "")))))))
     (native-inputs
      (list `(,glib "bin") ;for glib-mkenums
            gobject-introspection
@@ -5103,7 +5128,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
 (define-public libsoup-minimal-2
   (package
     (inherit libsoup-minimal)
-    (version "2.74.2")
+    (version "2.74.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -5111,17 +5136,21 @@ and the GLib main loop, to integrate well with GNOME applications.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "0n8is108n0dn4dw7nm2wq9rydcm1vy47w40wywfrxqazdrjjg97h"))))
+                "04rgv6hkyhgi7lak9865yxgbgky6gc635p7w6nhcbj64rx0prdz4"))))
     (arguments
      (substitute-keyword-arguments (package-arguments libsoup-minimal)
+       ((#:configure-flags configure-flags)
+        ;; The option name changed between libsoup 2 and libsoup 3.
+        #~(cons "-Dgtk_doc=false"
+                (delete "-Ddocs=disabled" #$configure-flags)))
        ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'disable-failing-tests
-             (lambda _
-               ;; Disable the SSL test, failing since 2.68 and resolved in
-               ;; libsoup 3.
-               (substitute* "tests/meson.build"
-                 (("[ \t]*\\['ssl', true, \\[\\]\\],") ""))))))))
+        #~(modify-phases #$phases
+            (replace 'adjust-tests
+              (lambda _
+                ;; Disable the SSL test, failing since 2.68 and resolved in
+                ;; libsoup 3.
+                (substitute* "tests/meson.build"
+                  (("[ \t]*\\['ssl', true, \\[\\]\\],") ""))))))))
     (native-inputs
      (modify-inputs (package-native-inputs libsoup-minimal)
        (replace "vala" vala-0.52)))))
@@ -5129,20 +5158,13 @@ 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)
-        #~(delete "-Dgtk_doc=false" #$configure-flags))
+        #~(cons "-Ddocs=enabled"
+                ;; The default value is 'auto', meaning it could be skipped.
+                (delete "-Ddocs=disabled" #$configure-flags)))
        ((#:phases phases)
         #~(modify-phases #$phases
             (replace 'adjust-tests
@@ -5167,12 +5189,12 @@ and the GLib main loop, to integrate well with GNOME applications.")
                 (rename-file (string-append #$output "/share/doc")
                              (string-append #$output:doc "/share/doc"))))))))
     (native-inputs (modify-inputs (package-native-inputs libsoup-minimal)
-                     (prepend gi-docgen)))))
+                     (prepend gettext-minimal gi-docgen)))))
 
 (define-public libsecret
   (package
     (name "libsecret")
-    (version "0.20.5")
+    (version "0.21.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5181,7 +5203,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
                     "libsecret-" version ".tar.xz"))
               (sha256
                (base32
-                "0k9bs47rzb3dwvznb4179d6nw7rbzjdyd4y8hx6vazfd1wscxcrz"))))
+                "081bj59ws08kb261cd1w1mkdkhfbzsjbbkkrm6wllvdyhgbhhg8n"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -5189,12 +5211,6 @@ and the GLib main loop, to integrate well with GNOME applications.")
       #~(list "-Dgtk_doc=false")        ;requires gi-docgen
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'disable-problematic-tests
-            (lambda _
-              (substitute* "libsecret/meson.build"
-                ;; The test-collection test fails non-deterministically (see:
-                ;; https://gitlab.gnome.org/GNOME/libsecret/-/issues/80).
-                ((".*'test-collection',.*") ""))))
           (delete 'check)
           (add-after 'install 'check
             (lambda* (#:key tests? test-options #:allow-other-keys)
@@ -5427,7 +5443,7 @@ more fun.")
 (define-public gnome-console
   (package
     (name "gnome-console")
-    (version "42.2")
+    (version "44.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-console/"
@@ -5435,28 +5451,20 @@ more fun.")
                                   "gnome-console-" version ".tar.xz"))
               (sha256
                (base32
-                "0jbh8g3hmc35fy5fbscqf0831xpg1kv66ci9hykpbia4hz0yc9kx"))))
+                "13asis4fabsm0wy3m6bk4k3bmnh6a9c9bwwpv6b3why0lvll87xr"))))
     (build-system meson-build-system)
     (arguments
      (list #:glib-or-gtk? #t
-           #:configure-flags #~(list "-Dtests=true"
-                                     "-Dnautilus=enabled")
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'patch-nautilus-extension-path
-                          (lambda _
-                            (substitute* "nautilus/meson.build"
-                              (("'extensions-[0-9.]*'")
-                               "'site-extensions'")))))))
+           #:configure-flags #~(list "-Dtests=true")))
     (native-inputs (list `(,glib "bin")
                          gettext-minimal
                          sassc
                          pkg-config
                          `(,gtk+ "bin")
                          desktop-file-utils))
-    (inputs (list gtk+
-                  libhandy
-                  nautilus
-                  vte
+    (inputs (list gtk
+                  libadwaita
+                  vte-with-gtk-4
                   libgtop
                   gsettings-desktop-schemas))
     (home-page "https://gitlab.gnome.org/GNOME/console")
@@ -5468,16 +5476,19 @@ more fun.")
 (define-public gnome-terminal
   (package
     (name "gnome-terminal")
-    (version "3.44.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://gnome/sources/" name "/"
-                           (version-major+minor version) "/"
-                           name "-" version ".tar.xz"))
-       (sha256
-        (base32
-         "0yykb64yi1h0g65q890jf5awjr2sdvfda4xbxnmajcgj3zp20vzv"))))
+    (version "3.48.3")
+    ;; download.gnome.org does not have any version for gnome-terminal more
+    ;; recent than 3.44.1, but the repository has several tags newer than
+    ;; that.
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/GNOME/gnome-terminal")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1cqh35j57a5ni4xlfjzl46kim6nbhqvxx3jql3gjk414z359i0j6"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -5531,7 +5542,7 @@ keyboard shortcuts.")
 (define-public gnome-text-editor
   (package
     (name "gnome-text-editor")
-    (version "42.2")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-text-editor/"
@@ -5539,7 +5550,7 @@ keyboard shortcuts.")
                                   "gnome-text-editor-" version ".tar.xz"))
               (sha256
                (base32
-                "1nn53iv2a82kkqkg5jy0bqh2b2wzg7g4a6w8q3qsis5wvj64lvg5"))))
+                "1jii59hw31baira2psl1kx2lxljmnnkxmif4zhasizrl0xwc6yzn"))))
     (build-system meson-build-system)
     (arguments
      (list #:glib-or-gtk? #t))
@@ -5551,7 +5562,12 @@ keyboard shortcuts.")
                          `(,glib "bin")
                          `(,gtk "bin")
                          itstool))
-    (inputs (list gtk gtksourceview libadwaita enchant))
+    (inputs (list gtk gtksourceview libadwaita enchant pcre2
+                  ;; cyclic module dependency
+                  (module-ref
+                   (resolve-interface
+                    '(gnu packages text-editors))
+                   'editorconfig-core-c)))
     (home-page "https://gitlab.gnome.org/GNOME/gnome-text-editor")
     (synopsis "GNOME text editor")
     (description
@@ -5774,7 +5790,7 @@ faster results and to avoid unnecessary server load.")
 (define-public upower
   (package
     (name "upower")
-    (version "1.90.0")
+    (version "1.90.2")
     (source
      (origin
        (method git-fetch)
@@ -5783,7 +5799,7 @@ faster results and to avoid unnecessary server load.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1g17rm91p8vfpjyb0k2shylrs55nccn3fa890vlk4n9s71sghbzq"))
+        (base32 "13xp423ycv8imf2cmgf6lii9f01p7x2v19cny7acrmczkc0cqv7d"))
        (modules '((guix build utils)))
        (snippet
         ;; Upstream commit <https://cgit.freedesktop.org/upower/commit/
@@ -5806,19 +5822,25 @@ faster results and to avoid unnecessary server load.")
               ;; If not specified, udev will try putting history information
               ;; in /gnu/store.
               "-Dhistorydir=/var/lib/upower"
-              (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d"))
-      #:phases (if (target-x86-32?)
-                   #~(modify-phases %standard-phases
-                       (add-after 'unpack 'adjust-test-for-excess-precision
-                         (lambda _
-                           ;; Address test failure caused by excess precision
-                           ;; on i686:
-                           ;; <https://gitlab.freedesktop.org/upower/upower/-/issues/214>.
-                           (substitute* "src/linux/integration-test.py"
-                             (("assertEqual(.*)40\\.0" _ middle)
-                              (string-append
-                               "assertAlmostEqual" middle "40.0"))))))
-                   #~%standard-phases)))
+              (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d")
+              (string-append "-Dudevhwdbdir=" #$output "/lib/udev/hwdb.d"))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'adjust-test-suite
+            (lambda _
+              ;; This test calls an unimplemented bluez dbus method.
+              (substitute* "src/linux/integration-test.py"
+                (("test_bluetooth_hidpp_mouse")
+                 "disabled_test_bluetooth_hidpp_mouse"))
+              #$@(if (target-x86-32?)
+                     ;; Address test failure caused by excess precision
+                     ;; on i686:
+                     ;; <https://gitlab.freedesktop.org/upower/upower/-/issues/214>.
+                     '((substitute* "src/linux/integration-test.py"
+                         (("assertEqual(.*)40\\.0" _ middle)
+                          (string-append
+                           "assertAlmostEqual" middle "40.0"))))
+                     '()))))))
     (native-inputs
      (list `(,glib "bin")               ; for gdbus-codegen
            gobject-introspection
@@ -5828,16 +5850,17 @@ faster results and to avoid unnecessary server load.")
            python
            ;; For tests.
            python-dbus
-           python-dbusmock
+           python-dbusmock-minimal
            python-packaging
            python-pygobject
            umockdev
+           dbus
            ;; For man pages.
            docbook-xsl
            libxslt                      ; for 'xsltproc'
            libxml2))                    ; for 'XML_CATALOG_FILES'
     (inputs
-     (list dbus-glib libgudev libusb))
+     (list libgudev libusb))
     (propagated-inputs
      ;; In Requires of upower-glib.pc.
      (list glib))
@@ -5907,7 +5930,7 @@ services for numerous locations.")
   (package
     (inherit libgweather)
     (name "libgweather4")
-    (version "4.1.1")
+    (version "4.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgweather/"
@@ -5915,7 +5938,7 @@ services for numerous locations.")
                                   "libgweather-" version ".tar.xz"))
               (sha256
                (base32
-                "1wh3asniv5yiqp0dsk96as2bkx72hamh3ij2md8k0is9yd7ppbjm"))))
+                "00v2rb9dizfvcsq3bgrz68bsi1k04ln5fqhx1q06m5yql0nq32mg"))))
     (arguments
      (list
       #:configure-flags
@@ -5962,22 +5985,10 @@ services for numerous locations.")
            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 "42.2")
+    (version "44.1")
     (source
      (origin
        (method url-fetch)
@@ -5986,7 +5997,7 @@ services for numerous locations.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "005b1dvrfcyr6n4srl6c0lzr95c18prps4xm1lf2ghcfm8a9fi4w"))
+         "129rjhr2kvfd37fingz8737brh8a874hlw3xlh01658zv1r3nr8j"))
        (patches (search-patches "gnome-settings-daemon-gc.patch"))))
     (build-system meson-build-system)
     (arguments
@@ -6031,13 +6042,13 @@ services for numerous locations.")
            cups
            gcr
            geoclue
-           geocode-glib-with-libsoup2
+           geocode-glib
            gnome-desktop
-           gsettings-desktop-schemas-next
+           gsettings-desktop-schemas
            lcms
            libcanberra
            libgudev
-           libgweather4-with-libsoup2
+           libgweather4
            libnotify
            (librsvg-for-system)
            libwacom
@@ -6208,7 +6219,9 @@ throughout GNOME for API documentation).")
                            (version-major+minor version) "/"
                            "cogl-" version ".tar.xz"))
        (sha256
-        (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8"))))
+        (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8"))
+       (patches
+        (search-patches "cogl-fix-double-free.patch"))))
     ;; NOTE: mutter exports a bundled fork of cogl, so when making changes to
     ;; cogl, corresponding changes may be appropriate in mutter as well.
     (build-system gnu-build-system)
@@ -6293,8 +6306,6 @@ without stepping on each others toes.")
        (sha256
         (base32
          "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
@@ -6562,7 +6573,7 @@ as possible!")
 (define-public grilo
   (package
     (name "grilo")
-    (version "0.3.15")
+    (version "0.3.16")
     (source
      (origin
        (method url-fetch)
@@ -6570,7 +6581,7 @@ as possible!")
                            (version-major+minor version) "/"
                            "grilo-" version ".tar.xz"))
        (sha256
-        (base32 "0bbvaxw2das8826663z23y0acbdmcvggwdh64ws9jrk56vvsqlpk"))))
+        (base32 "15mxffs7f7ndzimpvpq4lj48km5p6i9gyqxa4ggq1qpcqpl80ic8"))))
     (build-system meson-build-system)
     (arguments
      (list #:phases #~(modify-phases %standard-phases
@@ -6585,6 +6596,7 @@ as possible!")
            pkg-config
            gobject-introspection
            gtk-doc/stable
+           python
            vala))
     (inputs
      (list cyrus-sasl
@@ -6599,7 +6611,7 @@ as possible!")
             (variable "GRL_PLUGIN_PATH")
             (files (list (string-append "lib/grilo-"
                                         (version-major+minor version)))))))
-    (home-page "https://wiki.gnome.org/action/show/Projects/Grilo")
+    (home-page "https://wiki.gnome.org/Projects/Grilo")
     (synopsis "Framework for discovering and browsing media")
     (description
      "Grilo is a framework focused on making media discovery and browsing easy
@@ -6609,7 +6621,7 @@ for application developers.")
 (define-public grilo-plugins
   (package
     (name "grilo-plugins")
-    (version "0.3.15")
+    (version "0.3.16")
     (source
      (origin
        (method url-fetch)
@@ -6617,7 +6629,7 @@ for application developers.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "0cxbxg7i9qd1pyfjj7c15x9lawvaw5608jk2apcrac7rakcw6645"))))
+        (base32 "1jydhk822sigyda3mswn59j9s01dy81f553382i8nsvcb2z4svzy"))))
     (build-system meson-build-system)
     (native-inputs
      (list gettext-minimal
@@ -6643,20 +6655,21 @@ for application developers.")
            tracker
            tracker-miners))
     (arguments
-     `(#:glib-or-gtk? #t
-       ;;Disable lua-factory as it needs missing dependencies
-       #:configure-flags '("-Denable-lua-factory=no")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'set-shell
-           (lambda _
-             (setenv "SHELL" (which "bash"))))
-         ;; Disable the tracker test that requires the UPower daemon.
-         (add-before 'configure 'fix-tests
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "tests/tracker3/meson.build"
-               (("'test_tracker3'.*") "")))))))
-    (home-page "https://live.gnome.org/Grilo")
+     (list
+      #:glib-or-gtk? #t
+      ;;Disable lua-factory as it needs missing dependencies
+      #:configure-flags #~'("-Denable-lua-factory=no")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'set-shell
+            (lambda _
+              (setenv "SHELL" (which "bash"))))
+          ;; Disable the tracker test that requires the UPower daemon.
+          (add-before 'configure 'fix-tests
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "tests/tracker3/meson.build"
+                (("'test_tracker3'.*") "")))))))
+    (home-page "https://wiki.gnome.org/Projects/Grilo")
     (synopsis "Plugins for the Grilo media discovery library")
     (description
      "Grilo is a framework focused on making media discovery and browsing easy
@@ -6667,7 +6680,7 @@ discovery protocols.")
 (define-public totem
   (package
     (name "totem")
-    (version "42.0")
+    (version "43.0")
     (source
      (origin
        (method url-fetch)
@@ -6675,7 +6688,7 @@ discovery protocols.")
                            (version-major version) "/"
                            "totem-" version ".tar.xz"))
        (sha256
-        (base32 "1az6ay7zhz2naqrzcfldx1yv2ylw1yjx76g3mqrqppwmvcflkw2a"))))
+        (base32 "07m4jiry78m85sqcx7f9r7dkfvfnd8xzhfad5939cn4bj9akcvdk"))))
     (build-system meson-build-system)
     (native-inputs
      (list pkg-config
@@ -6729,8 +6742,9 @@ discovery protocols.")
           (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"))))
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
          (add-before 'install 'disable-cache-generation
            (lambda _
              (setenv "DESTDIR" "/")))
@@ -6848,7 +6862,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
 (define-public eog
   (package
     (name "eog")
-    (version "42.3")
+    (version "44.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6856,7 +6870,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0fpl8wz1j10r59m20d61b7wmp8ga48dd7svqv1a2ip66ig1b7h9h"))))
+                "134xvb2fcfh6ciyk2f3rh7khh7b2n8lr13sc977zhbs39c7xgcnn"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -6957,14 +6971,14 @@ side panel;
 (define-public libgudev
   (package
     (name "libgudev")
-    (version "236")
+    (version "238")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   version "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "094mgjmwgsgqrr1i0vd20ynvlkihvs3vgbmpbrhswjsrdp86j0z5"))))
+                "1laxgdkgmr30aw44sm4rgpsdybwxx5rszcm8c2y3vmy9myqnl9k1"))))
     (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
@@ -6985,7 +6999,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
 (define-public gvfs
   (package
     (name "gvfs")
-    (version "1.50.3")
+    (version "1.50.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gvfs/"
@@ -6993,13 +7007,14 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
                                   "gvfs-" version ".tar.xz"))
               (sha256
                (base32
-                "1z8332qg4kpa3lm3lbwb3xir4rba9ajsbqbq4yfh45mvjyg135v8"))))
+                "0cgjlxrs4qr08igqjpkhfxpzydj8m9y9n92z091knkj5170x5bbj"))))
     (build-system meson-build-system)
     (arguments
      (list #:glib-or-gtk? #t
            #:configure-flags
            #~(list "-Dsystemduserunitdir=no"
                    "-Dtmpfilesdir=no"
+                   "-Dman=true"
                    ;; Otherwise, the RUNPATH will lack the final path component.
                    (string-append "-Dc_link_args=-Wl,-rpath="
                                   #$output "/lib/gvfs"))))
@@ -7016,7 +7031,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
            dbus
            elogind
            fuse
-           gcr
+           gcr-3
            glib
            gnome-online-accounts
            gsettings-desktop-schemas
@@ -7038,7 +7053,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
            openssh
            polkit
            udisks))
-    (home-page "https://wiki.gnome.org/gvfs/")
+    (home-page "https://wiki.gnome.org/Projects/gvfs")
     (synopsis "Userspace virtual file system for GIO")
     (description
      "GVFS is a userspace virtual file system designed to work with the I/O
@@ -7103,7 +7118,7 @@ USB transfers with your high-level application or system daemon.")
 (define-public simple-scan
   (package
     (name "simple-scan")
-    (version "42.5")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -7111,9 +7126,8 @@ USB transfers with your high-level application or system daemon.")
                            (version-major version) "/"
                            "simple-scan-" version ".tar.xz"))
        (sha256
-        (base32 "0l201qjig6bk34bw8d77jcbhjhn4swfqdj84sjlyy1p2x6jdzx85"))))
+        (base32 "15cfv56jcmjncwyf3w4ra0c77xwy0hkdzhpcx93zfizl8vyp1f1r"))))
     (build-system meson-build-system)
-    ;; TODO: Fix icons in home screen, About dialogue, and scan menu.
     (arguments
      '(#:glib-or-gtk? #t))
     (native-inputs
@@ -7145,7 +7159,7 @@ almost all of them.")
 (define-public epiphany
   (package
     (name "epiphany")
-    (version "42.4")
+    (version "44.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/epiphany/"
@@ -7153,7 +7167,7 @@ almost all of them.")
                                   "epiphany-" version ".tar.xz"))
               (sha256
                (base32
-                "0q08ixzgp341g5pq6rfy5q75m9bvddvl8na3qa5v5vi056nkh29p"))))
+                "1n3df2skvgmjw9sybhn811l4b58ibwxc0dc208wpvxg060pyhpfk"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -7163,8 +7177,9 @@ almost all of them.")
           (add-after 'unpack 'skip-gtk-update-icon-cache
             ;; Don't create 'icon-theme.cache'.
             (lambda _
-              (substitute* "post_install.py"
-                (("gtk-update-icon-cache") "true"))))
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
           (add-after 'unpack 'disable-failing-tests
             (lambda _
               (substitute* "tests/meson.build"
@@ -7172,17 +7187,42 @@ almost all of them.")
                 ;; supports overriding the ftp schema web_app_utils fails due
                 ;; to missing network access.
                 (("(embed_shell|web_app_utils)_test,")
-                 "find_program('sh'), args: ['-c', 'exit 77'],"))))
-          (add-before 'check 'pre-check
-            (lambda _
-              ;; Tests require a running X server.
-              (system "Xvfb :1 &")
-              (setenv "DISPLAY" ":1"))))
+                 "find_program('sh'), args: ['-c', 'exit 77'],")
+                ;; web_view_test partially fails, because it can’t run bwrap.
+                (("web_view_test,")
+                 (string-append
+                  "web_view_test, args: ["
+                  (string-join
+                   (map (lambda (test)
+                          (string-append "'-s', '/embed/ephy-web-view/" test "'"))
+                        '("load_url"
+                          "provisional_load_failure_updates_back_forward_list"
+                          "error-pages-not-stored-in-history"))
+                   ", ")
+                  "],")))))
+          (replace 'check
+            (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
+              (when tests?
+                (setenv "MESON_TESTTHREADS"
+                        (if parallel-tests?
+                            (number->string (parallel-job-count))
+                            "1"))
+                (setenv "XDG_CACHE_HOME" (getcwd))
+                ;; Tests require a running X server.
+                (system "Xvfb :1 &")
+                (setenv "DISPLAY" ":1")
+                (invoke "dbus-run-session" "--"
+                        "meson" "test" "--print-errorlogs" "-t" "0"))))
+         (add-after 'install 'gst-wrap
+           (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/epiphany")
+                 `("GST_PLUGIN_SYSTEM_PATH" ":" suffix (,gst-plugin-path)))))))
       #:configure-flags
       ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component.
       #~(list (string-append "-Dc_link_args=-Wl,-rpath="
-                             #$output "/lib/epiphany")
-              "-Dsoup2=disabled")))     ;use libsoup 3
+                             #$output "/lib/epiphany"))))
     (propagated-inputs (list dconf))
     (native-inputs
      (list desktop-file-utils           ; for update-desktop-database
@@ -7194,15 +7234,18 @@ almost all of them.")
            xorg-server-for-tests))
     (inputs
      (list avahi
+           bash-minimal                 ; for wrap-program
            gcr
            glib-networking
            gnome-desktop
            gsettings-desktop-schemas
+           gst-plugins-base
+           gst-plugins-good
+           gstreamer
            iso-codes
            json-glib
+           libadwaita
            libarchive
-           libdazzle
-           libhandy
            libnotify
            libportal
            (librsvg-for-system)         ; for loading SVG files
@@ -7211,7 +7254,7 @@ almost all of them.")
            libxslt
            nettle                       ; for hogweed
            sqlite
-           webkitgtk-for-gtk3))
+           webkitgtk))
     (home-page "https://wiki.gnome.org/Apps/Web")
     (synopsis "GNOME web browser")
     (description
@@ -7275,7 +7318,7 @@ of running programs and invoke methods on those interfaces.")
 (define-public d-spy
   (package
     (name "d-spy")
-    (version "1.4.0")
+    (version "1.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7283,7 +7326,7 @@ of running programs and invoke methods on those interfaces.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0wk7i3vyq4a98g29ms7vz3wy8xkk3pgw48g0fm65qk32xa679s7a"))))
+                "1zca9yn12a8phy2lzcsc7wak10r0j53m8d0fs1q69d1va48a5l52"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -7316,7 +7359,7 @@ environments.")
 (define-public yelp-xsl
   (package
     (name "yelp-xsl")
-    (version "41.0")
+    (version "42.1")
     (source
      (origin
        (method url-fetch)
@@ -7325,7 +7368,7 @@ environments.")
                        (version-major version) "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "19d46rkajvr0f04560vlrzwvac88x5j8ilvzwkawbn5vjg069kf8"))))
+        (base32 "1kav039g62q35h508shdbrcjcfkdsc7k6wcr2g780c35n58f32r3"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-doc")))
@@ -7340,7 +7383,7 @@ environments.")
 you build, maintain, and distribute documentation.  It provides XSLT stylesheets
 that can be built upon for help viewers and publishing systems.  These
 stylesheets output JavaScript and CSS content, and reference images
-provided by yelp-xsl. It also redistributes copies of the jQuery and
+provided by yelp-xsl.  It also redistributes copies of the jQuery and
 jQuery.Syntax JavaScript libraries.")
     (home-page "https://wiki.gnome.org/Apps/Yelp")
     (license
@@ -7355,7 +7398,7 @@ jQuery.Syntax JavaScript libraries.")
 (define-public yelp
   (package
     (name "yelp")
-    (version "42.1")
+    (version "42.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7363,7 +7406,7 @@ jQuery.Syntax JavaScript libraries.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
+                "0jxckvzmp3lzg62wrdp7f3c8hw6zbkwd0sy65ir9q259hw3zvid2"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      (list #:phases
@@ -7395,11 +7438,13 @@ jQuery.Syntax JavaScript libraries.")
     (propagated-inputs
      (list dconf))
     (inputs
-     (list gsettings-desktop-schemas
+     (list bash-minimal
+           gsettings-desktop-schemas
            libhandy
            libxslt
            man-db                                 ;for URIs like "man:ls"
            groff-minimal                          ;ditto
+           gtk+
            sqlite
            webkitgtk-for-gtk3
            yelp-xsl))
@@ -7414,26 +7459,26 @@ freedesktop.org help system specification.")
 (define-public yelp-tools
   (package
     (name "yelp-tools")
-    (version "3.32.2")
+    (version "42.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 "1yg8f5g5wadhmy4yfd9yjhvd8vll4gq4l86ibp0b42qbxnsmcf0q"))))
-    (build-system gnu-build-system)
+        (base32 "01gr255nlb77462040499qx50sik17x2b2jhzncmn56l4106lj9y"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:configure-flags #~'("-Dhelp=true")))
     (native-inputs
-     (list pkg-config))
+     (list gettext-minimal pkg-config python python-lxml))
     (inputs
      (list yelp-xsl))
     (propagated-inputs
      ;; Needed by `yelp-build', `yelp-check' or 'yelp.m4'.
-     `(("itstool" ,itstool)
-       ("xmllint" ,libxml2)
-       ("xsltproc" ,libxslt)))
+     (list itstool libxml2 libxslt))
     (synopsis "Yelp documentation tools")
     (description
      "Yelp-tools is a collection of scripts and build utilities to help create,
@@ -7446,7 +7491,7 @@ wraps things up in a developer-friendly way.")
 (define-public libgee
   (package
     (name "libgee")
-    (version "0.20.5")
+    (version "0.20.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgee/"
@@ -7454,7 +7499,7 @@ wraps things up in a developer-friendly way.")
                                   "libgee-" version ".tar.xz"))
               (sha256
                (base32
-                "060mbj6ihca315a6wqj47mfzm2881azwm5bl0vwjg9ymay4km1ii"))))
+                "0kbd8y70dd5q40i8gxzvhxkn9niqvp0x6knp4ihwqq0dw7sk9y0v"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -7481,7 +7526,7 @@ classes for commonly used data structures.")
 (define-public gexiv2
   (package
     (name "gexiv2")
-    (version "0.14.0")
+    (version "0.14.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7489,7 +7534,7 @@ classes for commonly used data structures.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "17nnsslj2wpizpx742w5lxdzcz5mx6jmsqcrli7zddi0zyk7k0p5"))))
+                "1gp07klqixpxjqiv84i2gmkb1pcf1gagyrl800sk92xyizs9q31a"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -7497,14 +7542,11 @@ classes for commonly used data structures.")
                            (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"))))
+                  (guix build utils))))
     (native-inputs
-     (list gcr
+     (list gcr-3
            `(,glib "bin")
+           gobject-introspection
            pkg-config
            python
            python-pygobject
@@ -7513,8 +7555,7 @@ classes for commonly used data structures.")
      ;; Listed in "Requires" section of gexiv2.pc
      (list exiv2))
     (inputs
-     (list glib
-           gobject-introspection))
+     (list glib))
     (home-page "https://wiki.gnome.org/Projects/gexiv2")
     (synopsis "GObject wrapper around the Exiv2 photo metadata library")
     (description
@@ -7526,7 +7567,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.31.5")
+    (version "0.32.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/shotwell/"
@@ -7534,17 +7575,20 @@ metadata in photo and video files of various formats.")
                                   "shotwell-" version ".tar.xz"))
               (sha256
                (base32
-                "06awlix23y1cd89n6v9vip48cg08fjq8v6zaw38k5clrrv38y11v"))))
+                "1dkh5bczf9k86akl70inpc2z98qkhg8g44jb2kc8rqcimkzs95vm"))))
     (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* "build-aux/meson/postinstall.py"
-               (("gtk-update-icon-cache") (which "true"))
-               (("update-desktop-database") (which "true"))))))))
+     (list
+      #: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")
+                (("update_desktop_database: true")
+                 "update_desktop_database: false")))))))
     (propagated-inputs
      (list dconf))
     (native-inputs
@@ -7555,11 +7599,12 @@ metadata in photo and video files of various formats.")
            python
            vala))
     (inputs
-     (list gcr
+     (list gcr-3
            gexiv2
            gst-plugins-base
            gstreamer
            json-glib
+           libportal
            libgdata
            libgee
            libgphoto2
@@ -7624,7 +7669,7 @@ such as gzip tarballs.")
 (define-public gnome-session
   (package
     (name "gnome-session")
-    (version "42.0")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7633,7 +7678,7 @@ such as gzip tarballs.")
               (patches (search-patches "gnome-session-support-elogind.patch"))
               (sha256
                (base32
-                "1alwjqr36rd0s132qs2clwnxgilcbylps6lm41lr50mn782hdjiw"))))
+                "1ipjvcjabifqgmrz65m3vwmhk99nbm8jcxcikyg5w4r6cnljky6c"))))
     (arguments
      `(#:glib-or-gtk? #t
        #:phases
@@ -7684,8 +7729,7 @@ configuration program to choose applications starting on login.")
 (define-public gjs
   (package
     (name "gjs")
-    ;; Note: We use a pre-release for compatibility with recent LibFFI.
-    (version "1.73.2")
+    (version "1.76.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7693,7 +7737,7 @@ configuration program to choose applications starting on login.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xfspsc1q4xm7p500lmy17b9csyaqps1kilylq8wjjd0fjqq8ayg"))
+                "0knkbczic9874r2mnhc8yh9w63bmj574b7528ql0x3lf40nzcjx5"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -7840,7 +7884,7 @@ to display dialog boxes from the commandline and shell scripts.")
 (define-public mutter
   (package
     (name "mutter")
-    (version "42.4")
+    (version "44.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7848,10 +7892,7 @@ to display dialog boxes from the commandline and shell scripts.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0h1ak3201mdc2qbf67fhcn801ddp33hm0f0c52zis1l7s6ipyb62"))
-              ;; TODO: Remove on update as this was merged upstream.  See
-              ;; <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>.
-              (patches (search-patches "mutter-fix-inverted-test.patch"))))
+                "0b7wzaj67qzrhgclvqk10fwk4524j4qppl88822mxxlqr40frfnk"))))
     ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
     ;; versions of cogl and clutter.  As a result, many of the inputs,
     ;; propagated-inputs, and configure flags used in cogl and clutter are
@@ -7868,7 +7909,7 @@ to display dialog boxes from the commandline and shell scripts.")
          ;; Otherwise, the RUNPATH will lack the final path component.
          (string-append "-Dc_link_args=-Wl,-rpath="
                         #$output "/lib,-rpath="
-                        #$output "/lib/mutter-10")
+                        #$output "/lib/mutter-12")
          ;; Disable systemd support.
          "-Dsystemd=false"
          ;; Don't install tests.
@@ -8001,9 +8042,8 @@ to display dialog boxes from the commandline and shell scripts.")
            python-dbus
            python-dbusmock))
     (propagated-inputs
-     (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:
+     (list gsettings-desktop-schemas      ;required by libmutter-12.pc
+           ;; mutter-clutter-12.pc and mutter-cogl-12.pc refer to these:
            at-spi2-core
            cairo
            eudev
@@ -8024,7 +8064,8 @@ to display dialog boxes from the commandline and shell scripts.")
            pango
            xinput))
     (inputs
-     (list egl-wayland                  ;for wayland-eglstream-protocols
+     (list colord
+           egl-wayland                  ;for wayland-eglstream-protocols
            elogind
            gnome-desktop
            gnome-settings-daemon
@@ -8056,7 +8097,7 @@ window manager.")
 (define-public gnome-online-accounts
   (package
     (name "gnome-online-accounts")
-    (version "3.45.2")
+    (version "3.48.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -8064,16 +8105,18 @@ window manager.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "15zzzndbfba8a497vxb6cmy1y22l3lfn4sx9s9r59kwzd83i6fxn"))))
+                "12kza6wss01kcka1zc2bck4hwgc55vzwwdxabk75qndzhh8cg81y"))))
     (build-system meson-build-system)
     (arguments
      (list
       #:glib-or-gtk? #t
       #:phases
       #~(modify-phases %standard-phases
-          (add-before 'install 'disable-gtk-update-icon-cache
+          (add-after 'unpack 'disable-gtk-update-icon-cache
             (lambda _
-              (setenv "DESTDIR" "/"))))))
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false")))))))
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")               ; for glib-compile-schemas, etc.
@@ -8086,7 +8129,7 @@ window manager.")
            gtk+))                       ; required by goa-backend-1.0.pc
     (inputs
      (list docbook-xsl
-           gcr
+           gcr-3
            json-glib
            libsecret
            mit-krb5
@@ -8129,7 +8172,7 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
 (define-public evolution-data-server
   (package
     (name "evolution-data-server")
-    (version "3.46.4")
+    (version "3.48.4")
     (source
      (origin
        (method url-fetch)
@@ -8137,7 +8180,7 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1j0c7kwmjng7spkqz6vfd8gyvw65invjsf5mqzbsr7y58m0jb6x5"))))
+        (base32 "0q3d5masw20sr6xm2rg3170a4pxsh23ywyq1rkzhmyvyn69kyzlr"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -8202,7 +8245,7 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
     (inputs
      (list bdb
            boost
-           gcr
+           gcr-3
            gnome-online-accounts
            json-glib
            libcanberra
@@ -8602,7 +8645,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
            libnma
            pkg-config))
     (inputs
-     (list gcr
+     (list gcr-3
            gtk
            gtk+
            kmod
@@ -8736,7 +8779,7 @@ to virtual private networks (VPNs) via Fortinet SSLVPN.")
            ;; nm-applet need by org.gnome.nm-applet.gschema.xml
            libnma))
     (inputs
-     (list gcr
+     (list gcr-3
            libappindicator
            libgudev
            libsecret
@@ -8801,7 +8844,7 @@ library.")
        (sha256
         (base32 "07f6l9ka63dnc85npxq5g7bn1ja7lad0w2wixqdlyabdvc4l2hp5"))))
     (propagated-inputs (modify-inputs (package-propagated-inputs libxml++)
-                         (append glibmm-2.64)))))
+                         (append glibmm-2.66)))))
 
 ;; This is the last release providing the 2.6 API, hence the name.
 (define-public libxml++-2
@@ -8819,12 +8862,12 @@ library.")
        (sha256
         (base32 "05slsbhc25z7kwlc28ydl3dfyp7rgbmz1fxj9z6gcvpg3hkghj2m"))))
     (propagated-inputs (modify-inputs (package-propagated-inputs libxml++)
-                         (append glibmm-2.64)))))
+                         (append glibmm-2.66)))))
 
 (define-public gdm
   (package
     (name "gdm")
-    (version "42.0")
+    (version "44.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -8832,7 +8875,7 @@ library.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0m9qmm3vm81jmqlc30a1fb79hsr4l4lpiw0zjxww3gipd6bsqa53"))
+                "03avvkrm2jd0731ggh9cjnkhrfysqp4slrq0km3gqa3xpqx6n9k8"))
               (patches
                (search-patches
                 "gdm-default-session.patch"
@@ -9011,7 +9054,18 @@ logo='~a'~%" icon))))))
                   (for-each (lambda (desktop)
                               (symlink desktop (basename desktop)))
                             (find-files
-                             (string-append settings "/etc/xdg"))))))))))
+                             (string-append settings "/etc/xdg")))))))
+          ;; GDM needs some additional programs available via XDG_DATA_DIRS,
+          ;; to make accessibility settings and related services available.
+          (add-after 'install 'wrap-accessibility-dependencies
+            (lambda _
+              (wrap-program (string-append #$output "/bin/gdm")
+                `("XDG_DATA_DIRS" ":" prefix
+                  #$(map (lambda (input)
+                           (file-append (this-package-input input) "/share"))
+                         '("at-spi2-core"
+                           "dconf"
+                           "gnome-control-center")))))))))
     (native-inputs
      (list `(,glib "bin")               ;for glib-compile-schemas, etc.
            dconf
@@ -9025,6 +9079,7 @@ logo='~a'~%" icon))))))
      (list accountsservice
            check                        ;for testing
            dbus
+           egl-wayland
            elogind
            eudev
            gnome-session
@@ -9033,7 +9088,12 @@ logo='~a'~%" icon))))))
            iso-codes
            libcanberra
            libgudev
-           linux-pam))
+           linux-pam
+
+           ;; accessibility dependencies
+           at-spi2-core
+           dconf
+           gnome-control-center))
     (synopsis "Display manager for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GDM/")
     (description
@@ -9068,7 +9128,7 @@ usage and information about running processes.")
 (define-public gnome-bluetooth
   (package
     (name "gnome-bluetooth")
-    (version "42.4")
+    (version "42.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gnome-bluetooth/"
@@ -9076,7 +9136,7 @@ usage and information about running processes.")
                                   "gnome-bluetooth-" version ".tar.xz"))
               (sha256
                (base32
-                "1p5wq3rh9p7fhka57qcds6lvphd26yyc18ilncx95jbcvcfcyvqx"))))
+                "1ny2zhak2n09i47m2a8q1rfgr2ag10kclda56qsi16rcrbl43hkn"))))
     (build-system meson-build-system)
     (native-inputs
      (list gettext-minimal
@@ -9107,7 +9167,7 @@ devices using the GNOME desktop.")
 (define-public gnome-control-center
   (package
     (name "gnome-control-center")
-    (version "42.4")
+    (version "44.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9115,7 +9175,10 @@ devices using the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1ln5rch6zbfh3vl2nnnmw39bylgg38rin6xp7ra0ra4ay3wv3gvs"))))
+                "0mz134argczbkfnxzqsfa1vydx3v44wrldcczyzjanvrq7ia7hli"))
+              (patches
+               (search-patches
+                "gnome-control-center-firmware-security.patch"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -9139,19 +9202,32 @@ devices using the GNOME desktop.")
                              "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"))))))
+                                      inputs "bin/nm-connection-editor"))))))
           (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"))))))))
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
+          (replace 'check
+            (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
+              (when tests?
+                ;; Tests require a running X server.
+                (system "Xvfb :1 &")
+                (setenv "DISPLAY" ":1")
+                ;; For the missing /var/lib/dbus/machine-id
+                (setenv "DBUS_FATAL_WARNINGS" "0")
+                (setenv "NO_AT_BRIDGE" "1")
+                (setenv "HOME" "/tmp")
+                (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
+                (mkdir (getenv "XDG_RUNTIME_DIR"))
+                (chmod (getenv "XDG_RUNTIME_DIR") #o700)
+                (setenv "MESON_TESTTHREADS"
+                        (if parallel-tests?
+                            (number->string (parallel-job-count))
+                            "1"))
+                (invoke "dbus-run-session" "--"
+                        "meson" "test" "-t" "0")))))))
     (native-inputs
      (list docbook-xsl
            gettext-minimal
@@ -9160,13 +9236,14 @@ devices using the GNOME desktop.")
            pkg-config
            python
            python-dbusmock
-           xorg-server-for-tests))
+           xorg-server-for-tests
+           setxkbmap))
     (inputs
      (list accountsservice
            colord-gtk
            cups
            dconf
-           gcr
+           gcr-3
            gnome-bluetooth
            gnome-desktop
            gnome-online-accounts
@@ -9208,7 +9285,7 @@ properties, screen resolution, and other GNOME parameters.")
 (define-public gnome-shell
   (package
     (name "gnome-shell")
-    (version "42.4")
+    (version "44.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9216,7 +9293,7 @@ properties, screen resolution, and other GNOME parameters.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0kn5fclciybp2fs38wd39hdz85y91pas0ckfa02pmyx91sbz4pw7"))))
+                "01pw9qnnvh64x56z1gqh0qk6vfn0ihh4zijq23f4bpz9wszlbpwf"))))
     (build-system meson-build-system)
     (arguments
      (let ((disallowed-references
@@ -9254,6 +9331,12 @@ properties, screen resolution, and other GNOME parameters.")
                 (substitute* "meson.build"
                   (("gtk_update_icon_cache: true")
                    "gtk_update_icon_cache: false"))))
+            (add-after 'unpack 'unbreak-perf-tests
+              (lambda _
+                ;; Lest non-fatal dbus warnings be made fatal again…
+                (substitute* "tests/meson.build"
+                  (("perf_testenv\\.set\\('G_DEBUG'" all)
+                   (string-append "# " all)))))
             (add-before 'configure 'record-absolute-file-names
               (lambda* (#:key inputs #:allow-other-keys)
                 (let ((ibus-daemon (search-input-file inputs "bin/ibus-daemon"))
@@ -9270,7 +9353,13 @@ properties, screen resolution, and other GNOME parameters.")
                 ;; Tests require a running X server.
                 (system "Xvfb :1 &")
                 (setenv "DISPLAY" ":1")
-                (setenv "HOME" "/tmp"))) ;to avoid "fatal" warnings
+                ;; For the missing /var/lib/dbus/machine-id
+                (setenv "DBUS_FATAL_WARNINGS" "0")
+                (setenv "NO_AT_BRIDGE" "1")
+                (setenv "HOME" "/tmp")
+                (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
+                (mkdir (getenv "XDG_RUNTIME_DIR"))
+                (chmod (getenv "XDG_RUNTIME_DIR") #o700)))
             (add-after 'install 'wrap-programs
               (lambda* (#:key inputs #:allow-other-keys)
                 (let ((gi-typelib-path  (getenv "GI_TYPELIB_PATH"))
@@ -9336,13 +9425,15 @@ printf '~a is deprecated.  Use the \"gnome-extensions\" CLI or \
            perl
            pkg-config
            python
+           python-dbus
+           python-dbusmock
            ruby-sass
            sassc
            ;; For tests
            xorg-server-for-tests))
     (inputs
      (list accountsservice
-           caribou
+           bash-minimal
            docbook-xsl
            evolution-data-server
            gcr
@@ -9439,7 +9530,7 @@ core C library, and bindings for Python (PyGTK).")
 (define-public gnome-autoar
   (package
     (name "gnome-autoar")
-    (version "0.4.3")
+    (version "0.4.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9447,7 +9538,7 @@ core C library, and bindings for Python (PyGTK).")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "124y4j3wgb6axgfzw9f00865r033fg7b0qy9qgfsp5ilan4hgpvv"))))
+                "1hn3rzd6z2g2xvnx8icifybq26vvxk44qmqz392b2g6g7crvxby0"))))
     (build-system meson-build-system)
     (native-inputs
      (list gobject-introspection `(,glib "bin") pkg-config))
@@ -9465,7 +9556,7 @@ easy, safe, and automatic.")
 (define-public tracker
   (package
     (name "tracker")
-    (version "3.4.2")
+    (version "3.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/tracker/"
@@ -9473,7 +9564,7 @@ easy, safe, and automatic.")
                                   "tracker-" version ".tar.xz"))
               (sha256
                (base32
-                "0c8ppm03b9r6lyxalama8sjmw3km4jibbswqra7qf17pli1g2vaf"))))
+                "1whdqidxmagsc35pmz9kcc5vs3bmvbkmnis7prnx3zxs37z2qnaj"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -9495,6 +9586,22 @@ easy, safe, and automatic.")
               (substitute* "utils/trackertestutils/__main__.py"
                 (("/bin/bash")
                  (search-input-file inputs "bin/bash")))))
+          (add-after 'unpack 'disable-failing-tests
+            (lambda _
+              #$@(if (target-x86-32?)
+                     ;; On 32-bit systems, the far away dates are incorrect,
+                     ;; and the floats are not parsed exactly.
+                     '((substitute*
+                           "tests/libtracker-sparql/tracker-statement-test.c"
+                         (("g_assert_cmpfloat *\\((.*), ==, ([0-9.e-]+)\\);"
+                           total actual expected)
+                          (string-append "g_assert_cmpfloat_with_epsilon ("
+                                         actual ", " expected ", 1e-12);")))
+                       (substitute* "tests/core/tracker-sparql-test.c"
+                         (("\\{ \"datetime/direct-1\", .* \\},")
+                          "/* datetime test disabled */")))
+                     '())
+              *unspecified*))
           (add-before 'configure 'set-shell
             (lambda _
               (setenv "SHELL" (which "bash"))))
@@ -9583,7 +9690,7 @@ endpoint and it understands SPARQL.")
 (define-public tracker-miners
   (package
     (name "tracker-miners")
-    (version "3.3.2")
+    (version "3.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/tracker-miners/"
@@ -9591,7 +9698,7 @@ endpoint and it understands SPARQL.")
                                   "/tracker-miners-" version ".tar.xz"))
               (sha256
                (base32
-                "1izg2xhlr64gd9pw7apa9nkf0ffyz74f22ml1ng7q60bxf0dl0yl"))))
+                "13ljx0birrav728ik3bnlwzgas8q6rbhjbvxp7zzwy6ambafiw7f"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -9625,12 +9732,7 @@ endpoint and it understands SPARQL.")
              ;; to be true and the UPower daemon to be started.
              (substitute* "examples/python/meson.build"
                (("foreach example_name:.*")
-                "foreach example_name: []"))
-             ;; Disable this test that is failing randomly:
-             ;; https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/170.
-             (substitute* "tests/libtracker-miner/meson.build"
-               (("'miner-fs'.*")
-                ""))))
+                "foreach example_name: []"))))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
@@ -9662,6 +9764,7 @@ endpoint and it understands SPARQL.")
            giflib
            glib
            gstreamer
+           gst-plugins-base
            icu4c
            json-glib
            libcue
@@ -9705,7 +9808,7 @@ shared object databases, search tools and indexing.")
 (define-public nautilus
   (package
     (name "nautilus")
-    (version "42.2")
+    (version "44.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9713,7 +9816,7 @@ shared object databases, search tools and indexing.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cncyiyh79w1id6a6s2f0rxmgwl65lp4ml4afa0z35jrnwp2s8cr"))
+                "05njbaq98y00n1z1smg1pdip3shr84q8a10wssm8sjbv7sirwj75"))
               (patches
                (search-patches "nautilus-extension-search-path.patch"))))
     (build-system meson-build-system)
@@ -9722,6 +9825,13 @@ shared object databases, search tools and indexing.")
       #:glib-or-gtk? #t
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-tracker3-command
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/nautilus-tag-manager.c"
+                (("\"tracker3\"")
+                 (string-append "\""
+                                (search-input-file inputs "/bin/tracker3")
+                                "\"")))))
           (add-after 'unpack 'disable-tracker-tests
             ;; The tracker test hangs in the build container (see:
             ;; https://gitlab.gnome.org/GNOME/nautilus/-/issues/2486).
@@ -9732,8 +9842,9 @@ shared object databases, search tools and indexing.")
           (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"))))
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
           (delete 'check)
           (add-after 'install 'check
             (assoc-ref %standard-phases 'check))
@@ -9760,24 +9871,24 @@ shared object databases, search tools and indexing.")
            gnome-autoar
            gst-plugins-base
            json-glib
-           libhandy
+           libadwaita
            libportal
            libseccomp
            libselinux
            tracker
            tracker-miners
-           ;; XXX: gtk+ is required by libnautilus-extension.pc
+           ;; XXX: gtk is required by libnautilus-extension.pc
            ;;
-           ;; Don't propagate it to reduces "profile pollution" of the 'gnome' meta
+           ;; Don't propagate it to reduce "profile pollution" of the 'gnome' meta
            ;; package.  See:
            ;; <http://lists.gnu.org/archive/html/guix-devel/2016-03/msg00283.html>.
-           gtk+
+           gtk
            libexif
            libxml2))
     (native-search-paths
      (list (search-path-specification
             (variable "NAUTILUS_EXTENSION_PATH")
-            (files '("lib/nautilus/site-extensions")))))
+            (files '("lib/nautilus/extensions-4")))))
     (synopsis "File manager for GNOME")
     (home-page "https://wiki.gnome.org/Apps/Nautilus")
     (description
@@ -9789,7 +9900,7 @@ files.")
 (define-public baobab
   (package
     (name "baobab")
-    (version "42.0")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -9798,24 +9909,28 @@ files.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1p2hg8qxbvdfax9z4qjhdsxia93zrsdq58krx8zjnn5ipbkan6jb"))))
+                "1h5zl7pvpp8yryi7j0cjzy1k89vlphdmfv0jr1l4bmr3j6xn6nw4"))))
     (build-system meson-build-system)
     (arguments
-     '(#:glib-or-gtk? #t))
+     '(#: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.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false")))))))
     (native-inputs
      (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
-           libadwaita
-           libhandy))
+    (inputs (list gtk libadwaita))
     (synopsis "Disk usage analyzer for GNOME")
     (description
      "Baobab (Disk Usage Analyzer) is a graphical application to analyse disk
@@ -9828,7 +9943,7 @@ is complete it provides a graphical representation of each selected folder.")
 (define-public gnome-backgrounds
   (package
     (name "gnome-backgrounds")
-    (version "42.0")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -9837,7 +9952,7 @@ is complete it provides a graphical representation of each selected folder.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0p99q434c8qgj5wxcma9jj4dh1ff9x984ncs31vmz725kyhf2zsc"))))
+         "0kp09gh537wj7j9a0dc25fv441sfr4x0q6ja89m2lpqkhyrr70sa"))))
     (build-system meson-build-system)
     (native-inputs (list gettext-minimal))
     (home-page "https://gitlab.gnome.org/GNOME/gnome-backgrounds")
@@ -10008,7 +10123,7 @@ associations for GNOME.")
 (define-public gnome-weather
   (package
     (name "gnome-weather")
-    (version "42.0")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10016,7 +10131,7 @@ associations for GNOME.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0rdl0ywdk8jlq819wr1sbdzdvsasz11pp30fylzvprakv28yd7jp"))))
+                "1brvjawwc69a49697mp0dq4glpvvvcsnx4i8ysfnjhahg2n3h3bb"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -10057,7 +10172,7 @@ associations for GNOME.")
            bash-minimal
            geoclue
            gjs
-           gsettings-desktop-schemas-next
+           gsettings-desktop-schemas
            gtk
            libadwaita
            libgweather4))
@@ -10068,107 +10183,146 @@ world.")
     (home-page "https://wiki.gnome.org/Apps/Weather")
     (license license:gpl2+)))
 
-(define-public gnome
-  (package
-    (name "gnome")
-    (version (package-version gnome-shell))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments '(#:builder (begin (mkdir %output) #t)))
-    (propagated-inputs
-     `(,@(if (string-prefix? "x86_64" (%current-system))
-             ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
-             ;; only works on x86_64, so exclude it on other architectures.
-             (list eog)
-             '())
-       ,@(list
-          ;; GNOME-Core-OS-Services.
-          accountsservice
-          network-manager
-          packagekit
-          upower
-          ;; GNOME-Core-Shell.
-          adwaita-icon-theme
-          gdm
-          glib-networking
-          gnome-backgrounds
-          gnome-bluetooth
-          gnome-color-manager
-          gnome-control-center
-          gnome-desktop
-          gnome-initial-setup
-          gnome-keyring
-          gnome-menus
-          gnome-session
-          gnome-settings-daemon
-          gnome-shell
-          gnome-shell-extensions
-          gnome-themes-extra
-          gnome-user-docs
-          gnome-user-share
-          gsettings-desktop-schemas
-          gvfs
-          mutter
-          orca
-          rygel
-          sushi
-          ;; GNOME-Core-Utilities.
-          baobab
-          cheese
-          epiphany
-          evince
-          file-roller
-          gnome-calculator
-          gnome-calendar
-          gnome-characters
-          gnome-clocks
-          gnome-console
-          gnome-contacts
-          gnome-disk-utility
-          gnome-font-viewer
-          gnome-maps
-          gnome-music
-          gnome-photos
-          gnome-screenshot
-          gnome-system-monitor
-          gnome-text-editor
-          gnome-weather
-          nautilus
-          simple-scan
-          totem
-          tracker-miners
-          yelp
-          ;; Others.
-          gnome-online-accounts
-          hicolor-icon-theme
-
-          ;; Packages not part of GNOME proper but that are needed for a good
-          ;; experience.  See <https://bugs.gnu.org/39646>.
-          ;; XXX: Find out exactly which ones are needed and why.
-          at-spi2-core
-          dbus
-          dconf
-          desktop-file-utils
-          font-abattis-cantarell
-          font-dejavu
-          gnome-default-applications
-          gst-plugins-base
-          gst-plugins-good
-          gucharmap
-          pinentry-gnome3
-          pulseaudio
-          shared-mime-info
-          system-config-printer
-          xdg-user-dirs
-          yelp
-          zenity)))
-    (synopsis "The GNU desktop environment")
-    (home-page "https://www.gnome.org/")
-    (description
-     "GNOME is the graphical desktop for GNU.  It includes a wide variety of
-applications for browsing the web, editing text and images, creating
-documents and diagrams, playing media, scanning, and much more.")
-    (license license:gpl2+)))
+(define-syntax gnome-meta-package
+  (lambda (x)
+    (syntax-case x ()
+      ((_ field ...)
+       (with-syntax ((base (datum->syntax x 'base)))
+         #'(let ((base
+                  (package
+                    (name #f)      ; we're hidden by default, so don't worry
+                    (version (package-version gnome-shell))
+                    (source #f)
+                    (build-system trivial-build-system)
+                    (arguments
+                     (list #:builder
+                           #~(begin (format (current-warning-port)
+                                            "Building ~a is useless.  \
+Refer to its propagated inputs instead.\n"
+                                            #$(package-name this-package))
+                                    (mkdir #$output))))
+                    (home-page "https://www.gnome.org")
+                    (synopsis "Graphical desktop environment")
+                    (description "GNOME is a graphical desktop environment.
+It includes a wide variety of applications with a common interface for
+browsing the web, editing text and images, creating documents and diagrams,
+playing media, scanning, and much more.")
+                    (license license:gpl2+)
+                    (properties `((hidden? . #t))))))
+             (package (inherit base)
+                      field ...)))))))
+
+(define-public gnome-meta-core-services
+  (gnome-meta-package
+   (name "gnome-meta-core-services")
+   (propagated-inputs (list accountsservice
+                            network-manager
+                            packagekit
+                            upower))))
+
+(define-public gnome-meta-core-shell
+  (gnome-meta-package
+   (name "gnome-meta-core-shell")
+   (propagated-inputs (list adwaita-icon-theme
+                            gdm
+                            glib-networking
+                            gnome-backgrounds
+                            gnome-bluetooth
+                            gnome-color-manager
+                            gnome-control-center
+                            gnome-desktop
+                            gnome-initial-setup
+                            gnome-keyring
+                            gnome-menus
+                            gnome-remote-desktop
+                            gnome-session
+                            gnome-settings-daemon
+                            gnome-shell
+                            gnome-shell-extensions
+                            gnome-themes-extra
+                            gnome-user-docs
+                            gnome-user-share
+                            gsettings-desktop-schemas
+                            gvfs
+                            mutter
+                            orca
+                            rygel
+                            sushi))))
+
+(define-public gnome-meta-core-utilities
+  (gnome-meta-package
+   (name "gnome-meta-core-utilities")
+   (propagated-inputs
+    (append
+     ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
+     ;; only works on x86_64, so exclude it on other architectures.
+     (if (string-prefix? "x86_64" (%current-system))
+         (list eog)
+         '())
+     (list baobab
+           cheese
+           epiphany
+           evince
+           file-roller
+           gnome-calculator
+           gnome-calendar
+           gnome-characters
+           gnome-clocks
+           gnome-connections
+           gnome-console
+           gnome-contacts
+           gnome-disk-utility
+           gnome-font-viewer
+           gnome-maps
+           gnome-music
+           gnome-photos
+           gnome-screenshot
+           gnome-system-monitor
+           gnome-text-editor
+           gnome-weather
+           nautilus
+           simple-scan
+           totem
+           tracker-miners
+           xdg-desktop-portal-gnome
+           yelp)))))
+
+(define-public gnome-essential-extras
+  (gnome-meta-package
+   (name "gnome-essential-extras")
+   (propagated-inputs (list at-spi2-core
+                            dbus
+                            dconf
+                            desktop-file-utils
+                            font-abattis-cantarell
+                            font-dejavu
+                            gnome-default-applications
+                            gnome-online-accounts
+                            gst-plugins-base
+                            gst-plugins-good
+                            gucharmap
+                            hicolor-icon-theme
+                            pinentry-gnome3
+                            pulseaudio
+                            shared-mime-info
+                            system-config-printer
+                            xdg-user-dirs
+                            yelp
+                            zenity))
+   (description "This package provides a list of packages required for
+a good GNOME experience, mixed from core dependencies and other implicitly
+relied-on packages.")))
+
+(define-deprecated/public gnome #f
+  (gnome-meta-package
+   (name "gnome")
+   (propagated-inputs
+    (append-map package-propagated-inputs
+                (list gnome-meta-core-services
+                      gnome-meta-core-shell
+                      gnome-meta-core-utilities
+                      gnome-essential-extras)))
+   (properties (list))))
 
 (define-public byzanz
   ;; The last stable release of Byzanz was in 2011, but there have been many
@@ -10343,7 +10497,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
 (define-public gnome-clocks
   (package
     (name "gnome-clocks")
-    (version "42.0")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10351,7 +10505,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1q3gvniwd4dkr1ghqpp05zr7qswdhaxqrn8j6bm3qbh39bdihw8f"))))
+                "0f1q9wxixjnhwypp6zaplxzj2lrk3x8gfy0x7811m3ybcmrskmqp"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -10372,13 +10526,13 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
            vala))
     (inputs
      (list geoclue
-           geocode-glib-with-libsoup2
+           geocode-glib
            glib
            gnome-desktop
            gsound
            gtk
            libadwaita
-           libgweather4-with-libsoup2))
+           libgweather4))
     (home-page "https://wiki.gnome.org/Apps/Clocks")
     (synopsis "GNOME's clock application")
     (description
@@ -10389,7 +10543,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
 (define-public gnome-calendar
   (package
     (name "gnome-calendar")
-    (version "42.2")
+    (version "44.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10397,7 +10551,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1ggvnl2jnc24nzpkjvsk57vpckjzb14a7mmnk6jjm84nmqxccz5f"))))
+                "0zmpyd5qgryrxflgcapfp6jxph3z31qycs148r715gbhnqwbg89h"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -10414,16 +10568,14 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
            `(,glib "bin")               ; For glib-compile-schemas
            pkg-config))
     (inputs
-     ;; Note: not propagating evolution-data-server-3.44 to keep profiles
-     ;; clean from libsoup2.
-     (list evolution-data-server-3.44
+     (list evolution-data-server
            geoclue
-           geocode-glib-with-libsoup2
-           gnome-online-accounts-3.44
+           geocode-glib
+           gnome-online-accounts
            gsettings-desktop-schemas
            libadwaita
            libdazzle
-           libgweather4-with-libsoup2))
+           libgweather4))
     (home-page "https://wiki.gnome.org/Apps/Calendar")
     (synopsis "GNOME's calendar application")
     (description
@@ -10492,9 +10644,6 @@ desktop.  It supports multiple calendars, month, week and year view.")
 to perfectly fit the GNOME desktop.")
     (license license:gpl3+)))
 
-(define-public gnome-todo
-  (deprecated-package "gnome-todo" endeavour))
-
 (define-public dialect
   (package
     (name "dialect")
@@ -10644,7 +10793,7 @@ GNOME Shell appearance and extension, etc.")
 (define-public gnome-shell-extensions
   (package
     (name "gnome-shell-extensions")
-    (version "42.3")
+    (version "44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -10652,16 +10801,38 @@ GNOME Shell appearance and extension, etc.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1z3k4bvq8f2s0q9q7i093w4hrz289lci7xlib20aqa4z5sivxhhf"))))
+                "1aq1n75m1svsv0ppg66n9qch26rhjxcv3q33a3skf7hsydr5wd4c"))))
     (build-system meson-build-system)
     (arguments
-     '(#:configure-flags '("-Dextension_set=all")))
+     (list
+      #:configure-flags #~'("-Dextension_set=all")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'wrap-extensions
+            (lambda _
+              (use-modules (ice-9 textual-ports)
+                           (guix build utils))
+              (for-each
+               (lambda (file-to-wrap)
+                 (with-atomic-file-replacement file-to-wrap
+                   (lambda (source wrapped)
+                     (format wrapped "'~a'.split(':').forEach("
+                             (getenv "GI_TYPELIB_PATH"))
+                     (display
+                      (string-append
+                       "path => imports.gi.GIRepository.Repository"
+                       ".prepend_search_path(path));\n")
+                      wrapped)
+                     (dump-port source wrapped))))
+               (find-files "extensions" "(extension|prefs)\\.js")))))))
     (native-inputs
      (list `(,glib "bin")
            gettext-minimal
+           gobject-introspection        ; to set GI_TYPELIB_PATH
            pkg-config))
-    (propagated-inputs
-     (list glib))
+    (inputs
+     (list glib
+           gnome-menus))                ; for Applications Menu
     (synopsis "Extensions for GNOME Shell")
     (description "GNOME Shell extensions modify and extend GNOME Shell
 functionality and behavior.")
@@ -10671,7 +10842,7 @@ functionality and behavior.")
 (define-public folks
   (package
     (name "folks")
-    (version "0.15.5")
+    (version "0.15.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -10680,7 +10851,7 @@ functionality and behavior.")
                     "folks-" version ".tar.xz"))
               (sha256
                (base32
-                "11lhfn6b7gml4ckj2dkm6g889j21wpvj90srwjp85k9hcf4qmzqg"))))
+                "1hj9brran2azy3scyf913svhxjrmya83fi7x239h33rp7vxnljlm"))))
     (build-system meson-build-system)
     (arguments
      '(#:phases
@@ -10688,8 +10859,9 @@ functionality and behavior.")
          (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")))))))
+             (substitute* "meson.build"
+               (("gtk_update_icon_cache: true")
+                "gtk_update_icon_cache: false")))))))
     (inputs
      (list bdb
            dbus-glib
@@ -10829,7 +11001,7 @@ handling the startup notification side.")
 (define-public gnome-calculator
   (package
     (name "gnome-calculator")
-    (version "42.2")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -10838,21 +11010,22 @@ handling the startup notification side.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1866qn0r9xp7b7j1436kry2k3bdh9ikhz2wm41jxcn1nljyb3nik"))))
+         "0hqhnwaw7zam0r7b61ir68710hxmc5rxb0172mz9lc48kwr67rql"))))
     (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.
-             (setenv "HOME" (getcwd)))))))
+     (list
+      #: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.
+              (setenv "HOME" (getcwd)))))))
     (native-inputs
      (list gettext-minimal
            `(,glib "bin")               ;for glib-compile-schemas, gio-2.0.
@@ -10861,15 +11034,17 @@ handling the startup notification side.")
            python
            vala))
     (inputs
-     (list gsettings-desktop-schemas-next
+     (list gsettings-desktop-schemas
            gtksourceview
            libadwaita
            libgee
-           libhandy
-           libsoup-minimal-2
+           libsoup
            libxml2
            mpc
            mpfr))
+    (propagated-inputs
+     ;; Marked as requires.private in either .pc
+     (list libgee glib gtk))
     (home-page "https://wiki.gnome.org/Apps/Calculator")
     (synopsis "Desktop calculator")
     (description
@@ -11011,14 +11186,14 @@ supports both X and Wayland display servers.")
 (define-public bluefish
   (package
     (name "bluefish")
-    (version "2.2.12")
+    (version "2.2.14")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.bennewitz.com/bluefish/stable/source/"
                            "bluefish-" version ".tar.gz"))
        (sha256
-        (base32 "09hgxq139kbkjda5y073lqhq1z1x7cx0j80jh77afrqa3y9c53wl"))))
+        (base32 "0427xihrr7l1475qr3n40hz2xz6bqmfdbdg9pn8q7rvhvajyvjx7"))))
     (build-system gnu-build-system)
     (native-inputs
      (list desktop-file-utils intltool pkg-config))
@@ -11035,7 +11210,7 @@ Bluefish supports many programming and markup languages.")
 (define-public gnome-system-monitor
   (package
     (name "gnome-system-monitor")
-    (version "42.0")
+    (version "44.0")
     (source
      (origin
        (method url-fetch)
@@ -11044,7 +11219,7 @@ Bluefish supports many programming and markup languages.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1p3mq32pfd9260aql5nys806g0c4nrswacwqs8ms40920ci9s8qk"))))
+         "0vjyqk76k2gzhxc9hcbg0zjwk11wgqz2ji6yr322fa59vgnvgfn2"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -11078,7 +11253,7 @@ kill/reinice processes.")
 (define-public python-pyatspi
   (package
     (name "python-pyatspi")
-    (version "2.45.90")
+    (version "2.46.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -11087,16 +11262,17 @@ kill/reinice processes.")
                     "/pyatspi-" version ".tar.xz"))
               (sha256
                (base32
-                "1fggihg4xmwia0xgjkcraiqk76jvyrj1pcsw99rjh4yn3kygisrh"))))
+                "06q4zca83hk4iify8amcb9hfxs3qvlczhjsw7p8hg72f8dbnl7zr"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'fix-atk-load
-           (lambda _
-             (substitute* "pyatspi/__init__.py"
-               (("from gi.repository import Atspi")
-                "gi.require_version('Gtk', '3.0')
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'build 'fix-atk-load
+            (lambda _
+              (substitute* "pyatspi/__init__.py"
+                (("from gi.repository import Atspi")
+                 "gi.require_version('Gtk', '3.0')
 from gi.repository import Gtk
 from gi.repository import Atspi")))))))
     (native-inputs
@@ -11117,7 +11293,7 @@ accessibility infrastructure.")
 (define-public orca
   (package
     (name "orca")
-    (version "42.3")
+    (version "44.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -11126,17 +11302,25 @@ accessibility infrastructure.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "097pyav3z5ssic8vwd7v1s7vynpycdpyfr324rr6c7mfzq5vmp7s"))))
+                "11jn925ga970y74did96ms78pc3lshkd9rd8v82i6zdzigxa7yvd"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'qualify-xkbcomp
+         (add-before 'configure 'qualify-programs
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((xkbcomp (string-append
-                             (assoc-ref inputs "xkbcomp") "/bin/xkbcomp")))
+                             (assoc-ref inputs "xkbcomp") "/bin/xkbcomp"))
+                   (pgrep (string-append
+                           (assoc-ref inputs "procps") "/bin/pgrep")))
                (substitute* "src/orca/orca.py"
-                 (("'xkbcomp'") (format #f "'~a'" xkbcomp))))))
+                 (("'xkbcomp'") (format #f "'~a'" xkbcomp)))
+               (substitute* "src/orca/debug.py"
+                 (("'pgrep %s'")
+                  (format #f "'~a %s'" pgrep)))
+               (substitute* "src/orca/orca_bin.py.in"
+                 (("'pgrep -u %s -x orca'")
+                  (format #f "'~a -u %s -x orca'" pgrep))))))
          (add-after 'install 'wrap-orca
            (lambda* (#:key outputs #:allow-other-keys)
              (wrap-program (search-input-file outputs "bin/orca")
@@ -11152,13 +11336,17 @@ accessibility infrastructure.")
            pkg-config
            libxml2))
     (inputs
-     (list at-spi2-atk
+     (list at-spi2-core
+           brltty
            bash-minimal
            gsettings-desktop-schemas
            gstreamer
            gst-plugins-base
            gst-plugins-good
            gtk+
+           liblouis
+           `(,liblouis "python")
+           procps                       ; for pgrep
            python
            python-pygobject
            python-pyatspi
@@ -11176,7 +11364,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
 (define-public gspell
   (package
     (name "gspell")
-    (version "1.11.1")
+    (version "1.12.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -11184,7 +11372,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "14h2w0yzqwaw5dykmhh21sy2c96g17waahg2lxc52xqiyzis8spg"))))
+                "0f91vl42i6fz5yrbw31biffbxqzwa24mw6qbfxmfnk3yhayr7sdl"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags (list "--enable-vala")
@@ -11372,7 +11560,7 @@ photo-booth-like software, such as Cheese.")
 (define-public cheese
   (package
     (name "cheese")
-    (version "43.0")
+    (version "44.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -11380,7 +11568,7 @@ photo-booth-like software, such as Cheese.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "02vzcvk2s6cwvdw6v6qmlq3znamy6zwv7l6nlbqjfwrj7i54qmvl"))))
+                "13pnz35yvwvmk1iyhcp1a94yal4rh610rxmsp3rdsm4yr728a8az"))))
     (arguments
      (list #:glib-or-gtk? #t
            #:phases
@@ -11388,8 +11576,9 @@ photo-booth-like software, such as Cheese.")
                (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")))))
+                   (substitute* "meson.build"
+                     (("gtk_update_icon_cache: true")
+                      "gtk_update_icon_cache: false"))))
                (add-after 'install 'wrap-cheese
                  (lambda* (#:key inputs outputs #:allow-other-keys)
                    (wrap-program (search-input-file outputs "bin/cheese")
@@ -11616,7 +11805,7 @@ configurable file renaming.")
 (define-public workrave
   (package
     (name "workrave")
-    (version "1.10.50")
+    (version "1.10.52")
     (source
      (origin
        (method git-fetch)
@@ -11627,7 +11816,7 @@ configurable file renaming.")
                                          version)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0fj3fqmdn4nsjgvbbvzpxw2mgiihcr1zpb08amg2p6hg9n11y9bx"))))
+        (base32 "1rp6v9a8xmhjy75wmh7pnd092dn9nrb6wd4gcgr3c866qnpp6zsk"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      ;; The only tests are maintainer tests (in po/), which fail.
@@ -11643,17 +11832,17 @@ configurable file renaming.")
                   libice
                   libsm
                   libxscrnsaver))
-    (native-inputs `(("boost" ,boost)
-                     ("pkg-config" ,pkg-config)
-                     ("gettext" ,gettext-minimal)
-                     ("autoconf" ,autoconf)
-                     ("autoconf-archive" , autoconf-archive)
-                     ("automake" ,automake)
-                     ("libtool" ,libtool)
-                     ("intltool" ,intltool)
-                     ("gobject-introspection" ,gobject-introspection)
-                     ("python3" ,python-3)
-                     ("python-jinja2" ,python-jinja2)))
+    (native-inputs (list boost
+                         pkg-config
+                         gettext-minimal
+                         autoconf
+                         autoconf-archive
+                         automake
+                         libtool
+                         intltool
+                         gobject-introspection
+                         python-3
+                         python-jinja2))
     (synopsis "Tool to help prevent repetitive strain injury (RSI)")
     (description
      "Workrave is a program that assists in the recovery and prevention of
@@ -11744,7 +11933,7 @@ generic enough to work for everyone.")
 (define-public evolution
   (package
     (name "evolution")
-    (version "3.46.4")
+    (version "3.48.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/evolution/"
@@ -11752,7 +11941,7 @@ generic enough to work for everyone.")
                                   "evolution-" version ".tar.xz"))
               (sha256
                (base32
-                "0gbvd460hsha0gss9rjjpyisq336fwxd8y1xf55s6ifjrqql423s"))))
+                "1dwbwy67xg1fypxj0qyhhvy608hbw19gqhvxqkr739shl3mrjbx0"))))
     (build-system cmake-build-system)
     (arguments
      (list
@@ -11791,7 +11980,7 @@ generic enough to work for everyone.")
      (list cmark
            enchant
            evolution-data-server        ;must be the same version
-           gcr
+           gcr-3
            gsettings-desktop-schemas
            gnome-autoar
            gnome-desktop
@@ -11818,7 +12007,7 @@ functionality.")
 (define-public gthumb
   (package
     (name "gthumb")
-    (version "3.12.2")
+    (version "3.12.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gthumb/"
@@ -11826,7 +12015,7 @@ functionality.")
                                   "gthumb-" version ".tar.xz"))
               (sha256
                (base32
-                "09flm8s6jrvfya2ypw5873mnnani8ssy7wdv3ra1cljk4bjszy4p"))))
+                "1s4lqy883s296mbh4fywd1l3z79811ia00xs57c316pb1an97mmd"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -11852,6 +12041,7 @@ functionality.")
            colord
            exiv2
            gsettings-desktop-schemas
+           gstreamer
            gtk+
            libheif
            libjpeg-turbo
@@ -11941,7 +12131,7 @@ tabs, and it supports drag and drop re-ordering of terminals.")
 (define-public libhandy
   (package
     (name "libhandy")
-    (version "1.7.90")
+    (version "1.8.3")
     (source
      (origin
        (method git-fetch)
@@ -11950,7 +12140,7 @@ tabs, and it supports drag and drop re-ordering of terminals.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1z8sbx7g19c1p8dy0sn0l25qfvrd2j28h269lsqm1y98r818h2k1"))))
+        (base32 "0p80py59mg9hjk2pzp0595cv64ankaqdvqsxlhrsgzsfx940r9nc"))))
     (build-system meson-build-system)
     (arguments
      (list #:configure-flags
@@ -12010,7 +12200,7 @@ for usage on small and big screens.")
 (define-public libgit2-glib
   (package
     (name "libgit2-glib")
-    (version "1.1.0")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -12018,7 +12208,7 @@ for usage on small and big screens.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1wqypx0xv20vk0zfh20c474z6rdgbxbklcr2wkhl30dgbmbxg3f3"))))
+                "1441w7gzn6m3adhx4g6wcbkmscka2929si963dciyklghgddlc8k"))))
     (build-system meson-build-system)
     (native-inputs
      (list `(,glib "bin") ;; For glib-mkenums
@@ -12041,7 +12231,7 @@ higher level porcelain stuff.")
 (define-public gitg
   (package
     (name "gitg")
-    (version "41")
+    (version "44")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -12049,8 +12239,7 @@ higher level porcelain stuff.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0aa6djcf7rjw0q688mfy47k67bbjpnx6aw1xs94abfhgn6gipdkz"))
-              (patches (search-patches "gitg-fix-positional-argument.patch"))))
+                "0m135v2qm5kaa2jki0y2lbh0wa69bqfh9a4cm7db153v7smrj3jv"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -12074,6 +12263,7 @@ higher level porcelain stuff.")
                   `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
     (inputs
      (list glib
+           gpgme
            gsettings-desktop-schemas
            gspell
            gtk+
@@ -12082,6 +12272,7 @@ higher level porcelain stuff.")
            libdazzle
            libgee
            libgit2-glib
+           libhandy
            libpeas
            libsecret
            libsoup-minimal-2
@@ -12174,44 +12365,40 @@ library which detects when a file or a directory has been modified.")
     (license license:gpl2+)))
 
 (define-public gnome-mahjongg
-  ;; There hasn't been a GNOME Mahjongg release in a long time, and the last
-  ;; release doesn't build with a recent Meson, so use the latest commit.
-  (let ((commit "e9e73e5165e5968ff897e568f8eba10fc1eb207b")
-        (revision "0"))
-    (package
-      (name "gnome-mahjongg")
-      (version (git-version "3.38.3" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.gnome.org/GNOME/gnome-mahjongg")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1cj0c076h7qfz77wpz8ypli60inj37fgw0cl9cc39b1kjfqcy3mb"))))
-      (build-system meson-build-system)
-      (arguments (list #:glib-or-gtk? #t))
-      (native-inputs
-       (list appstream-glib
-             gettext-minimal
-             `(,glib "bin")             ;for glib-compile-resources
-             `(,gtk "bin")              ;for gtk-update-icon-cache
-             itstool
-             pkg-config
-             vala))
-      (propagated-inputs
-       (list dconf))
-      (inputs
-       (list glib
-             gtk
-             libadwaita))
-      (synopsis "Mahjongg tile-matching game")
-      (description "GNOME Mahjongg is a game based on the classic Chinese
+  (package
+    (name "gnome-mahjongg")
+    (version "3.40.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/GNOME/gnome-mahjongg")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yj41lj2vancjzwjcm5cdv48983jq05i6sw8p4nggyqwij3xpllj"))))
+    (build-system meson-build-system)
+    (arguments (list #:glib-or-gtk? #t))
+    (native-inputs
+     (list appstream-glib
+           gettext-minimal
+           `(,glib "bin")             ;for glib-compile-resources
+           `(,gtk "bin")              ;for gtk-update-icon-cache
+           itstool
+           pkg-config
+           vala))
+    (propagated-inputs
+     (list dconf))
+    (inputs
+     (list glib
+           gtk
+           libadwaita))
+    (synopsis "Mahjongg tile-matching game")
+    (description "GNOME Mahjongg is a game based on the classic Chinese
 tile-matching game Mahjongg.  It features multiple board layouts, tile themes,
 and a high score table.")
-      (home-page "https://wiki.gnome.org/Apps/Mahjongg")
-      (license license:gpl2+))))
+    (home-page "https://wiki.gnome.org/Apps/Mahjongg")
+    (license license:gpl2+)))
 
 (define-public gnome-themes-extra
   (package
@@ -12366,7 +12553,7 @@ integrate seamlessly with the GNOME desktop.")
 (define-public gnome-boxes
   (package
     (name "gnome-boxes")
-    (version "43.3")
+    (version "44.3")
     (source
      (origin
        (method url-fetch)
@@ -12374,7 +12561,7 @@ integrate seamlessly with the GNOME desktop.")
                            (version-major version) "/"
                            "gnome-boxes-" version ".tar.xz"))
        (sha256
-        (base32 "14zd5ii3igy0am4zqw2jg1xshf2zxsy96yv5pss2vf6rh3svmnzf"))))
+        (base32 "0wg1fgp44wnv8cx39rinia2ix4mw6rqaczkq797g0xf8w2w432k4"))))
     (build-system meson-build-system)
     (arguments
      (list #:glib-or-gtk? #t
@@ -12476,7 +12663,7 @@ non-privileged user.")
     (inputs
      (list enchant
            folks
-           gcr
+           gcr-3
            glib
            gmime
            gnome-online-accounts
@@ -12858,6 +13045,44 @@ provided there is a DBus service present:
   (simple-service 'ratbagd dbus-root-service-type (list libratbag))")
     (license license:gpl2)))
 
+(define-public xdg-desktop-portal-gnome
+  (package
+    (name "xdg-desktop-portal-gnome")
+    (version "44.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "08gznmr718na5p2j8fm7nim5862r2v0sjh68ql5yl0q356n1mvah"))
+              (snippet
+               #~(begin
+                   (use-modules (guix build utils))
+                   (delete-file-recursively "subprojects")))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags #~'("-Dsystemduserunitdir=no")))
+    (inputs
+     (list gnome-desktop
+           gsettings-desktop-schemas
+           libadwaita
+           libxml2
+           xdg-desktop-portal
+           xdg-desktop-portal-gtk))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           pkg-config))
+    (home-page "https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome")
+    (synopsis "GNOME backend for xdg-desktop-portal")
+    (description "xdg-desktop-portal-gnome implements a back-end for
+@command{xdg-desktop-portal} that uses gtk and some more GNOME APIs.")
+    (license license:lgpl2.1+)))
+
 (define-public parlatype
   (package
     (name "parlatype")
@@ -12918,7 +13143,7 @@ audio files.")
 (define-public jsonrpc-glib
   (package
     (name "jsonrpc-glib")
-    (version "3.42.0")
+    (version "3.44.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -12926,13 +13151,17 @@ audio files.")
                                    name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0sr71110gwbv08qwjh410fnhq6v5swn849y4gm314am8gjjqj692"))))
+                "01nfsny3612c6l5q7qaazjpbzin0h357xblc81sm3k6ha016lh39"))))
     (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-Denable_gtk_doc=true")))
     (inputs
      (list glib
            json-glib))
     (native-inputs
-     (list `(,glib "bin") ; for glib-genmarshal, etc.
+     (list gi-docgen
+           `(,glib "bin") ; for glib-genmarshal, etc.
            gobject-introspection
            pkg-config
            vala))
@@ -12945,10 +13174,37 @@ both peers support it.  You might want that when communicating on a single
 host to avoid parser overhead and memory-allocator fragmentation.")
     (license license:lgpl2.1+)))
 
+(define-public gmobile
+  (package
+    (name "gmobile")
+    (version "0.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.gnome.org/guidog/gmobile")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "gmobile" version))
+       (sha256
+        (base32
+         "0lr22nj4ypzxbjim1a7ay07nh4vx3dqc895qql437gda6x0rvn2p"))
+       (patches
+        (search-patches "gmobile-make-it-installable.patch"))))
+    (build-system meson-build-system)
+    (native-inputs
+     (list `(,glib "bin") ; for glib-compile-resources
+           pkg-config))
+    (propagated-inputs
+     (list glib json-glib))
+    (synopsis "Functions useful in mobile related, glib based projects")
+    (description "This package provides functions for mobiles.")
+    (home-page "https://gitlab.gnome.org/guidog/gmobile")
+    (license license:lgpl2.1+)))
+
 (define-public feedbackd
   (package
     (name "feedbackd")
-    (version "0.0.0+git20200527")
+    (version "0.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -12957,12 +13213,18 @@ host to avoid parser overhead and memory-allocator fragmentation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1wbkzxnqjydfgjvp7vz4ghczcz740zcb1yn90cb6gb5md4n6qx2y"))))
+                "1acwpb8cgzyvzriphrb42k3d7njwcn88j66i5wz75yx2sbfaf93q"))
+              (patches
+               (search-patches "feedbackd-use-system-gmobile.patch"))
+              (snippet
+               #~(begin
+                   (use-modules (guix build utils))
+                   (delete-file-recursively "subprojects")))))
     (build-system meson-build-system)
     (native-inputs
      (list `(,glib "bin") gobject-introspection pkg-config vala))
     (inputs
-     (list dbus gsound json-glib libgudev))
+     (list dbus gmobile gsound json-glib libgudev))
     (propagated-inputs
      (list glib)) ; in Requires of libfeedback-0.0.pc
     (synopsis "Haptic/visual/audio feedback via DBus")
@@ -12976,7 +13238,7 @@ GObject introspection bindings.")
 (define-public sysprof
   (package
     (name "sysprof")
-    (version "3.45.1")
+    (version "3.48.0")
     (source
      (origin
        (method url-fetch)
@@ -12984,12 +13246,13 @@ GObject introspection bindings.")
                            (version-major+minor version) "/"
                            "sysprof-" version ".tar.xz"))
        (sha256
-        (base32 "16nmr1qs7s2ylhwj58zj6b7in72nw7z72glaz746f2g7dbqs00k4"))))
+        (base32 "0s11jwkvdbnq2jyz26mwy47wcxfsbawg53zlackvabygcqd0in87"))))
     (build-system meson-build-system)
     (arguments
      (list
       #:configure-flags
-      #~(list (string-append "-Dsystemdunitdir=" #$output "/share/systemd"))
+      #~(list (string-append "-Dsystemdunitdir=" #$output "/share/systemd")
+              "-Dhelp=true")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'disable-post-install
@@ -13000,9 +13263,10 @@ GObject introspection bindings.")
                 (("update_desktop_database: true")
                  "update_desktop_database: false")))))))
     (propagated-inputs
-     (list polkit))
+     ;; Listed in sysprof-4.pc or sysprof-ui-5.pc
+     (list glib json-glib libadwaita polkit))
     (inputs
-     (list glib-next
+     (list glib
            gtk
            json-glib
            libadwaita
@@ -13011,7 +13275,7 @@ GObject introspection bindings.")
            polkit))
     (native-inputs
      (list gettext-minimal
-           `(,glib-next "bin")          ;for gdbus-codegen, etc.
+           `(,glib "bin")          ;for gdbus-codegen, etc.
            itstool
            libxml2
            pkg-config))
@@ -13057,7 +13321,7 @@ libraries.  Applications do not need to be recompiled--or even restarted.")
 (define-public gnome-builder
   (package
     (name "gnome-builder")
-    (version "42.1")
+    (version "44.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -13065,57 +13329,80 @@ libraries.  Applications do not need to be recompiled--or even restarted.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "02k78mamp1yf9y6wixd864hdf9saw83wdw01f80lhnw60avm2kax"))))
+                "1c192xzjv5hsbp1p3wil595810k49kgmf5a7lwf260izip3qk9ng"))))
     (build-system meson-build-system)
     (arguments
      (list
       #:glib-or-gtk? #t                 ;To wrap binaries and compile schemas
-      #:configure-flags #~(list "-Dnetwork_tests=false")
+      #:configure-flags #~(list "-Dnetwork_tests=false" "-Ddocs=true")
       #:phases
       #~(modify-phases %standard-phases
           (add-after 'unpack 'patch-meson
             (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))
               (substitute* "build-aux/meson/post_install.py"
+                ;; The post_install script does not seem to respect the
+                ;; previous setting regarding gtk-update-icon-cache.
                 (("gtk-update-icon-cache") "true")
                 (("update-desktop-database") "true"))
-              (substitute* "src/libide/meson.build"
-                (("/usr/lib")
-                 (string-append #$(this-package-input "python-pygobject")
-                                "/lib")))))
-          (add-before 'check 'pre-check
+              ;; This test is failing for unclear reasons.
+              (substitute* "src/tests/meson.build"
+                (("test\\('test-shortcuts'")
+                 "# test('test-shortcuts'"))))
+          (add-before 'build 'set-home
             (lambda _
-              (system "Xvfb :1 &")
-              (setenv "DISPLAY" ":1"))))))
+              ;; Required for documentation.
+              (setenv "HOME" (getcwd))))
+          (add-before 'check 'pre-check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (system "Xvfb :1 &")
+                (setenv "DISPLAY" ":1"))))
+         (add-after 'glib-or-gtk-wrap 'wrap-typelib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (wrap-program (search-input-file outputs "bin/gnome-builder")
+               `("GI_TYPELIB_PATH" suffix (,(getenv "GI_TYPELIB_PATH")))))))))
     (inputs
-     (list cmark
+     (list bash-minimal                 ;for wrap-program
+           cmark
            clang
            devhelp-with-libsoup2
+           d-spy
+           ;; Cyclic modular dependency
+           (module-ref
+            (resolve-interface
+             '(gnu packages text-editors))
+            'editorconfig-core-c)
            flatpak
-           glade3
            gspell
-           gtk+
+           gtk
            json-glib
            jsonrpc-glib
+           libadwaita
            libdazzle
+           libdex
            libgit2-glib
-           libhandy
+           libpanel
            libpeas
            libportal
-           libsoup-minimal-2
+           libsoup
            llvm
            libostree
            python
            python-pygobject
-           sysprof-3.44
+           sysprof
            template-glib
-           vte
-           webkitgtk-with-libsoup2))
+           vte-with-gtk-4
+           webkitgtk))
     (propagated-inputs
-     (list gtksourceview-4))            ;needed for settings
+     (list gtksourceview))              ;needed for settings
     (native-inputs
      (list desktop-file-utils           ;for desktop-file-validate
            `(,glib "bin")
            gettext-minimal
+           gi-docgen
            pkg-config
            python                       ;for meson scripts
            vala
@@ -13219,6 +13506,7 @@ developed with the aim of being used with the Librem 5 phone.")
        (sha256
         (base32 "0w564z7krgjk19r39mi5qn4kggpdg9ggbyn9pb4aavb61r14npwr"))
        (patches (search-patches "libgda-cve-2021-39359.patch"
+                                "libgda-disable-data-proxy-test.patch"
                                 "libgda-fix-build.patch"
                                 "libgda-fix-missing-initialization.patch"
                                 "libgda-skip-postgresql-tests.patch"))))
@@ -13279,7 +13567,7 @@ your data.")
                    (substitute* "build-aux/meson/meson_post_install.py"
                      (("gtk-update-icon-cache") (which "true"))))))))
     (native-inputs
-     (list `(,glib-next "bin")
+     (list `(,glib "bin")
            gettext-minimal
            itstool
            pkg-config))
@@ -13287,7 +13575,7 @@ your data.")
      (list json-glib
            jsonrpc-glib
            gettext-minimal
-           glib-next
+           glib
            gsettings-desktop-schemas
            gspell
            libgda
@@ -13371,7 +13659,7 @@ Document Analysis and Recognition program.")
 (define-public libadwaita
   (package
     (name "libadwaita")
-    (version "1.2.0")
+    (version "1.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libadwaita/"
@@ -13379,7 +13667,7 @@ Document Analysis and Recognition program.")
                                   "libadwaita-" version ".tar.xz"))
               (sha256
                (base32
-                "0326qs0zhfi6zv52p90axnicmv0qb2l2hwpyv60pk9lvwcdkwbrj"))))
+                "1hj7kxza6263x662v4ffndlz8dhfx19cz3y4iwhnhdflaj50j6p5"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -13399,7 +13687,7 @@ Document Analysis and Recognition program.")
            vala
            xorg-server-for-tests))
     (propagated-inputs
-     (list gtk))                        ;libadwaita-1.pc 'Requires' it
+     (list appstream gtk))              ;libadwaita-1.pc 'Requires' it
     (home-page "https://gnome.pages.gitlab.gnome.org/libadwaita/")
     (synopsis "Building blocks for GNOME applications")
     (description
@@ -13476,3 +13764,278 @@ historical battery usage and related statistics.")
     (home-page "http://xffm.org/")
     (license license:gpl3+)
     (properties '((upstream-name . "xffm")))))
+
+(define-public gnome-remote-desktop
+  (package
+    (name "gnome-remote-desktop")
+    (version "44.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "13kvr1f2vk0qfqr9alpz7wb542b5d5i9ypk74rnn7jsz3csgv7vs"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:configure-flags
+           #~'("-Dsystemd=false"
+               ;; RDP support requires CUDA (ffnvcodec)
+               "-Drdp=false"
+               ;; This is for the RDP back-end
+               "-Dfdk_aac=false"
+               ;; Enable VNC support
+               "-Dvnc=true")
+           #:glib-or-gtk? #t
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'shorten-vnc-test
+                 (lambda _
+                   ;; The VNC test sets up the connection, parses a message
+                   ;; from the server, and then waits forever.  This
+                   ;; modification lets it succeed once it has parsed a
+                   ;; message from the server.
+                   (substitute* "tests/test-client-vnc.c"
+                     (("while \\(TRUE\\)")
+                      "int ret = 0; while (ret == 0)")
+                     (("int ret;") ""))))
+               (delete 'check)
+               (add-after 'install 'check
+                 (assoc-ref %standard-phases
+                            'check))
+               (add-before 'check 'pre-check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (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"
+                             (string-append #$output "/share/glib-2.0/schemas"))
+                     ;; Unless enabled by the user, the VNC server will not
+                     ;; start.
+                     (invoke "gsettings"
+                             "set"
+                             "org.gnome.desktop.remote-desktop.vnc"
+                             "enable" "true")
+                     ;; Pipewire is required.
+                     (setenv "PIPEWIRE_DEBUG" "2")
+                     (setenv "PIPEWIRE_LOG" "meson-logs/pipewire.log")
+                     (invoke "pipewire" "--version")
+                     (system "pipewire &")))))))
+    (inputs
+     (list cairo
+           glib
+           libdrm
+           libepoxy
+           libgudev
+           libnotify
+           libsecret
+           ;; Cyclic modular dependency
+           (module-ref
+            (resolve-interface
+             '(gnu packages vnc))
+            'libvnc)
+           pipewire
+           tpm2-tss))
+    (native-inputs
+     (list asciidoc
+           dbus
+           docbook-xsl
+           docbook-xml-4.3
+           gettext-minimal
+           `(,glib "bin")
+           itstool
+           libxml2
+           libxslt
+           mutter
+           pkg-config
+           python
+           python-dbus
+           python-pygobject))
+    (home-page "https://gitlab.gnome.org/GNOME/gnome-remote-desktop")
+    (synopsis "Share GNOME desktop with remote sessions")
+    (description "This package provides a remote desktop server for GNOME.")
+    (license license:gpl2+)))
+
+(define-public libcall-ui
+  (package
+    (name "libcall-ui")
+    (version "0.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.gnome.org/World/Phosh/libcall-ui")
+             (commit "6798b38d4d66d069751151b3e9a202c6de8d7f3c")))
+       (file-name (git-file-name "libcall-ui" version))
+       (sha256
+        (base32
+         "0zfrxh77ag8garqj319amnxjcdyp3ig12dkxfkl6wbwn1mvyrwx8"))
+       (patches (search-patches "libcall-ui-make-it-installable.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" (getcwd))
+              ;; Tests require a running X server.
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1"))))))
+    (propagated-inputs ; All these in call-ui.pc.
+     (list glib
+           gtk+
+           libcallaudio
+           libhandy))
+    (native-inputs
+     (list `(,glib "bin") ; glib-mkenums
+           pkg-config
+           xorg-server-for-tests))
+    (synopsis "Common User Interfaces for call handling")
+    (description "This package provides common user interfaces to make and
+receive calls.")
+    (home-page "https://gitlab.gnome.org/World/Phosh/libcall-ui")
+    (license license:lgpl2.1+)))
+
+(define-public calls
+  (package
+    (name "calls")
+    (version "45.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1mvnrm5wbl69xbcjg8nxd6l6nj2fd3whbyh70axlm75c7l7d5j5r"))
+              (patches
+               (search-patches "calls-disable-application-test.patch"
+                               "calls-disable-sip-test.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
+      #:configure-flags #~'("-Dgtk_doc=true")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" (getcwd))
+              ;; Tests require a running X server.
+              (system "Xvfb :1 &")
+              (setenv "DISPLAY" ":1"))))))
+    (inputs
+     (list evolution-data-server
+           feedbackd
+           folks
+           glib
+           gom
+           gstreamer
+           gst-plugins-base
+           gst-plugins-good
+           gst-plugins-bad
+           gtk+
+           libcall-ui
+           libgee
+           libpeas
+           libhandy
+           modem-manager
+           sofia-sip))
+    (native-inputs
+     (list desktop-file-utils           ;update-desktop-database
+           gettext-minimal
+           `(,glib "bin")               ;glib-mkenums
+           gtk-doc                      ;gtkdoc-scan
+           `(,gtk+ "bin")               ;gtk-update-icon-cache
+           pkg-config
+           python-docutils              ;rst2man
+           vala
+           xorg-server-for-tests))
+    (home-page "https://gitlab.gnome.org/GNOME/calls")
+    (synopsis "Phone dialer and call handler")
+    (description "Calls can make and answer phone calls using different
+backends, such as ModemManager for phones and @acronym{SIP, Session Initiation
+Protocol} for @acronym{VoIP, Voice over @acronym{IP, Internet Protocol}}.")
+    (license license:gpl3+)))
+
+(define-public gtk-frdp
+  (package
+    (name "gtk-frdp")
+    ;; The latest published tag is 3.37.1, but it is very old:
+    ;; https://gitlab.gnome.org/GNOME/gtk-frdp/-/issues/39
+    (version "3.37.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.gnome.org/GNOME/gtk-frdp")
+             (commit "62fc62c5ccb7634f0bc87c57a4673877c24c94ed")))
+       (file-name (git-file-name "gtk-frdp" version))
+       (sha256
+        (base32
+         "0msw7qpsyf9hkyq9ddhvl4g4vk1fnyi7g0bddca9x6p9d0arprqz"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:glib-or-gtk? #t))
+    (inputs
+     (list freerdp fuse gtk+))
+    (native-inputs
+     (list `(,glib "bin") gobject-introspection pkg-config vala))
+    (home-page "https://gitlab.gnome.org/GNOME/gtk-frdp")
+    (synopsis "RDP viewer widget for Gtk")
+    (description "This library provides a widget to view
+@acronym{RDP, Remote Desktop Protocol} sessions.")
+    (license license:gpl3+)))
+
+(define-public gnome-connections
+  (package
+    (name "gnome-connections")
+    (version "44.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0sv238bq0dhi68ksr3bcl4q44i3ishk5i10c2325qz879f92sshk"))
+              (snippet
+               #~(begin
+                   (use-modules (guix build utils))
+                   (delete-file-recursively "subprojects")))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:glib-or-gtk? #t
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-meson
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false")
+                (("update_desktop_database: true")
+                 "update_desktop_database: false"))))
+          (add-after 'unpack 'disable-onboarding-dialog
+            (lambda _
+              (substitute* "src/application.vala"
+                (("\\(new OnboardingDialog \\(main_window\\)\\).present \\(\\);")
+                 "// Skip the onboarding dialog")))))))
+    (inputs
+     (list gtk+ gtk-frdp gtk-vnc libhandy libsecret libxml2))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")
+           itstool
+           pkg-config
+           vala))
+    (home-page "https://apps.gnome.org/Connections")
+    (synopsis "View and use other desktops")
+    (description "Connections allows the user to connect to different
+real or virtual machines, using @acronym{VNC, Virtual Network Computing}
+or @acronym{RDP, Remote Desktop Protocol}.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 9a02635ec1..1bf6eee2ff 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -894,7 +894,7 @@ passphrase when @code{gpg} is run and needs it.")))
     (name "pinentry-gnome3")
     (inputs
      (modify-inputs (package-inputs pinentry-tty)
-       (prepend gtk+-2 gcr glib)))
+       (prepend gtk+-2 gcr-3 glib)))
     (arguments
      `(#:configure-flags '("--enable-pinentry-gnome3"
                            "--enable-fallback-curses")))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 511a509110..4a9bf3ba04 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -64,6 +64,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 9bc81a3a81..ad08141c96 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -885,9 +885,9 @@ exception-handling library.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://gitlab.com/inkscape/lib2geom.git")
+                    (url "https://gitlab.com/inkscape/lib2geom")
                     (commit version)))
-              (file-name (git-file-name name version))
+              (file-name (git-file-name "lib2geom" version))
               (sha256
                (base32
                 "0dq981g894hmvhd6rmfl1w32mksg9hpvpjs1qvfxrnz87rhkknj8"))))
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 2be9f6b314..2c8ad12982 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -461,7 +461,7 @@ the GStreamer multimedia framework.")
 (define-public gstreamer
   (package
     (name "gstreamer")
-    (version "1.22.2")
+    (version "1.22.3")
     (source
      (origin
        (method url-fetch)
@@ -470,7 +470,7 @@ the GStreamer multimedia framework.")
              version ".tar.xz"))
        (sha256
         (base32
-         "08cfz2vkf494rsg0bn75px26fxs3syvxnsc9lj5n074j0cvfgbxj"))))
+         "0x2rdl6vfpbr7wnh1nk0rllw28cgx0js4g9vxfank7rz0naspzlz"))))
     (build-system meson-build-system)
     (arguments
      (list #:disallowed-references (list python)
@@ -542,7 +542,7 @@ This package provides the core library and elements.")
 (define-public gst-plugins-base
   (package
     (name "gst-plugins-base")
-    (version "1.22.2")
+    (version "1.22.3")
     (source
      (origin
       (method url-fetch)
@@ -550,7 +550,7 @@ This package provides the core library and elements.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "0jcxcx4mgfjvfb3ixibwhx8j330mq3ap469w7hapm6z79q614rgb"))))
+        "1ww9xx6c4mwvgn9k56d1xfnd3i1jm4v8rfiy4f07686ll24n4n8w"))))
     (build-system meson-build-system)
     (propagated-inputs
      (list glib                     ;required by gstreamer-sdp-1.0.pc
@@ -641,7 +641,7 @@ for the GStreamer multimedia library.")
 (define-public gst-plugins-good
   (package
     (name "gst-plugins-good")
-    (version "1.22.2")
+    (version "1.22.3")
     (source
      (origin
        (method url-fetch)
@@ -650,7 +650,7 @@ for the GStreamer multimedia library.")
          "https://gstreamer.freedesktop.org/src/" name "/"
          name "-" version ".tar.xz"))
        (sha256
-        (base32 "1p8cpkk4dynglw0xswqyf57xl5fnxmb3xld71kv35cpj4nacb33w"))))
+        (base32 "0wq2f5q395vs7hnwjqpc2gysdvkgd4jmyfdszv9g9wrf795ib0dg"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -760,14 +760,14 @@ model to base your own plug-in on, here it is.")
 (define-public gst-plugins-bad
   (package
     (name "gst-plugins-bad")
-    (version "1.22.2")
+    (version "1.22.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gstreamer.freedesktop.org/src/"
                                   name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "03rd09wsrf9xjianpnnvamb4n3lndhd4x31srqsqab20wcfaz3rx"))
+                "1n116sphawmlqyjp1b8sv07vz4rjk1zn07286w37y4l65pp8yyg1"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -954,7 +954,7 @@ par compared to the rest.")
 (define-public gst-plugins-ugly
   (package
     (name "gst-plugins-ugly")
-    (version "1.22.2")
+    (version "1.22.3")
     (source
      (origin
        (method url-fetch)
@@ -962,7 +962,7 @@ par compared to the rest.")
         (string-append "https://gstreamer.freedesktop.org/src/"
                        name "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1486x08bwasq6l7kc75nph5az61siq9mbgkgpw4kf1mxn16z8c4g"))))
+        (base32 "0q53snvh7kr8g7qqxy4v5ska0d78kgc5bkp6qjrnhcr9qbaqxj9x"))))
     (build-system meson-build-system)
     (arguments
      (list #:glib-or-gtk? #t         ; To wrap binaries and/or compile schemas
@@ -1011,7 +1011,7 @@ think twice about shipping them.")
 (define-public gst-libav
   (package
     (name "gst-libav")
-    (version "1.22.2")
+    (version "1.22.3")
     (source
      (origin
        (method url-fetch)
@@ -1020,7 +1020,7 @@ think twice about shipping them.")
          "https://gstreamer.freedesktop.org/src/" name "/"
          name "-" version ".tar.xz"))
        (sha256
-        (base32 "1zfg7giwampmjxkqr5pqy66vck42b0akmwby661brwz8iy3zkapw"))))
+        (base32 "08x929yhjd2wpy05146fnqv6p2hw58ha079bwfkp2hwbh02wii9f"))))
     (build-system meson-build-system)
     (native-inputs (list perl pkg-config python-wrapper ruby))
     (inputs (list ffmpeg))
@@ -1034,7 +1034,7 @@ decoders, muxers, and demuxers provided by FFmpeg.")
 (define-public gst-editing-services
   (package
     (name "gst-editing-services")
-    (version "1.22.2")
+    (version "1.22.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1042,7 +1042,7 @@ decoders, muxers, and demuxers provided by FFmpeg.")
                     "gst-editing-services-" version ".tar.xz"))
               (sha256
                (base32
-                "1gyfw11ns2la1cm6gvvvv5qj3q5gcvcypc3wk8kdwmrqzij18fs5"))))
+                "18nfq3av5ksz17048l2b4r4zbh11yd0yq2asx0jy3c894pkbr98m"))))
     (build-system meson-build-system)
     (arguments
      (list
@@ -1102,7 +1102,7 @@ binary, but none of the actual plugins.")))
 (define-public python-gst
   (package
     (name "python-gst")
-    (version "1.22.2")
+    (version "1.22.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1110,7 +1110,7 @@ binary, but none of the actual plugins.")))
                     "gst-python-" version ".tar.xz"))
               (sha256
                (base32
-                "1bak46bj92gyz613m99mnl0yw0qhbhq5dfxifnvldgp45kcb7wmy"))))
+                "073kii36ncgsyq0b5njbsvprrg1k3kmydr3dxwiccjv3pvxd7gkh"))))
     (build-system meson-build-system)
     (arguments
      (list
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 2dcfa0edc1..9252315fd2 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -106,6 +106,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sphinx)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages guile-xyz)
@@ -258,7 +259,7 @@ output.  Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.")
 (define-public harfbuzz
   (package
     (name "harfbuzz")
-    (version "5.3.1")
+    (version "8.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/harfbuzz/harfbuzz"
@@ -266,7 +267,7 @@ output.  Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0ka3nkk2lks2lgakq02vyibwdziv11dkpa2brkx230asnyby0v2a"))))
+                "0izq2lpqxrf1l755nxrxkkiarywkx5j43asznankxplbxgm0358h"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "bin"))                  ;160K, only hb-view depend on cairo
@@ -361,7 +362,7 @@ applications.")
 (define-public pango
   (package
     (name "pango")
-    (version "1.50.10")
+    (version "1.50.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/pango/"
@@ -370,7 +371,7 @@ applications.")
               (patches (search-patches "pango-skip-libthai-test.patch"))
               (sha256
                (base32
-                "0rj9sszflckk8gj47ppirpndpp3mzsx97l64lalj8kc580g2ypby"))))
+                "1s41sprfgkc944fva36zjmkmdpv8hn1bdpyg55xc4663pw2z4rqx"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t             ; To wrap binaries and/or compile schemas
@@ -465,7 +466,12 @@ handling for GTK+-2.x.")
                #~(begin
                    (substitute* "pango/pangocairo-font.c"
                      (("cairo_user_font_face_set_render_color_glyph_func")
-                      "cairo_user_font_face_set_render_glyph_func"))))))))
+                      "cairo_user_font_face_set_render_glyph_func"))
+                   ;; Disable a failing test
+                   (substitute* "tests/testmisc.c"
+                     (("\
+g_test_add_func \\(\"/layout/gravity-metrics2\", test_gravity_metrics2\\);")
+                      ""))))))))
 
 (define-public pangox-compat
   (package
@@ -614,6 +620,11 @@ printing and other features typical of a source code editor.")
                ;; Tests require a running X server.
                (system (string-append Xvfb " :1 &"))
                (setenv "DISPLAY" ":1")
+               ;; Use an X11 setup to find the display.
+               (setenv "GDK_BACKEND" "x11")
+               ;; Avoid spawning (and failing to connect to) the accessiblity
+               ;; bus.
+               (setenv "GTK_A11Y" "none")
                ;; For the missing /etc/machine-id.
                (setenv "DBUS_FATAL_WARNINGS" "0")))))))
     (native-inputs
@@ -630,7 +641,7 @@ printing and other features typical of a source code editor.")
      ;; gtksourceview-5.pc refers to all these.
      (list fontconfig
            fribidi
-           glib-next
+           glib
            gtk
            libxml2
            pango
@@ -685,7 +696,7 @@ highlighting and other features typical of a source code editor.")
 (define-public gdk-pixbuf
   (package
     (name "gdk-pixbuf")
-    (version "2.42.8")
+    (version "2.42.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -693,12 +704,12 @@ highlighting and other features typical of a source code editor.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1iplb43nn74pp3w1wjwwn522i9man6jia85k6j8v4494rcxfmb44"))))
+                "0jz4kziz5lirnjjvbspbqzsigk8vnqknng1fga89d81vs5snr6zf"))))
     (build-system meson-build-system)
     (outputs '("out" "debug"))
     (arguments
      `(#:glib-or-gtk? #t             ; To wrap binaries and/or compile schemas
-       #:configure-flags '("-Dinstalled_tests=false")
+       #:configure-flags '("-Dinstalled_tests=false" "-Dgtk_doc=true")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'disable-failing-tests
@@ -735,10 +746,8 @@ highlighting and other features typical of a source code editor.")
            pkg-config
 
            ;; For the documentation.
-           docbook-xml-4.3
-           docbook-xsl
-           libxml2                      ;for XML_CATALOG_FILES
-           libxslt))                    ;for xsltproc
+           gi-docgen
+           python-docutils))
     (native-search-paths
      ;; This file is produced by the gdk-pixbuf-loaders-cache-file
      ;; profile hook.
@@ -787,7 +796,7 @@ ever use this library.")
   (hidden-package
    (package
      (name "at-spi2-core")
-     (version "2.45.90")
+     (version "2.48.4")
      (source (origin
                (method url-fetch)
                (uri (string-append "mirror://gnome/sources/" name "/"
@@ -795,7 +804,7 @@ ever use this library.")
                                    name "-" version ".tar.xz"))
                (sha256
                 (base32
-                 "03dba3c6m3sfapkkbbgzvbi1qcmrrlppydxjjs1m8ds9qb9hl1g9"))))
+                 "05d5azffbglnvqzwk8ngg61jksm3brrwhmfpymsrccz8j8lv3v19"))))
      (build-system meson-build-system)
      (arguments
       (list
@@ -812,10 +821,15 @@ ever use this library.")
                      (lambda _
                        ;; xfconfd requires a writable HOME
                        (setenv "HOME" (getenv "TMPDIR"))
-                       ;; Run test-suite under a dbus session.
-                       (setenv "XDG_DATA_DIRS"  ;for finding org.xfce.Xfconf.service
-                               (string-append #$output "/share:"
-                                              (getenv "XDG_DATA_DIRS")))
+                       ;; dbus-run-session may crash if XDG_DATA_DIRS has too
+                       ;; many entries, maybe related to
+                       ;; https://gitlab.freedesktop.org/dbus/dbus/-/issues/481.
+                       (setenv "XDG_DATA_DIRS"
+                               (string-append
+                                #$output "/share:"
+                                #$(this-package-native-input
+                                   "gsettings-desktop-schemas")
+                                "/share"))
                        ;; Don't fail on missing  '/etc/machine-id'.
                        (setenv "DBUS_FATAL_WARNINGS" "0")
                        (with-directory-excursion (string-append "../at-spi2-core-"
@@ -833,12 +847,13 @@ ever use this library.")
       ;; atspi-2.pc refers to all these.
       (list dbus glib libx11 libxi libxtst))
      (native-inputs
-      (list gettext-minimal
+      (list findutils
+            gettext-minimal
             `(,glib "bin")
             gobject-introspection
             gsettings-desktop-schemas
             pkg-config
-            python-dbusmock
+            python-dbusmock-minimal
             python-pytest
             python-wrapper))
      (synopsis "Assistive Technology Service Provider Interface, core components")
@@ -863,25 +878,14 @@ is part of the GNOME accessibility project.")
             (add-after 'unpack 'set-documentation-path
               (lambda _
                 ;; Ensure that the cross-references point to the "doc" output.
-                (substitute* "doc/libatspi/meson.build"
-                  (("docpath =.*")
-                   (string-append "docpath = '" #$output:doc
-                                  "/share/gtk-doc/html'\n")))))
-            (add-before 'install 'prepare-doc-directory
-              (lambda _
-                (mkdir-p (string-append #$output:doc "/share"))))
-            #$@(if (%current-target-system)
-                   #~()
-                   #~((add-after 'install 'move-documentation
-                        (lambda _
-                          (copy-recursively
-                           (string-append #$output "/share/gtk-doc")
-                           (string-append #$output:doc "/share/gtk-doc"))
-                          (delete-file-recursively
-                           (string-append #$output "/share/gtk-doc"))))))))))
+                (substitute* "doc/meson.build"
+                  (("docs_dir =.*")
+                   (string-append "docs_dir = '" #$output:doc
+                                  "/share/doc'\n")))))))))
     (native-inputs
      (modify-inputs (package-native-inputs at-spi2-core)
-       (append docbook-xml-4.3 gtk-doc/stable)))
+       (append gi-docgen python python-sphinx)
+       (replace "python-dbusmock" python-dbusmock)))
     (properties (alist-delete 'hidden?
                               (package-properties at-spi2-core)))))
 
@@ -905,6 +909,7 @@ is part of the GNOME accessibility project.")
                 "1nn6kks1zyvb5xikr9y2k7r9bwjy1g4b0m0s66532bclymbwfamc"))
               (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
                                        "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
+                                       "gtk2-harden-list-store.patch"
                                        "gtk2-theme-paths.patch"
                                        "gtk2-fix-builder-test.patch"))))
     (build-system gnu-build-system)
@@ -993,7 +998,7 @@ application suites.")
   (package
     (inherit gtk+-2)
     (name "gtk+")
-    (version "3.24.37")
+    (version "3.24.41")
     (source
      (origin
        (method url-fetch)
@@ -1002,7 +1007,7 @@ application suites.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0mvzzgjrzzir7nzx379yz3swzk3pn1s283hgzm8l2yakq2sg0ib7"))
+         "1ymna7b8p668wxbca1pgjqpw02ya4p86yaa9pja7l27kg9463nj7"))
        (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
                                 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
     ;; There is no "doc" output, because adding gtk-doc here would introduce a
@@ -1114,7 +1119,7 @@ application suites.")
 (define-public gtk
   (package
     (name "gtk")
-    (version "4.8.1")
+    (version "4.12.3")
     (source
      (origin
        (method url-fetch)
@@ -1122,9 +1127,10 @@ application suites.")
                            (version-major+minor version)  "/"
                            name "-" version ".tar.xz"))
        (sha256
-        (base32 "1za2nyqqs2lrbss61gfw17qba2f0w6a119m1xk4d0fx2k3gdis2w"))
+        (base32 "128ahzsj016vz8brd8kplhfkxg2q7wy7kndibx2qfr68yrif530l"))
        (patches
-        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))))
+        (search-patches "gtk4-respect-GUIX_GTK4_PATH.patch"))
+       (modules '((guix build utils)))))
     (build-system meson-build-system)
     (outputs '("out" "bin" "doc"))
     (arguments
@@ -1148,6 +1154,9 @@ application suites.")
                             ;; Use the same test options as upstream uses for
                             ;; their CI.
                             "--suite=gtk"
+                            "--no-suite=failing"
+                            "--no-suite=flaky"
+                            "--no-suite=headless" ; requires mutter…
                             "--no-suite=gsk-compare-broadway")
       #:phases
       #~(modify-phases %standard-phases
@@ -1170,6 +1179,9 @@ application suites.")
               (substitute* "meson.build"
                 (("gtk_update_icon_cache: true")
                  "gtk_update_icon_cache: false"))
+              (substitute* (find-files "testsuite/gsk/nodeparser/"
+                                       "^text-color.*\\.node$")
+                (("Noto Sans") "DejaVu Sans"))
               ;; Disable failing tests.
               (substitute* (find-files "testsuite" "meson.build")
                 (("[ \t]*'empty-text.node',") "")
@@ -1258,6 +1270,7 @@ application suites.")
            cups                         ;for CUPS print-backend
            ffmpeg                       ;for ffmpeg media-backend
            fribidi
+           gi-docgen
            gstreamer                    ;for gstreamer media-backend
            gst-plugins-bad              ;provides gstreamer-player
            gst-plugins-base             ;provides gstreamer-gl
@@ -1717,7 +1730,7 @@ text rendering library.")
   (package
     (inherit pangomm)
     (name "pangomm")
-    (version "2.46.2")
+    (version "2.46.4")
     (source
      (origin
        (method url-fetch)
@@ -1726,9 +1739,9 @@ text rendering library.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1x56xb4k1d9g88a1d9rlcvy97mmj39rib6c3wfzpff04vjs2li2p"))))
+        (base32 "08nvd36s2fqksrkh573cn4gz90cpyl91azrpp7j4shi62mk1c85r"))))
     (propagated-inputs
-     (list cairomm-1.14 glibmm-2.64 pango))))
+     (list cairomm-1.14 glibmm-2.66 pango))))
 
 (define-public atkmm
   (package
@@ -1784,7 +1797,7 @@ text rendering library.")
   (package
     (inherit atkmm)
     (name "atkmm")
-    (version "2.28.1")
+    (version "2.28.4")
     (source
      (origin
        (method url-fetch)
@@ -1793,10 +1806,10 @@ text rendering library.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1b8vycqzr3lfvk2l73f4kk74hj48081zbh9r1r2ilr3h8xh7cs0i"))))
+        (base32 "1cysiz908phkagwnls44xxa60xls7r3fw540zcg00g7q520jl50a"))))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs atkmm)
-       (replace "glibmm" glibmm-2.64)))))
+       (replace "glibmm" glibmm-2.66)))))
 
 (define-public gtkmm
   (package
@@ -1870,7 +1883,7 @@ tutorial.")
   (package
     (inherit gtkmm)
     (name "gtkmm")
-    (version "3.24.6")
+    (version "3.24.8")
     (source
      (origin
        (method url-fetch)
@@ -1879,7 +1892,7 @@ tutorial.")
                        (version-major+minor version)  "/"
                        name "-" version ".tar.xz"))
        (sha256
-        (base32 "1mhi3ws43l051fha4zssfpykraa1qc2hd408l2xk65jfjhp18gjb"))))
+        (base32 "1i4ql0j6id6g34w5nbhd7vjak7l3s50lqgdjaj2ranrfj9j0r56j"))))
     (propagated-inputs
      `(("atkmm-2.28" ,atkmm-2.28)
        ("cairomm-1.14" ,cairomm-1.14)
@@ -1906,7 +1919,7 @@ tutorial.")
      (strip-keyword-arguments
       '(#:configure-flags) (package-arguments gtkmm)))
     (propagated-inputs
-     (list atkmm-2.28 cairomm-1.14 glibmm-2.64 gtk+-2 pangomm-2.46))))
+     (list atkmm-2.28 cairomm-1.14 glibmm-2.66 gtk+-2 pangomm-2.46))))
 
 (define-public gtksourceviewmm
   (package
@@ -2122,9 +2135,11 @@ and routines to assist in editing internationalized text.")
     (license license:lgpl2.1+)))
 
 (define-public girara
+  ;; TODO: Move propagated inputs to inputs after core-updates is merged (as
+  ;; of 2024-03)
   (package
     (name "girara")
-    (version "0.4.2")
+    (version "0.4.3")
     (source
      (origin
        (method git-fetch)
@@ -2133,31 +2148,34 @@ and routines to assist in editing internationalized text.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11fi7yy28rv6clj9gkvz58gd8zph95khq9jjia4c5skq03m67npz"))))
-    (native-inputs `(("pkg-config" ,pkg-config)
-                     ("check" ,check)
-                     ("gettext" ,gettext-minimal)
-                     ("glib:bin" ,glib "bin")
-                     ("xorg-server" ,xorg-server-for-tests)))
-    ;; Listed in 'Requires.private' of 'girara.pc'.
-    (propagated-inputs (list gtk+))
+        (base32 "0cbcs3810frgdmal5ia9pf3rk3k5h4xyzw1d2ia3rcg4nms5gcpx"))))
     (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'check 'start-xserver
-                    ;; Tests require a running X server.
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                            (display ":1"))
-                        (setenv "DISPLAY" display)
-
-                        ;; On busy machines, tests may take longer than
-                        ;; the default of four seconds.
-                        (setenv "CK_DEFAULT_TIMEOUT" "20")
-
-                        ;; Don't fail due to missing '/etc/machine-id'.
-                        (setenv "DBUS_FATAL_WARNINGS" "0")
-                        (zero? (system (string-append xorg-server "/bin/Xvfb "
-                                                      display " &")))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'start-xserver
+            ;; Tests require a running X server.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                    (display ":1"))
+                (setenv "DISPLAY" display)
+
+                ;; On busy machines, tests may take longer than
+                ;; the default of four seconds.
+                (setenv "CK_DEFAULT_TIMEOUT" "20")
+
+                ;; Don't fail due to missing '/etc/machine-id'.
+                (setenv "DBUS_FATAL_WARNINGS" "0")
+                (zero? (system (string-append xorg-server "/bin/Xvfb "
+                                              display " &")))))))))
+    (native-inputs
+     (list pkg-config
+           check
+           gettext-minimal
+           `(,glib "bin")
+           xorg-server-for-tests))
+    ;; Listed in 'Requires.private' of 'girara.pc'.
+    (propagated-inputs (list gtk+ json-glib))
     (build-system meson-build-system)
     (home-page "https://pwmt.org/projects/girara/")
     (synopsis "Library for minimalistic gtk+3 user interfaces")
@@ -2924,7 +2942,7 @@ Unix desktop environment under X11 as well as Wayland.")
 (define-public libpanel
   (package
     (name "libpanel")
-    (version "1.0.2")
+    (version "1.2.0")
     (source
      (origin
        (method git-fetch)
@@ -2933,21 +2951,27 @@ Unix desktop environment under X11 as well as Wayland.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "10lkysbwg9w0lm1hj7lw4g7y9j8b88kmq07nfgx0r6f319znj12v"))))
+        (base32 "0wal073anl6iviyljyr8pw0m7av4ik6azpmrwzxw4snp95ib27aq"))))
     (build-system meson-build-system)
     (arguments
-     (list #:configure-flags #~(list "-Ddocs=disabled")  ;fontconfig issue
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'disable-gtk-update-icon-cache
-                          (lambda _
-                            (substitute* "meson.build"
-                              (("gtk_update_icon_cache: true")
-                               "gtk_update_icon_cache: false")))))))
-    (native-inputs (list `(,glib-next "bin")
-                         gobject-introspection
-                         pkg-config
-                         vala))
-    (inputs (list glib-next gtk libadwaita))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-gtk-update-icon-cache
+            (lambda _
+              (substitute* "meson.build"
+                (("gtk_update_icon_cache: true")
+                 "gtk_update_icon_cache: false"))))
+          (add-before 'build 'set-home
+            (lambda _
+              (setenv "HOME" (getcwd)))))))
+    (native-inputs
+     (list gi-docgen
+           `(,glib "bin")
+           gobject-introspection
+           pkg-config
+           vala))
+    (inputs (list glib gtk libadwaita))
     (home-page "https://gitlab.gnome.org/GNOME/libpanel")
     (synopsis "Dock and panel library for GTK 4")
     (description "Libpanel provides a library to create IDE-like applications
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index f35e646f61..49b8ee7e59 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2492,7 +2492,7 @@ capabilities.")
               (setenv "DISPLAY" ":1")
               #t)))))
     (inputs
-     (list guile-3.0 guile-lib glib-next))
+     (list guile-3.0 guile-lib glib))
     (native-inputs
      (list autoconf
            automake
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 64e41b510d..c177c33d0d 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -509,6 +509,12 @@ GZip format, via a subclass of QIODevice.")
      (list
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-failing-test
+            (lambda _
+              ;; Reported as https://bugs.kde.org/show_bug.cgi?id=484306
+              (substitute* "autotests/CMakeLists.txt"
+                (("testdateserialization")
+                 ""))))
           (add-before 'check 'check-setup
             (lambda* (#:key inputs #:allow-other-keys) ;;; XXX: failing test
               (setenv "QT_QPA_PLATFORM" "offscreen")
diff --git a/gnu/packages/kde-games.scm b/gnu/packages/kde-games.scm
index dc3e81170c..e40fb3bef8 100644
--- a/gnu/packages/kde-games.scm
+++ b/gnu/packages/kde-games.scm
@@ -32,7 +32,7 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gl)
-  #:use-module ((gnu packages gnome) #:select (shared-mime-info))
+  #:use-module ((gnu packages freedesktop) #:select (shared-mime-info))
   #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages perl)
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index cc12a72a59..655ae39277 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -36,6 +36,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages docbook)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm
index e95eac4e2f..09552f33f4 100644
--- a/gnu/packages/kde-pim.scm
+++ b/gnu/packages/kde-pim.scm
@@ -36,6 +36,7 @@
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
diff --git a/gnu/packages/kde-utils.scm b/gnu/packages/kde-utils.scm
index 4e665da599..6735bf2aea 100644
--- a/gnu/packages/kde-utils.scm
+++ b/gnu/packages/kde-utils.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages cups)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib) ; dbus for tests
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gstreamer)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index af143c4e40..f22463f34d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -4357,10 +4357,9 @@ to the in-kernel OOM killer.")
     (license license:expat)))
 
 (define-public eudev
-  ;; The post-systemd fork, maintained by Gentoo.
   (package
     (name "eudev")
-    (version "3.2.11")
+    (version "3.2.14")
     (source (origin
               (method git-fetch)
               (uri (git-reference (url "https://github.com/gentoo/eudev")
@@ -4368,8 +4367,9 @@ to the in-kernel OOM killer.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dzaqwjnl55f69ird57wb6skahc6l7zs1slsrzqqfhww33icp6av"))
-              (patches (search-patches "eudev-rules-directory.patch"))))
+                "1f6lz57igi7iw2ls3fpzgw42bfznam4nf9368h7x8yf1mb737yxz"))
+              (patches (search-patches "eudev-rules-directory.patch"))
+              (modules '((guix build utils)))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -4380,6 +4380,31 @@ to the in-kernel OOM killer.")
               (substitute* "man/make.sh"
                 (("/usr/bin/xsltproc")
                  (search-input-file (or native-inputs inputs) "/bin/xsltproc")))))
+          (add-before 'bootstrap 'install-in-lib
+            (lambda _
+              ;; When the udev-service-type instantiates /etc, it collects
+              ;; hardware files from the <package>/lib/udev/hwdb.d directories
+              ;; of different packages.  Since we set sysconfdir to /etc, the
+              ;; only package-dependent location we can install hwdb files is
+              ;; in <package>/lib/udev/hwdb.d.  Eudev is configured to install
+              ;; these files in sysconfdir, but they should be placed into
+              ;; udevlibexecdir.
+              (copy-file "hwdb/Makefile.am" "hwdb/files.am")
+              (call-with-output-file "hwdb/Makefile.am"
+                (lambda (port)
+                  (format port "hardwarelibdir = $(udevlibexecdir)/hwdb.d\n")
+                  (format port "include ./files.am")))
+              (substitute* "hwdb/files.am"
+                (("dist_udevhwdb_DATA =")
+                 "dist_hardwarelib_DATA ="))
+              ;; Do not install the empty udev.conf template.
+              (substitute* "src/udev/Makefile.am"
+                (("dist_udevconf_DATA =")
+                 "dist_noinst_DATA ="))
+              ;; Do not ensure that /etc/udev/rules.d exists.
+              (substitute* "rules/Makefile.am"
+                (("\\$\\(MKDIR_P\\) \\$\\(DESTDIR\\)\\$\\(udevconfdir\\)/rules\\.d")
+                 "true"))))
           (add-after 'install 'move-static-library
             (lambda _
               (let ((source (string-append #$output "/lib/libudev.a"))
@@ -4391,19 +4416,17 @@ to the in-kernel OOM killer.")
                 ;; such that Libtool looks for it in the usual places.
                 (substitute* (string-append #$output "/lib/libudev.la")
                   (("old_library=.*")
-                   "old_library=''\n")))))
-          (add-after 'install 'build-hwdb
-            (lambda _
-              ;; Build OUT/etc/udev/hwdb.bin.  This allows 'lsusb' and
-              ;; similar tools to display product names.
-              ;;
-              ;; XXX: This can't be done when cross-compiling. Find another way
-              ;; to generate hwdb.bin for cross-built systems.
-              #$@(if (%current-target-system)
-                     #~(#t)
-                     #~((invoke (string-append #$output "/bin/udevadm")
-                                "hwdb" "--update"))))))
-       #:configure-flags #~(list "--enable-manpages")))
+                   "old_library=''\n"))))))
+      #:configure-flags
+      #~(list "--enable-manpages"
+              ;; By default, autoconf uses $prefix/etc. The udev-service-type
+              ;; makes sure /etc is set up with rules and hardware file
+              ;; descriptions.
+              "--sysconfdir=/etc")))
+    (native-search-paths
+      (list (search-path-specification
+              (variable "UDEV_HWDB_PATH")
+              (files '("lib/udev/hwdb.d")))))
     (native-inputs
      (list autoconf
            automake
diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index 7f7afec90d..b8006292ca 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -94,7 +94,7 @@ Features include:
 (define-public tuba
   (package
     (name "tuba")
-    (version "0.4.1")
+    (version "0.6.3")
     (source
      (origin
        (method git-fetch)
@@ -103,7 +103,7 @@ Features include:
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0v2ihp1dkp13jklp3kysv4blflhx3w0hwcyink4mb7hwsaqy0xnm"))))
+        (base32 "1s1iq9bwv6wp4dyvrdjdbmj9sqj9zxa0c78swcw7nhmm3fksh3vz"))))
     (build-system meson-build-system)
     (arguments
       (list
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 1b4d325649..479591889f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -127,6 +127,7 @@
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gd)
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 3010e01432..32a1ddea27 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -41,6 +41,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gnome)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 0f4c351141..b70e925d51 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -644,11 +644,9 @@ code for interfacing Caml with C from an IDL description of the C functions.")
               (sha256
                (base32
                 "1jydzw2n84cfiz9y6lk4gih4wbr8jybanmiryfs01svd07g4vpjq"))))
-    (build-system ocaml-build-system)
+    (build-system dune-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     (list #:package "extlib"))
     (native-inputs
       (list ocaml-cppo))
     (home-page "https://github.com/ygrek/ocaml-extlib")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index b6e920da1c..a0ede07d54 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1386,6 +1386,8 @@ tools_locations = {
                          ;; https://github.com/conan-io/conan/issues/13577).
                          "and not test_other_client_can_link_autotools "
                          "and not test_autotools_lib_template "
+                         ;; Sometimes fail: https://github.com/conan-io/conan/issues/15936
+                         "and not test_basic_parallel_install "
                          (if (not (string-prefix? "x86_64" system))
                              ;; These tests either assume the machine is
                              ;; x86_64, or require a cross-compiler to target
diff --git a/gnu/packages/patches/accountsservice-extensions.patch b/gnu/packages/patches/accountsservice-extensions.patch
index 2cfab580e3..8027a28a44 100644
--- a/gnu/packages/patches/accountsservice-extensions.patch
+++ b/gnu/packages/patches/accountsservice-extensions.patch
@@ -5,7 +5,7 @@ diff --git a/src/extensions.c b/src/extensions.c
 index 038dcb2..830465d 100644
 --- a/src/extensions.c
 +++ b/src/extensions.c
-@@ -121,16 +121,7 @@ daemon_read_extension_directory (GHashTable  *ifaces,
+@@ -122,15 +122,7 @@ daemon_read_extension_directory (GHashTable  *ifaces,
                          continue;
                  }
  
@@ -13,8 +13,7 @@ index 038dcb2..830465d 100644
 -                const gchar * const prefix = "../../dbus-1/interfaces/";
 -                if (g_str_has_prefix (symlink, prefix) && g_str_equal (symlink + strlen (prefix), name)) {
 -                        daemon_read_extension_file (ifaces, filename);
--                }
--                else {
+-                } else {
 -                        g_warning ("Found accounts service vendor extension symlink %s, but it must be exactly "
 -                                   "equal to '../../dbus-1/interfaces/%s' for forwards-compatibility reasons.",
 -                                   filename, name);
diff --git a/gnu/packages/patches/appstream-force-reload-stemmer.patch b/gnu/packages/patches/appstream-force-reload-stemmer.patch
new file mode 100644
index 0000000000..a2cf84c8b1
--- /dev/null
+++ b/gnu/packages/patches/appstream-force-reload-stemmer.patch
@@ -0,0 +1,89 @@
+From 32182d7a7a67d0d204cd0a37bd211bfd0177bc27 Mon Sep 17 00:00:00 2001
+Message-ID: <32182d7a7a67d0d204cd0a37bd211bfd0177bc27.1700093066.git.vivien@planete-kraus.eu>
+From: Matthias Klumpp <matthias@tenstral.net>
+Date: Thu, 16 Nov 2023 00:59:15 +0100
+Subject: [PATCH] stemmer: Resolve potential issue where stemmer may never be
+ initialized
+
+If the initial locale was equal to the current stemming language, we may
+never have initialized the stemmer (which could lead to crashes or
+stemming being disabled).
+
+So we force the reload to always happen on initialization.
+CC: #558
+---
+ src/as-stemmer.c | 33 +++++++++++++++++++++------------
+ 1 file changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/src/as-stemmer.c b/src/as-stemmer.c
+index 63d45267..16ebd09b 100644
+--- a/src/as-stemmer.c
++++ b/src/as-stemmer.c
+@@ -47,6 +47,8 @@ G_DEFINE_TYPE (AsStemmer, as_stemmer, G_TYPE_OBJECT)
+ 
+ static gpointer as_stemmer_object = NULL;
+ 
++static void as_stemmer_reload_internal (AsStemmer *stemmer, const gchar *locale, gboolean force);
++
+ /**
+  * as_stemmer_finalize:
+  **/
+@@ -76,21 +78,14 @@ as_stemmer_init (AsStemmer *stemmer)
+ 
+ 	/* we don't use the locale in XML, so it can be POSIX */
+ 	locale = as_get_current_locale_posix ();
+-	stemmer->current_lang = as_utils_locale_to_language (locale);
+ 
+-	as_stemmer_reload (stemmer, stemmer->current_lang);
++	/* force a reload for initialization */
++	as_stemmer_reload_internal (stemmer, locale, TRUE);
+ #endif
+ }
+ 
+-/**
+- * as_stemmer_reload:
+- * @stemmer: A #AsStemmer
+- * @locale: The stemming language as POSIX locale.
+- *
+- * Allows realoading the #AsStemmer with a different language.
+- */
+-void
+-as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
++static void
++as_stemmer_reload_internal (AsStemmer *stemmer, const gchar *locale, gboolean force)
+ {
+ #ifdef HAVE_STEMMING
+ 	g_autofree gchar *lang = NULL;
+@@ -99,7 +94,7 @@ as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
+ 	/* check if we need to reload */
+ 	lang = as_utils_locale_to_language (locale);
+ 	locker = g_mutex_locker_new (&stemmer->mutex);
+-	if (as_str_equal0 (lang, stemmer->current_lang)) {
++	if (!force && as_str_equal0 (lang, stemmer->current_lang)) {
+ 		g_mutex_locker_free (locker);
+ 		return;
+ 	}
+@@ -119,6 +114,20 @@ as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
+ #endif
+ }
+ 
++/**
++ * as_stemmer_reload:
++ * @stemmer: A #AsStemmer
++ * @locale: The stemming language as POSIX locale.
++ *
++ * Allows realoading the #AsStemmer with a different language.
++ * Does nothing if the stemmer is already using the selected language.
++ */
++void
++as_stemmer_reload (AsStemmer *stemmer, const gchar *locale)
++{
++	as_stemmer_reload_internal (stemmer, locale, FALSE);
++}
++
+ /**
+  * as_stemmer_stem:
+  * @stemmer: A #AsStemmer
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/calls-disable-application-test.patch b/gnu/packages/patches/calls-disable-application-test.patch
new file mode 100644
index 0000000000..f06f747487
--- /dev/null
+++ b/gnu/packages/patches/calls-disable-application-test.patch
@@ -0,0 +1,72 @@
+From e0fdae20840ffe3aeca7190eb8b1bcae70f0c93b Mon Sep 17 00:00:00 2001
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sun, 29 Oct 2023 21:03:27 +0100
+Subject: [PATCH] Disable the application test.
+
+The application test does not work in a Guix container, because an actual
+sound card is required to run this integration test.
+
+* tests/meson.build: Disable test-application.
+---
+ tests/meson.build | 38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/tests/meson.build b/tests/meson.build
+index c9bdc3d..65f9b93 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -165,24 +165,24 @@ test('dbus', t, env: test_env)
+ 
+ dbus_run_session = find_program('dbus-run-session')
+ 
+-if dbus_run_session.found ()
+-  test_sources = [ 'test-application.c' ]
+-  t = executable('application', test_sources, calls_resources,
+-                 c_args : test_cflags,
+-                 link_args: test_link_args,
+-                 pie: true,
+-                 link_with : [calls_vala, libcalls],
+-                 dependencies: calls_deps,
+-                 include_directories : [
+-                     calls_includes,
+-                   ]
+-                 )
+-  test('application',
+-      dbus_run_session,
+-      args: t.full_path(),
+-      env: test_env,
+-      timeout : 300
+-      )
+-endif
++# if dbus_run_session.found ()
++#   test_sources = [ 'test-application.c' ]
++#   t = executable('application', test_sources, calls_resources,
++#                  c_args : test_cflags,
++#                  link_args: test_link_args,
++#                  pie: true,
++#                  link_with : [calls_vala, libcalls],
++#                  dependencies: calls_deps,
++#                  include_directories : [
++#                      calls_includes,
++#                    ]
++#                  )
++#   test('application',
++#       dbus_run_session,
++#       args: t.full_path(),
++#       env: test_env,
++#       timeout : 300
++#       )
++# endif
+ 
+ endif
+
+base-commit: 936d36287324163b958c6ea0c4297c7a607ee18c
+prerequisite-patch-id: 20f8a81da35ce1797635eb310e1f85ac5ff814f6
+prerequisite-patch-id: 96768617d0a8ee8c66faa00220a1612e0f527292
+prerequisite-patch-id: 444c1ee57c24ba4b8165497b0a5885844110c59b
+prerequisite-patch-id: 9415b848ca9ee277bccbad7c3fff23230d5016f1
+prerequisite-patch-id: 3ca2a45be430041875b21f6c8dfac0bc17916abf
+prerequisite-patch-id: e8302846f4650dba9e0072c18be3459ce903fe2e
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/calls-disable-sip-test.patch b/gnu/packages/patches/calls-disable-sip-test.patch
new file mode 100644
index 0000000000..75e9294fc0
--- /dev/null
+++ b/gnu/packages/patches/calls-disable-sip-test.patch
@@ -0,0 +1,44 @@
+From 33b75bfcda3437b12b6155addeeddcea697a4270 Mon Sep 17 00:00:00 2001
+Message-ID: <33b75bfcda3437b12b6155addeeddcea697a4270.1698608762.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sun, 29 Oct 2023 20:45:24 +0100
+Subject: [PATCH] Disable the direct call SIP test.
+
+* plugins/provider/tests/test-sip.c (main): Disable it.
+---
+
+This test passes in a guix shell --container --network but not in
+guix shell --container.  The most likely cause is it requires access to the
+network.
+
+ plugins/provider/tests/test-sip.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/provider/tests/test-sip.c b/plugins/provider/tests/test-sip.c
+index 185d372..4e83d40 100644
+--- a/plugins/provider/tests/test-sip.c
++++ b/plugins/provider/tests/test-sip.c
+@@ -442,8 +442,11 @@ main (int   argc,
+   g_test_add ("/Calls/SIP/origin_call_lists", SipFixture, NULL,
+               setup_sip_origins, test_sip_origin_call_lists, tear_down_sip_origins);
+ 
+-  g_test_add ("/Calls/SIP/calls_direct_call", SipFixture, NULL,
+-              setup_sip_origins, test_sip_call_direct_calls, tear_down_sip_origins);
++  /* The direct call fails in the Guix build environment, possibly
++   * because the network is more restricted. */
++
++  /* g_test_add ("/Calls/SIP/calls_direct_call", SipFixture, NULL,
++    setup_sip_origins, test_sip_call_direct_calls, tear_down_sip_origins); */
+ 
+   ret = g_test_run ();
+ 
+
+base-commit: 936d36287324163b958c6ea0c4297c7a607ee18c
+prerequisite-patch-id: 20f8a81da35ce1797635eb310e1f85ac5ff814f6
+prerequisite-patch-id: 96768617d0a8ee8c66faa00220a1612e0f527292
+prerequisite-patch-id: 444c1ee57c24ba4b8165497b0a5885844110c59b
+prerequisite-patch-id: 9415b848ca9ee277bccbad7c3fff23230d5016f1
+prerequisite-patch-id: 3ca2a45be430041875b21f6c8dfac0bc17916abf
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/cogl-fix-double-free.patch b/gnu/packages/patches/cogl-fix-double-free.patch
new file mode 100644
index 0000000000..e7a994b33a
--- /dev/null
+++ b/gnu/packages/patches/cogl-fix-double-free.patch
@@ -0,0 +1,32 @@
+From 15d0f7d96cf53263196e26f2eb48ededdff0efeb Mon Sep 17 00:00:00 2001
+Message-ID: <15d0f7d96cf53263196e26f2eb48ededdff0efeb.1694148833.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Thu, 7 Sep 2023 22:16:48 +0200
+Subject: [PATCH] Prevent double free on context objects
+
+The display is unrefed in the context destructor, but not refed in the
+constructor.
+
+This targets an archived (read-only) repository.
+---
+ cogl/cogl-context.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cogl/cogl-context.c b/cogl/cogl-context.c
+index a7eed29a..7cdc9fe7 100644
+--- a/cogl/cogl-context.c
++++ b/cogl/cogl-context.c
+@@ -218,7 +218,7 @@ cogl_context_new (CoglDisplay *display,
+       return NULL;
+     }
+ 
+-  context->display = display;
++  context->display = cogl_object_ref (display);
+ 
+   /* This is duplicated data, but it's much more convenient to have
+      the driver attached to the context and the value is accessed a
+
+base-commit: 61d966c7442d521e38572b7f93ac7b8973a9c65e
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/duc-fix-test-sh.patch b/gnu/packages/patches/duc-fix-test-sh.patch
new file mode 100644
index 0000000000..8b79e4bd03
--- /dev/null
+++ b/gnu/packages/patches/duc-fix-test-sh.patch
@@ -0,0 +1,70 @@
+From a84835e481d9b5fcfc101bb1fa5aba38a245b6f3 Mon Sep 17 00:00:00 2001
+Message-ID: <a84835e481d9b5fcfc101bb1fa5aba38a245b6f3.1711177846.git.vivien@planete-kraus.eu>
+From: Fabio Natali <me@fabionatali.com>
+Date: Wed, 30 Aug 2023 11:35:40 +0100
+Subject: [PATCH] Fix test.sh which used to fail in some circumstances
+
+duc's behaviour may legitimately vary depending on the system it is being run
+on. The test.sh script used to fail in some circumstances as it was too strict
+and it did not account for some legitimate behaviour differences.
+
+Fix: update `test.sh' variable
+---
+
+This is a squash of pull request https://github.com/zevv/duc/pull/318,
+waiting to be merged.
+
+ test.sh | 22 ++++++++++++++++------
+ 1 file changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/test.sh b/test.sh
+index eb592be..7668499 100755
+--- a/test.sh
++++ b/test.sh
+@@ -130,8 +130,8 @@ fi
+ # Actual tests are below.  If you add test cases above, these need to be tweaked.
+ #---------------------------------------------------------------------------------
+ 
+-
+-cat ${DUC_TEST_DIR}.out | grep -q "Indexed 77 files and 47 directories, (91869B apparent, 540672B actual)"
++# An exact match is expected on the apparent size; the actual size may vary.
++cat ${DUC_TEST_DIR}.out | grep -q "Indexed 77 files and 47 directories, (91869B apparent, [0-9]*B actual)"
+ 
+ if [ "$?" = "0" ]; then
+ 	echo "report: ok"
+@@ -153,16 +153,26 @@ if [ "$?" != "0" ]; then
+ 	exit 1
+ fi
+ 
+-testsum="33e2be27a9e70e81d4006a2d7b555948"
++# When two or more hard links point to the same file and when running duc with
++# the `--check-hard-links' option, only one of the hard links will be
++# counted. However, duc may pick up and display a different hard link depending
++# on the system it is being run on. Since our tests include three hard links to
++# the same file, we should be expecting three possible outcomes, all equally
++# valid, each corresponding to one of the following MD5 checksums.
++testsum0="78dbf880ef6917ea665fddb5ebb44428"
++testsum1="38ab7b7d1ec6ac57d672c5618371386d"
++testsum2="33e2be27a9e70e81d4006a2d7b555948"
+ md5sum ${DUC_TEST_DIR}.out > /tmp/.duc.md5sum
+-grep -q $testsum /tmp/.duc.md5sum
++grep -q "$testsum0\|$testsum1\|$testsum2" /tmp/.duc.md5sum
+ 
+ if [ "$?" = "0" ]; then
+ 	echo "md5sum: ok"
+ else
+ 	echo "md5sum: failed"
+-	echo "expected: "
+-	echo "$testsum  ${DUC_TEST_DIR}.out"
++	echo "expected one of: "
++	echo "$testsum0  ${DUC_TEST_DIR}.out"
++	echo "$testsum1  ${DUC_TEST_DIR}.out"
++	echo "$testsum2  ${DUC_TEST_DIR}.out"
+ 	echo "got: "
+ 	cat /tmp/.duc.md5sum
+ 	exit 1
+
+base-commit: b8f9659688a38476df9f613be3342bb8e2d65402
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/eudev-rules-directory.patch b/gnu/packages/patches/eudev-rules-directory.patch
index 54fc01c6d5..c4b1cfae39 100644
--- a/gnu/packages/patches/eudev-rules-directory.patch
+++ b/gnu/packages/patches/eudev-rules-directory.patch
@@ -4,9 +4,9 @@ The old udev 182 supported $UDEV_CONFIG_FILE, which in turn allowed
 the search path to be customized, but eudev no longer has this, hence
 this hack.
 
---- eudev-3.1.5/src/udev/udev-rules.c	2015-10-13 06:22:14.000000000 +0800
-+++ eudev-3.1.5/src/udev/udev-rules.c	2015-10-16 20:45:38.491934336 +0800
-@@ -47,15 +47,11 @@
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -48,16 +48,11 @@ struct uid_gid {
          };
  };
  
@@ -20,11 +20,12 @@ this hack.
 -        "/lib/udev/rules.d",
 -        "/usr/lib/udev/rules.d",
 -#endif
+-        "/usr/local/lib/udev/rules.d",
 +        NULL,			/* placeholder for $EUDEV_RULES_DIRECTORY */
          NULL};
  
  struct udev_rules {
-@@ -1704,6 +1700,9 @@
+@@ -1718,6 +1713,9 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) {
  
          udev_rules_check_timestamp(rules);
  
diff --git a/gnu/packages/patches/feedbackd-use-system-gmobile.patch b/gnu/packages/patches/feedbackd-use-system-gmobile.patch
new file mode 100644
index 0000000000..f0a0449472
--- /dev/null
+++ b/gnu/packages/patches/feedbackd-use-system-gmobile.patch
@@ -0,0 +1,42 @@
+From af9e72124b12ca481fd3592f9c8ea2649f7e4c80 Mon Sep 17 00:00:00 2001
+Message-ID: <af9e72124b12ca481fd3592f9c8ea2649f7e4c80.1698775513.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sun, 29 Oct 2023 19:12:27 +0100
+Subject: [PATCH] Look for a system-installed gmobile first.
+
+Meson lets projects use a dependency with fallback to a submodule, in
+case the dependency is not installed.
+
+* meson.build (gmobile_subp): Convert to a dependency with subproject
+fallback.
+---
+I am waiting for Purism to approve my account before I can report this.
+
+ meson.build | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 8725e76..e5504be 100644
+--- a/meson.build
++++ b/meson.build
+@@ -14,13 +14,13 @@ gio_unix       = dependency('gio-unix-2.0', version: '>=2.50.0')
+ glib           = dependency('glib-2.0', version: '>=2.50.0')
+ if get_option('daemon')
+   gobject        = dependency('gobject-2.0', version: '>=2.50.0')
+-  gmobile_subp   = subproject('gmobile',
++  gmobile        = dependency('gmobile',
++                              fallback: ['gmobile', 'gmobile_dep'],
+                               default_options: [
+                                 'examples=false',
+                                 'gtk_doc=false',
+                                 'tests=false',
+                               ])
+-  gmobile        = gmobile_subp.get_variable('gmobile_dep')
+   gsound         = dependency('gsound')
+   gudev          = dependency('gudev-1.0', version: '>=232')
+   json_glib      = dependency('json-glib-1.0')
+
+base-commit: 853bd6d7ea8455efea063ba7c4f29ce8c203285f
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/gdm-elogind-support.patch b/gnu/packages/patches/gdm-elogind-support.patch
index 5c8e3bd610..b27e000585 100644
--- a/gnu/packages/patches/gdm-elogind-support.patch
+++ b/gnu/packages/patches/gdm-elogind-support.patch
@@ -18,10 +18,10 @@ system and user units.
  meson_options.txt                        |  5 +-
  6 files changed, 66 insertions(+), 42 deletions(-)
 
-diff --git a/common/meson.build b/common/meson.build
-index 074dd92e..bca58f7c 100644
---- a/common/meson.build
-+++ b/common/meson.build
+Index: gdm-44.1/common/meson.build
+===================================================================
+--- gdm-44.1.orig/common/meson.build
++++ gdm-44.1/common/meson.build
 @@ -11,7 +11,7 @@ libgdmcommon_src = files(
  )
  
@@ -31,10 +31,10 @@ index 074dd92e..bca58f7c 100644
    gobject_dep,
    gio_dep,
    gio_unix_dep,
-diff --git a/data/meson.build b/data/meson.build
-index 2dec4c23..c3452e1c 100644
---- a/data/meson.build
-+++ b/data/meson.build
+Index: gdm-44.1/data/meson.build
+===================================================================
+--- gdm-44.1.orig/data/meson.build
++++ gdm-44.1/data/meson.build
 @@ -164,41 +164,53 @@ else
    service_config.set('PLYMOUTH_QUIT_SERVICE', '')
  endif
@@ -114,10 +114,10 @@ index 2dec4c23..c3452e1c 100644
  
  # XSession
  if get_option('gdm-xsession')
-diff --git a/libgdm/meson.build b/libgdm/meson.build
-index 3f8cafbb..83e95151 100644
---- a/libgdm/meson.build
-+++ b/libgdm/meson.build
+Index: gdm-44.1/libgdm/meson.build
+===================================================================
+--- gdm-44.1.orig/libgdm/meson.build
++++ gdm-44.1/libgdm/meson.build
 @@ -56,7 +56,7 @@ libgdm_deps = [
    glib_dep,
    gio_dep,
@@ -127,55 +127,46 @@ index 3f8cafbb..83e95151 100644
    libgdmcommon_dep,
  ]
  
-diff --git a/meson.build b/meson.build
-index 845f673e..d0ca41ef 100644
---- a/meson.build
-+++ b/meson.build
-@@ -96,21 +96,30 @@ xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp'))
- if xdmcp_dep.found() and get_option('tcp-wrappers')
+Index: gdm-44.1/meson.build
+===================================================================
+--- gdm-44.1.orig/meson.build
++++ gdm-44.1/meson.build
+@@ -100,16 +100,24 @@ if xdmcp_dep.found() and get_option('tcp
    libwrap_dep = cc.find_library('wrap')
  endif
--# systemd
+ # systemd
 -systemd_dep = dependency('systemd')
 -libsystemd_dep = dependency('libsystemd')
--if meson.version().version_compare('>= 0.53')
--  systemd_multiseat_x = find_program('systemd-multi-seat-x',
--    required: false,
--    dirs: [
--      systemd_dep.get_pkgconfig_variable('systemdutildir'),
--      '/lib/systemd',
--      '/usr/lib/systemd',
--    ])
-+
+-systemd_multiseat_x = find_program('systemd-multi-seat-x',
+-  required: false,
+-  dirs: [
+-    systemd_dep.get_pkgconfig_variable('systemdutildir'),
+-    '/lib/systemd',
+-    '/usr/lib/systemd',
+-  ])
+-systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
 +logind_provider = get_option('logind-provider')
 +systemd_dep = dependency('systemd', required: false)
 +if logind_provider == 'systemd'
 +  libsystemd_dep = dependency('libsystemd')
 +  logind_dep = libsystemd_dep
-+  if meson.version().version_compare('>= 0.53')
-+    systemd_multiseat_x = find_program('systemd-multi-seat-x',
-+      required: false,
-+      dirs: [
-+        systemd_dep.get_pkgconfig_variable('systemdutildir'),
-+        '/lib/systemd',
-+        '/usr/lib/systemd',
-+      ])
-+  else
-+    systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
-+  endif
++  systemd_multiseat_x = find_program('systemd-multi-seat-x',
++    required: false,
++    dirs: [
++      systemd_dep.get_pkgconfig_variable('systemdutildir'),
++      '/lib/systemd',
++      '/usr/lib/systemd',
++    ])
 +  systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
- else
--  systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
++else
 +  elogind_dep = dependency('libelogind')
 +  logind_dep = elogind_dep
 +  systemd_x_server = 'disabled'
- endif
--systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
-+
++endif
  # Plymouth
  plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
  # Check for Solaris auditing API (ADT)
-@@ -319,6 +328,7 @@ summary({
+@@ -319,6 +327,7 @@ summary({
      'PAM Syslog': have_pam_syslog,
      'Supports PAM Extensions': pam_extensions_supported,
      'SeLinux': libselinux_dep.found(),
@@ -183,11 +174,11 @@ index 845f673e..d0ca41ef 100644
      'Use GDM Xsession': get_option('gdm-xsession'),
      'Use UserDisplayServer': get_option('user-display-server'),
      'Use SystemdJournal': get_option('systemd-journal'),
-diff --git a/meson_options.txt b/meson_options.txt
-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
+Index: gdm-44.1/meson_options.txt
+===================================================================
+--- gdm-44.1.orig/meson_options.txt
++++ gdm-44.1/meson_options.txt
+@@ -12,6 +12,7 @@ option('initial-vt', type: 'integer', va
  option('ipv6', type: 'boolean', value: false, description: 'Enables compilation of IPv6 code.')
  option('lang-file', type: 'string', value: '', description: 'File containing default language settings.')
  option('libaudit', type: 'feature', value: 'auto', description: 'Add Linux audit support.')
@@ -195,7 +186,7 @@ index 14e0b908..5135d7d6 100644
  option('log-dir', type: 'string', value: '/var/log/gdm', description: 'Log directory.')
  option('pam-mod-dir', type: 'string', value: '', description: 'Directory to install PAM modules in.')
  option('pam-prefix', type: 'string', value: '', description: 'Specify where PAM files go.')
-@@ -27,8 +28,8 @@ option('solaris', type: 'boolean', value: false, description: 'Build for Solaris
+@@ -27,8 +28,8 @@ option('solaris', type: 'boolean', value
  option('split-authentication', type: 'boolean', value: true, description: 'Enable multiple simultaneous PAM conversations during login.')
  option('sysconfsubdir', type: 'string', value: 'gdm', description: 'Directory name used under sysconfdir.')
  option('systemd-journal', type: 'boolean', value: true, description: 'Use journald support.')
diff --git a/gnu/packages/patches/gegl-compatibility-old-librsvg.patch b/gnu/packages/patches/gegl-compatibility-old-librsvg.patch
new file mode 100644
index 0000000000..3e5733f9fd
--- /dev/null
+++ b/gnu/packages/patches/gegl-compatibility-old-librsvg.patch
@@ -0,0 +1,80 @@
+From a99a93e5c9013bd4101f5058cdee7d0cf30234fe Mon Sep 17 00:00:00 2001
+Message-ID: <a99a93e5c9013bd4101f5058cdee7d0cf30234fe.1694554961.git.vivien@planete-kraus.eu>
+From: Jehan <jehan@girinstud.io>
+Date: Wed, 5 Jul 2023 21:18:19 +0200
+Subject: [PATCH] Issue #333: continuing to support librsvg 2.40.x (C
+ versions).
+
+Commit 9beeefcbe uses too new functions of librsvg. We could just bump
+the minimum required version but there are issues with Rust not being
+available on every platform yet. So instead, let's add some conditional
+code paths, so that it still builds with librsvg 2.40.x (which was the
+last versions fully in C) while we use newer code and no warnings when
+using newer versions.
+---
+ operations/external/svg-load.c | 25 ++++++++++++++++++++-----
+ 1 file changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/operations/external/svg-load.c b/operations/external/svg-load.c
+index 3312a0c0a..15c0b30b7 100644
+--- a/operations/external/svg-load.c
++++ b/operations/external/svg-load.c
+@@ -76,16 +76,25 @@ query_svg (GeglOperation *operation)
+ {
+   GeglProperties *o = GEGL_PROPERTIES (operation);
+   Priv *p = (Priv*) o->user_data;
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
+   gdouble out_width, out_height;
++#else
++  RsvgDimensionData dimensions;
++#endif
+ 
+   g_return_val_if_fail (p->handle != NULL, FALSE);
+ 
+-  rsvg_handle_get_intrinsic_size_in_pixels (p->handle, &out_width, &out_height);
+-
+   p->format = babl_format ("R'G'B'A u8");
+ 
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
++  rsvg_handle_get_intrinsic_size_in_pixels (p->handle, &out_width, &out_height);
+   p->height = out_height;
+-  p->width = out_width;
++  p->width  = out_width;
++#else
++  rsvg_handle_get_dimensions (p->handle, &dimensions);
++  p->height = dimensions.height;
++  p->width  = dimensions.width;
++#endif
+ 
+   return TRUE;
+ }
+@@ -98,10 +107,12 @@ load_svg (GeglOperation *operation,
+ {
+     GeglProperties    *o = GEGL_PROPERTIES (operation);
+     Priv              *p = (Priv*) o->user_data;
+-    RsvgRectangle      svg_rect = {0.0, 0.0, width, height};
+     cairo_surface_t   *surface;
+     cairo_t           *cr;
+-    GError            *error = NULL;
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
++    GError            *error    = NULL;
++    RsvgRectangle      svg_rect = {0.0, 0.0, width, height};
++#endif
+ 
+     g_return_val_if_fail (p->handle != NULL, -1);
+ 
+@@ -115,7 +126,11 @@ load_svg (GeglOperation *operation,
+                      (double)height / (double)p->height);
+       }
+ 
++#if LIBRSVG_CHECK_VERSION(2, 52, 0)
+     rsvg_handle_render_document (p->handle, cr, &svg_rect, &error);
++#else
++    rsvg_handle_render_cairo (p->handle, cr);
++#endif
+ 
+     cairo_surface_flush (surface);
+ 
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/gitg-fix-positional-argument.patch b/gnu/packages/patches/gitg-fix-positional-argument.patch
deleted file mode 100644
index 1d3513921c..0000000000
--- a/gnu/packages/patches/gitg-fix-positional-argument.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 1978973b12848741b08695ec2020bac98584d636 Mon Sep 17 00:00:00 2001
-From: Jan Beich <jbeich@FreeBSD.org>
-Date: Mon, 24 Jan 2022 12:17:52 +0000
-Subject: [PATCH] meson: drop unused argument for i18n.merge_file()
-
-Ignored in Meson < 0.60.0, deprecated since 0.60.1 and fatal since 0.61.0.
-
-data/meson.build:8:0: ERROR: Function does not take positional arguments.
-data/meson.build:44:0: ERROR: Function does not take positional arguments.
----
- data/meson.build | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/data/meson.build b/data/meson.build
-index a8b90fd1..2413531d 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -6,7 +6,6 @@ desktop_config = configuration_data()
- desktop_config.set('icon', application_id)
- desktop_config.set('binary', gitg_name)
- i18n.merge_file(
--  desktop,
-   type: 'desktop',
-   input: configure_file(
-     input: desktop + '.in.in',
-@@ -42,7 +41,6 @@ appdata_config = configuration_data()
- appdata_config.set('app-id', application_id)
- appdata_config.set('gettext', gitg_name)
- i18n.merge_file(
--  appdata,
-   type: 'xml',
-   input: configure_file(
-     input: appdata + '.in.in',
--- 
-GitLab
-
diff --git a/gnu/packages/patches/glib-networking-gnutls-binding.patch b/gnu/packages/patches/glib-networking-gnutls-binding.patch
deleted file mode 100644
index 91d0743056..0000000000
--- a/gnu/packages/patches/glib-networking-gnutls-binding.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Skip failing test in 'test_connection_binding_match_tls_unique'
-in 'tls/tests/connection.c' when building glib-networking against
-GnuTLS 3.7.2.  The failure stems from the fact that
-'gnutls_session_channel_binding' returns GNUTLS_E_INVALID_REQUEST
-is known upstream:
-
-  https://gitlab.gnome.org/GNOME/glib-networking/-/issues/164
-
-diff --git a/tls/tests/connection.c b/tls/tests/connection.c
-index 036df04..347c7a4 100644
---- a/tls/tests/connection.c
-+++ b/tls/tests/connection.c
-@@ -3037,8 +3037,6 @@ main (int   argc,
-               setup_connection, test_connection_missing_server_identity, teardown_connection);
-   g_test_add ("/tls/" BACKEND "/connection/peer-certificate-notify", TestConnection, NULL,
-               setup_connection, test_peer_certificate_notify, teardown_connection);
--  g_test_add ("/tls/" BACKEND "/connection/binding/match-tls-unique", TestConnection, NULL,
--              setup_connection, test_connection_binding_match_tls_unique, teardown_connection);
-   g_test_add ("/tls/" BACKEND "/connection/binding/match-tls-server-end-point", TestConnection, NULL,
-               setup_connection, test_connection_binding_match_tls_server_end_point, teardown_connection);
-   g_test_add ("/tls/" BACKEND "/connection/binding/match-tls-exporter", TestConnection, NULL,
diff --git a/gnu/packages/patches/glib-skip-failing-test.patch b/gnu/packages/patches/glib-skip-failing-test.patch
index c7706aaa74..3fde5cb1e2 100644
--- a/gnu/packages/patches/glib-skip-failing-test.patch
+++ b/gnu/packages/patches/glib-skip-failing-test.patch
@@ -10,12 +10,13 @@ diff --git a/gio/tests/meson.build b/gio/tests/meson.build
 index a926ae0..4fdbe7a 100644
 --- a/gio/tests/meson.build
 +++ b/gio/tests/meson.build
-@@ -317,10 +317,6 @@ if host_machine.system() != 'windows'
+@@ -317,11 +317,6 @@ if host_machine.system() != 'windows'
          'extra_sources' : [extra_sources, gdbus_test_codegen_generated, gdbus_test_codegen_generated_interface_info],
          'c_args' : ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_32'],
        },
 -      'gdbus-threading' : {
 -        'extra_sources' : extra_sources,
+-        'extra_programs': extra_programs,
 -        'suite' : ['slow'],
 -      },
        'gmenumodel' : {
diff --git a/gnu/packages/patches/gmobile-make-it-installable.patch b/gnu/packages/patches/gmobile-make-it-installable.patch
new file mode 100644
index 0000000000..9db6554877
--- /dev/null
+++ b/gnu/packages/patches/gmobile-make-it-installable.patch
@@ -0,0 +1,89 @@
+From c1ea43a45f4588f21752b0ad679c43350a9c8905 Mon Sep 17 00:00:00 2001
+Message-ID: <c1ea43a45f4588f21752b0ad679c43350a9c8905.1698604357.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sun, 29 Oct 2023 19:00:44 +0100
+Subject: [PATCH] Install gmobile as a shared library.
+
+Tracked at https://gitlab.gnome.org/guidog/gmobile/-/issues/1
+
+* src/meson.build: Install the header files.  Import pkgconfig.
+Generate a pkg-config definition.
+(gm_lib): use "library", not "static_library".  Install it.
+(gmobile_gir): Install it.
+* meson.build: Install gm-config.h.
+---
+ meson.build     |  1 +
+ src/meson.build | 22 +++++++++++++++++++---
+ 2 files changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index e9f6c62..51ebeac 100644
+--- a/meson.build
++++ b/meson.build
+@@ -83,6 +83,7 @@ root_inc = include_directories('.')
+ configure_file(
+   output: 'gm-config.h',
+   configuration: config_h,
++  install_dir: get_option('includedir')
+ )
+ 
+ subdir('data')
+diff --git a/src/meson.build b/src/meson.build
+index ee98a39..3dedbe4 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -1,3 +1,5 @@
++pkg = import('pkgconfig')
++
+ gm_deps = [
+   gio_dep,
+   glib_dep,
+@@ -37,18 +39,33 @@ gm_c_args = [
+   '-DG_LOG_DOMAIN="gmobile"',
+ ]
+ 
+-gm_lib = static_library(
++gm_lib = library(
+   'gmobile',
+   gm_sources,
+   include_directories: root_inc,
+   c_args: gm_c_args,
+-  dependencies: gm_deps)
++  dependencies: gm_deps,
++  install: true)
++
++pkg.generate(gm_lib)
+ 
+ gmobile_dep = declare_dependency(
+   include_directories: [root_inc, include_directories('.')],
+   dependencies: gm_deps,
+   link_with: gm_lib)
+ 
++install_headers(
++  'gmobile.h',
++  'gm-cutout.h',
++  'gm-device-info.h',
++  'gm-device-tree.h',
++  'gm-display-panel.h',
++  'gm-error.h',
++  'gm-main.h',
++  'gm-rect.h',
++  'gm-svg-path.h',
++  'gm-timeout.h')
++
+ if get_option('gtk_doc')
+   gmobile_gir_extra_args = [
+     '--c-include=gmobile.h',
+@@ -66,7 +83,6 @@ if get_option('gtk_doc')
+        identifier_prefix: 'Gm',
+                link_with: gm_lib,
+                 includes: ['Gio-2.0'],
+-                 install: false,
+               extra_args: gmobile_gir_extra_args,
+    )
+ endif
+
+base-commit: 382fc89472176d2f1d435517cad53d969d8b8eff
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/gnome-control-center-firmware-security.patch b/gnu/packages/patches/gnome-control-center-firmware-security.patch
new file mode 100644
index 0000000000..fd9d7b8ff4
--- /dev/null
+++ b/gnu/packages/patches/gnome-control-center-firmware-security.patch
@@ -0,0 +1,33 @@
+From: Jeremy Bicha <jeremy.bicha@canonical.com>
+Date: Mon, 22 Aug 2022 08:31:15 -0400
+Subject: firmware-security: Disable
+
+Not yet useful enough to justify its inclusion by default here
+
+You can get the same info by running
+fwupdmgr security
+
+If you drop this patch, add a Depends: fwupd [linux-any]
+
+https://launchpad.net/bugs/1987162
+
+https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1938
+
+[Stolen from the debian package]
+---
+ shell/cc-panel-loader.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c
+index 17f9601..1b819a5 100644
+--- a/shell/cc-panel-loader.c
++++ b/shell/cc-panel-loader.c
+@@ -113,7 +113,7 @@ static CcPanelLoaderVtable default_panels[] =
+   PANEL_TYPE("info-overview",    cc_info_overview_panel_get_type,        NULL),
+   PANEL_TYPE("keyboard",         cc_keyboard_panel_get_type,             NULL),
+   PANEL_TYPE("location",         cc_location_panel_get_type,             NULL),
+-  PANEL_TYPE("firmware-security",cc_firmware_security_panel_get_type,    cc_firmware_security_panel_static_init_func),
++  // PANEL_TYPE("firmware-security",cc_firmware_security_panel_get_type,    cc_firmware_security_panel_static_init_func),
+   PANEL_TYPE("microphone",       cc_microphone_panel_get_type,           NULL),
+   PANEL_TYPE("mouse",            cc_mouse_panel_get_type,                NULL),
+   PANEL_TYPE("multitasking",     cc_multitasking_panel_get_type,         NULL),
diff --git a/gnu/packages/patches/gtk2-harden-list-store.patch b/gnu/packages/patches/gtk2-harden-list-store.patch
new file mode 100644
index 0000000000..f49dc3bc77
--- /dev/null
+++ b/gnu/packages/patches/gtk2-harden-list-store.patch
@@ -0,0 +1,42 @@
+Backport the implementation of gtk_list_store_iter_is_valid from gtk+-3.
+
+Index: gtk+-2.24.33/gtk/gtkliststore.c
+===================================================================
+--- gtk+-2.24.33.orig/gtk/gtkliststore.c
++++ gtk+-2.24.33/gtk/gtkliststore.c
+@@ -1195,16 +1195,31 @@ gboolean
+ gtk_list_store_iter_is_valid (GtkListStore *list_store,
+                               GtkTreeIter  *iter)
+ {
++  GSequenceIter *seq_iter;
++
+   g_return_val_if_fail (GTK_IS_LIST_STORE (list_store), FALSE);
+   g_return_val_if_fail (iter != NULL, FALSE);
+ 
+-  if (!VALID_ITER (iter, list_store))
+-    return FALSE;
++  /* can't use VALID_ITER() here, because iter might point
++   * to random memory.
++   *
++   * We MUST NOT dereference it.
++   */
+ 
+-  if (g_sequence_iter_get_sequence (iter->user_data) != list_store->seq)
++  if (iter == NULL ||
++      iter->user_data == NULL ||
++      list_store->stamp != iter->stamp)
+     return FALSE;
+ 
+-  return TRUE;
++  for (seq_iter = g_sequence_get_begin_iter (list_store->seq);
++       !g_sequence_iter_is_end (seq_iter);
++       seq_iter = g_sequence_iter_next (seq_iter))
++    {
++      if (seq_iter == iter->user_data)
++        return TRUE;
++    }
++
++  return FALSE;
+ }
+ 
+ static gboolean real_gtk_list_store_row_draggable (GtkTreeDragSource *drag_source,
diff --git a/gnu/packages/patches/libcall-ui-make-it-installable.patch b/gnu/packages/patches/libcall-ui-make-it-installable.patch
new file mode 100644
index 0000000000..078422913d
--- /dev/null
+++ b/gnu/packages/patches/libcall-ui-make-it-installable.patch
@@ -0,0 +1,81 @@
+From 1a79c18e85232a6f56a58ec99271b92d5b0e6dca Mon Sep 17 00:00:00 2001
+Message-ID: <1a79c18e85232a6f56a58ec99271b92d5b0e6dca.1698606228.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sun, 29 Oct 2023 19:42:55 +0100
+Subject: [PATCH] Install libcall-ui.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Tracked at https://gitlab.gnome.org/World/Phosh/libcall-ui/-/issues/27
+
+* src/meson.build: Require pkgconfig.  Install a pkg-config
+definition.  Install the headers.
+(call_ui_lib): Install it.  Use “library”, not “static_library”.
+* meson.build (config_h): Install the config.h file.
+(call_ui_enum_sources): Install the header file.
+---
+ meson.build     |  1 +
+ src/meson.build | 22 +++++++++++++++++++---
+ 2 files changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 6d96178..80514ba 100644
+--- a/meson.build
++++ b/meson.build
+@@ -93,6 +93,7 @@ configure_file(
+   input: 'cui-config.h.in',
+   output: 'cui-config.h',
+   configuration: config_h,
++  install_dir: get_option('includedir')
+ )
+ 
+ #subdir('data')
+diff --git a/src/meson.build b/src/meson.build
+index bdb347c..2f9fa0c 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -1,7 +1,11 @@
++pkg = import('pkgconfig')
++
+ call_ui_enum_headers = files(['cui-call.h',
+                              ])
+ call_ui_enum_sources = gnome.mkenums_simple('cui-enums',
+-                                            sources : call_ui_enum_headers)
++                                            sources : call_ui_enum_headers,
++                                            install_header: true,
++                                            install_dir: get_option('includedir'))
+ 
+ call_ui_resources = gnome.compile_resources(
+    'cui-resources',
+@@ -50,11 +54,23 @@ call_ui_c_args = [
+   '-DG_LOG_DOMAIN="Cui"',
+ ]
+ 
+-call_ui_lib = static_library('call-ui',
++call_ui_lib = library('call-ui',
+   call_ui_sources,
+   c_args: call_ui_c_args,
+   include_directories: [ root_inc, src_inc ],
+-  dependencies: call_ui_deps)
++  dependencies: call_ui_deps,
++  install: true)
++
++pkg.generate(call_ui_lib)
++
++install_headers(
++ 'call-ui.h',
++ 'cui-call.h',
++ 'cui-call-display.h',
++ 'cui-main.h',
++ 'cui-dialpad.h',
++ 'cui-keypad.h',
++)
+ 
+ libcall_ui_dep = declare_dependency(
+   sources: call_ui_enum_sources,
+
+base-commit: 817d770cfa6876d37c4a6d09b00c9bdedfdce8b7
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/libgda-disable-data-proxy-test.patch b/gnu/packages/patches/libgda-disable-data-proxy-test.patch
new file mode 100644
index 0000000000..b93f9d3f9b
--- /dev/null
+++ b/gnu/packages/patches/libgda-disable-data-proxy-test.patch
@@ -0,0 +1,59 @@
+From c0bb1ed662011207ee13d5a20a70f9b55166aa13 Mon Sep 17 00:00:00 2001
+From: Daniel Espinosa <esodan@gmail.com>
+Date: Wed, 1 Nov 2023 15:00:40 -0500
+Subject: [PATCH] GdaDataProxy: is no thread save so disabling its test
+
+Has been difficutl to reproduce the problem when this test
+is running in Ci, so disabling until we can re-implement it
+is the better choice
+---
+ libgda/gda-data-proxy.h       |  4 +++-
+ tests/data-models/meson.build | 17 +++++++++--------
+ 2 files changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/libgda/gda-data-proxy.h b/libgda/gda-data-proxy.h
+index 4c31ab69b..ba0fa72b3 100644
+--- a/libgda/gda-data-proxy.h
++++ b/libgda/gda-data-proxy.h
+@@ -77,7 +77,9 @@ struct _GdaDataProxyClass
+  * @stability: Stable
+  * @see_also: #GdaDataModel
+  *
+- * This object stores modifications to be made to a #GdaDataModel object which is proxied until the modifications are actually
++ *  This object, is no thread save, so use with care.
++ *
++ *  This object stores modifications to be made to a #GdaDataModel object which is proxied until the modifications are actually
+  *  written to the #GdaDataModel, it can also filter the proxied data model to show only a subset (a defined number of continuous
+  *  rows or by a filter to apply).
+  *
+diff --git a/tests/data-models/meson.build b/tests/data-models/meson.build
+index a8c6a29d8..e0ec8692a 100644
+--- a/tests/data-models/meson.build
++++ b/tests/data-models/meson.build
+@@ -61,14 +61,15 @@ tchkdp = executable('check_data_proxy',
+ 		],
+ 	install: false
+ 	)
+-test('DataProxy', tchkdp,
+-	timeout: 100,
+-	workdir: meson.current_build_dir(),
+-	env: [
+-		'GDA_TOP_SRC_DIR='+gda_top_src,
+-		'GDA_TOP_BUILD_DIR='+gda_top_build
+-		]
+-	)
++# This test is no thread save so disabling
++#test('DataProxy', tchkdp,
++#	timeout: 100,
++#	workdir: meson.current_build_dir(),
++#	env: [
++#		'GDA_TOP_SRC_DIR='+gda_top_src,
++#		'GDA_TOP_BUILD_DIR='+gda_top_build
++#		]
++#	)
+ 
+ tchkmc = executable('check_model_copy',
+ 	['check_model_copy.c'] + common_sources,
+-- 
+GitLab
+
diff --git a/gnu/packages/patches/mm-common-reproducible-tarball.patch b/gnu/packages/patches/mm-common-reproducible-tarball.patch
deleted file mode 100644
index f0890aaf57..0000000000
--- a/gnu/packages/patches/mm-common-reproducible-tarball.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 024c121c844a4ec920133eb3f7e6b6ee8044c0b6 Mon Sep 17 00:00:00 2001
-From: Vagrant Cascadian <vagrant@reproducible-builds.org>
-Date: Sat, 12 Dec 2020 04:05:56 +0000
-Original-Patch: https://bugs.debian.org/977177
-Subject: [PATCH] Set uid, username, gid, and group name on files in
- generated tarball.
-
-The user and group may otherwise vary between builds on different systems.
-
----
- util/meson_aux/skeletonmm-tarball.py | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/util/meson_aux/skeletonmm-tarball.py b/util/meson_aux/skeletonmm-tarball.py
-index db9e650..89049b6 100755
---- a/util/meson_aux/skeletonmm-tarball.py
-+++ b/util/meson_aux/skeletonmm-tarball.py
-@@ -39,10 +39,18 @@ elif output_file.endswith('.gz'):
- else:
-   mode = 'w'
- 
-+def reproducible(tarinfo):
-+  # Set consistent user and group on files in the tar archive
-+  tarinfo.uid = 0
-+  tarinfo.uname = 'root'
-+  tarinfo.gid = 0
-+  tarinfo.gname = 'root'
-+  return tarinfo
-+
- with tarfile.open(output_file, mode=mode) as tar_file:
-   os.chdir(source_dir) # Input filenames are relative to source_dir.
-   for file in sys.argv[3:]:
--    tar_file.add(file)
-+    tar_file.add(file, filter=reproducible)
- # Errors raise exceptions. If an exception is raised, Meson+ninja will notice
- # that the command failed, despite exit(0).
- sys.exit(0)
--- 
-2.29.2
-
diff --git a/gnu/packages/patches/mutter-fix-inverted-test.patch b/gnu/packages/patches/mutter-fix-inverted-test.patch
deleted file mode 100644
index 3676b31def..0000000000
--- a/gnu/packages/patches/mutter-fix-inverted-test.patch
+++ /dev/null
@@ -1,290 +0,0 @@
-From 5a83e8ef8250526a40e8e69c6398f990ab482b2f Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 2 Jun 2023 14:42:51 +0200
-Subject: [PATCH 1/5] cogl/gl-framebuffer: Fix spurious trailing spaces
-
-Purely cosmetic fix, no functional change.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 12 ++++++------
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c  | 12 ++++++------
- 2 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index d6609bb2074..8d76f1578bf 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -72,32 +72,32 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-         GLenum attachment, pname;
-         size_t offset;
-       } params[] = {
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
-           .offset = offsetof (CoglFramebufferBits, red),
-         },
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
-           .offset = offsetof (CoglFramebufferBits, green),
-         },
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
-           .offset = offsetof (CoglFramebufferBits, blue),
-         },
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
-           .offset = offsetof (CoglFramebufferBits, alpha),
-         },
--        { 
-+        {
-           .attachment = GL_DEPTH,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
-           .offset = offsetof (CoglFramebufferBits, depth),
-         },
--        { 
-+        {
-           .attachment = GL_STENCIL,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
-           .offset = offsetof (CoglFramebufferBits, stencil),
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index c8db6a23a29..1ffc1d53509 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -82,32 +82,32 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-         GLenum attachment, pname;
-         size_t offset;
-       } params[] = {
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
-           .offset = offsetof (CoglFramebufferBits, red),
-         },
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
-           .offset = offsetof (CoglFramebufferBits, green),
-         },
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
-           .offset = offsetof (CoglFramebufferBits, blue),
-         },
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
-           .offset = offsetof (CoglFramebufferBits, alpha),
-         },
--        { 
-+        {
-           .attachment = GL_DEPTH_ATTACHMENT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
-           .offset = offsetof (CoglFramebufferBits, depth),
-         },
--        { 
-+        {
-           .attachment = GL_STENCIL_ATTACHMENT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
-           .offset = offsetof (CoglFramebufferBits, stencil),
--- 
-GitLab
-
-
-From a2203df9f43b9e501a972d23b3d5584005c03ce6 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 2 Jun 2023 11:54:58 +0200
-Subject: [PATCH 2/5] cogl/gl-framebuffer: Fix inverted test in
- ensure_bits_initialized()
-
-Cogl's feature COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS is required
-to use the GL_FRAMEBUFFER_ATTACHMENT_* queries.
-
-Unfortunately, the test for the availability of the private feature is
-actually inverted in ensure_bits_initialized() which causes that whole
-portion of code to be ignored, falling back to the glGetIntegerv()
-method which isn't supported in core profiles.
-
-As Mesa has recently started to be more strict about these, this causes
-the CI tests to fail in mutter.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index 1ffc1d53509..75a8b0c1fe2 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -76,7 +76,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
- #ifdef HAVE_COGL_GL
--  if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-+  if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-         GLenum attachment, pname;
--- 
-GitLab
-
-
-From fad240f437d6b11f664c9c09aecabe5f5e703eca Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 5 Jun 2023 10:31:38 +0200
-Subject: [PATCH 3/5] cogl/gl-framebuffer: Match testing features
-
-The function ensure_bits_initialized() in cogl-gl-framebuffer-fbo.c
-checks for COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS whereas the same
-in cogl-gl-framebuffer-back.c simply checks for the driver being
-COGL_DRIVER_GL3.
-
-Change the later to use the COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS
-flag as well.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index 8d76f1578bf..f6a17e8f070 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -66,7 +66,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
- #ifdef HAVE_COGL_GL
--  if (ctx->driver == COGL_DRIVER_GL3)
-+  if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-         GLenum attachment, pname;
--- 
-GitLab
-
-
-From c3af4c1b1571b05f67d48b90d9ea7313f3ca6003 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 2 Jun 2023 14:27:29 +0200
-Subject: [PATCH 4/5] cogl/gl-framebuffer: Fail without QUERY_FRAMEBUFFER_BITS
-
-glGetIntegerv() with GL_RED_BITS/GL_GREEN_BITS/GL_BLUE_BITS/etc. is not
-supported with the GL core context, so there is no point in falling back
-to that without supporting COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS,
-as this will cause an GL error.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 7 +------
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c  | 7 +------
- 2 files changed, 2 insertions(+), 12 deletions(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index f6a17e8f070..0ccd2324077 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -119,12 +119,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-   else
- #endif /* HAVE_COGL_GL */
-     {
--      GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red));
--      GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green));
--      GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue));
--      GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha));
--      GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth));
--      GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil));
-+      return FALSE;
-     }
- 
-   COGL_NOTE (FRAMEBUFFER,
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index 75a8b0c1fe2..524196207f5 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -129,12 +129,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-   else
- #endif /* HAVE_COGL_GL */
-     {
--      GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red));
--      GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green));
--      GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue));
--      GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha));
--      GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth));
--      GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil));
-+      return FALSE;
-     }
- 
-   if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_ALPHA_TEXTURES) &&
--- 
-GitLab
-
-
-From d65883e0d7d70987e3888b86222b109c35f5a7a2 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 5 Jun 2023 10:38:41 +0200
-Subject: [PATCH 5/5] cogl/gl-framebuffer: Remove conditional on HAVE_COGL_GL
-
-By testing the features flag, we can get rid of the conditional build
-on HAVE_COGL_GL entirely.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 --
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c  | 2 --
- 2 files changed, 4 deletions(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index 0ccd2324077..94154d48efb 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -65,7 +65,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-                                         framebuffer,
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
--#ifdef HAVE_COGL_GL
-   if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-@@ -117,7 +116,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-         }
-     }
-   else
--#endif /* HAVE_COGL_GL */
-     {
-       return FALSE;
-     }
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index 524196207f5..3ea133d3143 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -75,7 +75,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-                                         framebuffer,
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
--#ifdef HAVE_COGL_GL
-   if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-@@ -127,7 +126,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-         }
-     }
-   else
--#endif /* HAVE_COGL_GL */
-     {
-       return FALSE;
-     }
--- 
-GitLab
-
diff --git a/gnu/packages/patches/nautilus-extension-search-path.patch b/gnu/packages/patches/nautilus-extension-search-path.patch
index d5dc35b241..1394956315 100644
--- a/gnu/packages/patches/nautilus-extension-search-path.patch
+++ b/gnu/packages/patches/nautilus-extension-search-path.patch
@@ -1,54 +1,62 @@
 Allow Nautilus to search for extensions in the directories listed
 in $NAUTILUS_EXTENSION_PATH.
 
-diff --git a/src/nautilus-module.c b/src/nautilus-module.c
-index bf474bd..42e2a4e 100644
---- a/src/nautilus-module.c
-+++ b/src/nautilus-module.c
-@@ -211,6 +211,10 @@ static void
+Index: nautilus-44.2/src/nautilus-module.c
+===================================================================
+--- nautilus-44.2.orig/src/nautilus-module.c
++++ nautilus-44.2/src/nautilus-module.c
+@@ -220,8 +220,16 @@ static void
  load_module_dir (const char *dirname)
  {
      GDir *dir;
+-
 +    static GHashTable *loaded = NULL;
+     g_autoptr (GStrvBuilder) installed_module_name_builder = g_strv_builder_new ();
++
++    if (installed_module_names != NULL)
++        g_strv_builder_addv (installed_module_name_builder,
++                             (const gchar **)installed_module_names);
 +
 +    if (loaded == NULL)
 +      loaded = g_hash_table_new (g_str_hash, g_str_equal);
- 
++
      dir = g_dir_open (dirname, 0, NULL);
  
-@@ -221,15 +225,22 @@ load_module_dir (const char *dirname)
-         while ((name = g_dir_read_name (dir)))
+     if (dir)
+@@ -232,16 +240,24 @@ load_module_dir (const char *dirname)
          {
              if (g_str_has_suffix (name, "." G_MODULE_SUFFIX))
--            {
+             {
 -                char *filename;
 -
 -                filename = g_build_filename (dirname,
 -                                             name,
 -                                             NULL);
--                nautilus_module_load_file (filename);
+-                nautilus_module_load_file (filename, installed_module_name_builder);
 -                g_free (filename);
--            }
-+	      {
-+		/* Make sure each module is loaded only twice or this could
-+		   lead to a crash.  Double loading can occur if DIRNAME
-+		   occurs more than once in $NAUTILUS_EXTENSION_PATH.  */
-+		if (!g_hash_table_contains (loaded, name))
-+		  {
-+		    char *filename;
++                /* Make sure each module is loaded only twice or this could
++                   lead to a crash.  Double loading can occur if DIRNAME
++                   occurs more than once in $NAUTILUS_EXTENSION_PATH.  */
++                if (!g_hash_table_contains (loaded, name))
++                {
++                    char *filename;
 +
-+		    filename = g_build_filename (dirname,
-+						 name,
-+						 NULL);
-+		    nautilus_module_load_file (filename);
-+		    g_hash_table_add (loaded, g_strdup (name));
-+		    g_free (filename);
-+		  }
-+	      }
-         }
++                    filename = g_build_filename (dirname,
++                                                 name,
++                                                 NULL);
++                    nautilus_module_load_file (filename,
++                                               installed_module_name_builder);
++                    g_hash_table_add (loaded, g_strdup (name));
++                    g_free (filename);
++                }
+             }
+-        }
  
++        }
          g_dir_close (dir);
-@@ -257,10 +268,24 @@ nautilus_module_setup (void)
+     }
+ 
+@@ -278,10 +294,24 @@ nautilus_module_setup (void)
  
      if (!initialized)
      {
diff --git a/gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch b/gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch
new file mode 100644
index 0000000000..377c09d0a5
--- /dev/null
+++ b/gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch
@@ -0,0 +1,40 @@
+From 28067b88ad91e794675734bc92bd9c8653b4a46a Mon Sep 17 00:00:00 2001
+Message-ID: <28067b88ad91e794675734bc92bd9c8653b4a46a.1709973702.git.vivien@planete-kraus.eu>
+From: Vivien Kraus <vivien@planete-kraus.eu>
+Date: Sat, 9 Mar 2024 09:36:56 +0100
+Subject: [PATCH] corba-loc: Do not allocate more tokens than necessary.
+
+To split the list of locations, the code calls g_strsplit with the
+last argument set to G_MAXINT.  It means that g_strsplit will try to
+allocate a huge array (G_MAXINT + 1, for the final NULL), mostly
+filled with NULL.  Unfortunately, on 32-bit systems, this is one past
+the authorized length for an array.  Previous versions of glib would
+not care, but the new version now raises an error if this happens.
+
+To get an array of the appropriate size, we can just pass -1 to the
+last argument.
+
+* src/orb/orb-core/corba-loc.c (ORBit_corbaloc_parse): Replace
+G_MAXINT with -1.
+---
+ src/orb/orb-core/corba-loc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/orb/orb-core/corba-loc.c b/src/orb/orb-core/corba-loc.c
+index abfcaa29..6492d392 100644
+--- a/src/orb/orb-core/corba-loc.c
++++ b/src/orb/orb-core/corba-loc.c
+@@ -309,7 +309,7 @@ ORBit_corbaloc_parse (const gchar       *corbaloc)
+ 	if (!(objkey = orbit_url_decode (okey)))
+ 		goto ret_error;
+ 	
+-	if (!(token = g_strsplit (loc, ",", G_MAXINT))) 
++	if (!(token = g_strsplit (loc, ",", -1)))
+ 		goto ret_error;
+ 
+ 	/* [ 'iiop' ]   ':' [ '//' ] [ version '@' ] host [ ':' port ] */
+
+base-commit: 144be2e9860286c83f009e7689250e0af977cc5e
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/pdfpc-build-with-vala-0.56.patch b/gnu/packages/patches/pdfpc-build-with-vala-0.56.patch
new file mode 100644
index 0000000000..e9a4060248
--- /dev/null
+++ b/gnu/packages/patches/pdfpc-build-with-vala-0.56.patch
@@ -0,0 +1,40 @@
+From 18beaecbbcc066e0d4c889b3aa3ecaa7351f7768 Mon Sep 17 00:00:00 2001
+Message-ID: <18beaecbbcc066e0d4c889b3aa3ecaa7351f7768.1711183363.git.vivien@planete-kraus.eu>
+From: Evgeny Stambulchik <fnevgeny@gmail.com>
+Date: Tue, 25 Apr 2023 16:11:25 +0300
+Subject: [PATCH] Create Lists of nullable types
+
+---
+This is the pull request for issue 686, merged in master, not released
+yet.
+
+ src/classes/drawings/drawing_commands.vala | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/classes/drawings/drawing_commands.vala b/src/classes/drawings/drawing_commands.vala
+index 77e56e6..c305a8c 100644
+--- a/src/classes/drawings/drawing_commands.vala
++++ b/src/classes/drawings/drawing_commands.vala
+@@ -54,8 +54,8 @@ namespace pdfpc {
+         }
+ 
+         public void clear() {
+-            this.drawing_commands = new List<DrawingCommand>();
+-            this.redo_commands = new List<DrawingCommand>();
++            this.drawing_commands = new List<DrawingCommand?>();
++            this.redo_commands = new List<DrawingCommand?>();
+         }
+ 
+         public void add_line(bool is_eraser,
+@@ -70,7 +70,7 @@ namespace pdfpc {
+ 
+             // After adding a new line you can no longer redo the old
+             // path.
+-            this.redo_commands = new List<DrawingCommand>(); // clear
++            this.redo_commands = new List<DrawingCommand?>(); // clear
+ 
+             bool new_path = true;
+             double epsilon = 1e-4; // Less than 0.1 pixel for a 1000x1000 img
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/shared-mime-info-xdgmime-path.patch b/gnu/packages/patches/shared-mime-info-xdgmime-path.patch
new file mode 100644
index 0000000000..27c578f3fa
--- /dev/null
+++ b/gnu/packages/patches/shared-mime-info-xdgmime-path.patch
@@ -0,0 +1,22 @@
+Adapted from <https://gitlab.freedesktop.org/xdg/shared-mime-info/-/merge_requests/182>.
+
+diff --git a/meson.build b/meson.build
+index 3c75424..7058562 100644
+--- a/meson.build
++++ b/meson.build
+@@ -26,11 +26,11 @@ xmlto   = find_program('xmlto', required: false)
+ ###############################################################################
+ # Find xdgmime
+ 
+-xdgmime = get_option('xdgmime-path') / 'src'
++xdgmime = get_option('xdgmime-path')
+ 
+-xdgmime_print_mime_data = find_program(xdgmime/'print-mime-data', required: false)
+-xdgmime_test_mime_data  = find_program(xdgmime/'test-mime-data', required: false)
+-xdgmime_test_mime       = find_program(xdgmime/'test-mime', required: false)
++xdgmime_print_mime_data = find_program('print-mime-data', xdgmime/'print-mime-data', required: false)
++xdgmime_test_mime_data  = find_program('test-mime-data', xdgmime/'test-mime-data', required: false)
++xdgmime_test_mime       = find_program('test-mime', xdgmime/'test-mime', required: false)
+ xdgmime_found = (
+     xdgmime_print_mime_data.found() and
+     xdgmime_test_mime_data.found()  and
diff --git a/gnu/packages/patches/zathura-use-struct-initializers.patch b/gnu/packages/patches/zathura-use-struct-initializers.patch
new file mode 100644
index 0000000000..9a808a4bc3
--- /dev/null
+++ b/gnu/packages/patches/zathura-use-struct-initializers.patch
@@ -0,0 +1,68 @@
+From c05328185292d6f6a4459024cdb563c63bfad230 Mon Sep 17 00:00:00 2001
+Message-ID: <c05328185292d6f6a4459024cdb563c63bfad230.1710315308.git.vivien@planete-kraus.eu>
+From: Sebastian Ramacher <sebastian@ramacher.at>
+Date: Mon, 29 Jan 2024 21:05:22 +0100
+Subject: [PATCH] Use struct initializers
+
+---
+ zathura/page-widget.c |  4 ++--
+ zathura/shortcuts.c   | 12 +++++-------
+ 2 files changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/zathura/page-widget.c b/zathura/page-widget.c
+index 216381e..ac85dcf 100644
+--- a/zathura/page-widget.c
++++ b/zathura/page-widget.c
+@@ -1426,8 +1426,8 @@ cb_menu_image_save(GtkMenuItem* item, ZathuraPage* page)
+   }
+ 
+   /* set command */
+-  char* export_command = g_strdup_printf(":export image-p%d-%d ", page_id, image_id);
+-  girara_argument_t argument = { 0, export_command };
++  char* export_command       = g_strdup_printf(":export image-p%d-%d ", page_id, image_id);
++  girara_argument_t argument = {.n = 0, .data = export_command};
+   sc_focus_inputbar(priv->zathura->ui.session, &argument, NULL, 0);
+   g_free(export_command);
+ 
+diff --git a/zathura/shortcuts.c b/zathura/shortcuts.c
+index 8836cd2..35b5990 100644
+--- a/zathura/shortcuts.c
++++ b/zathura/shortcuts.c
+@@ -513,7 +513,7 @@ sc_rotate(girara_session_t* session, girara_argument_t* argument,
+   zathura_document_set_rotation(zathura->document, (rotation + angle * t) % 360);
+ 
+   /* update scale */
+-  girara_argument_t new_argument = { zathura_document_get_adjust_mode(zathura->document), NULL };
++  girara_argument_t new_argument = {.n = zathura_document_get_adjust_mode(zathura->document), .data = NULL};
+   sc_adjust_window(zathura->ui.session, &new_argument, NULL, 0);
+ 
+   /* render all pages again */
+@@ -1372,7 +1372,7 @@ sc_toggle_presentation(girara_session_t* session, girara_argument_t*
+     zathura->shortcut.toggle_presentation_mode.zoom = zathura_document_get_zoom(zathura->document);
+ 
+     /* adjust window */
+-    girara_argument_t argument = { ZATHURA_ADJUST_BESTFIT, NULL };
++    girara_argument_t argument = {.n = ZATHURA_ADJUST_BESTFIT, .data = NULL};
+     sc_adjust_window(session, &argument, NULL, 0);
+ 
+     /* hide status and inputbar */
+@@ -1390,13 +1390,11 @@ sc_toggle_presentation(girara_session_t* session, girara_argument_t*
+   return false;
+ }
+ 
+-bool
+-sc_quit(girara_session_t* session, girara_argument_t* UNUSED(argument),
+-        girara_event_t* UNUSED(event), unsigned int UNUSED(t))
+-{
++bool sc_quit(girara_session_t* session, girara_argument_t* UNUSED(argument), girara_event_t* UNUSED(event),
++             unsigned int UNUSED(t)) {
+   g_return_val_if_fail(session != NULL, false);
+ 
+-  girara_argument_t arg = { GIRARA_HIDE, NULL };
++  girara_argument_t arg = {.n = GIRARA_HIDE, .data = NULL};
+   girara_isc_completion(session, &arg, NULL, 0);
+ 
+   cb_destroy(NULL, NULL);
+-- 
+2.41.0
+
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ee48ad0e2b..c7471169d9 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -102,6 +102,7 @@ POSIX regular expression API.")
                (base32
                 "0s4x2l6g0sb9piwkr3sxqwdswz2g6bk1hhwngv0kv4w38wybir0l"))))
     (build-system gnu-build-system)
+    (outputs '("out" "static"))
     (inputs (list bzip2 readline zlib))
     (arguments
      (list #:configure-flags
@@ -114,14 +115,23 @@ POSIX regular expression API.")
                ;; riscv64-linux is an unsupported architecture.
                #$@(if (target-riscv64?)
                       #~()
-                      #~("--enable-jit"))
-               "--disable-static")
+                      #~("--enable-jit")))
            #:phases
            #~(modify-phases %standard-phases
                (add-after 'unpack 'patch-paths
                  (lambda _
                    (substitute* "RunGrepTest"
-                     (("/bin/echo") (which "echo"))))))))
+                     (("/bin/echo") (which "echo")))))
+               (add-after 'install 'move-static-libs
+                 (lambda _
+                   (let ((source (string-append #$output "/lib"))
+                         (static (string-append #$output:static "/lib")))
+                     (mkdir-p static)
+                     (for-each (lambda (lib)
+                                 (link lib (string-append static "/"
+                                                          (basename lib)))
+                                 (delete-file lib))
+                               (find-files source "\\.a$"))))))))
     (synopsis "Perl Compatible Regular Expressions")
     (description
      "The PCRE library is a set of functions that implement regular expression
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 0784111dae..0c83ff10e1 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -703,7 +703,7 @@ by using the poppler rendering engine.")
 (define-public zathura
   (package
     (name "zathura")
-    (version "0.5.2")
+    (version "0.5.4")
     (source (origin
               (method url-fetch)
               (uri
@@ -711,7 +711,28 @@ by using the poppler rendering engine.")
                               version ".tar.xz"))
               (sha256
                (base32
-                "15314m9chmh5jkrd9vk2h2gwcwkcffv2kjcxkd4v3wmckz5sfjy6"))))
+                "0ckgamf98sydq543arp865jg1afwzhpzcsbhv6zrch2dm5x7y0x3"))
+              (patches (search-patches "zathura-use-struct-initializers.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'start-xserver
+            ;; Tests require a running X server.
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((display ":1"))
+                (setenv "DISPLAY" display)
+
+                ;; On busy machines, tests may take longer than
+                ;; the default of four seconds.
+                (setenv "CK_DEFAULT_TIMEOUT" "20")
+
+                ;; Don't fail due to missing '/etc/machine-id'.
+                (setenv "DBUS_FATAL_WARNINGS" "0")
+                (zero? (system (string-append
+                                (search-input-file inputs "/bin/Xvfb")
+                                " " display " &")))))))))
     (native-inputs
      (list pkg-config
            gettext-minimal
@@ -733,24 +754,6 @@ by using the poppler rendering engine.")
      (list (search-path-specification
             (variable "ZATHURA_PLUGINS_PATH")
             (files '("lib/zathura")))))
-    (build-system meson-build-system)
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  (add-before 'check 'start-xserver
-                    ;; Tests require a running X server.
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (let ((display ":1"))
-                        (setenv "DISPLAY" display)
-
-                        ;; On busy machines, tests may take longer than
-                        ;; the default of four seconds.
-                        (setenv "CK_DEFAULT_TIMEOUT" "20")
-
-                        ;; Don't fail due to missing '/etc/machine-id'.
-                        (setenv "DBUS_FATAL_WARNINGS" "0")
-                        (zero? (system (string-append
-                                         (search-input-file inputs "/bin/Xvfb")
-                                         " " display " &")))))))))
     (home-page "https://pwmt.org/projects/zathura/")
     (synopsis "Lightweight keyboard-driven PDF viewer")
     (description "Zathura is a customizable document viewer.  It provides a
@@ -1523,22 +1526,24 @@ multiple files.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kj84sf5hgr2v2ra6dxmxqcr173h17cpnhg9lcq36shdbdnncwg4"))))
+        (base32 "0kj84sf5hgr2v2ra6dxmxqcr173h17cpnhg9lcq36shdbdnncwg4"))
+       (patches
+        (search-patches "pdfpc-build-with-vala-0.56.patch"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))           ; no test target
-    (inputs
-     `(("cairo" ,cairo)
-       ("discount" ,discount) ; libmarkdown
-       ("qrencode" ,qrencode)
-       ("gtk+" ,gtk+)
-       ("gstreamer" ,gstreamer)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("json-glib" ,json-glib)
-       ("libgee" ,libgee)
-       ("poppler" ,poppler)
-       ("pango" ,pango)
-       ("vala" ,vala)
-       ("webkitgtk" ,webkitgtk-with-libsoup2)))
+    (inputs (list
+             cairo
+             discount ; libmarkdown
+             qrencode
+             gtk+
+             gstreamer
+             gst-plugins-base
+             json-glib
+             libgee
+             poppler
+             pango
+             vala
+             webkitgtk-with-libsoup2))
     (native-inputs
      (list pkg-config))
     (home-page "https://pdfpc.github.io/")
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index 2f733dd703..337d9b9a73 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -158,7 +158,7 @@
            perl
            pkg-config
            python
-           python-dbusmock))
+           python-dbusmock-minimal))
     (home-page "https://www.freedesktop.org/wiki/Software/polkit/")
     (synopsis "Authorization API for privilege management")
     (description "Polkit is an application-level toolkit for defining and
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index d876f37363..2c1cf5bd03 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -194,6 +194,7 @@
   #:use-module (gnu packages djvu)
   #:use-module (gnu packages docker)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages file)
   #:use-module (gnu packages fonts)
@@ -284,6 +285,7 @@
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system pyproject)
   #:use-module (guix build-system python)
   #:use-module (guix download)
@@ -14006,6 +14008,24 @@ file (e.g. @file{PKG-INFO}).")
 (define-public python-pep621
   (deprecated-package "python-pep621" python-pyproject-metadata))
 
+(define-public python-meson-python
+  (package
+    (name "python-meson-python")
+    (version "0.15.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "meson_python" version))
+       (sha256
+        (base32 "0vyjhjabvm41hqijifk33idbdl62i76kfyf884f9rs29rpp77nzx"))))
+    (build-system meson-build-system)
+    (propagated-inputs (list python-pyproject-metadata python-tomli))
+    (home-page "https://github.com/mesonbuild/meson-python")
+    (synopsis "Meson Python build backend (PEP 517)")
+    (description "This package provides a PEP 517 build backend that makes
+use of the Meson build system.")
+    (license license:expat)))
+
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
@@ -28929,17 +28949,50 @@ structure.")
 for YAML and JSON.")
     (license license:expat)))
 
+(define-public python-dbus-python
+  (package
+  (name "python-dbus-python")
+  (version "1.3.2")
+  (source
+   (origin
+     (method url-fetch)
+     (uri (pypi-uri "dbus-python" version))
+     (sha256
+      (base32 "1y28h90v2ib8zqhs3r2yr7ycg8ccwvw3gqkvadlm12v1129q2rxd"))))
+  (build-system pyproject-build-system)
+  (arguments
+   (list #:phases #~(modify-phases %standard-phases
+                      (add-after 'unpack 'patch-requirements
+                        (lambda _
+                          (substitute* (list "pyproject.toml" "setup.py")
+                            (("'(ninja|patchelf)',?") ""))
+                          (substitute* "setup.cfg"
+                            (("(ninja|patchelf)") "")))))))
+  (inputs (list dbus glib))
+  (propagated-inputs (list python-pygobject))
+  (native-inputs (list pkg-config
+                       python-meson-python
+                       meson ninja patchelf
+                       python-sphinx python-sphinx-rtd-theme
+                       python-tappy
+                       python-wheel))
+  (home-page "https://dbus.freedesktop.org/doc/dbus-python/")
+  (synopsis "Python bindings for libdbus")
+  (description "This package provides Python bindings to libdbus, the
+reference implementation of the D-Bus protocol.")
+  (license license:expat)))
+
 (define-public python-dbusmock
   (package
     (name "python-dbusmock")
-    (version "0.25.0")
+    (version "0.30.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-dbusmock" version))
        (sha256
         (base32
-         "1nwl0gzzds2g1w1gfxfzlgrkb5hr1rrdyn619ml25c6b1rjyfk3g"))))
+         "1hanz6x76jq66ypdirga5h15zjs67kwysl6rmsf0i22dbdqrxdfv"))))
     (build-system python-build-system)
     (arguments
      (list #:modules `((guix build python-build-system)
@@ -28950,6 +29003,9 @@ for YAML and JSON.")
            #~(modify-phases %standard-phases
                (add-after 'unpack 'patch-paths
                  (lambda* (#:key inputs #:allow-other-keys)
+                   (substitute* "tests/test_api.py"
+                     (("/usr/bin/python3")
+                      (which "python3")))
                    (substitute* "tests/test_code.py"
                      (("/bin/bash")
                       (which "bash")))
@@ -28976,11 +29032,11 @@ for YAML and JSON.")
                                           status))
                                  (loop)))))))))))))
     (native-inputs
-     (list dbus python-pytest which))
+     (list dbus python-pytest upower which))
     (inputs
      (list dbus))
     (propagated-inputs
-     (list python-dbus python-pygobject))
+     (list python-dbus-python python-pygobject))
     (home-page "https://github.com/martinpitt/python-dbusmock")
     (synopsis "Python library for mock D-Bus objects")
     (description "python-dbusmock allows for the easy creation of mock objects on
@@ -28990,6 +29046,16 @@ hard (or impossible without root privileges) to set the state of the real
 services to what you expect in your tests.")
     (license license:lgpl3+)))
 
+(define-public python-dbusmock-minimal
+  (package
+    (inherit python-dbusmock)
+    (name "python-dbusmock-minimal")
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-dbusmock)
+       ((#:tests? _ #t) #f)))
+    (native-inputs (list which))
+    (properties '((hidden? . #t)))))
+
 (define-public python-jsonplus
   (package
     (name "python-jsonplus")
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 5fd89712e0..0dea780882 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -64,6 +64,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dbm)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages rails)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages autotools)
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 257d01b3f1..577c2b3278 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -516,7 +516,7 @@ Vim bindings and Xresource compatibility.")
              #t)))))
     (inputs
      `(("dmenu" ,dmenu)
-       ("gcr" ,gcr)
+       ("gcr" ,gcr-3)
        ("glib-networking" ,glib-networking)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("webkitgtk" ,webkitgtk-with-libsoup2)
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index f9221f8483..96df50d747 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -443,21 +443,23 @@ on arbitrary tasks.  All the time data is saved in files residing in the
           (base32 "1j2h5cv8wnmw41fpz1ggsgi599qhk184cas9kgd92glj3m4alg6f"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-tests
-           (lambda _
-             (substitute* '("tests/test_cli.py" "tests/test_formatter.py")
-               (("tests\\.helpers") "helpers"))))
-         (replace 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (invoke "pytest" "-vv" "tests" "-k"
-                       (string-append
-                        ;; Test expects wrong output string.
-                        "not test_bad_start_date "
-                        ;; Unknown failure
-                        "and not test_default_command_args"))))))))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-tests
+            (lambda _
+              (substitute* '("tests/test_cli.py" "tests/test_formatter.py")
+                (("tests\\.helpers") "helpers"))))
+          (replace 'check
+            (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+              (when tests?
+                (invoke "pytest" "--hypothesis-profile=ci"
+                        "-vv" "tests" "-k"
+                        (string-append
+                         ;; Test expects wrong output string.
+                         "not test_bad_start_date "
+                         ;; Unknown failure
+                         "and not test_default_command_args"))))))))
     (native-inputs
       (list python-setuptools-scm
             python-pytest
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index 8d835bf243..358374a5bb 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -326,8 +326,8 @@
         (list abseil-cpp-cxxstd17
               crc32c
               ffmpeg
-              glib-next
-              glibmm-next
+              glib
+              glibmm
               libdrm
               libglvnd
               libjpeg-turbo
@@ -487,7 +487,7 @@ Telegram project, for its use in telegram desktop client.")
                (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
                  (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
     (native-inputs
-     (list `(,glib-next "bin")
+     (list `(,glib "bin")
            `(,gtk+ "bin")
            pkg-config
            python-wrapper))
@@ -499,8 +499,8 @@ Telegram project, for its use in telegram desktop client.")
            fcitx-qt5
            fcitx5-qt
            ffmpeg
-           glib-next
-           glibmm-next
+           glib
+           glibmm-2.76
            gtk+
            hime
            hunspell
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 41e83384ec..aa00cc3656 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -51,6 +51,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages sqlite)
@@ -94,6 +95,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system qt))
 
 (define-public phonesim
@@ -1157,3 +1159,106 @@ very useful to emulate thousands of user agents calling your SIP system.")
     (license (list license:gpl2+        ; sipp's main license
                    license:bsd-3        ; send_packets.c, send_packets.h
                    license:zlib)))) ; md5.c, md5.h
+
+(define-public sofia-sip
+  (package
+    (name "sofia-sip")
+    (version "1.13.16")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/freeswitch/sofia-sip")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "sofia-sip" version))
+              (sha256
+               (base32
+                "1hi9np49wcq91d1w93qi6by40qnr348hpzc2wkw3l955zh1n30lr"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      ;; run_addrinfo requires /etc/services for the 'echo' service.
+      #:make-flags #~'("XFAIL_TESTS = run_addrinfo"
+                       ;; libsofia-sip-ua/nta/Makefile.am sets
+                       ;; TESTS_ENVIRONMENT = $(SHELL), which is odd, because
+                       ;; according to the Automake manual, it should be
+                       ;; AM_TESTS_ENVIRONMENT, and it should end with a
+                       ;; semicolon.
+                       "TESTS_ENVIRONMENT = \
+export CHECK_NTA_VERBOSE=10; \
+export CHECK_NUA_VERBOSE=10; ")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-shebangs
+            (lambda _
+              (patch-shebang "autogen.sh")))
+          (add-after 'unpack 'disable-failing-test
+            (lambda _
+              ;; run_test_nta is disabled because it fails randomly (not for a
+              ;; timeout-related reason).  The test suite is otherwise very
+              ;; long, most tests backed by libcheck timeout even with a ×100
+              ;; multiplier.  The tests are disabled here rather than put to
+              ;; XFAIL_TESTS because it saves compilation time.  (see:
+              ;; https://github.com/freeswitch/sofia-sip/issues/234)
+              (substitute* "libsofia-sip-ua/nta/Makefile.am"
+                (("TESTS =")
+                 "TESTS = run_test_nta_api\n# Disabled: "))
+              (substitute* "libsofia-sip-ua/nua/Makefile.am"
+                (("TESTS \\+=")
+                 "TESTS +=\n# Disabled: "))
+              ;; The glib tests both wait forever without a timeout.
+              (substitute* "libsofia-sip-ua-glib/su-glib/Makefile.am"
+                (("TESTS =")
+                 "TESTS =\n# Disabled: "))
+              ;; Another timeout failing test:
+              (substitute* "tests/Makefile.am"
+                (("TESTS = test_nua")
+                 "TESTS ="))
+              ;; This test fails for unknown reason:
+              (substitute* "tests/Makefile.am"
+                (("TESTS \\+= check_dlopen_sofia check_sofia")
+                 "TESTS += check_dlopen_sofia")))))))
+    (inputs
+     (list glib
+           openssl
+           zlib))
+    (native-inputs
+     (list autoconf
+           autoconf-archive
+           automake
+           check
+           libtool
+           pkg-config))
+    (home-page "https://sofia-sip.sourceforge.net/")
+    (synopsis "SIP user-agent library")
+    (description "Sofia-SIP is a @acronym{SIP, Session Initiation Protocol}
+User-Agent library, compliant with the
+@url{https://datatracker.ietf.org/doc/html/rfc3261, IETF RFC3261}
+specification.  It can be used as a building block for @acronym{SIP} client
+software foruses such as @acronym{VoIP, Voice over @acronym{IP, Internet
+Protocol}}, @acronym{IM, Instant Messaging}, and many other real-time and
+person-to-person communication services.")
+    (license license:lgpl2.1)))
+
+(define-public libcallaudio
+  (package
+    (name "libcallaudio")
+    (version "0.1.9")
+    (source (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/mobian1/callaudiod/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0qnllb28101c2ss1k3iwr04gljfyjqmbla5csj6vkq1y63aagr9s"))))
+    (build-system meson-build-system)
+    (inputs (list alsa-lib glib pulseaudio))
+    (native-inputs
+     (list `(,glib "bin")          ;for gdbus-codegen
+           pkg-config))
+    (home-page "https://gitlab.com/mobian1/callaudiod")
+    (synopsis "Library for audio routing during voice calls")
+    (description "This package provides @command{callaudiod}, a daemon to
+route audio during phone calls, and a library.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 538d32296e..c165b5342d 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -909,7 +909,7 @@ in plain text file format.")
 (define-public editorconfig-core-c
   (package
     (name "editorconfig-core-c")
-    (version "0.12.5")
+    (version "0.12.6")
     (source
       (origin
         (method git-fetch)
@@ -918,7 +918,7 @@ in plain text file format.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "073sh18y0v8wm10iphaia54pkdmwylalccpn1k5i9dwyfjzgj7yg"))))
+         (base32 "05qllpls3r95nfl14gqq3cv4lisf07fgn85n52w8blc5pfl1h93g"))))
     (build-system cmake-build-system)
     (arguments
      '(#:phases
@@ -928,6 +928,13 @@ in plain text file format.")
              (let ((tests (assoc-ref inputs "tests")))
                (copy-recursively tests "tests"))
              #t))
+         (add-after 'insert-tests 'disable-failing-tests
+           (lambda _
+             (substitute* "tests/parser/CMakeLists.txt"
+               (("# Test max property name and values")
+                "# Disabled: test max property name and values\nif(FALSE)\n")
+               (("# Test max section names")
+                "endif()\n\n# Test max section names"))))
          (add-after 'install 'delete-static-library
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/tor-browsers.scm b/gnu/packages/tor-browsers.scm
index 6706c24745..72ab345e8a 100644
--- a/gnu/packages/tor-browsers.scm
+++ b/gnu/packages/tor-browsers.scm
@@ -45,6 +45,7 @@
   #:use-module (gnu packages browser-extensions)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cups)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index f1d40df1f1..251fe00aa0 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -495,7 +495,7 @@ exec smbd $@")))
            ;; The following static libraries are required to build
            ;; the static output of QEMU.
            `(,glib "static")
-           `(,pcre "static")
+           `(,pcre2 "static")
            `(,zlib "static")))
     (home-page "https://www.qemu.org")
     (synopsis "Machine emulator and virtualizer")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index a83562485d..e6bc6a0c7b 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -141,7 +141,7 @@
        ("which" ,which))) ;for tests
     (inputs
      `(("adwaita-icon-theme" ,adwaita-icon-theme)
-       ("gcr" ,gcr)
+       ("gcr" ,gcr-3)
        ("glib" ,glib)
        ("glib-networking" ,glib-networking)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 01e48fda57..c6ddae50ae 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -88,7 +88,7 @@
 (define-public libxmlb
   (package
     (name "libxmlb")
-    (version "0.3.12")
+    (version "0.3.14")
     (source
      (origin
        (method git-fetch)
@@ -98,7 +98,7 @@
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0v9s2k5saxrs0ssjyg1zxaibybikvaw7fip6sy0b8ixzax9r5y0c"))))
+        (base32 "0qcp881s559wc73db91vjccrv0d3zva87l5jdp5w0ygzz6bmg5cn"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t))
@@ -107,7 +107,7 @@
     (inputs
      (list appstream-glib glib))
     (propagated-inputs
-     (list `(,zstd "lib")))             ; in Requires.private of xmlb.pc
+     (list xz `(,zstd "lib")))             ; in Requires.private of xmlb.pc
     (synopsis "Library to help create and query binary XML blobs")
     (description "Libxmlb library takes XML source, and converts it to a
 structured binary representation with a deduplicated string table; where the
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index cd61df718e..5104b3d104 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -85,6 +85,7 @@
                           swap-space->flags-bit-mask))
   #:autoload   (guix channels) (%default-channels channel->code)
   #:use-module (guix gexp)
+  #:use-module ((guix packages) #:select (package-version))
   #:use-module (guix records)
   #:use-module (guix modules)
   #:use-module (guix pki)
@@ -155,11 +156,15 @@
             udev-configuration
             udev-configuration?
             udev-configuration-rules
+            udev-configuration-hardware
             udev-service-type
             udev-service  ; deprecated
             udev-rule
+            udev-hardware
             file->udev-rule
+            file->udev-hardware
             udev-rules-service
+            udev-hardware-service
 
             login-configuration
             login-configuration?
@@ -2268,11 +2273,13 @@ command that allows you to share pre-built binaries with others over HTTP.")))
   (udev   udev-configuration-udev                 ;file-like
           (default eudev))
   (rules  udev-configuration-rules                ;list of file-like
-          (default '())))
+          (default '()))
+  (hardware  udev-configuration-hardware          ;list of file-like
+             (default '())))
 
-(define (udev-rules-union packages)
-  "Return the union of the @code{lib/udev/rules.d} directories found in each
-item of @var{packages}."
+(define (udev-configurations-union subdirectory packages)
+  "Return the union of the lib/udev/SUBDIRECTORY directories found in each
+item of PACKAGES."
   (define build
     (with-imported-modules '((guix build union)
                              (guix build utils))
@@ -2283,51 +2290,64 @@ item of @var{packages}."
                        (srfi srfi-26))
 
           (define %standard-locations
-            '("/lib/udev/rules.d" "/libexec/udev/rules.d"))
+            '(#$(string-append "/lib/udev/" subdirectory)
+                #$(string-append "/libexec/udev/" subdirectory)))
 
-          (define (rules-sub-directory directory)
-            ;; Return the sub-directory of DIRECTORY containing udev rules, or
-            ;; #f if none was found.
+          (define (configuration-sub-directory directory)
+            ;; Return the sub-directory of DIRECTORY containing udev
+            ;; configurations, or #f if none was found.
             (find directory-exists?
                   (map (cut string-append directory <>) %standard-locations)))
 
           (union-build #$output
-                       (filter-map rules-sub-directory '#$packages)))))
+                       (filter-map configuration-sub-directory '#$packages)))))
+
+  (computed-file (string-append "udev-" subdirectory) build))
+
+(define (udev-rules-union packages)
+  "Return the union of the lib/udev/rules.d directories found in each
+item of PACKAGES."
+  (udev-configurations-union "rules.d" packages))
 
-  (computed-file "udev-rules" build))
+(define (udev-configuration-file subdirectory file-name contents)
+  "Return a directory with a udev configuration file FILE-NAME containing CONTENTS."
+  (file->udev-configuration-file subdirectory file-name (plain-file file-name contents)))
 
 (define (udev-rule file-name contents)
   "Return a directory with a udev rule file FILE-NAME containing CONTENTS."
-  (computed-file file-name
-                 (with-imported-modules '((guix build utils))
-                   #~(begin
-                       (use-modules (guix build utils))
-
-                       (define rules.d
-                         (string-append #$output "/lib/udev/rules.d"))
+  (udev-configuration-file "rules.d" file-name contents))
 
-                       (mkdir-p rules.d)
-                       (call-with-output-file
-                           (string-append rules.d "/" #$file-name)
-                         (lambda (port)
-                           (display #$contents port)))))))
+(define (udev-hardware file-name contents)
+  "Return a directory with a udev hardware file FILE-NAME containing CONTENTS."
+  (udev-configuration-file "hwdb.d" file-name contents))
 
-(define (file->udev-rule file-name file)
-  "Return a directory with a udev rule file FILE-NAME which is a copy of FILE."
+(define (file->udev-configuration-file subdirectory file-name file)
+  "Return a directory with a udev configuration file FILE-NAME which is a copy
+ of FILE."
   (computed-file file-name
                  (with-imported-modules '((guix build utils))
                    #~(begin
                        (use-modules (guix build utils))
 
-                       (define rules.d
-                         (string-append #$output "/lib/udev/rules.d"))
+                       (define configuration-directory
+                         (string-append #$output
+                                        "/lib/udev/"
+                                        #$subdirectory))
 
                        (define file-copy-dest
-                         (string-append rules.d "/" #$file-name))
+                         (string-append configuration-directory "/" #$file-name))
 
-                       (mkdir-p rules.d)
+                       (mkdir-p configuration-directory)
                        (copy-file #$file file-copy-dest)))))
 
+(define (file->udev-rule file-name file)
+  "Return a directory with a udev rule file FILE-NAME which is a copy of FILE."
+  (file->udev-configuration-file "rules.d" file-name file))
+
+(define (file->udev-hardware file-name file)
+  "Return a directory with a udev hardware file FILE-NAME which is a copy of FILE."
+  (file->udev-configuration-file "hwdb.d" file-name file))
+
 (define kvm-udev-rule
   ;; Return a directory with a udev rule that changes the group of /dev/kvm to
   ;; "kvm" and makes it #o660.  Apparently QEMU-KVM used to ship this rule,
@@ -2435,13 +2455,27 @@ item of @var{packages}."
 
 (define (udev-etc config)
   (match-record config <udev-configuration>
-    (udev rules)
+    (udev rules hardware)
+    (let* ((hardware
+            (udev-configurations-union "hwdb.d" (cons* udev hardware)))
+           (hwdb.bin
+            (computed-file
+             "hwdb.bin"
+             (with-imported-modules '((guix build utils))
+               #~(begin
+                   (use-modules (guix build utils))
+                   (setenv "UDEV_HWDB_PATH" #$hardware)
+                   (invoke #+(file-append udev "/bin/udevadm")
+                           "hwdb"
+                           "--update"
+                           "-o" #$output))))))
     `(("udev"
        ,(file-union "udev"
                     `(("udev.conf" ,udev.conf)
                       ("rules.d"
                        ,(udev-rules-union (cons* udev kvm-udev-rule
-                                                 rules)))))))))
+                                                 rules)))
+                      ("hwdb.bin" ,hwdb.bin))))))))
 
 (define udev-service-type
   (service-type (name 'udev)
@@ -2450,12 +2484,15 @@ item of @var{packages}."
                                           udev-shepherd-service)
                        (service-extension etc-service-type udev-etc)))
                 (compose concatenate)           ;concatenate the list of rules
-                (extend (lambda (config rules)
+                (extend (lambda (config extensions)
                           (let ((initial-rules
-                                 (udev-configuration-rules config)))
+                                 (udev-configuration-rules config))
+                                (initial-hardware
+                                 (udev-configuration-hardware config)))
                             (udev-configuration
                              (inherit config)
-                             (rules (append initial-rules rules))))))
+                             (rules (append initial-rules extensions))
+                             (hardware (append initial-hardware extensions))))))
                 (default-value (udev-configuration))
                 (description
                  "Run @command{udev}, which populates the @file{/dev}
@@ -2490,6 +2527,19 @@ instance."
                 (description "This service adds udev rules."))))
     (service type #f)))
 
+(define (udev-hardware-service name hardware-files)
+  "Return a service that extends udev-service-type with HARDWARE-FILES, named
+NAME-udev-hardware."
+  (let* ((name (symbol-append name '-udev-hardware))
+         (udev-extension (const (list hardware-files)))
+         (type (service-type
+                (name name)
+                (extensions (list
+                             (service-extension
+                              udev-service-type udev-extension)))
+                (description "This service adds udev hardware files."))))
+    (service type #f)))
+
 (define (swap-space->shepherd-service-name space)
   (let ((target (swap-space-target space)))
     (symbol-append 'swap-
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 5a0c634393..8dee91a3f7 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -163,7 +163,7 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in
          (group "messagebus")
          (system? #t)
          (comment "D-Bus system bus user")
-         (home-directory "/var/run/dbus")
+         (home-directory "/run/dbus")
          (shell (file-append shadow "/sbin/nologin")))))
 
 (define dbus-setuid-programs
@@ -186,7 +186,38 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in
         (let ((user (getpwnam "messagebus")))
           ;; This directory contains the daemon's socket so it must be
           ;; world-readable.
-          (mkdir-p/perms "/var/run/dbus" user #o755))
+          (mkdir-p/perms "/run/dbus" user #o755))
+
+        (catch 'system-error
+          (lambda ()
+            (symlink "/run/dbus" "/var/run/dbus"))
+          (lambda args
+            (let ((errno (system-error-errno args)))
+              (cond
+               ((= errno EEXIST)
+                (let ((existing-name
+                       (false-if-exception
+                        (readlink "/var/run/dbus"))))
+                  (unless (equal? existing-name "/run/dbus")
+                    ;; Move the content of /var/run/dbus to /run/dbus, and
+                    ;; retry.
+                    (let ((dir (opendir "/var/run/dbus")))
+                      (let loop ((next (readdir dir)))
+                        (cond
+                         ((eof-object? next) (closedir dir))
+                         ((member next '("." "..")) (loop (readdir dir)))
+                         (else
+                          (begin
+                            (rename-file (string-append "/var/run/dbus/" next)
+                                         (string-append "/run/dbus/" next))
+                            (loop (readdir dir)))))))
+                    (rmdir "/var/run/dbus")
+                    (symlink "/run/dbus" "/var/run/dbus"))))
+               (else
+                (format (current-error-port)
+                        "Failed to symlink /run/dbus to /var/run/dbus: ~s~%"
+                        (strerror errno))
+                (error "cannot create /var/run/dbus"))))))
 
         (unless (file-exists? "/etc/machine-id")
           (format #t "creating /etc/machine-id...~%")
@@ -210,7 +241,7 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in
                              '(#:environment-variables '("DBUS_VERBOSE=1")
                                #:log-file "/var/log/dbus-daemon.log")
                              '())
-                      #:pid-file "/var/run/dbus/pid"))
+                      #:pid-file "/run/dbus/pid"))
             (stop #~(make-kill-destructor)))))))
 
 (define dbus-root-service-type
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 5b79fbcda1..02a7802d58 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -37,6 +37,7 @@
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
   #:use-module (gnu services base)
+  #:use-module (gnu services configuration)
   #:use-module (gnu services dbus)
   #:use-module (gnu services avahi)
   #:use-module (gnu services xorg)
@@ -60,6 +61,7 @@
   #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages kde-plasma)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages xfce)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages xdisorg)
@@ -79,6 +81,7 @@
   #:use-module (guix ui)
   #:use-module (guix utils)
   #:use-module (guix gexp)
+  #:use-module (guix modules)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 format)
@@ -139,6 +142,11 @@
 
             gnome-desktop-configuration
             gnome-desktop-configuration?
+            gnome-desktop-configuration-core-services
+            gnome-desktop-configuration-shell
+            gnome-desktop-configuration-utilities
+            gnome-desktop-configuration-extra-packages
+            gnome-desktop-configuration-udev-ignorelist
             gnome-desktop-service
             gnome-desktop-service-type
 
@@ -1382,11 +1390,45 @@ rules.")
 ;;; GNOME desktop service.
 ;;;
 
-(define-record-type* <gnome-desktop-configuration> gnome-desktop-configuration
-  make-gnome-desktop-configuration
-  gnome-desktop-configuration?
-  (gnome gnome-desktop-configuration-gnome
-         (default gnome)))
+(define-maybe/no-serialization package)
+
+(define (extract-propagated-inputs package)
+  ;; Drop input labels.  Attempt to support outputs.
+  (map
+   (match-lambda
+     ((_ (? package? pkg)) pkg)
+     ((_ (? package? pkg) output) (list pkg output)))
+   (package-propagated-inputs package)))
+
+(define-configuration/no-serialization gnome-desktop-configuration
+  (core-services
+   (list-of-packages (extract-propagated-inputs gnome-meta-core-services))
+   "A list of packages that the GNOME Shell and applications may rely on.")
+  (shell
+   (list-of-packages (extract-propagated-inputs gnome-meta-core-shell))
+   "A list of packages that constitute the GNOME Shell, without applications.")
+  (utilities
+   (list-of-packages (extract-propagated-inputs gnome-meta-core-utilities))
+   "A list of packages that serve as applications to use on top of the \
+GNOME Shell.")
+  (gnome (maybe-package) "Deprecated.  Do not use.")
+  (extra-packages
+   (list-of-packages (extract-propagated-inputs gnome-essential-extras))
+   "A list of GNOME-adjacent packages to also include.  This field is intended
+for users to add their own packages to their GNOME experience.  Note, that it
+already includes some packages that are considered essential by some (most?)
+GNOME users.")
+  (udev-ignorelist
+   (list-of-strings '())
+   "A list of regular expressions denoting udev rules or hardware file names
+provided by any package that should not be installed.  By default, every udev
+rule and hardware file specified by any package referenced in the other fields
+are installed.")
+  (polkit-ignorelist
+   (list-of-strings '())
+   "A list of regular expressions denoting polkit rules provided by any package
+that should not be installed.  By default, every polkit rule added by any package
+referenced in the other fields are installed."))
 
 (define (gnome-package gnome name)
   "Return the package NAME among the GNOME package inputs.  NAME can be a
@@ -1398,31 +1440,84 @@ denote the spice-gtk input of the gnome-boxes input of the GNOME meta-package."
   "Return the package NAMES among the GNOME package inputs."
   (map (cut gnome-package gnome <>) names))
 
-(define (gnome-udev-rules config)
-  "Return the list of GNOME dependencies that provide udev rules."
-  (let ((gnome (gnome-desktop-configuration-gnome config)))
-    (gnome-packages gnome '("gnome-settings-daemon"))))
+(define (gnome-udev-configuration-files config)
+  "Return the GNOME udev rules and hardware files as computed from its
+dependencies by filtering out the ignorelist."
+  (list
+   (computed-file
+    "gnome-udev-configurations"
+    (with-imported-modules
+        (source-module-closure '((guix build utils)
+                                 (guix build union)))
+      #~(begin
+          (use-modules (guix build utils)
+                       (guix build union))
+          ;; If rules.d or hwdb.d is not a proper directory but a symlink,
+          ;; then it will not be possible to delete individual files in this
+          ;; directory.
+          (union-build #$output
+                       (search-path-as-list
+                        (list "lib/udev" "libexec/udev")
+                        (list #$@(gnome-profile config)))
+                       #:create-all-directories? #t)
+          (for-each
+           (lambda (pattern)
+             (for-each
+              delete-file-recursively
+              (find-files #$output pattern)))
+           (list #$@(gnome-desktop-configuration-udev-ignorelist config))))))))
 
 (define (gnome-polkit-settings config)
   "Return the list of GNOME dependencies that provide polkit actions and
 rules."
-  (let ((gnome (gnome-desktop-configuration-gnome config)))
-    (gnome-packages gnome
-                    '("gnome-settings-daemon"
-                      "gnome-control-center"
-                      "gnome-system-monitor"
-                      "gvfs"))))
+  (list
+   (computed-file
+    "gnome-polkit-settings"
+    (with-imported-modules
+        (source-module-closure '((guix build utils)
+                                 (guix build union)))
+      #~(let ((output (string-append #$output "/share/polkit-1")))
+          (use-modules (guix build utils)
+                       (guix build union))
+          (mkdir-p (dirname output))
+          (union-build output
+                       (search-path-as-list
+                        (list "share/polkit-1")
+                        (list #$@(gnome-profile config)))
+                       #:create-all-directories? #t)
+          (for-each
+           (lambda (pattern)
+             (for-each
+              delete-file-recursively
+              (find-files output pattern)))
+           (list #$@(gnome-desktop-configuration-polkit-ignorelist config))))))))
+
+(define (gnome-profile config)
+  "Return a list of packages propagated through CONFIG."
+  (append
+   (gnome-desktop-configuration-core-services config)
+   (gnome-desktop-configuration-shell config)
+   (gnome-desktop-configuration-utilities config)
+   (let ((gnome-meta (gnome-desktop-configuration-gnome config)))
+     (if (maybe-value-set? gnome-meta)
+         (begin
+           (warning
+            (gnome-desktop-configuration-source-location config)
+            (G_ "Using a meta-package for gnome-desktop is discouraged.~%"))
+           (list gnome-meta))
+         (list)))
+   (gnome-desktop-configuration-extra-packages config)))
 
 (define gnome-desktop-service-type
   (service-type
    (name 'gnome-desktop)
    (extensions
     (list (service-extension udev-service-type
-                             gnome-udev-rules)
+                             gnome-udev-configuration-files)
           (service-extension polkit-service-type
                              gnome-polkit-settings)
           (service-extension profile-service-type
-                             (compose list gnome-desktop-configuration-gnome))))
+                             gnome-profile)))
    (default-value (gnome-desktop-configuration))
    (description "Run the GNOME desktop environment.")))
 
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index b86e2d3c5b..26902c0568 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -1048,7 +1048,7 @@ argument.")))
              (default (xinitrc)))
   (xdmcp? gdm-configuration-xdmcp?
           (default #f))
-  (wayland? gdm-configuration-wayland? (default #f))
+  (wayland? gdm-configuration-wayland? (default #t))
   (wayland-session gdm-configuration-wayland-session
                    (default gdm-wayland-session-wrapper)))
 
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 2d695a52f8..d41802422b 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1579,7 +1579,7 @@ MIME type."
   "Return a derivation that builds the @file{mime.cache} database from manifest
 entries.  It's used to query the MIME type of a given file."
   (define shared-mime-info  ; lazy reference
-    (module-ref (resolve-interface '(gnu packages gnome)) 'shared-mime-info))
+    (module-ref (resolve-interface '(gnu packages freedesktop)) 'shared-mime-info))
 
   (mlet %store-monad ((glib (manifest-lookup-package manifest "glib")))
     (define build