~ruther/guix-local

a915a57d91c54e926b625f98833dead8263607b0 — Liliana Marie Prikler 1 year, 11 months ago 4b23fd7 + 704e09f
Merge branch 'gnome-team'
77 files changed, 4002 insertions(+), 2380 deletions(-)

M doc/guix.texi
M etc/news.scm
M gnu/local.mk
M gnu/packages/accessibility.scm
M gnu/packages/animation.scm
M gnu/packages/backup.scm
M gnu/packages/calendar.scm
M gnu/packages/disk.scm
M gnu/packages/display-managers.scm
M gnu/packages/electronics.scm
M gnu/packages/freedesktop.scm
M gnu/packages/geo.scm
M gnu/packages/gimp.scm
M gnu/packages/glib.scm
M gnu/packages/gnome-xyz.scm
M gnu/packages/gnome.scm
M gnu/packages/gnupg.scm
M gnu/packages/gnuzilla.scm
M gnu/packages/graphics.scm
M gnu/packages/gstreamer.scm
M gnu/packages/gtk.scm
M gnu/packages/guile-xyz.scm
M gnu/packages/kde-frameworks.scm
M gnu/packages/kde-games.scm
M gnu/packages/kde-multimedia.scm
M gnu/packages/kde-pim.scm
M gnu/packages/kde-utils.scm
M gnu/packages/linux.scm
M gnu/packages/mastodon.scm
M gnu/packages/maths.scm
M gnu/packages/mp3.scm
M gnu/packages/ocaml.scm
M gnu/packages/package-management.scm
M gnu/packages/patches/accountsservice-extensions.patch
A gnu/packages/patches/appstream-force-reload-stemmer.patch
A gnu/packages/patches/calls-disable-application-test.patch
A gnu/packages/patches/calls-disable-sip-test.patch
A gnu/packages/patches/cogl-fix-double-free.patch
A gnu/packages/patches/duc-fix-test-sh.patch
M gnu/packages/patches/eudev-rules-directory.patch
A gnu/packages/patches/feedbackd-use-system-gmobile.patch
M gnu/packages/patches/gdm-elogind-support.patch
A gnu/packages/patches/gegl-compatibility-old-librsvg.patch
D gnu/packages/patches/gitg-fix-positional-argument.patch
D gnu/packages/patches/glib-networking-gnutls-binding.patch
M gnu/packages/patches/glib-skip-failing-test.patch
A gnu/packages/patches/gmobile-make-it-installable.patch
A gnu/packages/patches/gnome-control-center-firmware-security.patch
A gnu/packages/patches/gtk2-harden-list-store.patch
A gnu/packages/patches/libcall-ui-make-it-installable.patch
A gnu/packages/patches/libgda-disable-data-proxy-test.patch
D gnu/packages/patches/mm-common-reproducible-tarball.patch
D gnu/packages/patches/mutter-fix-inverted-test.patch
M gnu/packages/patches/nautilus-extension-search-path.patch
A gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch
A gnu/packages/patches/pdfpc-build-with-vala-0.56.patch
A gnu/packages/patches/shared-mime-info-xdgmime-path.patch
A gnu/packages/patches/zathura-use-struct-initializers.patch
M gnu/packages/pcre.scm
M gnu/packages/pdf.scm
M gnu/packages/polkit.scm
M gnu/packages/python-xyz.scm
M gnu/packages/ruby.scm
M gnu/packages/suckless.scm
M gnu/packages/task-management.scm
M gnu/packages/telegram.scm
M gnu/packages/telephony.scm
M gnu/packages/text-editors.scm
M gnu/packages/tor-browsers.scm
M gnu/packages/virtualization.scm
M gnu/packages/web-browsers.scm
M gnu/packages/xml.scm
M gnu/services/base.scm
M gnu/services/dbus.scm
M gnu/services/desktop.scm
M gnu/services/xorg.scm
M guix/profiles.scm
M doc/guix.texi => doc/guix.texi +46 -11
@@ 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

M etc/news.scm => etc/news.scm +75 -0
@@ 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")

M gnu/local.mk => gnu/local.mk +16 -4
@@ 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	\

M gnu/packages/accessibility.scm => gnu/packages/accessibility.scm +9 -1
@@ 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

M gnu/packages/animation.scm => gnu/packages/animation.scm +2 -2
@@ 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++

M gnu/packages/backup.scm => gnu/packages/backup.scm +9 -2
@@ 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

