gnu: Add gthumb.
[jackhill/guix/guix.git] / gnu / packages / gnome.scm
index a6e333d..60141fc 100644 (file)
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
-;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -19,7 +19,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017 Mohammed Sadiq <sadiq@sadiqpk.org>
-;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;; Copyright © 2017 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; 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 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -58,6 +60,7 @@
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages ninja)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages popt)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
@@ -390,7 +395,7 @@ formats like PNG, SVG, PDF and EPS.")
        ("libsoup" ,libsoup)))
     (propagated-inputs
      `(("gcr" ,gcr)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("liboauth" ,liboauth)
        ("libxml2" ,libxml2)))
     (home-page "https://wiki.gnome.org/Projects/libgdata")
@@ -672,7 +677,7 @@ GNOME Desktop.")
 (define-public gnome-keyring
   (package
     (name "gnome-keyring")
-    (version "3.20.1")
+    (version "3.28.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -680,7 +685,7 @@ GNOME Desktop.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "134ci3mn6jjap59z3lrvyiip7zf2nlw5xvanr44yajs57xr4x5lp"))))
+               "0sk4las4ji8wv9nx8mldzqccmpmkvvr9pdwv9imj26r10xyin5w1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ;48 of 603 tests fail because /var/lib/dbus/machine-id does
@@ -693,11 +698,11 @@ GNOME Desktop.")
                        (assoc-ref %outputs "out") "/share/p11-kit/modules/"))
        #:phases
        (modify-phases %standard-phases
-         (add-before
-          'check 'pre-check
-          (lambda* (#:key inputs #:allow-other-keys)
-            (substitute* "build/tap-driver"
-              (("/usr/bin/env python") (which "python")))))
+         (add-after 'unpack 'fix-/bin/sh-reference
+           (lambda _
+             (substitute* "po/Makefile.in.in"
+               (("/bin/sh") (which "sh")))
+             #t))
          (add-before
           'configure 'fix-docbook
           (lambda* (#:key inputs #:allow-other-keys)
@@ -710,7 +715,6 @@ GNOME Desktop.")
             (setenv "XML_CATALOG_FILES"
                     (string-append (assoc-ref inputs "docbook-xml")
                                    "/xml/dtd/docbook/catalog.xml"))
-
             ;; Rerun the whole thing to avoid version mismatch ("This is
             ;; Automake 1.15.1, but the definition used by this
             ;; AM_INIT_AUTOMAKE comes from Automake 1.15.").  Note: we don't
@@ -721,6 +725,7 @@ GNOME Desktop.")
     (inputs
      `(("libgcrypt" ,libgcrypt)
        ("linux-pam" ,linux-pam)
+       ("openssh" ,openssh)
        ("dbus" ,dbus)
        ("gcr" ,gcr)))
     (native-inputs
@@ -1103,10 +1108,14 @@ configuring CUPS.")
        (base32
         "017wgq9n00hx39n0hm784zn18hl721hbaijda868cm96bcqwxd4w"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-static")))
+    (propagated-inputs
+     `(;; In Requires of libnotify.pc.
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)))
     (inputs
-     `(("gdk-pixbuf" ,gdk-pixbuf)
-       ("glib" ,glib)
-       ("gtk+" ,gtk+)
+     `(("gtk+" ,gtk+)
        ("libpng" ,libpng)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
@@ -1308,6 +1317,72 @@ dealing with different structured file formats.")
     (license license:lgpl2.1)))
 
 (define-public librsvg
+  (package
+    (name "librsvg")
+    (version "2.40.20")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version)  "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0ay9himvw1l1swcf3h1312d2iqzfl65kpbfgiyfykgvq7cydvx6g"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--disable-static"
+             "--enable-vala") ; needed for e.g. gnome-mines
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "gdk-pixbuf-loader/Makefile.in"
+               ;; By default the gdk-pixbuf loader is installed under
+               ;; gdk-pixbuf's prefix.  Work around that.
+               (("gdk_pixbuf_moduledir = .*$")
+                (string-append "gdk_pixbuf_moduledir = "
+                               "$(prefix)/lib/gdk-pixbuf-2.0/2.10.0/"
+                                "loaders\n"))
+               ;; Drop the 'loaders.cache' file, it's in gdk-pixbuf+svg.
+               (("gdk_pixbuf_cache_file = .*$")
+                "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))
+             #t))
+         (add-before 'check 'remove-failing-tests
+           (lambda _
+             (with-directory-excursion "tests/fixtures/reftests"
+               (for-each delete-file
+                         '(;; This test fails on i686:
+                           "svg1.1/masking-path-04-b.svg"
+                           ;; This test fails on armhf:
+                           "svg1.1/masking-mask-01-b.svg"
+                           ;; This test fails on aarch64:
+                           "bugs/777834-empty-text-children.svg")))
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("vala" ,vala)
+       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+       ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
+    (inputs
+     `(("pango" ,pango)
+       ("libcroco" ,libcroco)
+       ("bzip2" ,bzip2)
+       ("libgsf" ,libgsf)
+       ("libxml2" ,libxml2)))
+    (propagated-inputs
+     ;; librsvg-2.0.pc refers to all of that.
+     `(("cairo" ,cairo)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)))
+    (home-page "https://wiki.gnome.org/LibRsvg")
+    (synopsis "Render SVG files using Cairo")
+    (description
+     "Librsvg is a C library to render SVG files using the Cairo 2D graphics
+library.")
+    (license license:lgpl2.0+)))
+
+(define-public librsvg-next
   (package
     (name "librsvg")
     (version "2.44.12")
@@ -1321,7 +1396,9 @@ dealing with different structured file formats.")
                 "1h3qnqhr0l7pd2bxg69ki6ckl4srdwgr471dpp4jq9i4784hp0v6"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--disable-static")
+     `(#:configure-flags
+       (list "--disable-static"
+             "--enable-vala") ; needed for e.g. gnome-mines
        #:make-flags '("CC=gcc")
        #:phases
        (modify-phases %standard-phases
@@ -1374,6 +1451,7 @@ dealing with different structured file formats.")
        ;; This is the minimum supported Rust version in Librsvg 2.44.
        ("rust" ,rust-1.27)
        ("cargo" ,rust-1.27 "cargo")
+       ("vala" ,vala)
        ("glib" ,glib "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
     (inputs
@@ -2251,7 +2329,7 @@ editors, IDEs, etc.")
   (package
     (inherit vte)
     (name "vte-ng")
-    (version "0.54.2.a")
+    (version "0.56.2.a")
     (home-page "https://github.com/thestinger/vte-ng")
     (source (origin
               (method git-fetch)
@@ -2259,10 +2337,11 @@ editors, IDEs, etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1r7d9m07cpdr4f7rw3yx33hmp4jmsk0dn5byq5wgksb2qjbc4ags"))))
+                "1lmba6i0abifmvvfb1q63ql6zh6d38148kp6skmkggiib2hi5dki"))))
     (native-inputs
      `(("gtk-doc" ,gtk-doc)
        ("gperf" ,gperf)
+       ("gcc" ,gcc-7)
        ("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
@@ -2271,6 +2350,9 @@ editors, IDEs, etc.")
      `(#:phases (modify-phases %standard-phases
                   (replace 'bootstrap
                     (lambda _
+                      ;; Work around GCC7 problem: <https://bugs.gnu.org/30756>.
+                      (for-each unsetenv '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
+
                       (setenv "NOCONFIGURE" "true")
                       (invoke "sh" "autogen.sh"))))))
   (synopsis "Enhanced VTE terminal widget")
@@ -2379,7 +2461,7 @@ and RDP protocols.")
 (define-public dconf
   (package
     (name "dconf")
-    (version "0.28.0")
+    (version "0.32.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2388,7 +2470,7 @@ and RDP protocols.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0hn7v6769xabqz7kvyb2hfm19h46z1whkair7ff752zmbs3b7lv1"))))
+                "1azz4hb9z76yxn34yrrsiib3iqz5z4vpwn5q7cncp55w365ygg38"))))
     (build-system meson-build-system)
     (propagated-inputs
      ;; In Requires of dconf.pc.
@@ -2397,7 +2479,8 @@ and RDP protocols.")
      `(("gtk+" ,gtk+)
        ("dbus" ,dbus)))
     (native-inputs
-     `(("libxslt" ,libxslt)                     ;for xsltproc
+     `(("bash-completion" ,bash-completion)
+       ("libxslt" ,libxslt)                     ;for xsltproc
        ("libxml2" ,libxml2)                     ;for XML_CATALOG_FILES
        ("docbook-xml" ,docbook-xml-4.2)
        ("docbook-xsl" ,docbook-xsl)
@@ -2511,7 +2594,7 @@ indicators etc).")
     (home-page "https://www.gnome.org")
     (synopsis "Python bindings to librsvg")
     (description
-     "This packages provides Python bindings to librsvg, the SVG rendering
+     "This package provides Python bindings to librsvg, the SVG rendering
 library.")
 
     ;; This is the license of the rsvg bindings.  The license of each module
@@ -2593,7 +2676,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.64.2")
+    (version "2.66.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2601,38 +2684,23 @@ libxml to ease remote use of the RESTful API.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1il6lyrmfi0hfh3ysw8w1qzc1rdz0igkb7dv6d8g5mmilnac3pbm"))))
-    (build-system gnu-build-system)
+                "0amfw1yvy1kjrg41rfh2vvrw5gkwnyckqbw1fab50hm6xc1acbmx"))))
+    (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
      `(#:modules ((guix build utils)
-                  (guix build gnu-build-system)
+                  (guix build meson-build-system)
                   (ice-9 popen))
 
-       #:configure-flags
-       (list (string-append "--with-html-dir="
-                            (assoc-ref %outputs "doc")
-                            "/share/gtk-doc/html")
-             (string-append "--with-apache-module-dir="
-                            (assoc-ref %build-inputs "httpd")
-                            "/modules"))
+       #:configure-flags '("-Ddoc=true")
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'disable-unconnected-socket-test
-           ;; This test fails due to missing /etc/nsswitch.conf
-           ;; in the build environment.
+         (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.*") ""))
-             #t))
-         (add-before 'check 'pre-check
-           (lambda _
-             ;; The 'check-local' target runs 'env LANG=C sort -u',
-             ;; unset 'LC_ALL' to make 'LANG' working.
-             (unsetenv "LC_ALL")
-             ;; HTTPD in Guix uses mod_event and does not build prefork.
-             (substitute* "tests/httpd.conf"
-               (("^LoadModule mpm_prefork_module.*$") "\n"))
 
              ;; Generate a self-signed certificate that has "localhost" as its
              ;; 'dnsName'.  Failing to do that, and starting with GnuTLS
@@ -2678,16 +2746,19 @@ libxml to ease remote use of the RESTful API.")
                            ))
                (close-pipe pipe))
              #t))
-         (replace 'install
-           (lambda _
-             (invoke "make"
-                     ;; Install vala bindings into $out.
-                     (string-append "vapidir=" %output
-                                    "/share/vala/vapi")
-                     "install"))))))
+         (add-after 'install 'move-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (mkdir-p (string-append doc "/share"))
+               (copy-recursively (string-append out "/share/gtk-doc")
+                                 (string-append doc "/share/gtk-doc"))
+               (delete-file-recursively (string-append out "/share/gtk-doc"))
+               #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin")                   ; for glib-mkenums
        ("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
@@ -2700,11 +2771,12 @@ libxml to ease remote use of the RESTful API.")
     (propagated-inputs
      ;; libsoup-2.4.pc refers to all these.
      `(("glib" ,glib)
-       ("libxml2" ,libxml2)))
-    (inputs
-     `(("glib-networking" ,glib-networking)
        ("libpsl" ,libpsl)
+       ("libxml2" ,libxml2)
        ("sqlite" ,sqlite)))
+    (inputs
+     `(("glib-networking" ,glib-networking)
+       ("mit-krb5" ,mit-krb5)))
     (home-page "https://live.gnome.org/LibSoup/")
     (synopsis "GLib-based HTTP Library")
     (description
@@ -2794,7 +2866,7 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 (define-public gnome-mines
   (package
     (name "gnome-mines")
-    (version "3.26.0")
+    (version "3.28.0")
     (source
      (origin
        (method url-fetch)
@@ -2803,21 +2875,21 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1sfxdvns8nppdagnhpd9vd7n77sk5rdji3kdqnc78c2p1npiw11b"))))
-    (build-system glib-or-gtk-build-system)
+         "16w55hqaxipcv870n9gpn6qiywbqbyg7bjshaa02r75ias8dfxvf"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'patch-/bin/true
-                     (lambda _
-                       (substitute* "configure"
-                         (("/bin/true") (which "true"))))))))
+         (delete 'bootstrap))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("glib:bin" ,glib "bin")       ; for glib-compile-resources
+       ("pkg-config" ,pkg-config)
        ("desktop-file-utils" ,desktop-file-utils)
        ("intltool" ,intltool)
        ("itstool" ,itstool)
-       ("xmllint" ,libxml2)))
+       ("vala" ,vala)
+       ("yelp" ,yelp)
+       ("appstream-glib" ,appstream-glib)))
     (inputs
      `(("gtk+" ,gtk+)
        ("libgnome-games-support" ,libgnome-games-support)
@@ -3074,15 +3146,15 @@ faster results and to avoid unnecessary server load.")
 (define-public upower
   (package
     (name "upower")
-    (version "0.99.8")
+    (version "0.99.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.freedesktop.org/upower/upower/"
-                                  "uploads/9125ab7ee96fdc4ecc68cfefb50c1cab/"
+                                  "uploads/c438511024b9bc5a904f8775cfc8e4c4/"
                                   "upower-" version ".tar.xz"))
               (sha256
                (base32
-                "00lzr0vyxz5lvmgya48gdb2cdgmfdim4b34jlfdyqakk1i9sl8xv"))
+                "17d2bclv5fgma2y3g8bsn9pdvspn1zrzismzdnzfivc0f2wm28k4"))
               (patches (search-patches "upower-builddir.patch"))))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -3181,7 +3253,11 @@ services for numerous locations.")
        #:configure-flags
        (list (string-append "-Dudev_dir="
                             (assoc-ref %outputs "out")
-                            "/lib/udev/rules.d/"))
+                            "/lib/udev/rules.d/")
+             ;; Otherwise, the RUNPATH will lack the final path component.
+             (string-append "-Dc_link_args=-Wl,-rpath="
+                            (assoc-ref %outputs "out")
+                            "/lib/gnome-settings-daemon-3.0"))
        ;; Color management test can't reach the colord system service.
        #:tests? #f))
     (native-inputs
@@ -3264,15 +3340,15 @@ playlists in a variety of formats.")
 (define-public aisleriot
   (package
     (name "aisleriot")
-    (version "3.22.5")
+    (version "3.22.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/aisleriot/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "aisleriot-" version ".tar.xz"))
               (sha256
                (base32
-                "0rl39psr5xi584310pyrgw36ini4wn7yr2m1q5118w3a3v1dkhzh"))))
+                "15pm39679ymxki07sb5nvhycz4z53zwbvascyp5wm4864bn98815"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -3300,7 +3376,7 @@ which are easy to play with the aid of a mouse.")
 (define-public devhelp
   (package
     (name "devhelp")
-    (version "3.26.0")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3308,10 +3384,11 @@ which are easy to play with the aid of a mouse.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0f4fmkqzn95zmc2paljma33fkj74qj1m6n23qrc5hfwmgx7p3wkb"))))
+                "08a8xizjqz68k30zd37r7g516azhan9bbrjsvv10hjd5dg3f476s"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)
+       ("itstool" ,itstool)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
@@ -3582,7 +3659,7 @@ queries upon that data.")
 (define-public libgnome-games-support
   (package
     (name "libgnome-games-support")
-    (version "1.2.3")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3590,7 +3667,7 @@ queries upon that data.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vwad7kqy7yd6wqyr71nq0blh7m53r3lz6ya16dmh942kd0w48v1"))))
+                "1j7lfcnc29lgn8ppn13wkn9w2y1n3lsapagwp91zh3bf0h2h4hv1"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -3767,7 +3844,8 @@ for application developers.")
        (sha256
         (base32
          "1llyisls3pzf5bwkpxyfyxc2d3gpa09n5pjy7qsjdqrp3ya4k36g"))
-       (patches (search-patches "totem-meson-easy-codec.patch"))))
+       (patches (search-patches "totem-meson-easy-codec.patch"
+                                "totem-meson-compat.patch"))))
     (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -3972,7 +4050,11 @@ supports playlists, song ratings, and any codecs installed through gstreamer.")
               "1gasrfqi7qrzdq1idh29r0n6ikkqjb6pbp7a8k5krfz5hkhyfin0"))))
    (build-system meson-build-system)
    (arguments
-    `(#:phases
+    `(#:configure-flags
+      ;; Otherwise, the RUNPATH will lack the final 'eog' path component.
+      (list (string-append "-Dc_link_args=-Wl,-rpath="
+                           (assoc-ref %outputs "out") "/lib/eog"))
+      #:phases
       (modify-phases %standard-phases
         (add-after 'install 'wrap-eog
           (lambda* (#:key outputs #:allow-other-keys)
@@ -4057,15 +4139,19 @@ side panel;
 (define-public libgudev
   (package
     (name "libgudev")
-    (version "230")
+    (version "232")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   version "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "063w6j35n0i0ssmv58kivc1mw4070z6fzb83hi4xfrhcxnn7zrx2"))))
+                "0q3qki451zzgdjazlgshsfzbbm0in40lyx7dyrag7kbkqnwv4k7f"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       ;; umockdev depends on libgudev.
+       (list "--disable-umockdev")))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -4084,7 +4170,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.32.1")
+    (version "1.36.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4092,13 +4178,21 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1pkahczniar1yyas7awcqpkb4ca8l7qa4msn6mr29m89mgnwkdnh"))))
+                "1xq105596sk9yram5a143b369wpaiiwc9gz86n0j1kfr7nipkqn4"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f)) ; XXX: requiring `pidof'
+     '(#:tests? #f ; XXX: requiring `pidof'
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-broken-autogen-script
+           (lambda _ (delete-file "autogen.sh") #t)))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
-       ("intltool" ,intltool)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("gtk-doc" ,gtk-doc)
+       ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
        ("xsltproc" ,libxslt)))
     (inputs
@@ -4116,6 +4210,7 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
        ("libgcrypt" ,libgcrypt)
        ("libgphoto2" ,libgphoto2)
        ("libgudev" ,libgudev)
+       ("libimobiledevice" ,libimobiledevice)
        ("libmtp" ,libmtp)
        ("libsecret" ,libsecret)
        ("libsmbclient" ,samba)
@@ -4224,15 +4319,15 @@ work and the interface is well tested.")
 (define-public eolie
   (package
     (name "eolie")
-    (version "0.9.52")
+    (version "0.9.60")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.gnome.org/World/eolie/"
-                                  "uploads/d95bf72958276c80dfaca8cce0e4e92c/"
+                                  "uploads/3b2ceb7eb15860587db6886bfdd8a91e/"
                                   "eolie-" version ".tar.xz"))
               (sha256
                (base32
-                "1s3b0rkm8sxmhzzi624snzqvz61i1rja5wxyzw6jg2kcdjcylwln"))))
+                "1s9gkzxa6457v6bh0q8n1ijq1chd2jwgvhk5kppsnya7kxvsx8qh"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -4279,7 +4374,7 @@ work and the interface is well tested.")
        ("libsecret" ,libsecret)
        ("gtkspell3" ,gtkspell3)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk-2.22)))
