gnu: Add krb5-auth-dialog.
[jackhill/guix/guix.git] / gnu / packages / gnome.scm
index f4703d4..5281193 100644 (file)
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
-;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2016, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
@@ -43,7 +43,7 @@
 ;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2019, 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2019, 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -52,6 +52,9 @@
 ;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages photo)
+  #:use-module (gnu packages php)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu artwork)
+  #:use-module ((guix build utils) #:select (modify-phases))
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
@@ -254,6 +259,39 @@ Desktop.  It is designed to be as simple as possible and has some unique
 features to enable users to create their discs easily and quickly.")
     (license license:gpl2+)))
 
+(define-public krb5-auth-dialog
+  (package
+    (name "krb5-auth-dialog")
+    (version "3.26.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://gnome/sources/" name "/"
+                       (version-major+minor version) "/"
+                       name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1w91gsvmifqhiam3xqf88i5rk2w6qadjalmbvvamjdc37j0vdc6x"))))
+    (build-system glib-or-gtk-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("itstool" ,itstool)
+       ("libxml2" ,libxml2)
+       ("pkg-config" ,pkg-config)
+       ("python-wrapper" ,python-wrapper)))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("mit-krb5" ,mit-krb5)
+       ("network-manager" ,network-manager)))
+    (synopsis "Popup dialogs for Kerberos 5")
+    (description "krb5-auth-dialog is a simple dialog that monitors Kerberos
+tickets, and pops up a dialog when they are about to expire.")
+    (home-page "https://gitlab.gnome.org/GNOME/krb5-auth-dialog")
+    (license license:gpl2+)))
+
 (define-public notification-daemon
   (package
     (name "notification-daemon")
@@ -285,15 +323,15 @@ freedesktop.org desktop notification specification.")
 (define-public mm-common
   (package
     (name "mm-common")
-    (version "1.0.0")
+    (version "1.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/mm-common/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "mm-common-" version ".tar.xz"))
               (sha256
                (base32
-                "1m4w33da9f4rx2d6kdj3ix3kl0gn16ml82v2mdn4hljr3q29nzdr"))))
+                "1jasx9a9g7nqf7jcv3mrg4qh5cp9sq724jxjaz4wa1dzmxsxg8i8"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -445,7 +483,7 @@ It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
 (define-public gssdp
   (package
    (name "gssdp")
-   (version "1.2.2")
+   (version "1.2.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -453,7 +491,7 @@ It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "195hi10vrsvh6i927mm6rm1ld5sxah3h5sr3bsjm90vb8lxrxfya"))))
+              "1s57i8a8wnnxnsfl27cq4503dkdlzbrhry5zpg23sfqfffvdqqx2"))))
    (build-system meson-build-system)
    (native-inputs
     `(("gettext" ,gettext-minimal)
@@ -476,7 +514,7 @@ a debugging tool, @command{gssdp-device-sniffer}.")
 (define-public gupnp
   (package
    (name "gupnp")
-   (version "1.2.2")
+   (version "1.2.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -484,7 +522,7 @@ a debugging tool, @command{gssdp-device-sniffer}.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "12cr3isww4zl0d4himpd2fhl2wmy3jh8sbxp4snp51sw7savv04s"))))
+              "1ld7mrpdv9cszmfzh7i19qx4li25j3fr7x1jp38l8phzlmz3187p"))))
    (build-system meson-build-system)
    (native-inputs
     `(("gettext" ,gettext-minimal)
@@ -644,9 +682,9 @@ extraction, and lookup for applications on the desktop.")
       ("json-glib" ,json-glib)
       ("krb5" ,mit-krb5)
       ("libgweather" ,libgweather)
+      ("libnma" ,libnma)
       ("libsecret" ,libsecret)
       ("network-manager" ,network-manager)
-      ("network-manager-applet" ,network-manager-applet)
       ("packagekit" ,packagekit)
       ("polkit" ,polkit)
       ("pwquality" ,libpwquality)
@@ -807,41 +845,50 @@ client devices can handle.")
 
 (define-public libnma
   (package
-   (name "libnma")
-   (version "1.8.26")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/" name "/"
-                                (version-major+minor version) "/"
-                                name "-" version ".tar.xz"))
-            (sha256
-             (base32
-              "1w9lld38risnk1krknfwln24kabdxnj274pyz4jhndphwigrshaf"))))
-   (build-system meson-build-system)
-   (arguments
-    `(#:glib-or-gtk? #t))
-   (native-inputs
-    `(("gettext" ,gettext-minimal)
-      ("glib:bin" ,glib "bin")
-      ("gtk-doc" ,gtk-doc)
-      ("gobject-introspection" ,gobject-introspection)
-      ("pkg-config" ,pkg-config)))
-   (inputs
-    `(("adwaita-icon-theme" ,adwaita-icon-theme)
-      ("gcr" ,gcr)
-      ("gtk+" ,gtk+)
-      ("iso-codes" ,iso-codes)
-      ("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
-      ("network-manager" ,network-manager)))
-   (synopsis "Network Manager's applet library")
-   (description "Libnma is an applet library for Network Manager.  It was
+    (name "libnma")
+    (version "1.8.28")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
+                                          "/xml/dtd/docbook")))
+               (substitute* "libnma-docs.xml"
+                 (("http://.*/docbookx\\.dtd")
+                  (string-append xmldoc "/docbookx.dtd")))
+               #t))))))
+    (native-inputs
+     `(("docbook-xml" ,docbook-xml-4.3)
+       ("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("gtk-doc" ,gtk-doc)
+       ("gobject-introspection" ,gobject-introspection)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (inputs
+     `(("gcr" ,gcr)
+       ("gtk+" ,gtk+)
+       ("iso-codes" ,iso-codes)
+       ("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
+       ("network-manager" ,network-manager)))
+    (synopsis "Network Manager's applet library")
+    (description "Libnma is an applet library for Network Manager.  It was
 initially part of network-manager-applet and has now become a separate
 project.")
-   (home-page "https://gitlab.gnome.org/GNOME/libnma")
-
-   ;; Some files carry the "GPL-2.0+" SPDX identifier while others say
-   ;; "LGPL-2.1+".
-   (license license:gpl2+)))
+    (home-page "https://gitlab.gnome.org/GNOME/libnma")
+    ;; Some files carry the "GPL-2.0+" SPDX identifier while others say
+    ;; "LGPL-2.1+".
+    (license license:gpl2+)))
 
 (define-public gnome-menus
   (package
@@ -869,73 +916,72 @@ configuration files for the GNOME menu, as well as a simple menu editor.")
 (define-public deja-dup
   (package
     (name "deja-dup")
-    (version "34.3")
+    (version "40.6")
     (source (origin
-             (method url-fetch)
-             (uri "https://launchpadlibrarian.net/295170991/deja-dup-34.3.tar.xz")
-             (sha256
-              (base32
-               "1xqcr61hpbahbla7gdjn4ngjfz7w6f57y7f5pkb77yk05f60j2n9"))
-             (patches
-               (search-patches "deja-dup-use-ref-keyword-for-iter.patch"))))
-    (build-system glib-or-gtk-build-system)
+              (method url-fetch)
+              (uri (string-append "https://gitlab.gnome.org/World/deja-dup/-/archive/"
+                                  version "/deja-dup-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0lwazh6crby5wpy9fg6zvwy4plqbhs2f98bm5lbizjdlbh88n5q0"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  ((guix build cmake-build-system) #:prefix cmake:)
-                  (guix build glib-or-gtk-build-system)
-                  (guix build utils))
-       #:imported-modules (,@%glib-or-gtk-build-system-modules
-                           (guix build cmake-build-system))
-       #:test-target "test"
-       #:configure-flags (list (string-append
-                                "-DCMAKE_INSTALL_FULL_DATADIR=" %output)
-                               (string-append
-                                "-DCMAKE_INSTALL_LIBEXECDIR=" %output))
+     `(#:glib-or-gtk? #t
+       #:configure-flags
+       (list
+        ;; Otherwise, the RUNPATH will lack the final path component.
+        (string-append "-Dc_link_args=-Wl,-rpath="
+                       (assoc-ref %outputs "out") "/lib/deja-dup"))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-lockfile-deletion
-           (lambda rest
-             (substitute* "libdeja/tools/duplicity/DuplicityInstance.vala"
-               (("/bin/rm")
-                (which "rm")))))
-         (replace 'configure
-           (assoc-ref cmake:%standard-phases 'configure))
-         (delete 'check) ;; Fails due to issues with DBus
-         (add-after 'install 'wrap-deja-dup
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((python      (assoc-ref inputs "python"))
-                   (python-path (getenv "PYTHONPATH"))
-                   (duplicity   (assoc-ref inputs "duplicity"))
-                   (out         (assoc-ref outputs "out")))
-               (for-each
-                (lambda (program)
-                  (wrap-program program
-                    `("PATH" ":" prefix (,(string-append python "/bin")
-                                         ,(string-append duplicity "/bin"))))
-                  (wrap-program program
-                    `("PYTHONPATH" ":" prefix (,python-path))))
-
-                (find-files (string-append out "/bin")))
-               #t))))))
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((python (assoc-ref inputs "python")))
+               (substitute* '("libdeja/tools/duplicity/DuplicityInstance.vala"
+                              "libdeja/tests/scripts/instance-error.test")
+                 (("/bin/rm")
+                  (which "rm")))
+               (substitute* "libdeja/tests/runner.vala"
+                 (("/bin/sh")
+                  (which "sh")))
+               (substitute* "libdeja/tests/scripts/instance-error.test"
+                 (("`which python3`")
+                  (string-append python "/bin/python3"))))))
+         (add-after 'unpack 'patch-libgpg-error
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((libgpg-error (assoc-ref inputs "libgpg-error")))
+               (substitute* "meson.build"
+                 (("(gpgerror_libs = ).*" _ var)
+                  (format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))
+             #t))
+         (add-after 'unpack 'skip-gtk-update-icon-cache
+           ;; Don't create 'icon-theme.cache'.
+           (lambda _
+             (substitute* "data/post-install.sh"
+               (("gtk-update-icon-cache") "true"))
+             #t)))))
     (inputs
      `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("gobject-introspection" ,gobject-introspection)
        ("duplicity" ,duplicity)
-       ("python" ,python-2)
-       ("python-pygobject" ,python2-pygobject)
+       ("python" ,python)
+       ("python-pygobject" ,python-pygobject)
        ("gtk+" ,gtk+)
+       ("json-glib" ,json-glib)
        ("libnotify" ,libnotify)
-       ("libpeas" ,libpeas)
+       ("libgpg-error" ,libgpg-error)
        ("libsecret" ,libsecret)
+       ("libsoup" ,libsoup)
        ("packagekit" ,packagekit)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("vala" ,vala)
+     `(("appstream-glib" ,appstream-glib)
+       ("desktop-file-utils" ,desktop-file-utils)
        ("gettext" ,gettext-minimal)
+       ("glib" ,glib "bin")             ; for glib-compile-schemas.
+       ("gobject-introspection" ,gobject-introspection)
        ("itstool" ,itstool)
-       ("intltool" ,intltool)
-       ("cmake" ,cmake-minimal)))
-    (home-page "https://launchpad.net/deja-dup")
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (home-page "https://wiki.gnome.org/Apps/DejaDup")
     (synopsis "Simple backup tool, for regular encrypted backups")
     (description
      "Déjà Dup is a simple backup tool, for regular encrypted backups.  It
@@ -1001,11 +1047,12 @@ useful as a tutorial and users' guide for new or less experienced users.")
   ;; This version from GNOME's repository includes fixes for compiling with
   ;; recent versions of the build tools.  The latest activity on the
   ;; pre-GNOME version has been in 2014, while GNOME has continued applying
-  ;; fixes in 2016.
-  (let ((commit "fbc306168edab63db80b904956117cbbdc514ee4"))
+  ;; fixes since.
+  (let ((commit "3cf7ec4c2e5bca139a7f3e17f9fc9009c237fcc5")
+        (revision "2"))
     (package
       (name "dia")
-      (version (git-version "0.97.3" "1" commit))
+      (version (git-version "0.97.3" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -1014,24 +1061,23 @@ useful as a tutorial and users' guide for new or less experienced users.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1b4bba0k8ph4cwgw8xjglss0p6n111bpd5app67lrq79mp0ad06l"))))
-      (build-system gnu-build-system)
+                  "04r8dspa6nmicrifhi3sh46hqvyy88hzq37xx99q3q1mwsrpmwy8"))))
+      (build-system meson-build-system)
       (inputs
-       `(("freetype" ,freetype)
-         ("gdk-pixbuf" ,gdk-pixbuf)
+       `(("graphene" ,graphene)
          ("gtk+" ,gtk+-2)
-         ("libart-lgpl" ,libart-lgpl)
          ("libxml2" ,libxml2)
-         ("pango" ,pango)))
+         ("libxslt" ,libxslt)
+         ("poppler" ,poppler)
+         ;; Without Python 2, build fails: plug-ins/python/meson.build:4:0:
+         ;; ERROR: Unknown method "dependency" in object.
+         ("python-2" ,python-2)))
       (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("intltool" ,intltool)
+       `(("appstream-glib" ,appstream-glib)
+         ("docbook-xsl" ,docbook-xsl)
          ("glib" ,glib "bin")
-         ("libtool" ,libtool)
-         ("perl" ,perl)
-         ("pkg-config" ,pkg-config)
-         ("python-wrapper" ,python-wrapper)))
+         ("intltool" ,intltool)
+         ("pkg-config" ,pkg-config)))
       (home-page "https://wiki.gnome.org/Apps/Dia")
       (synopsis "Diagram creation for GNOME")
       (description "Dia can be used to draw different types of diagrams, and
@@ -1274,6 +1320,19 @@ offline sources, providing a centralized place for managing your contacts.")
                  (("\"locale\"")
                   (string-append "\"" libc "/bin/locale\"")))
                #t)))
+         (add-before 'configure 'patch-bubblewrap
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "libgnome-desktop/gnome-desktop-thumbnail-script.c"
+               (("\"bwrap\",")
+                (string-append "\"" (which "bwrap") "\","))
+               (("\"--ro-bind\", \"/usr\", \"/usr\",")
+                (string-append "\"--ro-bind\", \""
+                               (%store-directory)
+                               "\", \""
+                               (%store-directory)
+                               "\","))
+               (("\"--ro-bind\", \"/etc/ld.so.cache\", \"/etc/ld.so.cache\",") ""))
+             #t))
          (add-before 'check 'pre-check
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Tests require a running X server and locales.
@@ -1303,6 +1362,7 @@ offline sources, providing a centralized place for managing your contacts.")
     (inputs
      `(("gdk-pixbuf" ,gdk-pixbuf)
        ("glib" ,glib)
+       ("bubblewrap" ,bubblewrap)
        ("libxext" ,libxext)
        ("libxkbfile" ,libxkbfile)
        ("libxrandr" ,libxrandr)))
@@ -1489,6 +1549,63 @@ accessing key stores.  It also provides the viewer for crypto files on the
 GNOME Desktop.")
     (license license:lgpl2.1+)))
 
+(define-public gdl
+  (package
+    (name "gdl")
+    (version "3.34.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.gnome.org/GNOME/gdl.git")
+                    (commit (string-append "GDL_" (string-map (match-lambda
+                                                                (#\. #\_)
+                                                                (c c))
+                                                              version)))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "154qcr0x6f68f4q526y87imv0rscmp34n47nk1pp82rsq52h2zna"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("glib" ,glib "bin")             ; for glib-genmarshal, etc.
+       ("gnome-common" ,gnome-common)
+       ("gtk-doc" ,gtk-doc)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)
+       ("which" ,which)))
+    (inputs
+     `(("libxml2" ,libxml2)))
+    (propagated-inputs
+     ;; The gdl-3.0.pc file 'Requires' GTK+.
+     `(("gtk+" ,gtk+)))
+    (home-page "https://gitlab.gnome.org/GNOME/gdl/")
+    (synopsis "GNOME docking library")
+    (description "This library provides docking features for gtk+.")
+    (license license:lgpl2.1+)))
+
+;;; A minimal variant used to break a cycle with Inkscape.
+(define-public gdl-minimal
+  (package
+    (inherit gdl)
+    (name "gdl-minimal")
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-doc-generation
+           ;; XXX: There is no easy way to disable generating the
+           ;; documentation.
+           (lambda _
+             (substitute* "configure.in"
+               (("GTK_DOC_CHECK.*") "")
+               (("docs/.*") ""))
+             (substitute* "Makefile.am"
+               (("gdl docs po") "gdl po"))
+             #t)))))
+    (native-inputs (alist-delete "gtk-doc" (package-native-inputs gdl)))))
+
 (define-public libgnome-keyring
   (package
     (name "libgnome-keyring")
@@ -1599,7 +1716,7 @@ forgotten when the session ends.")
 (define-public evince
   (package
     (name "evince")
-    (version "3.34.2")
+    (version "3.36.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/evince/"
@@ -1607,7 +1724,7 @@ forgotten when the session ends.")
                                  "evince-" version ".tar.xz"))
              (sha256
               (base32
-               "05q6v9lssd21623mnj2p49clj9v9csw9kay7n4nklki025grbh1w"))))
+               "0z79jl0j9xq9wgwkfr0d1w1qrdy4447y8shs407n5srr0vixc3bg"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-nautilus" "--enable-introspection")
@@ -1657,8 +1774,7 @@ forgotten when the session ends.")
        ("gobject-introspection" ,gobject-introspection)
        ("pkg-config" ,pkg-config)
        ("xmllint" ,libxml2)))
-    (home-page
-     "https://www.gnome.org/projects/evince/")
+    (home-page "https://www.gnome.org/projects/evince/")
     (synopsis "GNOME's document viewer")
     (description
      "Evince is a document viewer for multiple document formats.  It
@@ -1906,6 +2022,7 @@ database is translated at Transifex.")
        ("gobject-introspection" ,gobject-introspection)
        ("python" ,python)
        ("cups" ,cups)
+       ("gtk+" ,gtk+)
        ("python-dbus" ,python-dbus)
        ("python-pygobject" ,python-pygobject)
        ("python-pycups" ,python-pycups)
@@ -2081,7 +2198,7 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
 (define-public glade3
   (package
     (name "glade")
-    (version "3.22.1")
+    (version "3.36.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -2089,11 +2206,10 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "16p38xavpid51qfy0s26n0n21f9ws1w9k5s65bzh1w7ay8p9my6z"))))
+                "023gx8rj51njn8fsb6ma5kz1irjpxi4js0n8rwy22inc4ysldd8r"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     `(#:tests? #f ; needs X, GL, and software rendering
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'fix-docbook
            (lambda* (#:key inputs #:allow-other-keys)
@@ -2103,18 +2219,27 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
                                "/xml/xsl/docbook-xsl-"
                                ,(package-version docbook-xsl)
                                "/manpages/docbook.xsl")))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (setenv "HOME" "/tmp")
+             ;; Tests require a running X server.
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
              #t)))))
     (inputs
      `(("gtk+" ,gtk+)
        ("libxml2" ,libxml2)))
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("hicolor-icon-theme" ,hicolor-icon-theme)
+       ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("libxslt" ,libxslt) ;for xsltproc
        ("docbook-xml" ,docbook-xml-4.2)
        ("docbook-xsl" ,docbook-xsl)
        ("python" ,python-2)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("xorg-server" ,xorg-server-for-tests)))
     (home-page "https://glade.gnome.org")
     (synopsis "GTK+ rapid application development tool")
     (description "Glade is a rapid application development (RAD) tool to
@@ -2262,7 +2387,7 @@ library.")
   (package
     (inherit librsvg)
     (name "librsvg")
-    (version "2.46.4")
+    (version "2.48.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/librsvg/"
@@ -2270,13 +2395,10 @@ library.")
                                   "librsvg-" version ".tar.xz"))
               (sha256
                (base32
-                "0afc82nsxc6kw136xid4vcq9kmq4rmgzzk8bh2pvln2cnvirwnxl"))
+                "14i6xzghcidv64cyd3g0wdjbl82rph737yxn9s3x29nzpcjs707l"))
               (modules '((guix build utils)))
               (snippet
                '(begin (delete-file-recursively "vendor")
-                       ;; Don't demand an exact version for string_cache
-                       (substitute* "rsvg_internals/Cargo.toml"
-                         (("\"=") "\""))
                        #t))))
     (build-system cargo-build-system)
     (arguments
@@ -2286,48 +2408,49 @@ library.")
        #:vendor-dir "vendor"
        #:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.8)
         ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
-        ("rust-cssparser" ,rust-cssparser-0.25)
+        ("rust-cast" ,rust-cast-0.2)
+        ("rust-cssparser" ,rust-cssparser-0.27)
         ("rust-data-url" ,rust-data-url-0.1)
         ("rust-downcast-rs" ,rust-downcast-rs-1.1)
         ("rust-encoding" ,rust-encoding-0.2)
-        ("rust-float-cmp" ,rust-float-cmp-0.5)
-        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.7)
+        ("rust-float-cmp" ,rust-float-cmp-0.6)
+        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.8)
         ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
-        ("rust-gio" ,rust-gio-0.7)
+        ("rust-gio" ,rust-gio-0.8)
         ("rust-gio-sys" ,rust-gio-sys-0.9)
-        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib" ,rust-glib-0.9)
         ("rust-glib-sys" ,rust-glib-sys-0.9)
         ("rust-gobject-sys" ,rust-gobject-sys-0.9)
         ("rust-itertools" ,rust-itertools-0.8)
         ("rust-language-tags" ,rust-language-tags-0.2)
-        ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-locale-config" ,rust-locale-config-0.3)
-        ("rust-markup5ever" ,rust-markup5ever-0.9)
-        ("rust-nalgebra" ,rust-nalgebra-0.18)
+        ("rust-markup5ever" ,rust-markup5ever-0.10)
+        ("rust-nalgebra" ,rust-nalgebra-0.19)
         ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-once-cell" ,rust-once-cell-1.2)
         ("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-pango" ,rust-pango-0.7)
+        ("rust-pango" ,rust-pango-0.8)
         ("rust-pango-sys" ,rust-pango-sys-0.9)
-        ("rust-pangocairo" ,rust-pangocairo-0.8)
-        ("rust-phf" ,rust-phf-0.7)
-        ("rust-rayon" ,rust-rayon-1.3)
+        ("rust-pangocairo" ,rust-pangocairo-0.9)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-rctree" ,rust-rctree-0.3)
-        ("rust-string-cache" ,rust-string-cache-0.7)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-rgb" ,rust-rgb-0.8)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-selectors" ,rust-selectors-0.22)
         ("rust-url" ,rust-url-2.1)
-        ("rust-xml-rs" ,rust-xml-rs-0.8))
+        ("rust-xml5ever" ,rust-xml5ever-0.16))
        #:cargo-development-inputs
-       (("rust-cairo-rs" ,rust-cairo-rs-0.7)
-        ("rust-criterion" ,rust-criterion-0.2))
+       (("rust-cairo-rs" ,rust-cairo-rs-0.8)
+        ("rust-criterion" ,rust-criterion-0.3))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'prepare-for-build
            (lambda _
              ;; In lieu of #:make-flags
-             (setenv "CC" "gcc")
+             (setenv "CC" ,(cc-for-target))
              ;; Something about the build environment resists building
              ;; successfully with the '--locked' flag.
              (substitute* '("Makefile.am"
@@ -2348,12 +2471,13 @@ library.")
                 "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))
              #t))
          (add-after 'configure 'gnu-configure
-           (assoc-ref gnu:%standard-phases 'configure))
-           ;(lambda* (#:key outputs #:allow-other-keys)
-           ;  ((assoc-ref gnu:%standard-phases 'configure)
-           ;   #:outputs outputs
-           ;   #:configure-flags ("--disable-static"
-           ;                      "--enable-vala"))))
+           (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
+             ((assoc-ref gnu:%standard-phases 'configure)
+              #:native-inputs native-inputs
+              #:inputs inputs
+              #:outputs outputs
+              #:configure-flags (list "--disable-static"
+                                      "--enable-vala"))))
          (add-after 'configure 'dont-vendor-self
            (lambda* (#:key vendor-dir #:allow-other-keys)
              ;; Don't keep the whole tarball in the vendor directory
@@ -2367,28 +2491,10 @@ library.")
              ((assoc-ref gnu:%standard-phases 'check)
               #:test-target "check")))
          (replace 'install
-           (assoc-ref gnu:%standard-phases 'install))
-         (add-before 'check 'remove-failing-tests
-           (lambda _
-             (with-directory-excursion "tests/fixtures/reftests"
-               (for-each delete-file
-                         '(;; The images produced by these tests differ slightly
-                           ;; from their reference counterparts due to differences
-                           ;; in the build environment (missing fonts, etc).  See
-                           ;; <tests/README.md> for details.
-                           ;; These fail on x86_64.
-                           "svg1.1/coords-viewattr-02-b.svg"
-                           "svg1.1/filters-composite-04-f.svg"
-                           "svg1.1/filters-image-01-b.svg"
-                           "svg1.1/filters-conv-02-f.svg"
-                           "svg1.1/filters-conv-04-f.svg"
-                           ;; 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)))))
+           (assoc-ref gnu:%standard-phases 'install)))))
+    (inputs
+     `(("pango" ,pango)
+       ,@(alist-delete "pango" (package-inputs librsvg))))
     (license license:lgpl2.1+)))
 
 (define-public libidl
@@ -2975,14 +3081,14 @@ Hints specification (EWMH).")
 (define-public goffice
   (package
     (name "goffice")
-    (version "0.10.46")
+    (version "0.10.47")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/goffice/"
                                   (version-major+minor version)  "/"
                                   "goffice-" version ".tar.xz"))
               (sha256
-               (base32 "1a8kba36zwzr0ilafc0d1nsxxma1qibviiifd0jhbxp180x6v385"))))
+               (base32 "0xmigfdzvmlpa0fw79mf3xwchmxc8rlidryn5syv8bz7msmrb215"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                  ; 4.0 MiB of gtk-doc
@@ -3227,10 +3333,23 @@ requirements and without using a different ABI compared to applications and
 libraries written in C.")
     (license license:lgpl2.1+)))
 
+(define-public vala-0.48
+  (package
+    (inherit vala)
+    (version "0.48.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/vala/"
+                                  (version-major+minor version) "/"
+                                  "vala-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0lswkb7gj0chas9n3l3dbrm9l71hs77adhvm2v600id2ipi37pi8"))))))
+
 (define-public vte
   (package
     (name "vte")
-    (version "0.60.2")
+    (version "0.60.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/vte/"
@@ -3238,7 +3357,7 @@ libraries written in C.")
                                   "vte-" version ".tar.xz"))
               (sha256
                (base32
-                "19ccbw0yca78h5qcnm8claj4fg1pj68nj1fsjqqfpzhj7w72i81m"))))
+                "0al2v6fn061v4j1wwvppim1q283y2a6s0iyl29hxhmx3h48nxdzy"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -3290,28 +3409,7 @@ editors, IDEs, etc.")
 GTK+, this fork provides additional functions exposed for keyboard text
 selection and URL hints.")))
 
-;; provides vte 2.90, required for some terminal emulators
-;; tilda bug: https://github.com/lanoxx/tilda/issues/94
-;; pantheon-terminal bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788021
-;; roxterm bug: http://sourceforge.net/p/roxterm/bugs/107/
-;; pantheon-terminal, roxterm are not currently packaged
-(define-public vte-0.36
-  (package (inherit vte)
-    (name "vte")
-    (version "0.36.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
-                                  (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1psfnqsmxx4qzc55qwvb8jai824ix4pqcdqhgxk0g2zh82bcxhn2"))))
-    (propagated-inputs
-     `(("gtk" ,gtk+)
-       ("ncurses" ,ncurses)))))
-
-;; stable version for gtk2, required by xfce4-terminal.
+;; Stable version for gtk2, required by gnurobots and lxterminal as of 2020-07.
 (define-public vte/gtk+-2
   (package (inherit vte)
     (name "vte")
@@ -3427,7 +3525,7 @@ and RDP protocols.")
                    ; or /etc/machine-id.
        #:glib-or-gtk? #t
        #:configure-flags '("-Denable-gtk-doc=true")))
-    (home-page "https://developer.gnome.org/dconf")
+    (home-page "https://developer.gnome.org/dconf/")
     (synopsis "Low-level GNOME configuration system")
     (description "Dconf is a low-level configuration system.  Its main purpose
 is to provide a backend to GSettings on platforms that don't already have
@@ -3708,8 +3806,7 @@ libxml to ease remote use of the RESTful API.")
        ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
        ("vala" ,vala)
-       ;; These are needed for the tests.
-       ;; FIXME: Add PHP once available.
+       ("php" ,php)
        ("curl" ,curl)
        ("gnutls" ,gnutls)                         ;for 'certtool'
        ("httpd" ,httpd)))
@@ -3731,6 +3828,22 @@ libxml to ease remote use of the RESTful API.")
 and the GLib main loop, to integrate well with GNOME applications.")
     (license license:lgpl2.0+)))
 
+
+;;; A minimal version of libsoup used to prevent a cycle with Inkscape.
+(define-public libsoup-minimal
+  (package
+    (inherit libsoup)
+    (name "libsoup-minimal")
+    (outputs (delete "doc" (package-outputs libsoup)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments libsoup)
+       ((#:configure-flags configure-flags)
+        `(delete "-Dgtk_doc=true" ,configure-flags))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (delete 'move-doc)))))
+    (native-inputs (alist-delete "gtk-doc" (package-native-inputs libsoup)))))
+
 (define-public libsecret
   (package
     (name "libsecret")
@@ -3865,6 +3978,47 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 floating in an ocean using only your brain and a little bit of luck.")
     (license license:gpl2+)))
 
+(define-public gnome-multi-writer
+  (package
+    (name "gnome-multi-writer")
+    (version "3.35.90")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/gnome-multi-writer/"
+                           (version-major+minor version) "/"
+                           "gnome-multi-writer-" version ".tar.xz"))
+       (sha256
+        (base32
+         "07vgzjjdrxcp7h73z13h9agafxb4vmqx5i81bcfyw0ilw9kkdzmp"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-post-install
+           (lambda _
+             (substitute* "meson.build"
+               (("meson.add_install_script" &) (string-append "# " &)))
+             #t)))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("glib" ,glib)                   ; for gio
+       ("gusb" ,gusb)
+       ("udisks" ,udisks)
+       ("libgudev" ,libgudev)
+       ("libcanberra" ,libcanberra)
+       ("polkit" ,polkit)))
+    (home-page "https://wiki.gnome.org/Apps/MultiWriter")
+    (synopsis "Write to multiple USB devices at once")
+    (description
+     "MultiWriter can be used to write an ISO file to multiple USB devices at
+once.")
+    (license license:gpl2+)))
+
 (define-public gnome-sudoku
   (package
     (name "gnome-sudoku")
@@ -4041,7 +4195,7 @@ output devices.")
 (define-public geoclue
   (package
     (name "geoclue")
-    (version "2.5.5")
+    (version "2.5.6")
     (source
      (origin
        (method url-fetch)
@@ -4049,8 +4203,7 @@ output devices.")
         (string-append "https://gitlab.freedesktop.org/geoclue/geoclue/-/archive/"
                        version "/geoclue-" version ".tar.bz2"))
        (sha256
-        (base32
-         "1b7jqrsn4x7mxjxj8hvb2dl2cmhrpb9vibs4rvkkanky5nsx3sai"))
+        (base32 "0a833x5apzabxj80ywvsh8crd635vni2i9v9c1p095f6hvmfc45k"))
        (patches (search-patches "geoclue-config.patch"))))
     (build-system meson-build-system)
     (arguments
@@ -4149,10 +4302,14 @@ faster results and to avoid unnecessary server load.")
                   #t))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     '( ;; The tests want to contact the system bus, which can't be done in the
-       ;; build environment.  The integration test can run, but the last of
-       ;; the up-self-tests doesn't.  Disable tests for now.
-       #:tests? #f
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((umockdev (string-append (assoc-ref inputs "umockdev")
+                                            "/lib")))
+               (setenv "LD_LIBRARY_PATH" umockdev))
+             #t)))
        #:configure-flags (list "--localstatedir=/var"
                                (string-append "--with-udevrulesdir="
                                               (assoc-ref %outputs "out")
@@ -4163,6 +4320,12 @@ faster results and to avoid unnecessary server load.")
        ("intltool" ,intltool)
        ("python" ,python)
 
+       ;; For tests.
+       ("python-dbus" ,python-dbus)
+       ("python-dbusmock" ,python-dbusmock)
+       ("python-pygobject" ,python-pygobject)
+       ("umockdev" ,umockdev)
+
        ;; For man pages.
        ("libxslt" ,libxslt)                       ;for 'xsltproc'
        ("libxml2" ,libxml2)                       ;for 'XML_CATALOG_FILES'
@@ -4441,7 +4604,7 @@ throughout GNOME for API documentation).")
 (define-public cogl
   (package
     (name "cogl")
-    (version "1.22.6")
+    (version "1.22.8")
     (source
      (origin
        (method url-fetch)
@@ -4449,7 +4612,7 @@ throughout GNOME for API documentation).")
                            (version-major+minor version) "/"
                            "cogl-" version ".tar.xz"))
        (sha256
-        (base32 "0x8v4n61q89qy27v824bqswpz6bmn801403w2q3pa1lcwk9ln4vd"))))
+        (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8"))))
     ;; NOTE: mutter exports a bundled fork of cogl, so when making changes to
     ;; cogl, corresponding changes may be appropriate in mutter as well.
     (build-system gnu-build-system)
@@ -4487,6 +4650,17 @@ throughout GNOME for API documentation).")
                                               "/lib/libGL.so"))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-build-with-mesa-20
+           (lambda _
+             ;; Work around a problem with Mesa 20 where some macros used by
+             ;; Cogl went missing from eglext.h.  This can likely be removed
+             ;; for newer versions of Cogl or Mesa.
+             ;; https://gitlab.gnome.org/GNOME/cogl/-/merge_requests/19
+             (substitute* '("configure"
+                            "cogl/winsys/cogl-winsys-egl-kms.c")
+               (("#include <EGL/eglext.h>" all)
+                (string-append all "\n#include <EGL/eglmesaext.h>\n")))
+             #t))
          (add-before 'check 'start-xorg-server
                      (lambda* (#:key tests? inputs #:allow-other-keys)
                        (if tests?
@@ -4869,9 +5043,9 @@ discovery protocols.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://gnome/sources/" name "/"
+       (uri (string-append "mirror://gnome/sources/totem/"
                            (version-major+minor version) "/"
-                           name "-" version ".tar.xz"))
+                           "totem-" version ".tar.xz"))
        (sha256
         (base32
          "028sc6xbyi7rs884862d8f3di6zhcm0lhvlpc3r69ifzjsq9my3b"))))
@@ -4884,7 +5058,6 @@ discovery protocols.")
        ("intltool" ,intltool)
        ("itstool" ,itstool)
        ("xmllint" ,libxml2)
-       ("python-pylint" ,python-pylint)
        ("xorg-server" ,xorg-server-for-tests)))
     (propagated-inputs
      `(("dconf" ,dconf)))
@@ -5203,7 +5376,10 @@ part of udev-extras, then udev, then systemd.  It's now a project on its own.")
                                   "gvfs-" version ".tar.xz"))
               (sha256
                (base32
-                "1cfnzamr4mvgpf6yhm28lh9cafy9z6842s8jpbqnfizfxybg8ylj"))))
+                "1cfnzamr4mvgpf6yhm28lh9cafy9z6842s8jpbqnfizfxybg8ylj"))
+              ;; This patch may be removed when upgrading to version 1.46.x.
+              (patches
+               (search-patches "gvfs-add-support-for-libplist-2.2.patch"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -5266,7 +5442,7 @@ DAV, and others.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/hughsie/libgusb.git")
+                     (url "https://github.com/hughsie/libgusb")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -5296,7 +5472,7 @@ USB transfers with your high-level application or system daemon.")
 (define-public simple-scan
   (package
     (name "simple-scan")
-    (version "3.36.2.1")
+    (version "3.36.3")
     (source
      (origin
        (method url-fetch)
@@ -5304,7 +5480,7 @@ USB transfers with your high-level application or system daemon.")
                            (version-major+minor version) "/"
                            "simple-scan-" version ".tar.xz"))
        (sha256
-        (base32 "0aq1pf0wk536b91as54684xgmhl7lps0k2xcwha5wh6h1isyb35v"))))
+        (base32 "0gsz7jqk0fdj0mama3cnss9i1adw18cpdnlcjcjh4r5qijmvx0vh"))))
     (build-system meson-build-system)
     ;; TODO: Fix icons in home screen, About dialogue, and scan menu.
     (arguments
@@ -5665,7 +5841,7 @@ classes for commonly used data structures.")
 (define-public gexiv2
   (package
     (name "gexiv2")
-    (version "0.12.0")
+    (version "0.12.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5673,7 +5849,7 @@ classes for commonly used data structures.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0slj5yj8c90l9pp5i3z74x5r3r4da0xfmbzkfq5k0dkg72q3kxaq"))))
+                "0xxxq8xdkgkn146my307jgws4qgxx477h0ybg1mqza1ycmczvsla"))))
     (build-system meson-build-system)
     (native-inputs
      `(("gcr" ,gcr)
@@ -6074,7 +6250,21 @@ to display dialog boxes from the commandline and shell scripts.")
              ;; the remaining flags are needed for the bundled cogl
              (string-append "-Dopengl_libname="
                             (assoc-ref %build-inputs "mesa")
-                            "/lib/libGL.so"))))
+                            "/lib/libGL.so"))
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'fix-build-with-mesa-20
+                    (lambda _
+                      ;; Mimic upstream commit a444a4c5f58ea516ad for
+                      ;; compatibility with Mesa 20.  Remove for 3.36.
+                      (substitute* '("src/backends/meta-egl-ext.h"
+                                     "src/backends/meta-egl.c"
+                                     "src/backends/meta-egl.h")
+                        (("#include <EGL/eglext\\.h>" all)
+                         (string-append all "\n#include <EGL/eglmesaext.h>")))
+                      (substitute* "cogl/cogl/meson.build"
+                        (("#include <EGL/eglext\\.h>" all)
+                         (string-append all "\\n#include <EGL/eglmesaext.h>")))
+                      #t)))))
     (native-inputs
      `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
        ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
@@ -6350,56 +6540,58 @@ users.")
 (define-public network-manager
   (package
     (name "network-manager")
-    (version "1.18.4")
+    (version "1.24.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/NetworkManager/"
                                   (version-major+minor version) "/"
                                   "NetworkManager-" version ".tar.xz"))
-              (patches (search-patches "nm-plugin-path.patch"))
+              (patches (search-patches "network-manager-plugin-path.patch"))
               (sha256
                (base32
-                "0pnh1wr2p1fqa5pr945fr3lngfc5ccfrmgddqsg55lxnjpv0ggd3"))
+                "06044fl60bjlj7c6rqqfbm5795h61h6yzp7ch392hzcnm46wwhn3"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   (substitute* "src/devices/wwan/nm-modem-manager.c"
                     (("systemd") "elogind"))
                   #t))))
-    (build-system gnu-build-system)
+    (build-system meson-build-system)
     (outputs '("out"
                "doc")) ; 8 MiB of gtk-doc HTML
     (arguments
-     '(#:configure-flags
+     `(#:configure-flags
        (let ((out      (assoc-ref %outputs "out"))
-             (doc      (assoc-ref %outputs "doc"))
              (dhclient (string-append (assoc-ref %build-inputs "isc-dhcp")
                                       "/sbin/dhclient")))
-         (list "--with-libnm-glib" ; needed by network-manager-applet
-               "--with-systemd-journal=no"
-               "--with-session-tracking=elogind"
-               "--with-suspend-resume=elogind"
-               "--with-consolekit=no"
-               "--with-crypto=gnutls"
-               "--disable-config-plugin-ibft"
-               "--sysconfdir=/etc"
-               "--localstatedir=/var"
-               (string-append "--with-udev-dir="
-                              out "/lib/udev")
-               (string-append "--with-dbus-sys-dir="
-                              out "/etc/dbus-1/system.d")
-               (string-append "--with-html-dir="
-                              doc "/share/gtk-doc/html")
-               (string-append "--with-dhclient=" dhclient)))
+         (list
+          ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
+          ;; component.
+          (string-append "-Dc_link_args=-Wl,-rpath="
+                         out "/lib:"
+                         out "/lib/NetworkManager/" ,version)
+          "-Dsystemd_journal=false"
+          "-Dsession_tracking=elogind"
+          "-Dsuspend_resume=elogind"
+          "-Dsystemdsystemunitdir=no"
+          "-Dsession_tracking_consolekit=false"
+          "-Ddhcpcd=no"
+          "-Ddhcpcanon=no"
+          "-Dcrypto=gnutls"
+          "-Diwd=true"
+          "-Dlibaudit=yes"
+          "-Dqt=false"
+          "-Ddocs=true"
+          "--sysconfdir=/etc"
+          "--localstatedir=/var"
+          (string-append "-Dudev_dir="
+                         out "/lib/udev")
+          (string-append "-Ddbus_conf_dir="
+                         out "/etc/dbus-1/system.d")
+
+          (string-append "-Ddhclient=" dhclient)))
        #:phases
        (modify-phases %standard-phases
-         ;; This bare "ls" invocation breaks some tests.
-         (add-after 'unpack 'patch-ls-invocation
-           (lambda _
-             (substitute* "build-aux/ltmain.sh"
-               (("`ls -")
-                (string-append "`" (which "ls") " -")))
-             #t))
          (add-before 'configure 'pre-configure
            (lambda _
              ;; These tests try to test aspects of network-manager's
@@ -6407,65 +6599,64 @@ users.")
              ;; cope with being already in the Guix build jail as that jail
              ;; lacks some features that they would like to proxy over (like
              ;; a /sys mount).
-             (substitute* '("Makefile.in")
-               (("src/platform/tests/test-address-linux") " ")
-               (("src/platform/tests/test-cleanup-linux") " ")
-               (("src/platform/tests/test-link-linux") " ")
-               (("src/platform/tests/test-route-linux") " ")
-               (("src/devices/tests/test-acd") "")
-               (("src/devices/tests/test-arping") " ")
-               (("src/devices/tests/test-lldp") " ")
-               (("src/tests/test-route-manager-linux") " "))
-             #t))
-         (add-after 'unpack 'delete-failing-tests
-           (lambda _
-             ;; FIXME: These three 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))
-             (substitute* "Makefile.in"
-               (("libnm-core/tests/test-general") " ")
-               (("libnm-core/tests/test-keyfile") " ")
-               (("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " "))
+             (substitute* "src/platform/tests/meson.build"
+               ((".*test-address-linux.*") "")
+               ((".*test-cleanup-linux.*") "")
+               ((".*test-link-linux.*") "")
+               ((".*test-route-linux.*") ""))
+             (substitute* "src/devices/tests/meson.build"
+               ((".*test-acd.*") "")
+               ((".*test-lldp.*") ""))
              #t))
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
+                                          "/xml/dtd/docbook")))
+               (substitute* (find-files "." ".*\\.(xsl|xml)")
+                 (("http://.*/docbookx\\.dtd")
+                  (string-append xmldoc "/docbookx.dtd")))
+               #t)))
          (add-before 'check 'pre-check
            (lambda _
              ;; For the missing /etc/machine-id.
              (setenv "DBUS_FATAL_WARNINGS" "0")
-
-             ;; XXX: Regenerate some of the tests that are dependent on Python version.
-             ;; Try removing this variable for newer versions of NetworkManager.
-             (setenv "NM_TEST_REGENERATE" "1")
              #t))
-         (replace 'install
+         (add-before 'install 'no-polkit-magic
+           ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
            (lambda _
-             (invoke "make"
-                     "sysconfdir=/tmp"
-                     "rundir=/tmp"
-                     "statedir=/tmp"
-                     "nmstatedir=/tmp/nm"
-                     "install")
-             #t)))))
+             (setenv "PKEXEC_UID" "something")
+             #t))
+         (add-after 'install 'move-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (doc (assoc-ref outputs "doc")))
+               (mkdir-p (string-append doc "/share"))
+               (for-each (lambda (directory)
+                           (copy-recursively (string-append out directory)
+                                             (string-append doc directory))
+                           (delete-file-recursively
+                            (string-append out directory)))
+                         '("/share/doc" "/share/gtk-doc"))
+               #t))))))
     (propagated-inputs
      `(("glib" ,glib)))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for gdbus-codegen
+     `(("glib:bin" ,glib "bin")         ; for gdbus-codegen
+       ("gtk-doc" ,gtk-doc)
        ("gobject-introspection" ,gobject-introspection)
+       ("docbook-xml" ,docbook-xml)
        ("docbook-xsl" ,docbook-xsl)
        ("intltool" ,intltool)
        ("libxslt" ,libxslt)
        ("libxml2" ,libxml2)
        ("pkg-config" ,pkg-config)
+       ("vala" ,vala)
        ;; For testing.
        ("python" ,python-wrapper)
        ("python-dbus" ,python-dbus)
        ("python-pygobject" ,python-pygobject)))
     (inputs
-     `(("coreutils" ,coreutils) ; for ls
-       ("curl" ,curl)
+     `(("curl" ,curl)
        ("cyrus-sasl" ,cyrus-sasl)
        ("dbus-glib" ,dbus-glib)
        ("dnsmasq" ,dnsmasq)
@@ -6473,35 +6664,42 @@ users.")
        ("gnutls" ,gnutls)
        ("iptables" ,iptables)
        ("isc-dhcp" ,isc-dhcp)
+       ("iwd" ,iwd)                     ; wpa_supplicant alternative
        ("jansson" ,jansson)
+       ("libaudit" ,audit)
        ("libgcrypt" ,libgcrypt)
        ("libgudev" ,libgudev)
        ("libndp" ,libndp)
        ("libnl" ,libnl)
        ("libsoup" ,libsoup)
+       ("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
        ("modem-manager" ,modem-manager)
        ("newt" ,newt)                       ;for the 'nmtui' console interface
+       ("openresolv" ,openresolv)           ; alternative resolv.conf manager
        ("polkit" ,polkit)
        ("ppp" ,ppp)
        ("readline" ,readline)
        ("util-linux" ,util-linux)
        ("elogind" ,elogind)))
     (synopsis "Network connection manager")
-    (home-page "https://www.gnome.org/projects/NetworkManager/")
+    (home-page "https://wiki.gnome.org/Projects/NetworkManager")
     (description
      "NetworkManager is a system network service that manages your network
 devices and connections, attempting to keep active network connectivity when
 available.  It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE
 devices, and provides VPN integration with a variety of different VPN
 services.")
-    (license license:gpl2+)
+    ;; “This NetworkManager project consists of the daemon, client tools, and
+    ;; libnm. libnm is licensed LGPL-2.1+, while the rest is licensed under
+    ;; GPL-2.0+.”
+    (license (list license:gpl2+
+                   license:lgpl2.1+))
     (properties '((upstream-name . "NetworkManager")))))
 
 (define-public network-manager-openvpn
   (package
     (name "network-manager-openvpn")
-    ;; Updating?  Check whether network-manager-applet still needs libnm_gtk.
-    (version "1.8.10")
+    (version "1.8.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -6510,7 +6708,7 @@ services.")
                     "/NetworkManager-openvpn-" version ".tar.xz"))
               (sha256
                (base32
-                "1vri49yff4lj13dnzkpq9nx3a4z1bmbrv807r151plj8m1mwhg5g"))))
+                "062kh4zj7jfbwy4zzcwpq2m457bzbpm3l18s0ysnw3mgia3siz8f"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
@@ -6540,7 +6738,7 @@ services.")
        ("kmod" ,kmod)
        ("openvpn" ,openvpn)
        ("network-manager" ,network-manager)
-       ("network-manager-applet" ,network-manager-applet) ;for libnma
+       ("libnma" ,libnma)
        ("libsecret" ,libsecret)))
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "OpenVPN plug-in for NetworkManager")
@@ -6565,7 +6763,11 @@ to virtual private networks (VPNs) via OpenVPN.")
                 "1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
+     `(#:configure-flags '("--enable-absolute-paths"
+                           "--localstatedir=/var"
+                           ;; libnm-glib has been removed from network-manager
+                           ;; 1de8383ad9fdfc8f552117e5d109bdfa7005634b
+                           "--with-libnm-glib=no")
        #:phases
        (modify-phases %standard-phases
          (add-after 'configure 'patch-path
@@ -6589,7 +6791,7 @@ to virtual private networks (VPNs) via OpenVPN.")
        ("kmod" ,kmod)
        ("vpnc" ,vpnc)
        ("network-manager" ,network-manager)
-       ("network-manager-applet" ,network-manager-applet) ;for libnma
+       ("libnma" ,libnma)
        ("libsecret" ,libsecret)))
     (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
     (synopsis "VPNC plug-in for NetworkManager")
@@ -6625,13 +6827,12 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
                                              "/bin/modprobe"))
                     (pretty-ovpn (string-append "\"" openconnect "\"")))
                (substitute* "src/nm-openconnect-service.c"
-                 (("\"/usr/local/sbin/openconnect\"") pretty-ovpn)
-                 (("\"/usr/sbin/openconnect\"") pretty-ovpn)
+                 (("\"/usr(/local)?/s?bin/openconnect\"") pretty-ovpn)
                  (("/sbin/modprobe") modprobe)))
              #t)))))
     (native-inputs
      `(("intltool" ,intltool)
-       ("network-manager-applet" ,network-manager-applet) ;for libnma
+       ("libnma" ,libnma)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gcr" ,gcr)
@@ -6680,7 +6881,7 @@ Cisco's AnyConnect SSL VPN.")
 (define-public network-manager-applet
   (package
     (name "network-manager-applet")
-    (version "1.8.24")
+    (version "1.16.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/network-manager-applet/"
@@ -6688,13 +6889,10 @@ Cisco's AnyConnect SSL VPN.")
                                   "network-manager-applet-" version ".tar.xz"))
               (sha256
                (base32
-                "1gzvz4wfqfsfclqg56y954al8x6fmz71cnxlx1i4nqr7a25bp2qi"))))
+                "1rf3nm0hjcy9f8ajb4vmvwy503w8yj8d4daxkcb7w7i7b92qmyfn"))))
     (build-system meson-build-system)
     (arguments
-     '(#:configure-flags
-       ;; ‘Nobody should be using this’ but network-manager-openvpn 1.8.10 does.
-       (list "-Dlibnm_gtk=true")
-       #:glib-or-gtk? #t))
+     '(#:glib-or-gtk? #t))
     (native-inputs
      `(("intltool" ,intltool)
        ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
@@ -6705,19 +6903,19 @@ Cisco's AnyConnect SSL VPN.")
      ;; libnm-gtk.pc refers to all these.
      `(("dbus-glib" ,dbus-glib)
        ("gtk+" ,gtk+)
-       ("network-manager" ,network-manager)))
+       ("network-manager" ,network-manager)
+       ;; nm-applet need by org.gnome.nm-applet.gschema.xml
+       ("libnma" ,libnma)))
     (inputs
      `(("gcr" ,gcr)
-       ("iso-codes" ,iso-codes)
        ("libgudev" ,libgudev)
        ("libnotify" ,libnotify)
        ("libsecret" ,libsecret)
        ("libselinux" ,libselinux)
        ("jansson" ,jansson) ; for team support
-       ("modem-manager" ,modem-manager)
-       ("mobile-broadband-provider-info" ,mobile-broadband-provider-info)))
+       ("modem-manager" ,modem-manager)))
     (synopsis "Applet for managing network connections")
-    (home-page "https://www.gnome.org/projects/NetworkManager/")
+    (home-page "https://wiki.gnome.org/Projects/NetworkManager")
     (description
      "This package contains a systray applet for NetworkManager.  It displays
 the available networks and allows users to easily switch between them.")
@@ -7106,6 +7304,7 @@ devices using the GNOME desktop.")
        ("libgnomekbd" ,libgnomekbd)
        ("libgudev" ,libgudev)
        ("libgtop" ,libgtop)
+       ("libnma" ,libnma)
        ("libpwquality" ,libpwquality)
        ("libsecret" ,libsecret)
        ("libsoup" ,libsoup)
@@ -7269,6 +7468,7 @@ properties, screen resolution, and other GNOME parameters.")
        ("libcroco" ,libcroco)
        ("libgnomekbd" ,libgnomekbd)               ;for gkbd-keyboard-display
        ("libgweather" ,libgweather)
+       ("libnma" ,libnma)
        ("libsoup" ,libsoup)
        ("mesa-headers" ,mesa-headers)
        ("mutter" ,mutter)
@@ -7866,7 +8066,7 @@ world.")
        ("evince" ,evince)
        ("file-roller" ,file-roller)
        ("gedit" ,gedit)
-       ; TODO: ("gnome-boxes" ,gnome-boxes)
+       ("gnome-boxes" ,gnome-boxes)
        ("gnome-calculator" ,gnome-calculator)
        ("gnome-calendar" ,gnome-calendar)
        ("gnome-characters" ,gnome-characters)
@@ -8304,7 +8504,7 @@ functionality and behavior.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/NicoHood/arc-theme.git")
+                    (url "https://github.com/NicoHood/arc-theme")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -8347,7 +8547,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/snwh/faba-icon-theme.git")
+             (url "https://github.com/snwh/faba-icon-theme")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8380,7 +8580,7 @@ Moka")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/snwh/moka-icon-theme.git")
+             (url "https://github.com/snwh/moka-icon-theme")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8403,7 +8603,7 @@ simple and consistent.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/horst3180/arc-icon-theme.git")
+             (url "https://github.com/horst3180/arc-icon-theme")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -8479,7 +8679,7 @@ compiled.")
 (define-public gfbgraph
   (package
     (name "gfbgraph")
-    (version "0.2.3")
+    (version "0.2.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8488,17 +8688,23 @@ compiled.")
                     "gfbgraph-" version ".tar.xz"))
               (sha256
                (base32
-                "1dp0v8ia35fxs9yhnqpxj3ir5lh018jlbiwifjfn8ayy7h47j4fs"))))
+                "0yck7dwvjk16a52nafjpi0a39rxwmg0w833brj45acz76lgkjrb0"))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     `(#:tests? #f ; Tests appear to require the network.
-       ;; FIXME --enable-gtk-doc fails even with gtk-doc as a native-input.
-       #:configure-flags '("--disable-gtk-doc"
-                           "--disable-static"
+     `(#:tests? #f                      ; tests appear to require the network
+       #:configure-flags '("--disable-static"
+                           "--enable-gtk-doc"
                            "--enable-introspection")))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("gobject-introspection" ,gobject-introspection)))
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)
+       ("pkg-config" ,pkg-config)
+
+       ;; The 0.2.4 ‘release’ tarball isn't bootstrapped.
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("which" ,which)))
     (inputs
      `(("json-glib" ,json-glib)
        ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
@@ -8820,8 +9026,9 @@ from gi.repository import Atspi"))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("python" ,python)
-       ("python-pygobject" ,python-pygobject)))
+     `(("python" ,python)))
+    (propagated-inputs
+     `(("python-pygobject" ,python-pygobject)))
     (synopsis "Python client bindings for D-Bus AT-SPI")
     (home-page "https://wiki.linuxfoundation.org/accessibility\
 /atk/at-spi/at-spi_on_d-bus")
@@ -8831,6 +9038,15 @@ accessibility infrastructure.")
     (license license:lgpl2.0)
     (properties '((upstream-name . "pyatspi")))))
 
+(define-public python2-pyatspi
+  (package
+    (inherit python-pyatspi)
+    (name "python2-pyatspi")
+    (inputs
+     `(("python" ,python-2)))
+    (propagated-inputs
+     `(("python-pygobject" ,python2-pygobject)))))
+
 (define-public orca
   (package
     (name "orca")
@@ -9264,7 +9480,7 @@ configurable file renaming. ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rcaelers/workrave.git")
+             (url "https://github.com/rcaelers/workrave")
              (commit (string-append "v" (string-map
                                          (match-lambda (#\. #\_) (chr chr))
                                          version)))))
@@ -9872,7 +10088,7 @@ integrate seamlessly with the GNOME desktop.")
 (define-public gnome-boxes
   (package
     (name "gnome-boxes")
-    (version "3.35.91")
+    (version "3.36.6")
     (source
      (origin
        (method url-fetch)
@@ -9880,8 +10096,7 @@ integrate seamlessly with the GNOME desktop.")
                            (version-major+minor version) "/"
                            "gnome-boxes-" version ".tar.xz"))
        (sha256
-        (base32
-         "0l96spz6pc8q4l5p9a58cc0kgvdr7pbc89hy6ixn72k5pl3s7fxj"))))
+        (base32 "0c3cw90xqqcpacc2z06ljs0gg8saxizfgjzg9alhpwgz3gl4c5pg"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -9899,6 +10114,8 @@ integrate seamlessly with the GNOME desktop.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("libarchive" ,libarchive)
+       ("glib-networking" ,glib-networking) ;for TLS support
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("gtk" ,gtk+)
        ("gtk-vnc" ,gtk-vnc)
        ("libosinfo" ,libosinfo)
@@ -9917,7 +10134,10 @@ integrate seamlessly with the GNOME desktop.")
     (home-page "https://wiki.gnome.org/Apps/Boxes")
     (synopsis "View, access, and manage remote and virtual systems")
     (description "GNOME Boxes is a simple application to view, access, and
-manage remote and virtual systems.")
+manage remote and virtual systems.  Note that this application requires the
+@code{libvirt} and @code{virtlog} daemons to run.  Use the command
+@command{info '(guix) Virtualization Services'} to learn how to configure
+these services on the Guix System.")
     (license (list
               ;; For data/icons/empty-boxes.png.
               license:cc-by2.0
@@ -10053,7 +10273,7 @@ card sheets that you’ll find at most office supply stores.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libratbag/libratbag.git")
+             (url "https://github.com/libratbag/libratbag")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10115,15 +10335,16 @@ your operating-system definition:
 (define-public piper
   (package
     (name "piper")
-    (version "0.4")
+    (version "0.5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libratbag/piper.git")
+             (url "https://github.com/libratbag/piper")
              (commit version)))
        (sha256
-        (base32 "17h06j8lxpbfygq8fzycl7lml4vv7r05bsyhh3gga2hp0zms4mvg"))))
+        (base32 "00vrcsbsv2477l1ncpyzc61lhxgac84dsgr3sjs8qxw3nh1gaasv"))
+       (file-name (git-file-name name version))))
     (build-system meson-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -10175,61 +10396,57 @@ provided there is a DBus service present:
     (license license:gpl2)))
 
 (define-public parlatype
-  ;; This is one commit away from 2.0, because the latter introduced
-  ;; a regression in ASR.
-  (let ((commit "7d22ead13ef7578f99d24146663cc1bdb7d8c2a9")
-        (revision "0"))
-    (package
-      (name "parlatype")
-      (version (git-version "2.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/gkarsay/parlatype.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0r3k3qczbzi7bs5s1rddhpsnadyr805df40bqkx0srlxgh5mfghf"))))
-      (build-system meson-build-system)
-      (arguments
-       `(#:glib-or-gtk? #t
-         #:tests? #f                    ;require internet access
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'wrap-parlatype
-             ;; Add gstreamer plugin provided in this package to system's
-             ;; plugins.
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (gst-plugin-path (string-append
-                                        out "/lib/gstreamer-1.0/"
-                                        ":"
-                                        (getenv "GST_PLUGIN_SYSTEM_PATH"))))
-                 (wrap-program (string-append out "/bin/parlatype")
-                   `("GST_PLUGIN_SYSTEM_PATH" ":" = (,gst-plugin-path))))
-               #t)))))
-      (native-inputs
-       `(("appstream-glib" ,appstream-glib)
-         ("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
-         ("gettext" ,gettext-minimal)
-         ("glib" ,glib "bin")           ;for glib-compile-resources
-         ("pkg-config" ,pkg-config)
-         ("yelp-tools" ,yelp-tools)))
-      (inputs
-       `(("gst-plugins-base" ,gst-plugins-base)
-         ("gst-plugins-good" ,gst-plugins-good)
-         ("gstreamer" ,gstreamer)
-         ("gtk+" ,gtk+)
-         ("pocketsphinx" ,pocketsphinx)
-         ("pulseaudio" ,pulseaudio)
-         ("sphinxbase" ,sphinxbase)))
-      (home-page "http://gkarsay.github.io/parlatype/")
-      (synopsis "GNOME audio player for transcription")
-      (description "Parlatype is an audio player for the GNOME desktop
+  (package
+    (name "parlatype")
+    (version "2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gkarsay/parlatype.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1c15ja0rwz3jj8bnqdq0nmqka39iwrhy8krdv2a2x8nl4shfpmv0"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t
+       #:tests? #f                      ;require internet access
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-parlatype
+           ;; Add gstreamer plugin provided in this package to system's
+           ;; plugins.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (gst-plugin-path (string-append
+                                      out "/lib/gstreamer-1.0/"
+                                      ":"
+                                      (getenv "GST_PLUGIN_SYSTEM_PATH"))))
+               (wrap-program (string-append out "/bin/parlatype")
+                 `("GST_PLUGIN_SYSTEM_PATH" ":" = (,gst-plugin-path))))
+             #t)))))
+    (native-inputs
+     `(("appstream-glib" ,appstream-glib)
+       ("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
+       ("gettext" ,gettext-minimal)
+       ("glib" ,glib "bin")             ;for glib-compile-resources
+       ("pkg-config" ,pkg-config)
+       ("yelp-tools" ,yelp-tools)))
+    (inputs
+     `(("gst-plugins-base" ,gst-plugins-base)
+       ("gst-plugins-good" ,gst-plugins-good)
+       ("gstreamer" ,gstreamer)
+       ("gtk+" ,gtk+)
+       ("pocketsphinx" ,pocketsphinx)
+       ("pulseaudio" ,pulseaudio)
+       ("sphinxbase" ,sphinxbase)))
+    (home-page "http://gkarsay.github.io/parlatype/")
+    (synopsis "GNOME audio player for transcription")
+    (description "Parlatype is an audio player for the GNOME desktop
 environment.  Its main purpose is the manual transcription of spoken
 audio files.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public jsonrpc-glib
   (package
@@ -10260,3 +10477,151 @@ communicating using the GVariant serialization format instead of JSON when
 both peers support it.  You might want that when communicating on a single
 host to avoid parser overhead and memory-allocator fragmentation.")
     (license license:lgpl2.1+)))
+
+(define-public feedbackd
+  (package
+    (name "feedbackd")
+    (version "0.0.0+git20200527")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://source.puri.sm/Librem5/feedbackd.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wbkzxnqjydfgjvp7vz4ghczcz740zcb1yn90cb6gb5md4n6qx2y"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (inputs
+     `(("dbus" ,dbus)
+       ("gsound" ,gsound)
+       ("json-glib" ,json-glib)
+       ("libgudev" ,libgudev)))
+    (propagated-inputs
+     `(("glib" ,glib))) ; in Requires of libfeedback-0.0.pc
+    (synopsis "Haptic/visual/audio feedback via DBus")
+    (description "Feedbackd provides a DBus daemon to act on events to provide
+haptic, visual and audio feedback.  It offers the libfeedbackd library and
+GObject introspection bindings.")
+     (home-page "https://source.puri.sm/Librem5/feedbackd")
+     (license (list license:lgpl2.1+   ; libfeedbackd
+                    license:lgpl3+)))) ; the rest
+
+(define-public sysprof
+  (package
+    (name "sysprof")
+    (version "3.34.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1l4kr1av7933vb4zql9c5lgzivlw64hyky4nr8xin1v5if6vnjw4"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-Dsystemdunitdir="
+                            %output
+                            "/share/systemd"))
+       #:tests? #f ; 3/4 test-model-filter barfs some dbus nonsense
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-install-script
+           (lambda _
+             (substitute* "build-aux/meson/post_install.sh"
+               (("gtk-update-icon-cache") "true")
+               (("update-desktop-database") "true"))
+             #t)))))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("libdazzle" ,libdazzle)
+       ("polkit" ,polkit)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
+       ("itstool" ,itstool)
+       ("pkg-config" ,pkg-config)
+       ("xmllint" ,libxml2)))
+    (home-page "http://www.sysprof.com/")
+    (synopsis "System-wide performance profiler")
+    (description "Sysprof is a sampling profiler that uses a kernel module
+to generate stacktraces which are then interpreted by the userspace program
+@command{sysprof}.")
+    (license license:gpl3+)))
+
+(define-public gnome-builder
+  (package
+    (name "gnome-builder")
+    (version "3.36.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "17pvmd5jypar8dkr6w56hvf7jnq4l1wih2wwgkrv7sblr7rkkar2"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags (list "-Dnetwork_tests=false"
+                               ;; TODO: Enable all plugins...
+                               "-Dplugin_clang=false"
+                               "-Dplugin_flatpak=false"
+                               "-Dplugin_glade=false"
+                               ;; ... except this one.
+                               "-Dplugin_update_manager=false")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-meson
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build-aux/meson/post_install.py"
+               (("gtk-update-icon-cache") "true")
+               (("update-desktop-database") "true"))
+             (substitute* "src/libide/meson.build"
+               (("/usr/lib")
+                (string-append (assoc-ref inputs "python-pygobject")
+                               "/lib")))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t)))))
+    (inputs
+     `(("devhelp" ,devhelp)
+       ("gspell" ,gspell)
+       ("gtk+" ,gtk+)
+       ("json-glib" ,json-glib)
+       ("jsonrpc-glib" ,jsonrpc-glib)
+       ("libdazzle" ,libdazzle)
+       ("libgit2-glib" ,libgit2-glib)
+       ("libpeas" ,libpeas)
+       ("python-pygobject" ,python-pygobject)
+       ("sysprof" ,sysprof)
+       ("template-glib" ,template-glib)
+       ("vte" ,vte)
+       ("webkitgtk" ,webkitgtk)))
+    (propagated-inputs
+     `(("gtksourceview" ,gtksourceview)))         ;needed for settings
+    (native-inputs
+     `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
+       ("glib:bin" ,glib "bin")
+       ("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)
+       ("xorg-server" ,xorg-server-for-tests)))
+    (home-page "https://wiki.gnome.org/Apps/Builder")
+    (synopsis "Toolsmith for GNOME-based applications")
+    (description "Builder aims to be an integrated development
+environment (IDE) for writing GNOME-based software.  It features fuzzy search,
+auto-completion, a mini code map, documentation browsing, Git integration, an
+integrated profiler via Sysprof, debugging support, and more.")
+    (license license:gpl3+)))