M gnu/packages/calendar.scm => gnu/packages/calendar.scm +2 -2
@@ 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

M gnu/packages/disk.scm => gnu/packages/disk.scm +31 -28
@@ 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

M gnu/packages/display-managers.scm => gnu/packages/display-managers.scm +34 -31
@@ 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

M gnu/packages/electronics.scm => gnu/packages/electronics.scm +1 -1
@@ 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

M gnu/packages/freedesktop.scm => gnu/packages/freedesktop.scm +118 -9
@@ 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

M gnu/packages/geo.scm => gnu/packages/geo.scm +3 -4
@@ 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

M gnu/packages/gimp.scm => gnu/packages/gimp.scm +17 -17
@@ 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

M gnu/packages/glib.scm => gnu/packages/glib.scm +276 -256
@@ 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+)))

M gnu/packages/gnome-xyz.scm => gnu/packages/gnome-xyz.scm +250 -410
@@ 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

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +1431 -868
@@ 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+)))

M gnu/packages/gnupg.scm => gnu/packages/gnupg.scm +1 -1
@@ 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")))

M gnu/packages/gnuzilla.scm => gnu/packages/gnuzilla.scm +1 -0
@@ 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)

M gnu/packages/graphics.scm => gnu/packages/graphics.scm +2 -2
@@ 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"))))

M gnu/packages/gstreamer.scm => gnu/packages/gstreamer.scm +16 -16
@@ 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

M gnu/packages/gtk.scm => gnu/packages/gtk.scm +115 -91
@@ 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

M gnu/packages/guile-xyz.scm => gnu/packages/guile-xyz.scm +1 -1
@@ 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

M gnu/packages/kde-frameworks.scm => gnu/packages/kde-frameworks.scm +6 -0
@@ 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")

M gnu/packages/kde-games.scm => gnu/packages/kde-games.scm +1 -1
@@ 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)

M gnu/packages/kde-multimedia.scm => gnu/packages/kde-multimedia.scm +1 -0
@@ 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)

M gnu/packages/kde-pim.scm => gnu/packages/kde-pim.scm +1 -0
@@ 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)

M gnu/packages/kde-utils.scm => gnu/packages/kde-utils.scm +1 -0
@@ 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)

M gnu/packages/linux.scm => gnu/packages/linux.scm +40 -17
@@ 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

M gnu/packages/mastodon.scm => gnu/packages/mastodon.scm +2 -2
@@ 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

M gnu/packages/maths.scm => gnu/packages/maths.scm +1 -0
@@ 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)

M gnu/packages/mp3.scm => gnu/packages/mp3.scm +1 -0
@@ 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)

M gnu/packages/ocaml.scm => gnu/packages/ocaml.scm +2 -4
@@ 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")

M gnu/packages/package-management.scm => gnu/packages/package-management.scm +2 -0
@@ 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

M gnu/packages/patches/accountsservice-extensions.patch => gnu/packages/patches/accountsservice-extensions.patch +2 -3
@@ 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);

A gnu/packages/patches/appstream-force-reload-stemmer.patch => gnu/packages/patches/appstream-force-reload-stemmer.patch +89 -0
@@ 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


A gnu/packages/patches/calls-disable-application-test.patch => gnu/packages/patches/calls-disable-application-test.patch +72 -0
@@ 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


A gnu/packages/patches/calls-disable-sip-test.patch => gnu/packages/patches/calls-disable-sip-test.patch +44 -0
@@ 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


A gnu/packages/patches/cogl-fix-double-free.patch => gnu/packages/patches/cogl-fix-double-free.patch +32 -0
@@ 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


A gnu/packages/patches/duc-fix-test-sh.patch => gnu/packages/patches/duc-fix-test-sh.patch +70 -0
@@ 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


M gnu/packages/patches/eudev-rules-directory.patch => gnu/packages/patches/eudev-rules-directory.patch +5 -4
@@ 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);
 

A gnu/packages/patches/feedbackd-use-system-gmobile.patch => gnu/packages/patches/feedbackd-use-system-gmobile.patch +42 -0
@@ 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


M gnu/packages/patches/gdm-elogind-support.patch => gnu/packages/patches/gdm-elogind-support.patch +42 -51
@@ 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.')

A gnu/packages/patches/gegl-compatibility-old-librsvg.patch => gnu/packages/patches/gegl-compatibility-old-librsvg.patch +80 -0
@@ 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