+       ("webkitgtk" ,webkitgtk-2.24)))
     (home-page "https://wiki.gnome.org/Apps/Eolie")
     (synopsis "Web browser for GNOME")
     (description
@@ -4293,9 +4388,9 @@ a secret password store, an adblocker, and a modern UI.")
     (version "3.28.3.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/epiphany/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "epiphany-" version ".tar.xz"))
               (sha256
                (base32
                 "1xz6xl6b0iihvczyr0cs1z5ifvpai6anb4m0ng1caiph06klc1b9"))))
@@ -4338,7 +4433,7 @@ a secret password store, an adblocker, and a modern UI.")
        ("libxslt" ,libxslt)
        ("nettle" ,nettle) ; for hogweed
        ("sqlite" ,sqlite)
-       ("webkitgtk" ,webkitgtk-2.22)))
+       ("webkitgtk" ,webkitgtk-2.24)))
     (home-page "https://wiki.gnome.org/Apps/Web")
     (synopsis "GNOME web browser")
     (description
@@ -4349,7 +4444,7 @@ principles are simplicity and standards compliance.")
 (define-public d-feet
   (package
     (name "d-feet")
-    (version "0.3.11")
+    (version "0.3.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4357,7 +4452,7 @@ principles are simplicity and standards compliance.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1hmrijm4d9vwzx2r8qzzsy8ccpj79l1y6cc569n9jjzqcq699p53"))))
+                "1m8lwiwl5jhi0x7y6x5zmd3hjplgvdjrb8a8jg74rvkygslj1p7f"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:out-of-source? #f ; tests need to run in the source directory.
@@ -4396,6 +4491,7 @@ principles are simplicity and standards compliance.")
      `(("gobject-introspection" ,gobject-introspection)
        ("gtk+" ,gtk+)
        ("python" ,python-wrapper)
+       ("hicolor-icon-theme" ,hicolor-icon-theme)
        ("python-pygobject" ,python-pygobject)))
     (home-page "https://wiki.gnome.org/Apps/DFeet")
     (synopsis "D-Bus debugger")
@@ -4543,6 +4639,14 @@ classes for commonly used data structures.")
                (base32
                 "1qbcwq89g4r67k1dj4laqj441pj4195c8hzhxn8vc6mmg8adg6kx"))))
     (build-system meson-build-system)
+    (arguments
+     ;; On 32-bit platforms, the test fails with a rounding error:
+     ;; <https://bugzilla.gnome.org/show_bug.cgi?id=775249>.  Just skip it for
+     ;; now.
+     (if (and (not (%current-target-system))
+              (member (%current-system) '("i686-linux" "armhf-linux")))
+         '(#:tests? #f)
+         '()))
     (native-inputs
      `(("glib" ,glib "bin")
        ("pkg-config" ,pkg-config)))
