Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / gnome.scm
index 06aafa7..9a1085f 100644 (file)
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2019 Jonathan Frederickson <jonathan@terracrypt.net>
-;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net>
+;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
-;;; Copyright © 2019 Raghav Gururajan <raghavgururajan@disroot.org>
+;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages vpn)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages xorg)
   #:use-module (gnu artwork)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
@@ -582,6 +581,110 @@ sharing to the masses.")
    (home-page "https://gitlab.gnome.org/GNOME/gnome-user-share")
    (license license:gpl2+)))
 
+(define-public sushi
+  (package
+    (name "sushi")
+    (version "3.32.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "02idvqjk76lii9xyg3b1yz4rw721709bdm5j8ikjym6amcghl0aj"))))
+    (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"))))
+               #t))))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("clutter" ,clutter)
+       ("clutter-gst" ,clutter-gst)
+       ("clutter-gtk" ,clutter-gtk)
+       ("evince" ,evince)                         ; For file previewing.
+       ("freetype" ,freetype)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gjs" ,gjs)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gstreamer" ,gstreamer)
+       ("gtksourceview" ,gtksourceview-3)
+       ("harfbuzz" ,harfbuzz)
+       ("libepoxy" ,libepoxy)
+       ("libmusicbrainz" ,libmusicbrainz)
+       ("libxml2" ,libxml2)
+       ("neon" ,neon)
+       ("webkitgtk" ,webkitgtk)))
+    (synopsis "File previewer for the GNOME desktop")
+    (description "Sushi is a DBus-activated service that allows applications to
+preview files on the GNOME desktop.")
+    (home-page "https://gitlab.gnome.org/GNOME/sushi")
+    (license license:gpl2+)))
+
+(define-public rygel
+  (package
+    (name "rygel")
+    (version "0.38.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "003xficqb08r1dgid20i7cn889lbfwrglpx78rjd5nkvgxbimhh8"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (inputs
+     `(("gdk-pixbuf" ,gdk-pixbuf)
+       ("gssdp" ,gssdp)
+       ("gstreamer" ,gstreamer)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gtk+" ,gtk+)
+       ("gupnp" ,gupnp)
+       ("gupnp-av" ,gupnp-av)
+       ("gupnp-dlna" ,gupnp-dlna)
+       ("libgee" ,libgee)
+       ("libmediaart" ,libmediaart)
+       ("libsoup" ,libsoup)
+       ("libxslt" ,libxslt)
+       ("libunistring" ,libunistring)
+       ("tracker" ,tracker)))
+    (synopsis "Share audio, video, and pictures with other devices")
+    (description
+     "Rygel is a home media solution (@dfn{UPnP AV MediaServer and
+MediaRenderer}) for GNOME that allows you to easily share audio, video, and
+pictures, and to control a media player on your home network.
+
+Rygel achieves interoperability with other devices by trying to conform to the
+strict requirements of DLNA and by converting media on-the-fly to formats that
+client devices can handle.")
+    (home-page "https://wiki.gnome.org/Projects/Rygel")
+    (license (list
+              ;; For logo (data/icons/*).
+              license:cc-by-sa3.0
+              ;; For all others.
+              license:lgpl2.1+))))
+
 (define-public libnma
   (package
    (name "libnma")
@@ -809,13 +912,6 @@ useful as a tutorial and users' guide for new or less experienced users.")
          ("perl" ,perl)
          ("pkg-config" ,pkg-config)
          ("python-wrapper" ,python-wrapper)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-before 'bootstrap 'dont-configure-during-bootstrap
-             (lambda _
-               (setenv "NOCONFIGURE" "true")
-               #t)))))
       (home-page "https://wiki.gnome.org/Apps/Dia")
       (synopsis "Diagram creation for GNOME")
       (description "Dia can be used to draw different types of diagrams, and
@@ -1214,7 +1310,7 @@ the font would look under various sizes.")
 (define-public gcr
   (package
     (name "gcr")
-    (version "3.28.1")
+    (version "3.34.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1222,20 +1318,7 @@ the font would look under various sizes.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12qn7mcmxb45lz1gq3s3b34rimiyrrshkrpvxdw1fc0w26i4l84m"))
-              (patches
-               (list
-                ;; This patch solves an ordering issue that showed up when
-                ;; running the test suite against newer Glib 2.60.  See
-                ;; <https://gitlab.gnome.org/GNOME/gcr/merge_requests/9>.
-                (origin
-                  (method url-fetch)
-                  (uri (string-append "https://gitlab.gnome.org/GNOME/gcr/commit/"
-                                      "45d637578d7643ff96c0183ac267497a0b4c6344.diff"))
-                  (file-name "gcr-hashtable-ordering.patch")
-                  (sha256
-                   (base32
-                    "1vsqiys8fsm1f1vvds783wwf7zwi5v282rhsai8jrsm6x7h79gbi")))))))
+                "0925snsixzkwh49xiayqmj6fcrmklqk8kyy0jkv7m64h9abm1pr9"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1244,9 +1327,9 @@ the font would look under various sizes.")
          ;; build environment.
          (add-after 'unpack 'disable-failing-tests
            (lambda _
-             (substitute* "gcr/test-system-prompt.c"
-               (("g_test_add") "//")
-               (("return.*") "return 0;"))
+             (substitute* "Makefile.in"
+               (("[[:blank:]]+test-system-prompt\\$\\(EXEEXT\\)")
+                ""))
              #t))
          (add-before 'check 'pre-check
            (lambda _
@@ -1258,11 +1341,11 @@ the font would look under various sizes.")
        ("gnupg" ,gnupg)                ;called as a child process during tests
        ("libgcrypt" ,libgcrypt)))
     (native-inputs
-     `(("python" ,python-2)             ;for tests
+     `(("python" ,python-wrapper)       ;for tests
        ("pkg-config" ,pkg-config)
+       ("gettext" ,gettext-minimal)
        ("glib" ,glib "bin")
        ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
        ("libxml2" ,libxml2)
        ("vala" ,vala)
        ("xsltproc" ,libxslt)))
@@ -1607,14 +1690,16 @@ guidelines.")
 (define-public shared-mime-info
   (package
     (name "shared-mime-info")
-    (version "1.10")
+    (version "1.15")
     (source (origin
              (method url-fetch)
-             (uri (string-append "https://freedesktop.org/~hadess/"
-                                 "shared-mime-info-" version ".tar.xz"))
+             (uri (string-append
+                   "https://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/"
+                   "b27eb88e4155d8fccb8bb3cd12025d5b/shared-mime-info-" version
+                   ".tar.xz"))
              (sha256
               (base32
-               "1gxyvwym3xgpmp262gfn8jg5sla6k5hy6m6dmy6grgiq90xsh9f6"))))
+               "146vynj78wcwdq0ms52jzm1r4m6dzi1rhyh3h4xyb6bw8ckv10pl"))))
     (build-system gnu-build-system)
     (arguments
      ;; The build system appears not to be parallel-safe.
@@ -1623,7 +1708,8 @@ guidelines.")
      `(("glib" ,glib)
        ("libxml2" ,libxml2)))
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("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")
@@ -1779,7 +1865,7 @@ some form of information without getting in the user's way.")
 (define-public libpeas
   (package
     (name "libpeas")
-    (version "1.22.0")
+    (version "1.24.1")
     (source
      (origin
       (method url-fetch)
@@ -1788,8 +1874,19 @@ some form of information without getting in the user's way.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "0qm908kisyjzjxvygdl18hjqxvvgkq9w0phs2g55pck277sw0bsv"))))
-    (build-system gnu-build-system)
+        "1162dr7smmfb02czmhshr0f93hqj7w0nw29bys5lzfvwarxcyflw"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server"))
+                   (disp ":1"))
+               (setenv "DISPLAY" disp)
+               ;; Tests require a running X server.
+               (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp))
+               #t))))))
     (inputs
      `(("gtk+" ,gtk+)
        ("glade" ,glade3)
@@ -1797,9 +1894,10 @@ some form of information without getting in the user's way.")
        ("python-pygobject" ,python-pygobject)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("gettext" ,gettext-minimal)
        ("glib:bin" ,glib "bin")
        ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)))
+       ("xorg-server" ,xorg-server-for-tests)))
     (propagated-inputs
      ;; The .pc file "Requires" gobject-introspection.
      `(("gobject-introspection" ,gobject-introspection)))
@@ -1961,7 +2059,7 @@ dealing with different structured file formats.")
 (define-public librsvg
   (package
     (name "librsvg")
-    (version "2.40.20")
+    (version "2.40.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1969,7 +2067,7 @@ dealing with different structured file formats.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0ay9himvw1l1swcf3h1312d2iqzfl65kpbfgiyfykgvq7cydvx6g"))))
+                "1fljkag2gr7c4k5mn798lgf9903xslz8h51bgvl89nnay42qjqpp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -2007,7 +2105,9 @@ dealing with different structured file formats.")
        ("glib" ,glib "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
     (inputs
-     `(("pango" ,pango)
+     `(;; XXX: 1.44 causes some test failures, so we stick with 1.42 for
+       ;; this ancient version of librsvg.
+       ("pango" ,pango-1.42)
        ("libcroco" ,libcroco)
        ("bzip2" ,bzip2)
        ("libgsf" ,libgsf)
@@ -2038,7 +2138,7 @@ from forcing GEXP-PROMISE."
                       #:guile-for-build guile)))
 
 (define librsvg-next-source
-  (let* ((version         "2.46.3")
+  (let* ((version         "2.46.4")
          (upstream-source (origin
                            (method url-fetch)
                            (uri (string-append "mirror://gnome/sources/librsvg/"
@@ -2046,7 +2146,7 @@ from forcing GEXP-PROMISE."
                                                "librsvg-" version ".tar.xz"))
                            (sha256
                             (base32
-                             "1s3a96i7f4pynjwxxvhysp4b6r7kyi8nasdxfyi62hc7gm34d3kn")))))
+                             "0afc82nsxc6kw136xid4vcq9kmq4rmgzzk8bh2pvln2cnvirwnxl")))))
     (origin
       (method computed-origin-method)
       (file-name (string-append "librsvg-" version ".tar.xz"))
@@ -2064,16 +2164,28 @@ from forcing GEXP-PROMISE."
                      #+(canonical-package tar)))
               (invoke "tar" "xvf" #+upstream-source)
               (with-directory-excursion (string-append "librsvg-" #$version)
+                ;; The following crate(s) are needed in addition to the ones replaced:
+                (begin
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-autocfg-0.1) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-proc-macro2-0.4) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-quote-0.6) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-unicode-xid-0.1) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-maybe-uninit-2.0) "-C" "vendor"))
                 (for-each
                   (lambda (crate)
                     (delete-file-recursively (string-append "vendor/" (car crate)))
                     (invoke "tar" "xvf" (cdr crate) "-C" "vendor"))
-                  '(;("aho-corasick" . #+(package-source rust-aho-corasick-0.7))
+                  '(("aho-corasick" . #+(package-source rust-aho-corasick-0.7))
 ;; alga 0.9
                     ("approx" . #+(package-source rust-approx-0.3))
                     ("arrayvec" . #+(package-source rust-arrayvec-0.4))
                     ("atty" . #+(package-source rust-atty-0.2))
-                    ("autocfg" . #+(package-source rust-autocfg-0.1))
+                    ("autocfg" . #+(package-source rust-autocfg-1.0))
                     ("bitflags" . #+(package-source rust-bitflags-1))
 ;; block 0.1
                     ("bstr" . #+(package-source rust-bstr-0.2))
@@ -2087,9 +2199,9 @@ from forcing GEXP-PROMISE."
                     ("criterion" . #+(package-source rust-criterion-0.2))
                     ("criterion-plot" . #+(package-source rust-criterion-plot-0.3))
                     ("crossbeam-deque" . #+(package-source rust-crossbeam-deque-0.7))
-                    ;("crossbeam-epoch" . #+(package-source rust-crossbeam-epoch-0.7))
-                    ("crossbeam-queue" . #+(package-source rust-crossbeam-queue-0.1))
-                    ("crossbeam-utils" . #+(package-source rust-crossbeam-utils-0.6))
+                    ("crossbeam-epoch" . #+(package-source rust-crossbeam-epoch-0.8))
+                    ("crossbeam-queue" . #+(package-source rust-crossbeam-queue-0.2))
+                    ("crossbeam-utils" . #+(package-source rust-crossbeam-utils-0.7))
 ;; cssparser 0.25
 ;; cssparser-macros 0.3
                     ("csv" . #+(package-source rust-csv-1.1))
@@ -2114,37 +2226,37 @@ from forcing GEXP-PROMISE."
 ;; gdk-pixbuf-sys 0.9
                     ("generic-array" . #+(package-source rust-generic-array-0.12))
 ;; gio 0.7
-;; gio-sys 0.9
+                    ("gio-sys" . #+(package-source rust-gio-sys-0.9))
 ;; glib 0.8
-;; glib-sys 0.9
-;; gobject-sys 0.9
-;; idna 0.2
+                    ("glib-sys" . #+(package-source rust-glib-sys-0.9))
+                    ("gobject-sys" . #+(package-source rust-gobject-sys-0.9))
+                    ("idna" . #+(package-source rust-idna-0.2))
                     ("itertools" . #+(package-source rust-itertools-0.8))
                     ("itoa" . #+(package-source rust-itoa-0.4))
                     ("language-tags" . #+(package-source rust-language-tags-0.2))
-                    ("lazy_static" . #+(package-source rust-lazy-static-1.3))
+                    ("lazy_static" . #+(package-source rust-lazy-static-1))
                     ("libc" . #+(package-source rust-libc-0.2))
-;; libm 0.1
-;; locale_config 0.3
+                    ("libm" . #+(package-source rust-libm-0.1))
+                    ("locale_config" . #+(package-source rust-locale-config-0.3))
                     ("log" . #+(package-source rust-log-0.4))
                     ("mac" . #+(package-source rust-mac-0.1))
-;; malloc_buf 0.0
+                    ("malloc_buf" . #+(package-source rust-malloc-buf-0.0))
 ;; markup5ever 0.9
                     ("matches" . #+(package-source rust-matches-0.1))
 ;; matrixmultiply 0.2
-                    ;("memchr" . #+(package-source rust-memchr-2.2))
-;; memoffset 0.5
+                    ("memchr" . #+(package-source rust-memchr-2.2))
+                    ("memoffset" . #+(package-source rust-memoffset-0.5))
 ;; nalgebra 0.18
                     ("new_debug_unreachable" . #+(package-source rust-new-debug-unreachable-1.0))
                     ("nodrop" . #+(package-source rust-nodrop-0.1))
                     ("num-complex" . #+(package-source rust-num-complex-0.2))
                     ("num-integer" . #+(package-source rust-num-integer-0.1))
-;; num-rational 0.2
+                    ("num-rational" . #+(package-source rust-num-rational-0.2))
                     ("num-traits" . #+(package-source rust-num-traits-0.2))
                     ("num_cpus" . #+(package-source rust-num-cpus-1.10))
-;; objc 0.2
-;; objc-foundation 0.1
-;; objc_id 0.1
+                    ("objc" . #+(package-source rust-objc-0.2))
+                    ("objc-foundation" . #+(package-source rust-objc-foundation-0.1))
+                    ("objc_id" . #+(package-source rust-objc-id-0.1))
 ;; pango 0.7
 ;; pango-sys 0.9
 ;; pangocairo 0.8
@@ -2169,15 +2281,15 @@ from forcing GEXP-PROMISE."
                     ("rand_os" . #+(package-source rust-rand-os-0.1))
                     ("rand_pcg" . #+(package-source rust-rand-pcg-0.1))
                     ("rand_xorshift" . #+(package-source rust-rand-xorshift-0.1))
-;; rand_xoshiro 0.1
+                    ("rand_xoshiro" . #+(package-source rust-rand-xoshiro-0.1))
 ;; rawpointer 0.2
-;; rayon 1.2
-;; rayon-core 1.6
+                    ("rayon" . #+(package-source rust-rayon-1.3))
+                    ("rayon-core" . #+(package-source rust-rayon-core-1.7))
 ;; rctree 0.3
                     ("rdrand" . #+(package-source rust-rdrand-0.4))
-;; regex 1.3
+                    ("regex" . #+(package-source rust-regex-1.3))
                     ("regex-automata" . #+(package-source rust-regex-automata-0.1))
-                    ;("regex-syntax" . #+(package-source rust-regex-syntax-0.6))
+                    ("regex-syntax" . #+(package-source rust-regex-syntax-0.6))
                     ("rustc_version" . #+(package-source rust-rustc-version-0.2))
                     ("ryu" . #+(package-source rust-ryu-1.0))
                     ("same-file" . #+(package-source rust-same-file-1.0))
@@ -2190,27 +2302,26 @@ from forcing GEXP-PROMISE."
                     ("siphasher" . #+(package-source rust-siphasher-0.2))
                     ("smallvec" . #+(package-source rust-smallvec-0.6))
                     ("string_cache" . #+(package-source rust-string-cache-0.7))
-                    ;("string_cache_codegen" . #+(package-source rust-string-cache-codegen-0.4))
+                    ("string_cache_codegen" . #+(package-source rust-string-cache-codegen-0.4))
                     ("string_cache_shared" . #+(package-source rust-string-cache-shared-0.3))
                     ("syn" . #+(package-source rust-syn-1.0))
                     ("tendril" . #+(package-source rust-tendril-0.4))
                     ("textwrap" . #+(package-source rust-textwrap-0.11))
-                    ("thread_local" . #+(package-source rust-thread-local-0.3))
+                    ("thread_local" . #+(package-source rust-thread-local-1.0))
                     ("tinytemplate" . #+(package-source rust-tinytemplate-1.0))
                     ("typenum" . #+(package-source rust-typenum-1.10))
                     ("unicode-bidi" . #+(package-source rust-unicode-bidi-0.3))
                     ("unicode-normalization" . #+(package-source rust-unicode-normalization-0.1))
                     ("unicode-width" . #+(package-source rust-unicode-width-0.1))
                     ("unicode-xid" . #+(package-source rust-unicode-xid-0.2))
-;; url 2.1
+                    ("url" . #+(package-source rust-url-2.1))
                     ("utf-8" . #+(package-source rust-utf-8-0.7))
                     ("walkdir" . #+(package-source rust-walkdir-2.2))
                     ("winapi" . #+(package-source rust-winapi-0.3))
                     ("winapi-i686-pc-windows-gnu" . #+(package-source rust-winapi-i686-pc-windows-gnu-0.4))
                     ("winapi-util" . #+(package-source rust-winapi-util-0.1))
                     ("winapi-x86_64-pc-windows-gnu" . #+(package-source rust-winapi-x86-64-pc-windows-gnu-0.4))
-;; xml-rs 0.8
-                    )))
+                    ("xml-rs" . #+(package-source rust-xml-rs-0.8)))))
               (format #t "Replacing vendored crates in the tarball and repacking ...~%")
               (force-output)
               (invoke "tar" "cfa" #$output
@@ -2229,7 +2340,7 @@ from forcing GEXP-PROMISE."
 (define-public librsvg-next
   (package
     (name "librsvg")
-    (version "2.46.3")
+    (version "2.46.4")
     (source librsvg-next-source)
     (build-system gnu-build-system)
     (arguments
@@ -2245,6 +2356,8 @@ from forcing GEXP-PROMISE."
              (use-modules (guix build cargo-utils))
              (substitute* "librsvg/Cargo.toml"
                (("bitflags .*") "bitflags = \"1\"\n")) ; 1.2 is vendored
+             (substitute* "rsvg_internals/Cargo.toml"
+               (("\"=") "\""))
              (generate-all-checksums "vendor")
              (delete-file "Cargo.lock")
              (invoke "cargo" "generate-lockfile")))
@@ -2352,7 +2465,9 @@ functionality was designed to be as reusable and portable as possible.")
                 "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags
+     `(;; 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"
@@ -2685,7 +2800,7 @@ creating interactive structured graphics.")
                          ("libgnome" ,libgnome)
                          ("libgnomecanvas" ,libgnomecanvas)
                          ("libgnome-keyring" ,libgnome-keyring)))
-    (inputs `(("libjpeg" ,libjpeg)
+    (inputs `(("libjpeg" ,libjpeg-turbo)
               ("popt" ,popt)
               ("libbonobo" ,libbonobo)
               ("libxml2" ,libxml2)
@@ -2997,7 +3112,7 @@ Hints specification (EWMH).")
      `(("bison" ,bison)
        ("docbook-xml" ,docbook-xml)
        ("intltool" ,intltool)
-       ("itstool" ,itstool/fixed)            ;see <https://bugs.gnu.org/37468>
+       ("itstool" ,itstool)
        ("glib:bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (home-page "http://www.gnumeric.org")
@@ -3102,7 +3217,7 @@ passwords in the GNOME keyring.")
 (define-public vala
   (package
     (name "vala")
-    (version "0.44.5")
+    (version "0.46.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3110,7 +3225,7 @@ passwords in the GNOME keyring.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0zy2kfcvhikczfzhk5l7pkw6mvn3d6vw8cv7g08iah85p22q33xv"))))
+                "07fv895sp9wq74b20qig7hic0r4ynrr5pfaqba02r44xb794fy0s"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -3314,6 +3429,7 @@ and RDP protocols.")
                     "mirror://gnome/sources/" name "/"
                     (version-major+minor version) "/"
                     name "-" version ".tar.xz"))
+              (patches (search-patches "dconf-meson-0.52.patch"))
               (sha256
                (base32
                 "1azz4hb9z76yxn34yrrsiib3iqz5z4vpwn5q7cncp55w365ygg38"))))
@@ -3392,13 +3508,7 @@ and objects.")
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'no-configure
-           (lambda* _
-            (setenv "NOCONFIGURE" "1")
-            #t)))
-       #:configure-flags
+     '(#:configure-flags
        (list (string-append "--with-xkb-base="
                             (assoc-ref %build-inputs "xkeyboard-config")
                             "/share/X11/xkb")
@@ -3529,7 +3639,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.68.3")
+    (version "2.68.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -3537,7 +3647,7 @@ libxml to ease remote use of the RESTful API.")
                                   "libsoup-" version ".tar.xz"))
               (sha256
                (base32
-                "1yxs0ax4rq3g0lgkbv7mz497rqj16iyyizddyc13gzxh6n7b0jsk"))))
+                "151j5dc84gbl6a917pxvd0b372lw5za48n63lyv6llfc48lv2l1d"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -3652,7 +3762,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
 (define-public libsecret
   (package
     (name "libsecret")
-    (version "0.19.1")
+    (version "0.20.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3661,7 +3771,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
                     "libsecret-" version ".tar.xz"))
               (sha256
                (base32
-                "0fhflcsr70b1pps2pcvqcbdhip2ny5am9nbm634f4sj5g40y30w5"))))
+                "0ir4ynpf8b64xss1azvsi5x6697lik7hkf3z0xxa2qv2xja3xxsp"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -3867,7 +3977,7 @@ more fun.")
        ("vte" ,vte)
        ("gnutls" ,gnutls)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("util-linux" ,util-linux)
+       ("util-linux" ,util-linux "lib")
        ("vala" ,vala)))
     (home-page "https://wiki.gnome.org/Apps/Terminal")
     (synopsis "Terminal emulator")
@@ -3960,43 +4070,34 @@ output devices.")
 (define-public geoclue
   (package
     (name "geoclue")
-    (version "2.4.8")
+    (version "2.5.5")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://www.freedesktop.org/software/" name
-                           "/releases/" (version-major+minor version) "/"
-                           name "-" version ".tar.xz"))
+       (uri
+        (string-append "https://gitlab.freedesktop.org/geoclue/geoclue/-/archive/"
+                       version "/geoclue-" version ".tar.bz2"))
        (sha256
         (base32
-         "08yg1r7m0n9hwyvcy769qkmkf8lslqwv69cjfffwnc3zm5km25qj"))
+         "1b7jqrsn4x7mxjxj8hvb2dl2cmhrpb9vibs4rvkkanky5nsx3sai"))
        (patches (search-patches "geoclue-config.patch"))))
-    (build-system glib-or-gtk-build-system)
+    (build-system meson-build-system)
     (arguments
-     '(;; The tests want to run the system bus.
-       #:tests? #f
-       #:configure-flags (list ;; Disable bits requiring ModemManager.
-                               "--disable-3g-source"
-                               "--disable-cdma-source"
-                               "--disable-modem-gps-source"
-                               "--with-dbus-service-user=geoclue")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-/bin/true
-                     (lambda _
-                       (substitute* "configure"
-                         (("/bin/true") (which "true")))
-                       #t)))))
+     '(#:configure-flags (list "-Dbus-srv-user=geoclue")))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("gobject-introspection" ,gobject-introspection)
+       ("modem-manager" ,modem-manager)
+       ("libnotify" ,libnotify)
+       ("gtk-doc", gtk-doc)
        ("intltool" ,intltool)))
     (inputs
      `(("avahi" ,avahi)
-       ("glib" ,glib)
+       ("glib:bin" ,glib "bin")
+       ("glib-networking" ,glib-networking)
        ("json-glib" ,json-glib)
        ("libsoup" ,libsoup)))
-    (home-page "https://www.freedesktop.org/wiki/Software/GeoClue/")
+    (home-page "https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home")
     (synopsis "Geolocation service")
     (description "Geoclue is a D-Bus service that provides location
 information.  The primary goal of the Geoclue project is to make creating
@@ -4061,7 +4162,20 @@ faster results and to avoid unnecessary server load.")
               (sha256
                (base32
                 "1vxxvmz2cxb1qy6ibszaz5bskqdy9nd9fxspj9fv3gfmrjzzzdb4"))
-              (patches (search-patches "upower-builddir.patch"))))
+              (patches (search-patches "upower-builddir.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Upstream commit
+                  ;; <https://cgit.freedesktop.org/upower/commit/?id=18457c99b68786cd729b315723d680e6860d9cfa>
+                  ;; moved 'dbus-1/system.d' from etc/ to share/.  However,
+                  ;; 'dbus-configuration-directory' in (gnu services dbus)
+                  ;; expects it in etc/.  Thus, move it back to its previous
+                  ;; location.
+                  (substitute* "src/Makefile.in"
+                    (("^dbusconfdir =.*$")
+                     "dbusconfdir = $(sysconfdir)/dbus-1/system.d\n"))
+                  #t))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '( ;; The tests want to contact the system bus, which can't be done in the
@@ -4281,7 +4395,7 @@ which are easy to play with the aid of a mouse.")
 (define-public amtk
   (package
     (name "amtk")
-    (version "5.0.1")
+    (version "5.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/amtk/"
@@ -4289,7 +4403,7 @@ which are easy to play with the aid of a mouse.")
                                   "amtk-" version ".tar.xz"))
               (sha256
                (base32
-                "09yy95w1s83c43mh9vha1jbb780yighf5pd2j0ygjmc68sjg871d"))))
+                "11jgz2i9wjzv4alrxl1qyxiapb52w7vs5ygfgsw0qgdap8gqkk3i"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-gtk-doc")))
@@ -4884,15 +4998,15 @@ which can read a large number of file formats.")
 (define-public rhythmbox
  (package
    (name "rhythmbox")
-   (version "3.4.3")
+   (version "3.4.4")
    (source (origin
             (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
+            (uri (string-append "mirror://gnome/sources/rhythmbox/"
                                 (version-major+minor version) "/"
-                                name "-" version ".tar.xz"))
+                                "rhythmbox-" version ".tar.xz"))
             (sha256
              (base32
-              "1yx3n7p9vmv23jsv98fxwq95n78awdxqm8idhyhxx2d6vk4w1hgx"))))
+              "142xcvw4l19jyr5i72nbnrihs953pvrrzcbijjn9dxmxszbv03pf"))))
    (build-system glib-or-gtk-build-system)
    (arguments
     `(#:configure-flags
@@ -5018,7 +5132,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
       ("lcms" ,lcms)
       ("libexif" ,libexif)
       ("libpeas" ,libpeas)
-      ("libjpeg" ,libjpeg)
+      ("libjpeg" ,libjpeg-turbo)
       ("librsvg" ,librsvg)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gtk+" ,gtk+)))
@@ -5208,7 +5322,7 @@ USB transfers with your high-level application or system daemon.")
 (define-public simple-scan
   (package
     (name "simple-scan")
-    (version "3.34.2")
+    (version "3.34.4")
     (source
      (origin
        (method url-fetch)
@@ -5216,7 +5330,7 @@ USB transfers with your high-level application or system daemon.")
                            (version-major+minor version) "/"
                            "simple-scan-" version ".tar.xz"))
        (sha256
-        (base32 "1fk3g4f9slckqfwm576jrjq1d1qihw0dlgzdf00ns7qbhzb0kxsp"))))
+        (base32 "0xvy672zyl6jsdlnxma8nc2aqsx9k92jhp6wfxs0msj9ppp1nd3z"))))
     (build-system meson-build-system)
     ;; TODO: Fix icons in home screen, About dialogue, and scan menu.
     (arguments
@@ -5442,7 +5556,7 @@ of running programs and invoke methods on those interfaces.")
 (define-public yelp-xsl
   (package
     (name "yelp-xsl")
-    (version "3.32.1")
+    (version "3.34.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5450,10 +5564,10 @@ of running programs and invoke methods on those interfaces.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "013z2ixx9kfrs6hq79qpil093xfbc12y1p0mvsh6lpala30iphya"))))
+                "1bdpgkzawhqmw52l6zx8czzg1ndfgcf1p44m2bxjdpqkc4afcgqc"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("gettext-minimal" ,gettext-minimal)
        ("itstool" ,itstool)
        ("xmllint" ,libxml2)))
     (home-page "https://wiki.gnome.org/Apps/Yelp")
@@ -5500,7 +5614,7 @@ freedesktop.org help system specification.")
 (define-public yelp-tools
   (package
     (name "yelp-tools")
-    (version "3.28.0")
+    (version "3.32.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5508,7 +5622,7 @@ freedesktop.org help system specification.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1b61dmlb1sd50fgq6zgnkcpx2s1py33q0x9cx67fzpsr4gmgxnw2"))))
+                "1yg8f5g5wadhmy4yfd9yjhvd8vll4gq4l86ibp0b42qbxnsmcf0q"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -5528,21 +5642,10 @@ lifting is done by packages like yelp-xsl and itstool.  This package just
 wraps things up in a developer-friendly way.")
     (license license:gpl2+)))
 
-(define-public yelp-tools/fixed
-  ;; This variant fixes a python-libxml2 crash when processing UTF-8
-  ;; sequences: <https://bugs.gnu.org/37468>.  TODO: Remove this in
-  ;; the next rebuild cycle.
-  (hidden-package
-   (package/inherit
-    yelp-tools
-    (propagated-inputs
-     `(("itstool" ,itstool/fixed)
-       ,@(alist-delete "itstool" (package-propagated-inputs yelp-tools)))))))
-
 (define-public libgee
   (package
     (name "libgee")
-    (version "0.20.2")
+    (version "0.20.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libgee/"
@@ -5550,7 +5653,7 @@ wraps things up in a developer-friendly way.")
                                   "libgee-" version ".tar.xz"))
               (sha256
                (base32
-                "0g1mhl7nidg82v4cikkk8dakzc18hg7wv0dsf2pbyijzfm5mq0wy"))))
+                "1pm525wm11dhwz24m8bpcln9547lmrigl6cxf3qsbg4cr3pyvdfh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -5611,7 +5714,7 @@ metadata in photo and video files of various formats.")
 (define-public shotwell
   (package
     (name "shotwell")
-    (version "0.30.7")
+    (version "0.30.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/shotwell/"
@@ -5619,7 +5722,7 @@ metadata in photo and video files of various formats.")
                                   "shotwell-" version ".tar.xz"))
               (sha256
                (base32
-                "1m9i8r4gyd2hzlxjjwfyck4kz7gdg2vz2k6l6d0ga9hdfq2l4p9l"))))
+                "1f7m007g6w1sz8s60w6x81ghp2rrjmik8phd958b2hy8zz92wbbj"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6129,7 +6232,8 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version) "/"
                                   name "-" version ".tar.xz"))
-              (patches (search-patches "evolution-data-server-locales.patch"))
+              (patches (search-patches "evolution-data-server-locales.patch"
+                                       "evolution-data-server-libical-compat.patch"))
               (sha256
                (base32
                 "0zsc9xwy6ixk3x0dx69ax5isrdw8qxjdxg2i5fr95s40nss7rxl3"))))
@@ -6260,7 +6364,7 @@ Evolution (hence the name), but is now used by other packages as well.")
        ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+       ("python" ,python)
        ("vala" ,vala)
        ("xsltproc" ,libxslt)))
     (propagated-inputs
@@ -6273,7 +6377,7 @@ Evolution (hence the name), but is now used by other packages as well.")
      `(("clutter" ,clutter)
        ("dconf" ,dconf)
        ("gtk+-2" ,gtk+-2)
-       ("python-pygobject" ,python2-pygobject)))
+       ("python-pygobject" ,python-pygobject)))
     (synopsis "Text entry and UI navigation application")
     (home-page "https://wiki.gnome.org/Projects/Caribou")
     (description
@@ -6369,6 +6473,10 @@ users.")
            (lambda _
              ;; For the missing /etc/machine-id.
              (setenv "DBUS_FATAL_WARNINGS" "0")
+
+             ;; XXX: Regenerate some of the tests that are dependent on Python version.
+             ;; Try removing this variable for newer versions of NetworkManager.
+             (setenv "NM_TEST_REGENERATE" "1")
              #t))
          (replace 'install
            (lambda _
@@ -7278,7 +7386,7 @@ easy, safe, and automatic.")
 (define-public tracker
   (package
     (name "tracker")
-    (version "2.2.2")
+    (version "2.3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/tracker/"
@@ -7286,7 +7394,7 @@ easy, safe, and automatic.")
                                   "tracker-" version ".tar.xz"))
               (sha256
                (base32
-                "1rp2c6k7ajcm553p9kpni87zgi9aplm3s01rl7pk575az5i399y6"))))
+                "1nzbnvwwsk6kv6kqbxwlz8vk70l9ai6b4r9qypw51vp4qy72ny54"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -7297,64 +7405,58 @@ easy, safe, and automatic.")
                             (assoc-ref %outputs "out") "/lib/tracker-2.0"))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-broken-tests
-           (lambda _
-             ;; These fail because the SPARQL backend could not be loaded.
-             ;; That's because /etc/machine-id is missing, but
-             ;; DBUS_FATAL_WARNINGS does not help here.
-             (substitute* "tests/libtracker-sparql/meson.build"
-               (("'sparql',") ""))
-             (substitute* "tests/tracker-steroids/meson.build"
-               (("test\\(.*") ""))
-             #t))
-         ;; Two tests fail if LANG is not set.
          (add-before 'check 'pre-check
            (lambda _
-             (setenv "LANG" "en_US.UTF-8")
-             ;; For the missing /etc/machine-id.
-             (setenv "DBUS_FATAL_WARNINGS" "0")
+             ;; Some tests expect to write to $HOME.
+             (setenv "HOME" "/tmp")
              #t)))))
     (native-inputs
      `(("glib:bin" ,glib "bin")
-       ("gnome-common" ,gnome-common)
        ("gobject-introspection" ,gobject-introspection)
        ("python-pygobject" ,python-pygobject)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("vala" ,vala)))
     (inputs
-     `(("gtk+" ,gtk+)
-       ("dbus" ,dbus)
+     `(("dbus" ,dbus)
        ("sqlite" ,sqlite)
-       ("python" ,python)
-       ("poppler" ,poppler)
-       ("libpng" ,libpng)
-       ("libtiff" ,libtiff)
-       ("zlib" ,zlib)
        ("libxml2" ,libxml2)
-       ("libunistring" ,libunistring)
+       ("icu4c" ,icu4c)                 ; libunistring gets miner-miner-fs test to fail.
        ("json-glib" ,json-glib)
-       ("openjpeg" ,openjpeg-1)
-       ("libseccomp" ,libseccomp)
-       ("libsoup" ,libsoup)
-       ("libuuid" ,util-linux)
-       ("network-manager" ,network-manager)))
+       ("libsoup" ,libsoup)))
     (synopsis "Metadata database, indexer and search tool")
     (home-page "https://wiki.gnome.org/Projects/Tracker")
     (description
-     "Tracker is an advanced framework for first class objects with associated
-metadata and tags.  It provides a one stop solution for all metadata, tags,
-shared object databases, search tools and indexing.")
+     "Tracker is a search engine and triplestore for desktop, embedded and mobile.
+
+It is a middleware component aimed at desktop application developers who want
+their apps to browse and search user content.  It's not designed to be used
+directly by desktop users, but it provides a commandline tool named
+@command{tracker} for the adventurous.
+
+Tracker allows your application to instantly perform full-text searches across
+all documents.  This feature is used by the @{emph{search} bar in GNOME Files, for
+example.  This is achieved by indexing the user's home directory in the
+background.
+
+Tracker also allows your application to query and list content that the user
+has stored.  For example, GNOME Music displays all the music files that are
+found by Tracker.  This means that GNOME Music doesn't need to maintain a
+database of its own.
+
+If you need to go beyond simple searches, Tracker is also a linked data
+endpoint and it understands SPARQL. ")
+    ;; https://gitlab.gnome.org/GNOME/tracker/-/blob/master/COPYING:
     ;; src/libtracker-*/* and src/tracker-extract/* are covered by lgpl2.1+,
-    ;; src/gvdb/* are covered by lgpl2.0+, and the rest is gpl2+.
+    ;; libstemmer is bsd-3 and the rest is gpl2+.
     (license (list license:gpl2+
-                   license:lgpl2.1+
-                   license:lgpl2.0+))))
+                   license:bsd-3
+                   license:lgpl2.1+))))
 
 (define-public tracker-miners
   (package
     (name "tracker-miners")
-    (version "2.2.2")
+    (version "2.3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/tracker-miners/"
@@ -7362,7 +7464,7 @@ shared object databases, search tools and indexing.")
                                   "/tracker-miners-" version ".tar.xz"))
               (sha256
                (base32
-                "0kk5xaajamb8jlm6cfdbc2m3axzr6bnph84m7697xmb0pkg8hdiw"))))
+                "1kizavw9gbdjkw4wykgv0fcl2y6fj788nycx9p4byn6ylb1277h6"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -7397,7 +7499,7 @@ shared object databases, search tools and indexing.")
        ("libgsf" ,libgsf)
        ("libgxps" ,libgxps)
        ("libiptcdata" ,libiptcdata)
-       ("libjpeg" ,libjpeg)
+       ("libjpeg" ,libjpeg-turbo)
        ("libosinfo" ,libosinfo)
        ("libpng" ,libpng)
        ("libseccomp" ,libseccomp)
@@ -7734,9 +7836,11 @@ world.")
        ("glib-networking" ,glib-networking)
        ("gnome-backgrounds" ,gnome-backgrounds)
        ("gnome-bluetooth" ,gnome-bluetooth)
+       ("gnome-color-manager" ,gnome-color-manager)
        ("gnome-control-center" ,gnome-control-center)
        ("gnome-desktop" ,gnome-desktop)
        ("gnome-getting-started-docs" ,gnome-getting-started-docs)
+       ("gnome-initial-setup" ,gnome-initial-setup)
        ("gnome-keyring" ,gnome-keyring)
        ("gnome-menus" ,gnome-menus)
        ("gnome-session" ,gnome-session)
@@ -7745,10 +7849,13 @@ world.")
        ("gnome-shell" ,gnome-shell)
        ("gnome-themes-extra" ,gnome-themes-extra)
        ("gnome-user-docs" ,gnome-user-docs)
+       ("gnome-user-share" ,gnome-user-share)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("gvfs" ,gvfs)
        ("mutter" ,mutter)
        ("orca" ,orca)
+       ("rygel" ,rygel)
+       ("sushi" ,sushi)
      ;; GNOME-Core-Utilities
        ("baobab" ,baobab)
        ("cheese" ,cheese)
@@ -7757,6 +7864,7 @@ world.")
        ("evince" ,evince)
        ("file-roller" ,file-roller)
        ("gedit" ,gedit)
+       ; TODO: ("gnome-boxes" ,gnome-boxes)
        ("gnome-calculator" ,gnome-calculator)
        ("gnome-calendar" ,gnome-calendar)
        ("gnome-characters" ,gnome-characters)
@@ -7765,16 +7873,41 @@ world.")
        ("gnome-disk-utility" ,gnome-disk-utility)
        ("gnome-font-viewer" ,gnome-font-viewer)
        ("gnome-maps" ,gnome-maps)
+       ; TODO: ("gnome-music" ,gnome-music)
+       ; TODO: ("gnome-photos" ,gnome-photos)
        ("gnome-screenshot" ,gnome-screenshot)
        ("gnome-system-monitor" ,gnome-system-monitor)
        ("gnome-terminal" ,gnome-terminal)
+       ("gnome-weather" ,gnome-weather)
        ("nautilus" ,nautilus)
        ("simple-scan" ,simple-scan)
        ("totem" ,totem)
        ("yelp" ,yelp)
      ;; Others
        ("hicolor-icon-theme" ,hicolor-icon-theme)
-       ("gnome-online-accounts" ,gnome-online-accounts)))
+       ("gnome-online-accounts" ,gnome-online-accounts)
+
+       ;; 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.
+       ("font-cantarell"            ,font-cantarell)
+       ("font-dejavu"               ,font-dejavu)
+       ("at-spi2-core"              ,at-spi2-core)
+       ("dbus"                      ,dbus)
+       ("dconf"                     ,dconf)
+       ("desktop-file-utils"        ,desktop-file-utils)
+       ("gnome-default-applications" ,gnome-default-applications)
+       ("gnome-themes-standard"     ,gnome-themes-standard)
+       ("gst-plugins-base"          ,gst-plugins-base)
+       ("gst-plugins-good"          ,gst-plugins-good)
+       ("gucharmap"                 ,gucharmap)
+       ("pinentry-gnome3"           ,pinentry-gnome3)
+       ("pulseaudio"                ,pulseaudio)
+       ("shared-mime-info"          ,shared-mime-info)
+       ("system-config-printer"     ,system-config-printer)
+       ("xdg-user-dirs"             ,xdg-user-dirs)
+       ("yelp"                      ,yelp)
+       ("zenity"                    ,zenity)))
     (synopsis "The GNU desktop environment")
     (home-page "https://www.gnome.org/")
     (description
@@ -7804,7 +7937,7 @@ documents and diagrams, playing media, scanning, and much more.")
       (arguments
        '(#:phases
          (modify-phases %standard-phases
-           (replace 'bootstrap
+           (add-before 'bootstrap 'build-without-Werror
              (lambda _
                ;; The build system cleverly detects that we're not building from
                ;; a release tarball and turns on -Werror for GCC.
@@ -7812,11 +7945,7 @@ documents and diagrams, playing media, scanning, and much more.")
                ;; causes the build to fail unnecessarily, so we remove the flag.
                (substitute* '("configure.ac")
                  (("-Werror") ""))
-               ;; The autogen.sh script in gnome-common will run ./configure
-               ;; by default, which is problematic because source shebangs
-               ;; have not yet been patched.
-               (setenv "NOCONFIGURE" "t")
-               (zero? (system* "sh" "autogen.sh")))))))
+               #t)))))
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
@@ -8166,7 +8295,11 @@ functionality and behavior.")
        (modify-phases %standard-phases
          ;; autogen.sh calls configure at the end of the script.
          (replace 'bootstrap
-           (lambda _ (invoke "autoreconf" "-vfi"))))))
+           (lambda _ (invoke "autoreconf" "-vfi")))
+         (add-before 'build 'set-home   ;placate Inkscape
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -8176,7 +8309,7 @@ functionality and behavior.")
        ("inkscape" ,inkscape)
        ("optipng" ,optipng)
        ("pkg-config" ,pkg-config)
-       ("sassc" ,sassc)))
+       ("sassc" ,sassc/libsass-3.5)))
     (synopsis "A flat GTK+ theme with transparent elements")
     (description "Arc is a flat theme with transparent elements for GTK 3, GTK
 2, and GNOME Shell which supports GTK 3 and GTK 2 based desktop environments
@@ -8416,7 +8549,7 @@ handling the startup notification side.")
 (define-public gnome-calculator
   (package
     (name "gnome-calculator")
-    (version "3.32.2")
+    (version "3.34.1")
     (source
      (origin
        (method url-fetch)
@@ -8425,19 +8558,20 @@ handling the startup notification side.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0fgpn3sc226s9fpzhik5rkkrf669037gc659ga2kn9jsyckj6p41"))))
+         "0lbh87255zzggqzai6543qg920y52bl4vs5m5h5087ghzg14hlsd"))))
     (build-system meson-build-system)
     (arguments '(#:glib-or-gtk? #t))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
        ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
-       ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("vala" ,vala)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("glib" ,glib)
        ("gtksourceview" ,gtksourceview)
+       ("libgee" ,libgee)
        ("libsoup" ,libsoup)
        ("libxml2" ,libxml2)
        ("mpc" ,mpc)
@@ -8557,15 +8691,14 @@ only know by its Unicode name or code point.")
 (define-public bluefish
   (package
     (name "bluefish")
-    (version "2.2.10")
+    (version "2.2.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.bennewitz.com/bluefish/stable/source/"
-                           name "-" version ".tar.gz"))
+                           "bluefish-" version ".tar.gz"))
        (sha256
-        (base32
-         "1jw4has7lbp77lqmzvnnjmqcf0lacjfnka873lkkwdyrpzc4c1q4"))))
+        (base32 "0a7kf78q4cj2ap4igjks9kbmmr74brsrl4y2f9wbxpl0b0v2ck2x"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("desktop-file-utils" ,desktop-file-utils)
@@ -8574,7 +8707,7 @@ only know by its Unicode name or code point.")
     (inputs
      `(("enchant" ,enchant)
        ("gtk+" ,gtk+)
-       ("python" ,python-2)
+       ("python" ,python-wrapper)
        ("xmllint" ,libxml2)
        ("gucharmap" ,gucharmap)))
     (home-page "http://bluefish.openoffice.nl")
@@ -8881,7 +9014,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
        ("python-gst" ,python-gst)
        ("python-pil" ,python-pillow)
        ("python-pycairo" ,python-pycairo)
-       ("python-pygobject" ,python-pygobject-3.34)
+       ("python-pygobject" ,python-pygobject)
        ("python-pylast" ,python-pylast)
        ("totem-pl-parser" ,totem-pl-parser)
        ("webkitgtk" ,webkitgtk)))
@@ -9323,7 +9456,7 @@ functionality.")
        ("clutter" ,clutter)
        ("clutter-gst" ,clutter-gst)
        ("clutter-gtk" ,clutter-gtk)
-       ("libjpeg" ,libjpeg)
+       ("libjpeg" ,libjpeg-turbo)
        ("libtiff" ,libtiff)
        ("libraw" ,libraw)))
     (home-page "https://wiki.gnome.org/Apps/Gthumb")
@@ -9434,7 +9567,7 @@ for usage on small and big screens.")
 (define-public libgit2-glib
   (package
     (name "libgit2-glib")
-    (version "0.28.0.1")
+    (version "0.99.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -9442,19 +9575,20 @@ for usage on small and big screens.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0a0g7aw66rfgnqr4z7fgbk5zzcjq66m4rp8v4val3a212941h0g7"))))
+                "1pmrcnsa7qdda73c3dxf47733mwprmj5ljpw3acxbj6r8k27anp0"))))
     (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ;; For glib-mkenums
        ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("libssh2" ,libssh2)
        ("pkg-config" ,pkg-config)
        ("python-pygobject" ,python-pygobject)
        ("python-wrapper" ,python-wrapper)
        ("vala" ,vala)))
     (inputs
      `(("glib" ,glib)
+       ("libssh2" ,libssh2)))
+    (propagated-inputs
+     `(;; In Requires of libgit2-glib.pc.
        ("libgit2" ,libgit2)))
     (synopsis "GLib wrapper around the libgit2 Git access library")
     (description "libgit2-glib is a GLib wrapper library around the libgit2 Git
@@ -9508,7 +9642,6 @@ higher level porcelain stuff.")
        ("json-glib" ,json-glib)
        ("libdazzle" ,libdazzle)
        ("libgee" ,libgee)
-       ("libgit2" ,libgit2) ; propagated by libgit2-glib
        ("libgit2-glib" ,libgit2-glib)
        ("libpeas" ,libpeas)
        ("libsecret" ,libsecret)
@@ -9696,3 +9829,58 @@ index files needed for Adwaita to be used outside of GNOME.")
 integrate seamlessly with the GNOME desktop.")
     (home-page "https://wiki.gnome.org/Apps/Polari")
     (license license:gpl2+)))
+
+(define-public gnome-boxes
+  (package
+    (name "gnome-boxes")
+    (version "3.35.91")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/gnome-boxes/"
+                           (version-major+minor version) "/"
+                           "gnome-boxes-" version ".tar.xz"))
+       (sha256
+        (base32
+         "0l96spz6pc8q4l5p9a58cc0kgvdr7pbc89hy6ixn72k5pl3s7fxj"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t
+       #:configure-flags (list "-Drdp=false"
+                               (string-append "-Dc_link_args=-Wl,-rpath="
+                                              (assoc-ref %outputs "out")
+                                              "/lib/gnome-boxes"))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")             ; for glib-compile-resources
+       ("gtk+:bin" ,gtk+ "bin")             ; for gtk-update-icon-cache
+       ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
+       ("itstool" ,itstool)
+       ("intltool" ,intltool)
+       ("vala" ,vala)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libarchive" ,libarchive)
+       ("gtk" ,gtk+)
+       ("gtk-vnc" ,gtk-vnc)
+       ("libosinfo" ,libosinfo)
+       ("libsecret" ,libsecret)
+       ("libsoup" ,libsoup)
+       ("libusb" ,libusb)
+       ("libvirt" ,libvirt)
+       ("libvirt-glib" ,libvirt-glib)
+       ("libxml" ,libxml2)
+       ("spice-gtk" ,spice-gtk)
+       ("sparql-query" ,sparql-query)
+       ("vte" ,vte)
+       ("webkitgtk" ,webkitgtk)
+       ("tracker" ,tracker)
+       ("libgudev" ,libgudev)))
+    (home-page "https://wiki.gnome.org/Apps/Boxes")
+    (synopsis "View, access, and manage remote and virtual systems")
+    (description "GNOME Boxes is a simple application to view, access, and
+manage remote and virtual systems.")
+    (license (list
+              ;; For data/icons/empty-boxes.png.
+              license:cc-by2.0
+              ;; For all others.
+              license:lgpl2.0+))))