D gnu/packages/patches/gitg-fix-positional-argument.patch => gnu/packages/patches/gitg-fix-positional-argument.patch +0 -36
@@ 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


D gnu/packages/patches/glib-networking-gnutls-binding.patch => gnu/packages/patches/glib-networking-gnutls-binding.patch +0 -21
@@ 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,

M gnu/packages/patches/glib-skip-failing-test.patch => gnu/packages/patches/glib-skip-failing-test.patch +2 -1
@@ 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' : {

A gnu/packages/patches/gmobile-make-it-installable.patch => gnu/packages/patches/gmobile-make-it-installable.patch +89 -0
@@ 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


A gnu/packages/patches/gnome-control-center-firmware-security.patch => gnu/packages/patches/gnome-control-center-firmware-security.patch +33 -0
@@ 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),

A gnu/packages/patches/gtk2-harden-list-store.patch => gnu/packages/patches/gtk2-harden-list-store.patch +42 -0
@@ 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,

A gnu/packages/patches/libcall-ui-make-it-installable.patch => gnu/packages/patches/libcall-ui-make-it-installable.patch +81 -0
@@ 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


A gnu/packages/patches/libgda-disable-data-proxy-test.patch => gnu/packages/patches/libgda-disable-data-proxy-test.patch +59 -0
@@ 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


D gnu/packages/patches/mm-common-reproducible-tarball.patch => gnu/packages/patches/mm-common-reproducible-tarball.patch +0 -40
@@ 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


D gnu/packages/patches/mutter-fix-inverted-test.patch => gnu/packages/patches/mutter-fix-inverted-test.patch +0 -290
@@ 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


M gnu/packages/patches/nautilus-extension-search-path.patch => gnu/packages/patches/nautilus-extension-search-path.patch +36 -28
@@ 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)
     {

A gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch => gnu/packages/patches/orbit2-fix-array-allocation-32bit.patch +40 -0
@@ 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


A gnu/packages/patches/pdfpc-build-with-vala-0.56.patch => gnu/packages/patches/pdfpc-build-with-vala-0.56.patch +40 -0
@@ 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


A gnu/packages/patches/shared-mime-info-xdgmime-path.patch => gnu/packages/patches/shared-mime-info-xdgmime-path.patch +22 -0
@@ 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

A gnu/packages/patches/zathura-use-struct-initializers.patch => gnu/packages/patches/zathura-use-struct-initializers.patch +68 -0
@@ 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


M gnu/packages/pcre.scm => gnu/packages/pcre.scm +13 -3
@@ 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

M gnu/packages/pdf.scm => gnu/packages/pdf.scm +39 -34
@@ 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/")

M gnu/packages/polkit.scm => gnu/packages/polkit.scm +1 -1
@@ 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

M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +70 -4
@@ 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")

M gnu/packages/ruby.scm => gnu/packages/ruby.scm +1 -0
@@ 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)

M gnu/packages/suckless.scm => gnu/packages/suckless.scm +1 -1
@@ 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)

M gnu/packages/task-management.scm => gnu/packages/task-management.scm +17 -15
@@ 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

M gnu/packages/telegram.scm => gnu/packages/telegram.scm +5 -5
@@ 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

M gnu/packages/telephony.scm => gnu/packages/telephony.scm +105 -0
@@ 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+)))

M gnu/packages/text-editors.scm => gnu/packages/text-editors.scm +9 -2
@@ 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"))

M gnu/packages/tor-browsers.scm => gnu/packages/tor-browsers.scm +1 -0
@@ 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)

M gnu/packages/virtualization.scm => gnu/packages/virtualization.scm +1 -1
@@ 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")

M gnu/packages/web-browsers.scm => gnu/packages/web-browsers.scm +1 -1
@@ 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)

M gnu/packages/xml.scm => gnu/packages/xml.scm +3 -3
@@ 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

M gnu/services/base.scm => gnu/services/base.scm +83 -33
@@ 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-

M gnu/services/dbus.scm => gnu/services/dbus.scm +34 -3
@@ 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

M gnu/services/desktop.scm => gnu/services/desktop.scm +112 -17
@@ 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.")))


M gnu/services/xorg.scm => gnu/services/xorg.scm +1 -1
@@ 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)))


M guix/profiles.scm => guix/profiles.scm +1 -1
@@ 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