@@ -4646,7 +4750,7 @@ such as gzip tarballs.")
 (define-public gnome-session
   (package
     (name "gnome-session")
-    (version "3.24.1")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4654,25 +4758,21 @@ such as gzip tarballs.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1vkfjsgks9czajivcg3y1krzlnilv2cnzzbdc7wrasrriqilji1v"))))
+                "14nmbirgrp2nm16khbz109saqdlinlbrlhjnbjydpnrlimfgg4xq"))))
     (arguments
-     '(#:phases
+     '(#:glib-or-gtk? #t
+       #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'pre-configure
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Use elogind instead of systemd.
-             (substitute* "configure"
-               (("libsystemd-login >= 183 libsystemd-daemon libsystemd-journal")
-                "libelogind")
-               (("systemd") "elogind"))
+             (substitute* "meson.build"
+               (("libsystemd-login") "libelogind")
+               (("and libsystemd_daemon_dep.found.*") ","))
              (substitute* "gnome-session/gsm-systemd.c"
                (("#include <systemd/sd-login.h>")
                 "#include <elogind/sd-login.h>"))
-             ;; Remove uses of the systemd journal.
-             (substitute* "gnome-session/main.c"
-               (("#ifdef HAVE_SYSTEMD") "#if 0"))
-             (substitute* "gnome-session/gsm-manager.c"
-               (("#ifdef HAVE_SYSTEMD") "#if 0"))
+             ;; Remove uses of the systemd daemon.
              (substitute* "gnome-session/gsm-autostart-app.c"
                (("#ifdef HAVE_SYSTEMD") "#if 0"))
              #t))
@@ -4694,13 +4794,19 @@ such as gzip tarballs.")
                #t))))
 
        #:configure-flags
-       '("--enable-elogind")))
-    (build-system glib-or-gtk-build-system)
+       '("-Ddocbook=false" ; FIXME: disabled because of docbook validation error
+         "-Dman=false" ; FIXME: disabled because of docbook validation error
+         "-Dsystemd_journal=false")))
+    (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
        ("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
-       ("xsltproc" ,libxslt)))
+       ("xsltproc" ,libxslt)
+       ("libxml2" ,libxml2) ;for 'XML_CATALOG_FILES'
+       ("docbook-xsl" ,docbook-xsl)
+       ("docbook-xml" ,docbook-xml)
+       ("xmlto" ,xmlto)))
     (inputs
      `(("elogind" ,elogind)
        ("gnome-desktop" ,gnome-desktop)
@@ -4723,7 +4829,7 @@ configuration program to choose applications starting on login.")
 (define-public gjs
   (package
     (name "gjs")
-    (version "1.48.6")
+    (version "1.52.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4731,7 +4837,7 @@ configuration program to choose applications starting on login.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "04nkig077r7xq55dxg9v46w8i7p8zkkdyja92yv81grq9fx6apz8"))))
+                "1z4n15wdz6pbqd2hfzrqc8mmprhv50v4jk43p08v0xv07yldh8ff"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -4759,12 +4865,12 @@ configuration program to choose applications starting on login.")
        ;; For testing
        ("dbus-launch" ,dbus)
        ("uuidgen" ,util-linux)
-       ("xvfb" ,xorg-server)))
+       ("xvfb" ,xorg-server-for-tests)))
     (propagated-inputs
      ;; These are all in the Requires.private field of gjs-1.0.pc.
      `(("cairo" ,cairo)
        ("gobject-introspection" ,gobject-introspection)
-       ("mozjs" ,mozjs-38)))
+       ("mozjs" ,mozjs-52)))
     (inputs
      `(("gtk+" ,gtk+)
        ("readline" ,readline)))
@@ -4838,7 +4944,7 @@ powerful general purpose text editor.")
 (define-public zenity
   (package
     (name "zenity")
-    (version "3.24.0")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4846,7 +4952,7 @@ powerful general purpose text editor.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xzpm63cib2xzr99phplhbcjzy7lahggk3gp60dvrrclxhka1w3g"))))
+                "0swavrkc5ps3fwzy6h6l5mmim0wwy10xrq0qqkay5d0zf9a965yv"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -4865,7 +4971,7 @@ to display dialog boxes from the commandline and shell scripts.")
 (define-public mutter
   (package
     (name "mutter")
-    (version "3.24.4")
+    (version "3.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4873,7 +4979,7 @@ to display dialog boxes from the commandline and shell scripts.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1slspy5krbqfvnma72lvdnxjf8ag2cvxssa8bvi7y3xxy7xv603k"))))
+                "0ighs1zvlssgq16v1h3vg280za7y448snq65gc5m1zmqqawqkymg"))))
     ;; 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
@@ -4969,7 +5075,7 @@ window manager.")
 (define-public gnome-online-accounts
   (package
     (name "gnome-online-accounts")
-    (version "3.26.2")
+    (version "3.28.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -4977,8 +5083,24 @@ window manager.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1l8p1ghknmkmjpnpl7jr53j66qbzpikickzbmrz0aczyhq6pdy29"))))
+                "035lmm21imr7ddpzffqabv53g3ggjscmqvlzy3j1qkv00zrlxg47"))))
+    (outputs '("out" "lib"))
     (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--libdir=" (assoc-ref %outputs "out") "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-libgoa-output
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((lib (assoc-ref outputs "lib")))
+               (substitute* '("src/goa/Makefile.in" "src/goa/goa-1.0.pc.in")
+                 (("@prefix@") lib)
+                 (("@exec_prefix@") lib)
+                 (("@libdir@") (string-append lib "/lib"))
+                 (("@includedir@") (string-append lib "/include"))
+                 (("@datadir@") (string-append lib "/share")))
+               #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -5006,7 +5128,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
 (define-public evolution-data-server
   (package
     (name "evolution-data-server")
-    (version "3.28.1")
+    (version "3.28.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5014,7 +5136,8 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12b9lfgwd57rzn9394xrbvl9ym5aqldpz9v7c9a421dsv8dgq13b"))))
+                "11sq795115vrcgxl9svscm6wg8isjj784c3d84qzb6z47zq92zj3"))))
+    (outputs '("out" "libedataserverui"))
     (build-system cmake-build-system)
     (arguments
      '(;; XXX FIXME: 11/85 tests are failing.
@@ -5055,7 +5178,28 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                ;; CMakeLists.txt hard-codes runpath to just the libdir.
                ;; Remove it so the configure flag is respected.
                (("SET\\(CMAKE_INSTALL_RPATH .*") ""))
-             #t)))))
+             #t))
+         (add-after 'install 'split
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (libedsui (assoc-ref outputs "libedataserverui")))
+               (for-each (lambda (file)
+                           (mkdir-p (dirname (string-append libedsui file)))
+                           (rename-file (string-append out file)
+                                        (string-append libedsui file)))
+                         '("/lib/pkgconfig/libedataserverui-1.2.pc"
+                           "/lib/libedataserverui-1.2.so"
+                           "/lib/libedataserverui-1.2.so.2"
+                           "/lib/libedataserverui-1.2.so.2.0.0"
+                           "/lib/girepository-1.0/EDataServerUI-1.2.typelib"
+                           "/include/evolution-data-server/libedataserverui"
+                           "/share/gir-1.0/EDataServerUI-1.2.gir"
+                           "/share/vala/vapi/libedataserverui-1.2.vapi"
+                           "/share/vala/vapi/libedataserverui-1.2.deps"))
+               (substitute* (string-append libedsui "/lib/pkgconfig/"
+                                           "libedataserverui-1.2.pc")
+                 ((out) libedsui))
+               #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -5075,7 +5219,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
     (inputs
      `(("bdb" ,bdb)
        ("gcr" ,gcr)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("json-glib" ,json-glib)
        ("libgweather" ,libgweather)
        ("mit-krb5" ,mit-krb5)
@@ -5157,7 +5301,7 @@ users.")
 (define-public network-manager
   (package
     (name "network-manager")
-    (version "1.8.4")
+    (version "1.10.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/NetworkManager/"
@@ -5165,7 +5309,7 @@ users.")
                                   "NetworkManager-" version ".tar.xz"))
               (sha256
                (base32
-                "04lj081a5cdkhcnj1xs77chhy08d2h0648kmj1csxp46cfrjwpk2"))
+                "1jn3g0f2x1irc88awqp8m3gnpdx1whqqqbdgkbgr4x55s702jki4"))
               (snippet
               '(begin
                  (use-modules (guix build utils))
@@ -5188,7 +5332,7 @@ users.")
              (doc      (assoc-ref %outputs "doc"))
              (dhclient (string-append (assoc-ref %build-inputs "isc-dhcp")
                                       "/sbin/dhclient")))
-         (list "--with-systemd-logind=yes" ;In GuixSD, this is provided by elogind.
+         (list "--with-systemd-logind=yes" ;In Guix System, this is provided by elogind.
                "--with-consolekit=no"
                "--with-crypto=gnutls"
                "--disable-config-plugin-ibft"
@@ -5219,6 +5363,23 @@ users.")
                (("src/devices/tests/test-lldp") " ")
                (("src/tests/test-route-manager-linux") " "))
              #t))
+         (add-after 'unpack 'delete-failing-tests
+           (lambda _
+             ;; FIXME: These four tests fail for unknown reasons.
+             ;; ERROR:libnm-core/tests/test-general.c:5842:
+             ;;   _json_config_check_valid: assertion failed (res == expected): (1 == 0)
+             ;; ERROR:libnm-core/tests/test-keyfile.c:647:
+             ;;   test_team_conf_read_invalid: assertion failed: (nm_setting_team_get_config (s_team) == NULL)
+             ;; ERROR:libnm-core/tests/test-setting.c:907:
+             ;;   _test_team_config_sync: assertion failed: (nm_streq0 (nm_setting_team_get_runner (s_team), runner))
+             ;; NetworkManager:ERROR:src/platform/tests/test-nmp-object.c:397:
+             ;;   test_cache_link: assertion failed: (nmp_object_is_visible (obj_new))
+             (substitute* "Makefile.in"
+               (("libnm-core/tests/test-general") " ")
+               (("libnm-core/tests/test-keyfile") " ")
+               (("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " ")
+               (("src/platform/tests/test-nmp-object") " "))
+             #t))
          (add-before 'check 'pre-check
            (lambda _
              ;; For the missing /etc/machine-id.
@@ -5226,12 +5387,13 @@ users.")
              #t))
          (replace 'install
            (lambda _
-             (zero? (system* "make"
-                             "sysconfdir=/tmp"
-                             "rundir=/tmp"
-                             "statedir=/tmp"
-                             "nmstatedir=/tmp/nm"
-                             "install")))))))
+             (invoke "make"
+                     "sysconfdir=/tmp"
+                     "rundir=/tmp"
+                     "statedir=/tmp"
+                     "nmstatedir=/tmp/nm"
+                     "install")
+             #t)))))
     (propagated-inputs
      `(("glib" ,glib)))
     (native-inputs
@@ -5282,7 +5444,7 @@ services.")
 (define-public network-manager-openvpn
   (package
     (name "network-manager-openvpn")
-    (version "1.8.0")
+    (version "1.8.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5291,7 +5453,7 @@ services.")
                     "/NetworkManager-openvpn-" version ".tar.xz"))
               (sha256
                (base32
-                "1973n89g66a3jfx8r45a811fga4kadh6r1w35cb25cz1mlii2vhn"))))
+                "0gyrv46h9k17qym48qacq4zpxbap6hi17shn921824zm98m2bdvr"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-absolute-paths")))
@@ -5336,7 +5498,7 @@ to virtual private networks (VPNs) via OpenVPN.")
 (define-public network-manager-applet
   (package
     (name "network-manager-applet")
-    (version "1.8.4")
+    (version "1.8.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5344,9 +5506,26 @@ to virtual private networks (VPNs) via OpenVPN.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0ag3pvjp58ykrzsjfbdxi0j5xd2i796jk7nns67zy03xwg9i0l0h"))))
+                "1js0i2kwfklahsn77qgxzdscy33drrlym3mrj1qhlw0zf8ri56ya"))))
     (build-system glib-or-gtk-build-system)
-    (arguments '(#:configure-flags '("--disable-migration")))
+    (arguments '(#:configure-flags '("--disable-migration")
+                 #:phases
+                 (modify-phases %standard-phases
+                   (add-after 'unpack 'patch-source
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       (let ((mbpi (assoc-ref inputs
+                                              "mobile-broadband-provider-info"))
+                             (iso-codes (assoc-ref inputs "iso-codes")))
+                         (substitute* "src/libnma/nma-mobile-providers.c"
+                           (("(g_build_filename \\()dirs\\[i\\].*,\
+ (MOBILE_BROADBAND_PROVIDER_INFO.*)" all start end)
+                            (string-append start "\"" mbpi "/share\", " end)))
+                         (substitute* "src/libnma/nma-mobile-providers.c"
+                           (("(g_build_filename \\()dirs\\[i\\].*,\
+ (ISO_3166_COUNTRY_CODES.*)" all start end)
+                            (string-append start "\"" iso-codes
+                                           "/share\", " end)))
+                         #t))))))
     (native-inputs
      `(("intltool" ,intltool)
        ("gobject-introspection" ,gobject-introspection)
@@ -5363,7 +5542,8 @@ to virtual private networks (VPNs) via OpenVPN.")
        ("libsecret" ,libsecret)
        ("libselinux" ,libselinux)
        ("jansson" ,jansson) ; for team support
-       ("modem-manager" ,modem-manager)))
+       ("modem-manager" ,modem-manager)
+       ("mobile-broadband-provider-info" ,mobile-broadband-provider-info)))
     (synopsis "Applet for managing network connections")
     (home-page "https://www.gnome.org/projects/NetworkManager/")
     (description
@@ -5415,7 +5595,7 @@ libxml2.")
 (define-public gdm
   (package
     (name "gdm")
-    (version "3.26.2.1")
+    (version "3.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5424,7 +5604,7 @@ libxml2.")
               (patches (search-patches "gdm-CVE-2018-14424.patch"))
               (sha256
                (base32
-                "0mxdal6hh345xk2xqmw5192jgpprkbcv1d4bwmnl4arcc00cpp8p"))))
+                "0wdm1503x66n1crdlmzmincbd2hccpxsdgjsl5anx3yjpdzs0hb0"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -5453,7 +5633,7 @@ libxml2.")
        (modify-phases %standard-phases
          (add-before
           'configure 'pre-configure
-          (lambda* (#:key inputs #:allow-other-keys)
+          (lambda* (#:key inputs outputs #:allow-other-keys)
             ;; We don't have <systemd/sd-daemon.h>.
             (substitute* '("common/gdm-log.c"
                            "daemon/gdm-server.c"
@@ -5499,8 +5679,8 @@ libxml2.")
                                 "(self, \"" name "\","
                                 "g_getenv (\"" name "\"));\n"))
                              propagate)))))
-            ;; Look for custom GDM conf in /run/current-system.
-            (substitute* '("common/gdm-settings-desktop-backend.c")
+            ;; Find the configuration file using an environment variable.
+            (substitute* '("common/gdm-settings.c")
               (("GDM_CUSTOM_CONF")
                (string-append "(g_getenv(\"GDM_CUSTOM_CONF\") != NULL"
                               " ? g_getenv(\"GDM_CUSTOM_CONF\")"
@@ -5521,7 +5701,40 @@ libxml2.")
               (("\"gnome-session\"")
                (string-append "\"" (assoc-ref inputs "gnome-session")
                               "/bin/gnome-session\"")))
+            ;; Do not automatically select the placeholder session.
+            (substitute* "daemon/gdm-session.c"
+              (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]")
+               (string-append "!g_str_has_suffix (base_name, \".desktop\") || "
+                              "(g_strcmp0(search_dirs[i], \""
+                              (assoc-ref outputs "out") "/share/gdm/BuiltInSessions/"
+                              "\") == 0 && "
+                              "g_strcmp0(base_name, \"fail.desktop\") == 0)"))
+              (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];")
+               "{ self->priv->fallback_session_name = g_strdup(\"fail\"); goto out; }"))
             #t))
+         ;; GDM requires that there be at least one desktop entry
+         ;; file.  This phase installs a hidden one that simply
+         ;; fails.  This enables users to use GDM with a
+         ;; '~/.xsession' script with no other desktop entry files.
+         ;; See <https://bugs.gnu.org/35068>.
+         (add-after 'install 'install-placeholder-desktop-entry
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (sessions (string-append out "/share/gdm/BuiltInSessions"))
+                    (fail (string-append sessions "/fail.desktop")))
+               (mkdir-p sessions)
+               (with-output-to-file fail
+                 (lambda ()
+                   (for-each
+                    display
+                    '("[Desktop Entry]\n"
+                      "Encoding=UTF-8\n"
+                      "Type=Application\n"
+                      "Name=Fail\n"
+                      "Comment=This session fails immediately.\n"
+                      "NoDisplay=true\n"
+                      "Exec=false\n"))))
+               #t)))
          ;; GDM needs GNOME Session to run these applications.  We link
          ;; their autostart files in `share/gdm/greeter/autostart'
          ;; because GDM explicitly tells GNOME Session to look there.
@@ -5595,7 +5808,7 @@ usage and information about running processes.")
 (define-public gnome-bluetooth
   (package
     (name "gnome-bluetooth")
-    (version "3.20.1")
+    (version "3.28.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5603,10 +5816,11 @@ usage and information about running processes.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1zlqcz6jz4vzzr8gd1678i9s4015kiwcpr5szrwz4kmryfsm147a"))))
-    (build-system glib-or-gtk-build-system)
+                "0q7yzklrlayj99risj096mr5x35anx94wvr6nbf6pwbvvzv7453p"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
+       ("gtk+" ,gtk+ "bin") ; gtk-update-icon-cache
        ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
@@ -5628,7 +5842,7 @@ devices using the GNOME desktop.")
 (define-public gnome-control-center
   (package
     (name "gnome-control-center")
-    (version "3.24.3")
+    (version "3.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5636,24 +5850,40 @@ devices using the GNOME desktop.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "18ncjqjj93a39sla2zjr9i6pw59yh87p4jla899lmvi2qajd5923"))))
-    (build-system glib-or-gtk-build-system)
+                "0d6pjdbsra16nav8201kaadja5yma92bhziki9601ilk2ry3v7pz"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:phases
+     '(#:glib-or-gtk? #t
+       #:configure-flags
+       (list "-Dcheese=false")
+       #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-paths
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((libc   (assoc-ref inputs "libc"))
-                   (tzdata (assoc-ref inputs "tzdata")))
+                   (tzdata (assoc-ref inputs "tzdata"))
+                   (libgnomekbd (assoc-ref inputs "libgnomekbd"))
+                   (nm-applet   (assoc-ref inputs "network-manager-applet")))
                (substitute* "panels/datetime/tz.h"
                  (("/usr/share/zoneinfo/zone.tab")
                   (string-append tzdata "/share/zoneinfo/zone.tab")))
                (substitute* "panels/datetime/test-endianess.c"
                  (("/usr/share/locale")
                   (string-append libc "/share/locale")))
+               (substitute* "panels/region/cc-region-panel.c"
+                 (("\"gkbd-keyboard-display")
+                  (string-append "\"" libgnomekbd
+                                 "/bin/gkbd-keyboard-display")))
+               (substitute* '("panels/network/net-device-wifi.c"
+                              "panels/network/net-device.c"
+                              "panels/network/connection-editor/net-connection-editor.c")
+                 (("\"nm-connection-editor")
+                  (string-append "\"" nm-applet
+                                 "/bin/nm-connection-editor")))
                #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
+       ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("xsltproc" ,libxslt)))
@@ -5668,10 +5898,12 @@ devices using the GNOME desktop.")
        ("gnome-bluetooth" ,gnome-bluetooth)
        ("gnome-desktop" ,gnome-desktop)
        ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gnome-settings-daemon" ,gnome-settings-daemon)
        ("grilo" ,grilo)
        ("ibus" ,ibus)
        ("libcanberra" ,libcanberra)
+       ("libgnomekbd" ,libgnomekbd)
        ("libgudev" ,libgudev)
        ("libgtop" ,libgtop)
        ("libpwquality" ,libpwquality)
@@ -5699,7 +5931,7 @@ properties, screen resolution, and other GNOME parameters.")
 (define-public gnome-shell
   (package
     (name "gnome-shell")
-    (version "3.24.3")
+    (version "3.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5707,68 +5939,113 @@ properties, screen resolution, and other GNOME parameters.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1f20x36ymkp1j667hb7s7byly2gqc4m0anldy3qwp38vm8437caq"))
+                "1b9n89ij2g5nqaqp7a13jnqcd8qa2v9p55rbi71al3xvqk091ri7"))
               (patches (search-patches "gnome-shell-theme.patch"))
               (modules '((guix build utils)))
               (snippet
                #~(begin
-                   ;; CSS files have to be regenerated from the .scss source
-                   ;; that 'gnome-shell-theme.patch' modifies.
-                   (for-each delete-file
-                             (find-files "data/theme"
-                                         "^gnome-shell.*\\.css$"))
-
                    ;; Copy images for use on the GDM log-in screen.
                    (copy-file #$(file-append %artwork-repository
                                              "/slim/0.x/background.png")
                               "data/theme/guix-background.png")
-                   (invoke #+(file-append inkscape "/bin/inkscape")
-                           "--export-png=data/theme/guix-logo.png"
-                           #$(file-append %artwork-repository
-                                          "/logo/Guix-horizontal-white.svg"))
+                   (copy-file #$(file-append %artwork-repository
+                                             "/logo/Guix-horizontal-white.svg")
+                              "data/theme/guix-logo.svg")
                    #t))))
-    (build-system glib-or-gtk-build-system)
+    (build-system meson-build-system)
     (arguments
-     '(#:phases
+     `(#:glib-or-gtk? #t
+       #:disallowed-references ((,glib "bin")
+                                ,inkscape ,libxslt
+                                ,ruby-sass)
+       #:configure-flags
+       (list "-Dsystemd=false"
+             ;; Otherwise, the RUNPATH will lack the final path component.
+             (string-append "-Dc_link_args=-Wl,-rpath="
+                            (assoc-ref %outputs "out")
+                            "/lib/gnome-shell"))
+
+       #:modules ((guix build meson-build-system)
+                  (guix build utils)
+                  (srfi srfi-1))
+
+       #:phases
        (modify-phases %standard-phases
-         (add-before 'build 'rebuild-css
-           (lambda _
-             ;; Rebuild the CSS files from the .scss files that our patch
-             ;; modifies.
-             (invoke "make" "-C" "data"
-                     "theme/gnome-shell.css"
-                     "theme/gnome-shell-high-contrast.css")))
-         (replace 'install
+         (add-after 'unpack 'fix-keysdir
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out     (assoc-ref outputs "out"))
                     (keysdir (string-append
                               out "/share/gnome-control-center/keybindings")))
-               (zero? (system* "make"
-                               (string-append "keysdir=" keysdir)
-                               "install")))))
-         (add-after
-          'install 'wrap-programs
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out              (assoc-ref outputs "out"))
-                  (gi-typelib-path  (getenv "GI_TYPELIB_PATH"))
-                  (python-path      (getenv "PYTHONPATH")))
-              (wrap-program (string-append out "/bin/gnome-shell")
-                `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
-              (for-each
-               (lambda (prog)
-                 (wrap-program (string-append out "/bin/" prog)
-                   `("PYTHONPATH"      ":" prefix (,python-path))
-                   `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
-               '("gnome-shell-extension-tool" "gnome-shell-perf-tool"))
-              #t))))))
+               (substitute* "meson.build"
+                 (("keysdir =.*")
+                  (string-append "keysdir = '" keysdir "'\n")))
+               #t)))
+         (add-before 'configure 'convert-logo-to-png
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Convert the logo from SVG to PNG.
+             (invoke "inkscape" "--export-png=data/theme/guix-logo.png"
+                     "data/theme/guix-logo.svg")))
+         (add-before 'configure 'record-absolute-file-names
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "js/misc/ibusManager.js"
+               (("'ibus-daemon'")
+                (string-append "'" (assoc-ref inputs "ibus")
+                               "/bin/ibus-daemon'")))
+             (substitute* "js/ui/status/keyboard.js"
+               (("'gkbd-keyboard-display'")
+                (string-append "'" (assoc-ref inputs "libgnomekbd")
+                               "/bin/gkbd-keyboard-display'")))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Tests require a running X server.
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t))
+         (add-after 'install 'wrap-programs
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out              (assoc-ref outputs "out"))
+                   (gi-typelib-path  (getenv "GI_TYPELIB_PATH"))
+                   (python-path      (getenv "PYTHONPATH")))
+               (wrap-program (string-append out "/bin/gnome-shell")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
+                 ;; FIXME: gnome-shell loads these libraries with unqualified
+                 ;; names only, so they need to be on LD_LIBRARY_PATH.  The
+                 ;; alternative might be to patch gnome-shell.
+                 `("LD_LIBRARY_PATH" ":" prefix
+                   ,(map (lambda (pkg)
+                           (string-append (assoc-ref inputs pkg) "/lib"))
+                         '("gdk-pixbuf"
+                           "gnome-bluetooth" "librsvg" "libgweather"))))
+               (for-each
+                (lambda (prog)
+                  (wrap-program (string-append out "/bin/" prog)
+                    `("PYTHONPATH"      ":" prefix (,python-path))
+                    `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+                '("gnome-shell-extension-tool" "gnome-shell-perf-tool"))
+               #t)))
+         (replace 'glib-or-gtk-wrap
+           (let ((wrap (assoc-ref %standard-phases 'glib-or-gtk-wrap)))
+             (lambda* (#:key inputs outputs #:allow-other-keys #:rest rest)
+               ;; By default Inkscape et al. would end up in the XDG_DATA_DIRS
+               ;; settings of the wrappers created by the 'glib-or-gtk-wrap'
+               ;; phase.  Fix that since we don't need these.
+               (wrap #:inputs (fold alist-delete inputs
+                                    '("inkscape" "intltool" "glib:bin"))
+                     #:outputs outputs)))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
+       ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
        ("gobject-introspection" ,gobject-introspection)
+       ("inkscape" ,inkscape)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("python" ,python)
+       ("ruby-sass" ,ruby-sass)
+       ("sassc" ,sassc)
        ("xsltproc" ,libxslt)
-       ("ruby-sass" ,ruby-sass)))
+       ;; For tests
+       ("xorg-server" ,xorg-server-for-tests)))
     (inputs
      `(("accountsservice" ,accountsservice)
        ("caribou" ,caribou)
@@ -5776,15 +6053,16 @@ properties, screen resolution, and other GNOME parameters.")
        ("evolution-data-server" ,evolution-data-server)
        ("gcr" ,gcr)
        ("gdm" ,gdm)
+       ("gdk-pixbuf" ,gdk-pixbuf+svg)
        ("gjs" ,gjs)
        ("gnome-bluetooth" ,gnome-bluetooth)
-       ("gnome-control-center" ,gnome-control-center)
        ("gnome-desktop" ,gnome-desktop)
        ("gnome-settings-daemon" ,gnome-settings-daemon)
        ("gst-plugins-base" ,gst-plugins-base)
        ("ibus" ,ibus)
        ("libcanberra" ,libcanberra)
        ("libcroco" ,libcroco)
+       ("libgnomekbd" ,libgnomekbd)               ;for gkbd-keyboard-display
        ("libgweather" ,libgweather)
        ("libsoup" ,libsoup)
        ("mesa-headers" ,mesa-headers)
@@ -5799,9 +6077,7 @@ properties, screen resolution, and other GNOME parameters.")
        ;; XXX: These requirements were added in 3.24, but no mention in NEWS.
        ;; Missing propagation? See also: <https://bugs.gnu.org/27264>
        ("librsvg" ,librsvg)
-       ("geoclue" ,geoclue)
-       ;; XXX: required by libgjs.la.
-       ("readline" ,readline)))
+       ("geoclue" ,geoclue)))
     (synopsis "Desktop shell for GNOME")
     (home-page "https://wiki.gnome.org/Projects/GnomeShell")
     (description
@@ -5880,7 +6156,7 @@ easy, safe, and automatic.")
 (define-public tracker
   (package
     (name "tracker")
-    (version "1.12.3")
+    (version "2.0.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5888,8 +6164,43 @@ easy, safe, and automatic.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1mpq418lzba7fad0w0m3bnxvz3khf461b5zya8zmq5n1g0w99ki3"))))
+                "1mfc5lv820kr7ssi7hldn25gmshh65k19kh478qjsnb64sshsbyf"))))
     (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-broken-tests
+           (lambda _
+             ;; FIXME: Most of these fail with GLib-GIO-FATAL-ERROR: Settings
+             ;; schema 'org.freedesktop.Tracker.FTS' is not installed.
+             (substitute* "tests/libtracker-miner/Makefile.in"
+               (("tracker-file-notifier-test\\$\\(EXEEXT\\)") "")
+               (("tracker-miner-fs-test\\$\\(EXEEXT\\)") "")
+               (("tracker-monitor-test\\$\\(EXEEXT\\)") ""))
+             (substitute* "tests/libtracker-fts/Makefile.in"
+               (("tracker-fts-test\\$\\(EXEEXT\\)") ""))
+             (substitute* "tests/libtracker-data/Makefile.in"
+               (("tracker-ontology\\$\\(EXEEXT\\)") "")
+               (("tracker-ontology-change\\$\\(EXEEXT\\)") "")
+               (("tracker-backup\\$\\(EXEEXT\\)") "")
+               (("tracker-sparql-blank\\$\\(EXEEXT\\)") "")
+               (("tracker-sparql\\$\\(EXEEXT\\)") ""))
+             ;; 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/Makefile.in"
+               (("tracker-gb-737023-test\\$\\(EXEEXT\\)") "")
+               (("tracker-sparql-test\\$\\(EXEEXT\\)") ""))
+             (substitute* "tests/tracker-steroids/Makefile.in"
+               (("tracker-test\\$\\(EXEEXT\\)") ""))
+             #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")
+             #t)))))
     (native-inputs
      `(("gnome-common" ,gnome-common)
        ("gobject-introspection" ,gobject-introspection)
@@ -5903,6 +6214,7 @@ easy, safe, and automatic.")
        ("gst-plugins-base" ,gst-plugins-base)
        ("sqlite" ,sqlite)
        ("nettle" ,nettle)  ; XXX why is this needed?
+       ("python" ,python)
        ("poppler" ,poppler)
        ("libgsf" ,libgsf)
        ("libexif" ,libexif)
@@ -5924,7 +6236,6 @@ easy, safe, and automatic.")
        ("libseccomp" ,libseccomp)
        ("libsoup" ,libsoup)
        ("libuuid" ,util-linux)))
-    (arguments `(#:tests? #f))  ; XXX FIXME enable tests (some fail)
     (synopsis "Metadata database, indexer and search tool")
     (home-page "https://wiki.gnome.org/Projects/Tracker")
     (description
@@ -5940,7 +6251,7 @@ shared object databases, search tools and indexing.")
 (define-public nautilus
   (package
     (name "nautilus")
-    (version "3.26.2")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5948,7 +6259,7 @@ shared object databases, search tools and indexing.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1d0l4vgcjqj4671hb6s2a56baqlasbxn3wl6vfrpdsk5qq299jbr"))))
+                "19dhpa2ylrg8d5274lahy7xqr2p9z3jnq1h4qmsh95czkpy7is4w"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -5964,6 +6275,7 @@ shared object databases, search tools and indexing.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("dconf" ,dconf)
+       ("gexiv2" ,gexiv2)
        ("gvfs" ,gvfs)
        ("exempi" ,exempi)
        ("gnome-desktop" ,gnome-desktop)
@@ -6054,7 +6366,7 @@ can add your own files to the collection.")
 (define-public gnome-screenshot
   (package
     (name "gnome-screenshot")
-    (version "3.22.0")
+    (version "3.26.0")
     (source
      (origin
        (method url-fetch)
@@ -6063,11 +6375,14 @@ can add your own files to the collection.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0c02n1hgv21m4082jx399b1yazsc0cr07ba8k0pv8v3w7i5z21ca"))))
-    (build-system glib-or-gtk-build-system)
+         "1fy8fjl29i3xhj8caik03d3za06x96xgkk8r4fwz88iqbmci3g0v"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
+       ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache
+       ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
        ("intltool" ,intltool)
+       ("appstream-glib" ,appstream-glib)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gtk+" ,gtk+)
@@ -6085,7 +6400,7 @@ beautifying border effects.")
 (define-public dconf-editor
   (package
     (name "dconf-editor")
-    (version "3.26.2")
+    (version "3.28.0")
     (source
      (origin
        (method url-fetch)
@@ -6094,21 +6409,14 @@ beautifying border effects.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1lcarg8igsqpq4iv5834mf9kz4cmfhfw11bwy3x7v7f497z57d18"))))
-    (build-system glib-or-gtk-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'skip-gtk-update-icon-cache
-           (lambda _
-             ;; Don't create 'icon-theme.cache'.
-             (substitute* "editor/Makefile"
-               (("gtk-update-icon-cache") "true"))
-             #t)))))
+         "0nhcpwqrkmpxbhaf0cafvy6dlp6s7vhm5vknl4lgs3l24zc56ns5"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
+       ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache
        ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
     (inputs
      `(("dconf" ,dconf)
        ("gtk+" ,gtk+)
@@ -6315,7 +6623,7 @@ library.")
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("gnome-online-accounts" ,gnome-online-accounts)
+     `(("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("json-glib" ,json-glib)
        ("rest" ,rest)))
     (home-page "https://wiki.gnome.org/Projects/Zapojit")
@@ -6328,7 +6636,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
 (define-public gnome-clocks
   (package
     (name "gnome-clocks")
-    (version "3.26.1")
+    (version "3.28.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6336,7 +6644,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xqirnf7xkiv5vj3ng4slpyh50ihn625vhdgskfzx83a3pgxin1b"))))
+                "1dd739vchb592mck1dia2hkywn4213cpramyqzgmlmwv8z80p3nl"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t))
@@ -6366,7 +6674,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
 (define-public gnome-calendar
   (package
     (name "gnome-calendar")
-    (version "3.26.3")
+    (version "3.28.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6374,7 +6682,7 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1clnfvvsaqw9vpxrs6qrxzmgpaw9x2nkjik2x2vwvm07pdvhddxn"))))
+                "0x6wxngf8fkwgbl6x7rzp0srrb43rm55klpb2vfjk2hahpbjvxyw"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6388,8 +6696,12 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("evolution-data-server" ,evolution-data-server)
-       ("gnome-online-accounts" ,gnome-online-accounts)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("libdazzle" ,libdazzle)
+       ("libedataserverui" ,evolution-data-server "libedataserverui")
+       ("libgweather" ,libgweather)
+       ("geoclue" ,geoclue)))
     (home-page "https://wiki.gnome.org/Apps/Calendar")
     (synopsis "GNOME's calendar application")
     (description
@@ -6400,16 +6712,15 @@ desktop.  It supports multiple calendars, month, week and year view.")
 (define-public gnome-todo
   (package
     (name "gnome-todo")
-    (version "3.26.2")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major+minor version) "/"
                                   name "-" version ".tar.xz"))
-              (patches (search-patches "gnome-todo-libical-compat.patch"))
               (sha256
                (base32
-                "106xx1w18pxjmj5k0k2qjzi6b3c3kaz7b5kyrpknykibnr401ff9"))))
+                "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -6436,11 +6747,12 @@ desktop.  It supports multiple calendars, month, week and year view.")
     (inputs
      `(("rest" ,rest)                   ; For Todoist plugin
        ("json-glib" ,json-glib)         ; For Todoist plugin
+       ("libedataserverui" ,evolution-data-server "libedataserverui")
        ("libical" ,libical)
        ("libpeas" ,libpeas)
        ("python-pygobject" ,python-pygobject)
        ("evolution-data-server" ,evolution-data-server)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
     (home-page "https://wiki.gnome.org/Apps/Todo")
     (synopsis "GNOME's ToDo Application")
@@ -6489,51 +6801,41 @@ fit the GNOME desktop.")
 existing databases over the internet.")
     (license license:gpl3+)))
 
-(define-public gnome-tweak-tool
+(define-public gnome-tweaks
   (package
-    (name "gnome-tweak-tool")
-    (version "3.26.4")
+    (name "gnome-tweaks")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
+              (uri (string-append "mirror://gnome/sources/gnome-tweaks/"
                                   (version-major+minor version) "/"
-                                  "gnome-tweak-tool-" version ".tar.xz"))
-              (patches (list
-                        (search-patch "gnome-tweak-tool-search-paths.patch")))
+                                  "gnome-tweaks-" version ".tar.xz"))
+              (patches
+               (list (search-patch "gnome-tweaks-search-paths.patch")))
               (sha256
                (base32
-                "1pq5a0kzh1sz7s7ax5c7p6212k9d51nk5bfvjfyqn99cs928187x"))))
-    (build-system glib-or-gtk-build-system)
+                "1p5xydr0haz4389h6dvvbna6i1mipdzvmlfksnv0jqfvfs9sy6fp"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("--localstatedir=/tmp"
-                           "--sysconfdir=/tmp")
+     `(#:glib-or-gtk? #t
+       #:configure-flags '("-Dlocalstatedir=/tmp"
+                           "-Dsysconfdir=/tmp")
        #:imported-modules ((guix build python-build-system)
-                           ,@%glib-or-gtk-build-system-modules)
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (replace 'build
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (invoke "meson" "build"
-                                      "--prefix" (assoc-ref outputs "out"))))
-                  (replace 'check
-                    (lambda _ (invoke "ninja" "-C" "build" "test")))
-                  (replace 'install
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (invoke "ninja" "-C" "build" "install")))
-                  (add-after 'install 'wrap-program
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let ((out               (assoc-ref outputs "out"))
-                            (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
-                        (wrap-program (string-append out "/bin/gnome-tweak-tool")
-                          `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
-                      #t))
-                  (add-after 'install 'wrap
-                    (@@ (guix build python-build-system) wrap)))))
+                           ,@%meson-build-system-modules)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap
+           (@@ (guix build python-build-system) wrap))
+         (add-after 'wrap 'wrap-gi-typelib
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out               (assoc-ref outputs "out"))
+                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/gnome-tweaks")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t)))))
     (native-inputs
      `(("gtk+:bin" ,gtk+ "bin")         ; For gtk-update-icon-cache
        ("intltool" ,intltool)
-       ("meson" ,meson-for-build)
-       ("ninja" ,ninja)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gnome-desktop" ,gnome-desktop)
@@ -6546,18 +6848,22 @@ existing databases over the internet.")
        ("python" ,python)
        ("python-pygobject" ,python-pygobject)))
     (synopsis "Customize advanced GNOME 3 options")
-    (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool")
+    (home-page "https://wiki.gnome.org/Apps/Tweaks")
     (description
-     "GNOME Tweak Tool allows adjusting advanced configuration settings in
+     "GNOME Tweaks allows adjusting advanced configuration settings in
 GNOME 3.  This includes things like the fonts used in user interface elements,
 alternative user interface themes, changes in window management behavior,
 GNOME Shell appearance and extension, etc.")
     (license license:gpl3+)))
 
+;; This package has been renamed by upstream.
+(define-public gnome-tweak-tool
+  (deprecated-package "gnome-tweak-tool" gnome-tweaks))
+
 (define-public gnome-shell-extensions
   (package
     (name "gnome-shell-extensions")
-    (version "3.24.3")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6565,10 +6871,10 @@ GNOME Shell appearance and extension, etc.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0y8anpp9ymp0lxn15w63ra6zxxf8nvbl48xqkvqdjzida73fyz9w"))))
-    (build-system gnu-build-system)
+                "0n4h8rdnq3knrvlg6inrl62a73h20dbhfgniwy18572jicrh5ip9"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:configure-flags '("--enable-extensions=all")))
+     '(#:configure-flags '("-Dextension_set=all")))
     (native-inputs
      `(("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
@@ -6769,7 +7075,7 @@ compiled.")
        ("gobject-introspection" ,gobject-introspection)))
     (inputs
      `(("json-glib" ,json-glib)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("rest" ,rest)))
     (synopsis "GLib/GObject wrapper for the Facebook API")
     (description "This library allows you to use the Facebook API from
@@ -6780,7 +7086,7 @@ GLib/GObject code.")
 (define-public libgnomekbd
   (package
     (name "libgnomekbd")
-    (version "3.22.0.1")
+    (version "3.26.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -6788,7 +7094,7 @@ GLib/GObject code.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1plkkack6s8b21gcmmly0lapgcjz53dmw2vixnn4rw4jxjwbdzaf"))))
+                "0xc8jrc44x2h24v28wv36k70k7bwxy6p2vsvxvvia1n3ay642fza"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -6849,7 +7155,7 @@ handling the startup notification side.")
 (define-public gnome-calculator
   (package
     (name "gnome-calculator")
-    (version "3.26.0")
+    (version "3.28.2")
     (source
      (origin
        (method url-fetch)
@@ -6858,7 +7164,7 @@ handling the startup notification side.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1iv3b3mvqxm17r5gv15dyq6gz08w0ljhzgbf22xnnfnpzhvmn8b2"))))
+         "0izsrqc9fm2lh25jr3nzi94p5hh2d3cklxqczbq16by85wr1xm5s"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0.
@@ -6866,8 +7172,10 @@ handling the startup notification side.")
        ("itstool" ,itstool)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("gtksourceview" ,gtksourceview)
+     `(("glib" ,glib)
+       ("gtksourceview" ,gtksourceview-3)
        ("libsoup" ,libsoup)
+       ("libxml2" ,libxml2)
        ("mpc" ,mpc)
        ("mpfr" ,mpfr)))
     (home-page "https://wiki.gnome.org/Apps/Calculator")
@@ -6909,37 +7217,78 @@ basically a text box in which notes can be written.")
     (license license:gpl3+)))
 
 (define-public gucharmap
-  (package
-    (name "gucharmap")
-    (version "3.18.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "mirror://gnome/sources/" name "/"
-                           (version-major+minor version) "/"
-                           name "-" version ".tar.xz"))
-       (sha256
-        (base32
-         "0c1q9w5vql0vvg6g0knxfnv4ap19fg5cdrwndi1cj9lsym92c78j"))))
-    (build-system glib-or-gtk-build-system)
-    (native-inputs
-     `(("desktop-file-utils" ,desktop-file-utils)
-       ("glib:bin" ,glib "bin") ; for glib-compile-resources.
-       ("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("gtk+" ,gtk+)
-       ("xmllint" ,libxml2)))
-    (home-page "https://wiki.gnome.org/Apps/Gucharmap")
-    (synopsis "Unicode character picker and font browser")
-    (description
-     "This program allows you to browse through all the available Unicode
+  (let ((unicode-files
+         '(("Blocks.txt"
+            "19zf2kd198mcv1paa194c1zf36hay1irbxssi35yi2pd8ad69qas")
+           ("DerivedAge.txt"
+            "1h9p1g0wnh686l6cqar7cmky465vwc6vjzzn1s7v0i9zcjaqkr4h")
+           ("NamesList.txt"
+            "0gvpcyq852rnlqmx4y5i1by7bavvcw6rj40i54w48yc7xr3zmgd1")
+           ("Scripts.txt"
+            "0b9prz2hs6w61afqaplcxnv115f8yk4d5hn9dc5hks8nqpj28bnh")
+           ("UnicodeData.txt"
+            "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj")
+           ("Unihan.zip"
+            "199kz6laypkvc0ykms6d7bkb571jmpds39sv2p7kd5jjm1ij08q1"))))
+    (package
+      (name "gucharmap")
+      (version "10.0.4")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append "mirror://gnome/sources/" name "/"
+                             (version-major+minor version) "/"
+                             name "-" version ".tar.xz"))
+         (sha256
+          (base32
+           "00gh3lll6wykd2qg1lrj05a4wvscsypmrx7rpb6jsbvb4scnh9mv"))))
+      (build-system glib-or-gtk-build-system)
+      (arguments
+       `(#:modules ((ice-9 match)
+                    (guix build glib-or-gtk-build-system)
+                    (guix build utils))
+         #:configure-flags
+         (list "--with-unicode-data=../unicode-data")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'prepare-unicode-data
+             (lambda* (#:key inputs #:allow-other-keys)
+               (mkdir-p "../unicode-data")
+               (with-directory-excursion "../unicode-data"
+                 (for-each (match-lambda
+                             ((file _)
+                              (install-file (assoc-ref inputs file) ".")))
+                           ',unicode-files))
+               #t)))))
+      (native-inputs
+       `(("desktop-file-utils" ,desktop-file-utils)
+         ("glib:bin" ,glib "bin")       ; for glib-compile-resources.
+         ("gobject-introspection" ,gobject-introspection)
+         ("intltool" ,intltool)
+         ("itstool" ,itstool)
+         ("pkg-config" ,pkg-config)
+         ,@(map (match-lambda
+                  ((file hash)
+                   `(,file
+                     ,(origin
+                        (method url-fetch)
+                        (uri (string-append
+                              "http://www.unicode.org/Public/10.0.0/ucd/"
+                              file))
+                        (sha256 (base32 hash))))))
+                unicode-files)
+         ("unzip" ,unzip)))
+      (inputs
+       `(("gtk+" ,gtk+)
+         ("xmllint" ,libxml2)))
+      (home-page "https://wiki.gnome.org/Apps/Gucharmap")
+      (synopsis "Unicode character picker and font browser")
+      (description
+       "This program allows you to browse through all the available Unicode
 characters and categories for the installed fonts, and to examine their
 detailed properties.  It is an easy way to find the character you might
 only know by its Unicode name or code point.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public bluefish
   (package
@@ -6975,7 +7324,7 @@ Bluefish supports many programming and markup languages.")
 (define-public gnome-system-monitor
   (package
     (name "gnome-system-monitor")
-    (version "3.26.0")
+    (version "3.28.2")
     (source
      (origin
        (method url-fetch)
@@ -6984,20 +7333,22 @@ Bluefish supports many programming and markup languages.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1cz6s0cvagj422f9dc231nvg8jsfkva5s81skpq4q5jyrb1ahj7q"))))
+         "164in885dyfvna5yjzgdyrbrsskvh5wzxdmkjgb4mbh54lzqd1zb"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums.
        ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("libgtop" ,libgtop)
+       ("polkit" ,polkit)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gdk-pixbuf" ,gdk-pixbuf) ; for loading SVG files.
        ("gtk+" ,gtk+)
        ("gtkmm" ,gtkmm)
        ("librsvg" ,librsvg)
-       ("libxml2" ,libxml2)))
+       ("libxml2" ,libxml2)
+       ("libwnck" ,libwnck)))
     (home-page "https://wiki.gnome.org/Apps/SystemMonitor")
     (synopsis "Process viewer and system resource monitor for GNOME")
     (description
@@ -7011,7 +7362,7 @@ kill/reinice processes.")
 (define-public python-pyatspi
   (package
     (name "python-pyatspi")
-    (version "2.24.0")
+    (version "2.26.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -7020,7 +7371,7 @@ kill/reinice processes.")
                     "/pyatspi-" version ".tar.xz"))
               (sha256
                (base32
-                "14m6y27ziqc9f6339gjz49mlsk6mrsyg4bkj055cdzc7sfjlgvz7"))))
+                "0xdnix7gxzgf75xy9ris4dd6b05mqwicw190b98xqmypydyf95n6"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -7039,7 +7390,7 @@ accessibility infrastructure.")
 (define-public orca
   (package
     (name "orca")
-    (version "3.26.0")
+    (version "3.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -7048,7 +7399,7 @@ accessibility infrastructure.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0xk5k9cbswymma60nrfj00dl97wypx59c107fb1hwi75gm0i07a7"))))
+                "04l5ccn7wf175gyq3blfpx0yh70ny06n161297jwc9idf951852g"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -7331,20 +7682,20 @@ photo-booth-like software, such as Cheese.")
        ("pkg-config" ,pkg-config)
        ("vala" ,vala)))
     (propagated-inputs
-     `(("gnome-video-effects" ,gnome-video-effects)))
-    (inputs
-     `(("clutter" ,clutter)
+     `(("gnome-video-effects" ,gnome-video-effects)
+       ("clutter" ,clutter)
        ("clutter-gst" ,clutter-gst)
        ("clutter-gtk" ,clutter-gtk)
+       ("libcanberra" ,libcanberra)
        ("gdk-pixbuf" ,gdk-pixbuf)
        ("glib" ,glib)
-       ("gnome-desktop" ,gnome-desktop)
+       ("gstreamer" ,gstreamer)))
+    (inputs
+     `(("gnome-desktop" ,gnome-desktop)
        ("gobject-introspection" ,gobject-introspection)
-       ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
        ("gst-plugins-bad" ,gst-plugins-bad)
        ("gtk+" ,gtk+)
-       ("libcanberra" ,libcanberra)
        ("libx11" ,libx11)
        ("libxtst" ,libxtst)))
     (home-page "https://wiki.gnome.org/Apps/Cheese")
@@ -7573,3 +7924,100 @@ underlying library but cannot for various reasons.  In most cases, they are
 wildly out of scope for those libraries.  In other cases, they are not quite
 generic enough to work for everyone.")
     (license license:gpl3+)))
+
+(define-public evolution
+  (package
+    (name "evolution")
+    (version "3.28.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/evolution/"
+                                  (version-major+minor version) "/"
+                                  "evolution-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0sdv5lg2vlz5f4raymz9d8a5jq4j18vbqyigaip6508p3bjnfj8l"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DENABLE_PST_IMPORT=OFF"    ; libpst is not packaged
+             "-DENABLE_LIBCRYPTUI=OFF"))) ; libcryptui hasn't seen a release
+                                          ; in four years and cannot be built.
+    (native-inputs
+     `(("glib" ,glib "bin")               ; glib-mkenums
+       ("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("itstool" ,itstool)))
+    (inputs
+     `(("enchant" ,enchant)
+       ("evolution-data-server" ,evolution-data-server) ; must be the same version
+       ("gcr" ,gcr)
+       ("gnome-autoar" ,gnome-autoar)
+       ("gnome-desktop" ,gnome-desktop)
+       ("gtkspell3" ,gtkspell3)
+       ("highlight" ,highlight)
+       ("libcanberra" ,libcanberra)
+       ("libedataserverui" ,evolution-data-server "libedataserverui")
+       ("libgweather" ,libgweather)
+       ("libnotify" ,libnotify)
+       ("libsoup" ,libsoup)
+       ("nss" ,nss)
+       ("openldap" ,openldap)
+       ("webkitgtk" ,webkitgtk)
+       ("ytnef" ,ytnef)))
+    (home-page "https://gitlab.gnome.org/GNOME/evolution")
+    (synopsis "Manage your email, contacts and schedule")
+    (description "Evolution is a personal information management application
+that provides integrated mail, calendaring and address book
+functionality.")
+    ;; See COPYING for details.
+    (license (list license:lgpl2.1 license:lgpl3 ; either one of these
+                   license:openldap2.8 ; addressbook/gui/component/openldap-extract.h
+                   license:lgpl2.1+))))  ; smime/lib/*
+
+(define-public gthumb
+  (package
+    (name "gthumb")
+    (version "3.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gthumb/"
+                                  (version-major+minor version) "/"
+                                  "gthumb-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1l2s1facq1r6yvqjqc34aqfzlvb3nhkhn79xisxbbdlgrrxdq52f"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t
+       #:configure-flags
+       ;; Ensure the RUNPATH contains all installed library locations.
+       (list (string-append "-Dc_link_args=-Wl,-rpath="
+                            (assoc-ref %outputs "out")
+                            "/lib/gthumb/extensions")
+             (string-append "-Dcpp_link_args=-Wl,-rpath="
+                            (assoc-ref %outputs "out")
+                            "/lib/gthumb/extensions"))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("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
+       ("intltool" ,intltool)
+       ("itstool" ,itstool)))
+    (inputs
+     `(("exiv2" ,exiv2)
+       ("gtk" ,gtk+)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gstreamer" ,gstreamer)
+       ("clutter" ,clutter)
+       ("clutter-gst" ,clutter-gst)
+       ("clutter-gtk" ,clutter-gtk)
+       ("libjpeg" ,libjpeg)
+       ("libtiff" ,libtiff)
+       ("libraw" ,libraw)))
+    (home-page "https://wiki.gnome.org/Apps/Gthumb")
+    (synopsis "GNOME image viewer and browser")
+    (description "GThumb is an image viewer, browser, organizer, editor and
+advanced image management tool")
+    (license license:gpl2+)))