summary refs log tree commit diff
path: root/gnu/packages/freedesktop.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/freedesktop.scm')
-rw-r--r--gnu/packages/freedesktop.scm856
1 files changed, 426 insertions, 430 deletions
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index caad0613ca..818d9966dd 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
-;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015-2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
@@ -23,7 +23,12 @@
 ;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com>
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,6 +50,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -59,6 +65,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
@@ -97,7 +104,9 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages rdesktop)
+  #:use-module (gnu packages rsync)
   #:use-module (gnu packages samba)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
@@ -184,13 +193,9 @@
        ("python" ,python-wrapper)
        ("xsltproc" ,libxslt)))
     (inputs
-     `(("libsoup" ,libsoup)
-       ("libstemmer" ,libstemmer)
-       ("libxml2" ,libxml2)
-       ("libyaml" ,libyaml)
-       ("lmdb" ,lmdb)))
+     (list libsoup-minimal-2 libstemmer libxml2 libyaml lmdb))
     (propagated-inputs
-     `(("glib" ,glib)))
+     (list glib))
     (synopsis "Tools and libraries to work with AppStream metadata")
     (description "AppStream is a cross-distribution effort for enhancing the way
 we interact with the software repositories provided by distributions by
@@ -284,15 +289,9 @@ application-centers for distributions.")
        ("python" ,python-wrapper)
        ("xsltproc" ,libxslt)))
     (inputs
-     `(("glib" ,glib)
-       ("gtk+" ,gtk+)
-       ("gupnp-igd" ,gupnp-igd)
-       ("libnice" ,libnice)))
+     (list glib gtk+ gupnp-igd libnice))
     (propagated-inputs
-     `(("gstreamer" ,gstreamer)
-       ("gst-plugins-bad" ,gst-plugins-bad)
-       ("gst-plugins-base" ,gst-plugins-base)
-       ("gst-plugins-good" ,gst-plugins-good)))
+     (list gstreamer gst-plugins-bad gst-plugins-base gst-plugins-good))
     (synopsis "The Farstream VVoIP framework")
     (description "Farstream is a collection of GStreamer modules and libraries
 for videoconferencing.")
@@ -331,8 +330,7 @@ for videoconferencing.")
        ("pkg-config" ,pkg-config)
        ("gtk-doc" ,gtk-doc/stable)))
     (inputs
-     `(("dbus" ,dbus)
-       ("glib" ,glib)))
+     (list dbus glib))
     (synopsis "Glib testing library")
     (description "Libglib-testing is a test library providing test harnesses and
 mock classes which complement the classes provided by GLib.  It is intended to
@@ -377,15 +375,15 @@ tests.")
        ("libxml2" ,libxml2)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("accountsservice" ,accountsservice)
-       ("appstream-glib" ,appstream-glib)
-       ("dbus" ,dbus)
-       ("flatpak" ,flatpak)
-       ("glib" ,glib)
-       ("gtk+" ,gtk+)
-       ("libostree" ,libostree)
-       ("linux-pam" ,linux-pam)
-       ("polkit" ,polkit)))
+     (list accountsservice
+           appstream-glib
+           dbus
+           flatpak
+           glib
+           gtk+
+           libostree
+           linux-pam
+           polkit))
     (synopsis "Parental controls support")
     (description "MalContent implements parental controls support which can
 be used by applications to filter or limit the access of child accounts to
@@ -411,11 +409,7 @@ inappropriate content.")
              "1nai806smz3zcb2l5iny4x7li0fak0rzmjg6vlyhdqm8z25b166p"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("docbook-xsl" ,docbook-xsl)
-       ("docbook-xml" ,docbook-xml-4.1.2)
-       ("libxslt" ,libxslt)
-       ("w3m" ,w3m)
-       ("xmlto" ,xmlto)))
+     (list docbook-xsl docbook-xml-4.1.2 libxslt w3m xmlto))
     (inputs
      `(("awk" ,gawk)
        ("coreutils" ,coreutils)
@@ -487,14 +481,14 @@ freedesktop.org project.")
   ;; Updating this will rebuild over 700 packages through libinput-minimal.
   (package
     (name "libinput")
-    (version "1.16.4")
+    (version "1.19.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://freedesktop.org/software/libinput/"
                                   "libinput-" version ".tar.xz"))
               (sha256
                (base32
-                "0acywdjppj5i591l879bnqa9cs4vgdwnhilwk550x5x8sl33m4k5"))))
+                "10xqk05mkvsyxfxpn3vwkwb7j22d38wlbg1l1k37f6pfyc59zhqg"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=false")
@@ -504,15 +498,14 @@ freedesktop.org project.")
        ;; Meson target anyway.
        #:build-type "release"))
     (native-inputs
-     `(("check" ,check)
-       ("pkg-config" ,pkg-config)))
+     (list check pkg-config))
     (inputs
-     `(("cairo" ,cairo)
-       ("glib" ,glib)
-       ("gtk+" ,gtk+)
-       ("libevdev" ,libevdev)
-       ("libwacom" ,libwacom)
-       ("mtdev" ,mtdev)))
+     (list cairo
+           glib
+           gtk+
+           libevdev
+           libwacom
+           mtdev))
     (propagated-inputs
      `(;; libinput.h requires <libudev.h>, so propagate it.
        ("udev" ,eudev)))
@@ -562,9 +555,7 @@ other applications that need to directly deal with input devices.")
                (("^.*\\./configure.*") ""))
              #t)))))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)))
+     (list autoconf automake libtool))
     (home-page "https://github.com/devnev/libxdg-basedir")
     (synopsis "Implementation of the XDG Base Directory specification")
     (description
@@ -575,7 +566,7 @@ the freedesktop.org XDG Base Directory specification.")
 (define-public elogind
   (package
     (name "elogind")
-    (version "243.7")
+    (version "246.10")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -584,47 +575,53 @@ the freedesktop.org XDG Base Directory specification.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ccj3cbs9nsfg497wg195in1a7b9csm1jdm7z6q7vvx1ynpjxlxz"))))
+                "16045bhpwjq2nqgswln67ipg1zrz2djxlgkfngqng3jqpwagmnzq"))
+              (patches (search-patches
+                        "elogind-revert-polkit-detection.patch"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
-       (let* ((out (assoc-ref %outputs "out"))
-              (sysconf (string-append out "/etc"))
-              (libexec (string-append out "/libexec/elogind"))
-              (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
-              (shadow (assoc-ref %build-inputs "shadow"))
-              (shepherd (assoc-ref %build-inputs "shepherd"))
-              (halt-path (string-append shepherd "/sbin/halt"))
-              (kexec-path "")           ;not available in Guix yet
-              (nologin-path (string-append shadow "/sbin/nologin"))
-              (poweroff-path (string-append shepherd "/sbin/shutdown"))
-              (reboot-path (string-append shepherd "/sbin/reboot")))
-         (list
-          (string-append "-Drootprefix=" out)
-          (string-append "-Dsysconfdir=" sysconf)
-          (string-append "-Drootlibexecdir=" libexec)
-          (string-append "-Ddbuspolicydir=" dbuspolicy)
-          (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
-          (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
-          (string-append "-Dhalt-path=" halt-path)
-          (string-append "-Dkexec-path=" kexec-path)
-          (string-append "-Dpoweroff-path=" poweroff-path)
-          (string-append "-Dreboot-path=" reboot-path)
-          (string-append "-Dnologin-path=" nologin-path)
-          "-Dcgroup-controller=elogind"
-          "-Dman=true"
-          ;; Disable some tests.
-          "-Dslow-tests=false"))
+       ,#~(let* ((out #$output)
+                 (sysconf (string-append out "/etc"))
+                 (libexec (string-append out "/libexec/elogind"))
+                 (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
+                 (kexec-tools #$(this-package-input "kexec-tools"))
+                 (shadow #$(this-package-input "shadow"))
+                 (shepherd #$(this-package-input "shepherd"))
+                 (halt-path (string-append shepherd "/sbin/halt"))
+                 (kexec-path (string-append kexec-tools "/sbin/kexec"))
+                 (nologin-path (string-append shadow "/sbin/nologin"))
+                 (poweroff-path (string-append shepherd "/sbin/shutdown"))
+                 (reboot-path (string-append shepherd "/sbin/reboot")))
+            (list
+             (string-append "-Drootprefix=" out)
+             (string-append "-Dsysconfdir=" sysconf)
+             (string-append "-Drootlibexecdir=" libexec)
+             (string-append "-Ddbuspolicydir=" dbuspolicy)
+             (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
+             (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
+             (string-append "-Dhalt-path=" halt-path)
+             (string-append "-Dkexec-path=" kexec-path)
+             (string-append "-Dpoweroff-path=" poweroff-path)
+             (string-append "-Dreboot-path=" reboot-path)
+             (string-append "-Dnologin-path=" nologin-path)
+             "-Dcgroup-controller=elogind"
+             "-Dman=true"
+             ;; Disable some tests.
+             "-Dslow-tests=false"))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-pkttyagent-path
            (lambda _
              (substitute* "meson.build"
                (("join_paths\\(bindir, 'pkttyagent'\\)")
-                "'\"/run/current-system/profile/bin/pkttyagent\"'"))
-             #t))
+                "'\"/run/current-system/profile/bin/pkttyagent\"'"))))
          (add-after 'unpack 'adjust-tests
            (lambda _
+             ;; Skip the following test, which depends on users such as 'root'
+             ;; existing in the build environment.
+             (invoke "sed" "/src\\/test\\/test-user-util.c/,+2s/^/#/g"
+                     "-i" "src/test/meson.build")
              ;; This test tries to copy some bytes from /usr/lib/os-release,
              ;; which does not exist in the build container.  Choose something
              ;; more likely to be available.
@@ -660,14 +657,12 @@ the freedesktop.org XDG Base Directory specification.")
              ;; logind system so that it can flicker the monitor, etc.
              ;; Just skip it until a more narrow selection can be made.
              (substitute* "src/libelogind/sd-login/test-login.c"
-               (("r = sd_pid_get_slice.*")
-                "return 77;"))
-             #t))
+               (("test_login\\(\\);")
+                "return 77;"))))
          (add-after 'unpack 'change-pid-file-path
            (lambda _
              (substitute* "src/login/elogind.c"
-               (("\"/run/elogind.pid\"") "\"/run/systemd/elogind.pid\""))
-             #t)))))
+               (("\"/run/elogind.pid\"") "\"/run/systemd/elogind.pid\"")))))))
     (native-inputs
      `(("docbook-xml" ,docbook-xml)
        ("docbook-xml-4.2" ,docbook-xml-4.2)
@@ -680,14 +675,15 @@ the freedesktop.org XDG Base Directory specification.")
        ("python" ,python)
        ("xsltproc" ,libxslt)))
     (inputs
-     `(("linux-pam" ,linux-pam)
-       ("libcap" ,libcap)
-       ("shadow" ,shadow)                    ;for 'nologin'
-       ("shepherd" ,shepherd)                ;for 'halt' and 'reboot', invoked
-                                             ;when pressing the power button
-       ("dbus" ,dbus)
-       ("eudev" ,eudev)
-       ("acl" ,acl)))           ;to add individual users to ACLs on /dev nodes
+     (list kexec-tools
+           linux-pam
+           libcap
+           shadow ;for 'nologin'
+           shepherd ;for 'halt' and 'reboot', invoked
+           ;when pressing the power button
+           dbus
+           eudev
+           acl))           ;to add individual users to ACLs on /dev nodes
     (home-page "https://github.com/elogind/elogind")
     (synopsis "User, seat, and session management service")
     (description "Elogind is the systemd project's \"logind\" service,
@@ -828,7 +824,8 @@ of a the system to know what users are logged in, and where.")
                                       (install-file map data))
                                     (find-files ".." "^(kbd-model-map|language-fallback-map)$"))
                           #t)))))))
-    (native-inputs (package-native-inputs elogind))
+    (native-inputs `(,@(package-native-inputs elogind)
+                     ("rsync" ,rsync)))
     (inputs `(("libmount" ,util-linux "lib")
               ("xkeyboard-config" ,xkeyboard-config)
               ("kbd" ,kbd)
@@ -859,10 +856,9 @@ with localed.  This package is extracted from the broader systemd package.")
     (arguments
      `(#:configure-flags '("-Dlogind=enabled")))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("scdoc" ,scdoc)))
-    (inputs
-     `(("elogind" ,elogind)))
+     (list pkg-config scdoc))
+    (propagated-inputs
+     (list elogind))
     (home-page "https://sr.ht/~kennylevinsen/seatd")
     (synopsis "Seat management daemon and library")
     (description
@@ -898,11 +894,9 @@ allows applications to use whatever seat management is available.")
        ("python" ,python-wrapper)
        ("glib:bin" ,glib "bin")))
     (inputs
-     `(("glib" ,glib)
-       ("bash-completion" ,bash-completion)
-       ("polkit" ,polkit)))
+     (list glib bash-completion polkit))
     (propagated-inputs
-     `(("sqlite" ,sqlite)))
+     (list sqlite))
     (home-page "https://www.freedesktop.org/software/PackageKit/")
     (synopsis "API for package management, through D-Bus")
     (description
@@ -948,9 +942,7 @@ manager for the current system.")
              (invoke "nosetests" "-v"))))))
     (native-inputs
      ;; For tests.
-     `(("shared-mime-info" ,shared-mime-info)
-       ("hicolor-icon-theme" ,hicolor-icon-theme)
-       ("python-nose" ,python-nose)))
+     (list shared-mime-info hicolor-icon-theme python-nose))
     (home-page "https://www.freedesktop.org/wiki/Software/pyxdg")
     (synopsis "Implementations of freedesktop.org standards in Python")
     (description
@@ -964,43 +956,72 @@ Python.")
 (define-public wayland
   (package
     (name "wayland")
-    (version "1.18.0")
+    (version "1.19.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://wayland.freedesktop.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0k995rn96xkplrapz5k648j651wc43kq817xk1x8280h16gsfxa6"))))
-    (build-system gnu-build-system)
+                "05bd2vphyx8qwa1mhsj1zdaiv4m4v94wrlssrn0lad8d601dkk5s"))))
+    (build-system meson-build-system)
+    (outputs '("out" "doc"))
     (arguments
-     `(#:parallel-tests? #f))
+     `(#:parallel-tests? #f
+        #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
+             (with-directory-excursion "doc"
+               (substitute* (find-files "." "\\.xml$")
+                 (("http://www.oasis-open.org/docbook/xml/4\\.5/")
+                  (string-append (assoc-ref (or native-inputs inputs)
+                                            "docbook-xml")
+                                 "/xml/dtd/docbook/"))
+                 (("http://www.oasis-open.org/docbook/xml/4\\.2/")
+                  (string-append (assoc-ref (or native-inputs inputs)
+                                            "docbook-xml-4.2")
+                                 "/xml/dtd/docbook/"))))))
+         (add-after 'install 'move-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (assoc-ref outputs "doc")))
+               (mkdir-p (string-append doc "/share"))
+               (rename-file
+                (string-append out "/share/doc")
+                (string-append doc "/share/doc"))))))))
     (native-inputs
-     `(("doxygen" ,doxygen)
-       ("graphviz" ,graphviz)
+     `(("docbook-xml-4.2" ,docbook-xml-4.2)
+       ("docbook-xml" ,docbook-xml)
+       ("docbook-xsl" ,docbook-xsl)
+       ("dot" ,graphviz)
+       ("doxygen" ,doxygen)
        ("pkg-config" ,pkg-config)
+       ("python" ,python)
        ("xmlto" ,xmlto)
-       ("xsltproc" ,libxslt)))
+       ("xsltproc" ,libxslt)
+       ,@(if (%current-target-system)
+             `(("pkg-config-for-build" ,pkg-config-for-build)
+               ("wayland" ,this-package)) ; for wayland-scanner
+             '())))
     (inputs
-     `(("docbook-xml" ,docbook-xml)
-       ("docbook-xsl" ,docbook-xsl)
-       ("expat" ,expat)
-       ("libffi" ,libffi)
-       ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
+     (list expat libxml2))           ; for XML_CATALOG_FILES
+    (propagated-inputs
+     (list libffi))
     (home-page "https://wayland.freedesktop.org/")
-    (synopsis "Display server protocol")
-    (description
-     "Wayland is a protocol for a compositor to talk to its clients as well as
-a C library implementation of that protocol.  The compositor can be a standalone
-display server running on Linux kernel modesetting and evdev input devices, an X
-application, or a wayland client itself.  The clients can be traditional
-applications, X servers (rootless or fullscreen) or other display servers.")
-    (license license:x11)))
+    (synopsis "Core Wayland window system code and protocol")
+    (description "Wayland is a project to define a protocol for a compositor to
+talk to its clients as well as a library implementation of the protocol.  The
+compositor can be a standalone display server running on Linux kernel
+modesetting and evdev input devices, an X application, or a wayland client
+itself.  The clients can be traditional applications, X servers (rootless or
+fullscreen) or other display servers.")
+    (license license:expat)))
 
 (define-public wayland-protocols
   (package
     (name "wayland-protocols")
-    (version "1.20")
+    (version "1.23")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1008,14 +1029,17 @@ applications, X servers (rootless or fullscreen) or other display servers.")
                     "wayland-protocols-" version ".tar.xz"))
               (sha256
                (base32
-                "1rsdgvkkvxs3cjhpl6agvbkm53vm7k8rg127j9y2vn33m2hvg0lp"))))
-    (build-system gnu-build-system)
+                "0xizccackgwszjhlq7jjiv2z2gwppljx0w32ga91bxlnby8z22kc"))))
+    (build-system meson-build-system)
     (inputs
-     `(("wayland" ,wayland)))
+     (list wayland))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config python))
     (synopsis "Wayland protocols")
-    (description "This package contains XML definitions of the Wayland protocols.")
+    (description "Wayland-Protocols contains Wayland protocols that add
+functionality not available in the Wayland core protocol.  Such protocols either
+add completely new functionality, or extend the functionality of some other
+protocol either in Wayland core, or some other protocol in wayland-protocols.")
     (home-page "https://wayland.freedesktop.org")
     (license license:expat)))
 
@@ -1035,13 +1059,12 @@ applications, X servers (rootless or fullscreen) or other display servers.")
     (arguments
      `(#:tests? #f))                    ; no tests
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (inputs
-     `(("mesa" ,mesa)
-       ("pugixml" ,pugixml)))
+     (list mesa pugixml))
     (propagated-inputs
-     `(;; In Requires of the .pc files.
-       ("wayland" ,wayland)))
+     (list ;; In Requires of the .pc files.
+           wayland))
     (synopsis "Wayland C++ bindings")
     (description
      "This package provides C++ bindings for the Wayland display protocol.")
@@ -1061,9 +1084,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
                 "1zlql0xgiqc3pvgbpnnvj4xvpd91pwva8qf83xfb23if377ddxaw"))))
     (build-system meson-build-system)
     (native-inputs
-     `(("mscgen" ,mscgen)
-       ("pkg-config" ,pkg-config)
-       ("xorg-server" ,xorg-server)))
+     (list mscgen pkg-config xorg-server))
     (inputs
      `(("cairo" ,cairo-xcb)
        ("colord" ,colord)
@@ -1094,9 +1115,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
        ("wayland-protocols" ,wayland-protocols)
        ("xorg-server-xwayland" ,xorg-server-xwayland)))
     (propagated-inputs
-     `(("libxkbcommon" ,libxkbcommon)
-       ("pixman" ,pixman)
-       ("wayland" ,wayland)))
+     (list libxkbcommon pixman wayland))
     (arguments
      `(#:configure-flags
        (list
@@ -1136,8 +1155,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
          (add-before 'check 'start-xorg-server
            (lambda* (#:key inputs #:allow-other-keys)
              ;; The test suite requires a running X server.
-             (system (string-append (assoc-ref inputs "xorg-server")
-                                    "/bin/Xvfb :1 &"))
+             (system "Xvfb :1 &")
              (setenv "DISPLAY" ":1")
              #t)))))
     (home-page "https://wayland.freedesktop.org")
@@ -1173,12 +1191,9 @@ multiplexer to the KMS/DRM Linux kernel devices.")
        (modify-phases %standard-phases
          (delete 'configure))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("scdoc" ,scdoc)))
+     (list pkg-config scdoc))
     (inputs
-     `(("libxkbcommon" ,libxkbcommon)
-       ("wayland" ,wayland)
-       ("wayland-protocols" ,wayland-protocols)))
+     (list libxkbcommon wayland wayland-protocols))
     (home-page "https://git.sr.ht/~sircmpwn/wev")
     (synopsis "Wayland event viewer")
     (description "Wev is a tool that opens a window, printing all events
@@ -1214,10 +1229,9 @@ XEv.")
                                          "/lib/libexempi.a"))
              #t)))))
     (native-inputs
-     `(("boost" ,boost))) ; tests
+     (list boost)) ; tests
     (inputs
-     `(("expat" ,expat)
-       ("zlib" ,zlib)))
+     (list expat zlib))
     (home-page "https://libopenraw.freedesktop.org/exempi/")
     (synopsis "XMP metadata handling library")
     (description "Exempi is an implementation of the Extensible Metadata
@@ -1238,9 +1252,9 @@ formats.")
                 "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (inputs
-     `(("udev" ,eudev)))
+     (list eudev))
     (home-page "http://0pointer.de/blog/projects/being-smart.html")
     (synopsis "ATA S.M.A.R.T. reading and parsing library")
     (description
@@ -1272,15 +1286,15 @@ Analysis and Reporting Technology) functionality.")
        ("pkg-config" ,pkg-config)
        ("xsltproc" ,libxslt)))
     (propagated-inputs
-     `(("glib" ,glib))) ; required by udisks2.pc
+     (list glib)) ; required by udisks2.pc
     (inputs
-     `(("acl" ,acl)
-       ("cryptsetup" ,cryptsetup)
-       ("libatasmart" ,libatasmart)
-       ("libblockdev" ,libblockdev)
-       ("libgudev" ,libgudev)
-       ("polkit" ,polkit)
-       ("util-linux" ,util-linux)))
+     (list acl
+           cryptsetup
+           libatasmart
+           libblockdev
+           libgudev
+           polkit
+           util-linux))
     (outputs '("out"
                "doc"))                            ;5 MiB of gtk-doc HTML
     (arguments
@@ -1350,57 +1364,59 @@ message bus.")
 (define-public accountsservice
   (package
     (name "accountsservice")
-    (version "0.6.50")
+    (version "0.6.55")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.freedesktop.org/software/"
-                           "accountsservice/accountsservice-" version ".tar.xz"))
+                           "accountsservice/accountsservice-"
+                           version ".tar.xz"))
        (sha256
-        (base32 "0jn7vg1z4vxnna0hl33hbcb4bb3zpilxc2vyclh24vx4vvsjhn83"))))
-    (build-system gnu-build-system)
+        (base32 "16wwd633jak9ajyr1f1h047rmd09fhf3kzjz6g5xjsz0lwcj8azz"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:tests? #f ; XXX: tests require DocBook 4.1.2
+     `(#:tests? #f ; XXX: tests require DocBook 4.1.2
        #:configure-flags
        '("--localstatedir=/var"
-         "--disable-systemd"
-         "--enable-elogind")
+         "-Dsystemdsystemunitdir=/tmp/empty"
+         "-Dsystemd=false"
+         "-Delogind=true")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-/bin/cat
            (lambda _
              (substitute* "src/user.c"
-               (("/bin/cat") (which "cat")))
-             #t))
+               (("/bin/cat") (which "cat")))))
          (add-before
           'configure 'pre-configure
           (lambda* (#:key inputs #:allow-other-keys)
-            ;; Don't try to create /var/lib/AccountsService.
-            (substitute* "src/Makefile.in"
-              (("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true"))
+            (substitute* "meson_post_install.py"
+              (("in dst_dirs") "in []"))
             (let ((shadow (assoc-ref inputs "shadow")))
               (substitute* '("src/user.c" "src/daemon.c")
-                (("/usr/sbin/usermod") (string-append shadow "/sbin/usermod"))
-                (("/usr/sbin/useradd") (string-append shadow "/sbin/useradd"))
-                (("/usr/sbin/userdel") (string-append shadow "/sbin/userdel"))
-                (("/usr/bin/passwd")   (string-append shadow "/bin/passwd"))
-                (("/usr/bin/chage")    (string-append shadow "/bin/chage"))))
-            #t)))))
+                (("/usr/sbin/usermod")
+                 (string-append shadow "/sbin/usermod"))
+                (("/usr/sbin/useradd")
+                 (string-append shadow "/sbin/useradd"))
+                (("/usr/sbin/userdel")
+                 (string-append shadow "/sbin/userdel"))
+                (("/usr/bin/passwd")
+                 (string-append shadow "/bin/passwd"))
+                (("/usr/bin/chage")
+                 (string-append shadow "/bin/chage")))))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
        ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("elogind" ,elogind)
-       ("polkit" ,polkit)
-       ("shadow" ,shadow)))
+     (list dbus elogind polkit shadow))
     (home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
     (synopsis "D-Bus interface for user account query and manipulation")
     (description
-     "The AccountService project provides a set of D-Bus interfaces for querying
-and manipulating user account information and an implementation of these
-interfaces, based on the useradd, usermod and userdel commands.")
+     "The AccountService project provides a set of D-Bus interfaces for
+querying and manipulating user account information and an implementation of
+these interfaces, based on the useradd, usermod and userdel commands.")
     (license license:gpl3+)))
 
 (define-public libmbim
@@ -1417,13 +1433,12 @@ interfaces, based on the useradd, usermod and userdel commands.")
                 "16q550sy84izi5ic3sbbhjnnka2fwhj8vvdrirpn9xspbsgbc3sm"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-mkenums
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list `(,glib "bin") ; for glib-mkenums
+           pkg-config python-wrapper))
     (propagated-inputs
-     `(("glib" ,glib))) ; required by mbim-glib.pc
+     (list glib)) ; required by mbim-glib.pc
     (inputs
-     `(("libgudev" ,libgudev)))
+     (list libgudev))
     (synopsis "Library to communicate with MBIM-powered modems")
     (home-page "https://www.freedesktop.org/wiki/Software/libmbim/")
     (description
@@ -1448,13 +1463,12 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
                 "0zshxqbm9ldybgrzh7pjmwmfjvvvfd0xh8qhgl8xiqdb9ply73r0"))))
     (build-system gnu-build-system)
     (inputs
-     `(("libgudev" ,libgudev)))
+     (list libgudev))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-mkenums
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)))
+     (list `(,glib "bin") ; for glib-mkenums
+           pkg-config python-wrapper))
     (propagated-inputs
-     `(("glib" ,glib))) ; required by qmi-glib.pc
+     (list glib)) ; required by qmi-glib.pc
     (synopsis "Library to communicate with QMI-powered modems")
     (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
     (description
@@ -1490,12 +1504,9 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
        ;; For testing.
        ("dbus" ,dbus)))
     (propagated-inputs
-     `(("glib" ,glib))) ; required by mm-glib.pc
+     (list glib)) ; required by mm-glib.pc
     (inputs
-     `(("libgudev" ,libgudev)
-       ("libmbim" ,libmbim)
-       ("libqmi" ,libqmi)
-       ("polkit" ,polkit)))
+     (list libgudev libmbim libqmi polkit))
     (synopsis "Mobile broadband modems manager")
     (home-page "https://www.freedesktop.org/wiki/Software/ModemManager/")
     (description
@@ -1535,9 +1546,7 @@ modems and setup connections with them.")
        ("xsltproc" ,libxslt)))
     (propagated-inputs
      ;; telepathy-logger-0.2.pc refers to all these.
-     `(("libxml2" ,libxml2)
-       ("sqlite" ,sqlite)
-       ("telepathy-glib" ,telepathy-glib)))
+     (list libxml2 sqlite telepathy-glib))
     (synopsis "Telepathy logger library")
     (home-page "https://telepathy.freedesktop.org/")
     (description
@@ -1561,16 +1570,11 @@ different sorts of messages in different formats.")
         (base32 "1pfw4g2cicw3ykxhsy743r0fc1yqbdrqxh2c5ha6am19dajcr95l"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
+     (list autoconf automake libtool pkg-config))
     (inputs
-     `(("xsltproc" ,libxslt)
-       ("python" ,python-2)
-       ("python-dbus" ,python2-dbus)))
+     (list libxslt python-2 python2-dbus))
     (propagated-inputs
-     `(("telepathy-glib" ,telepathy-glib)))
+     (list telepathy-glib))
     (home-page "https://telepathy.freedesktop.org/")
     (synopsis "Telepathy IRC connection manager")
     (description
@@ -1582,7 +1586,7 @@ messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
 (define-public telepathy-mission-control
   (package
     (name "telepathy-mission-control")
-    (version "5.16.5")
+    (version "5.16.6")
     (source
      (origin
        (method url-fetch)
@@ -1590,19 +1594,15 @@ messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
                            "telepathy-mission-control/"
                            "telepathy-mission-control-" version ".tar.gz"))
        (sha256
-        (base32 "00xxv38cfdirnfvgyd56m60j0nkmsv5fz6p2ydyzsychicxl6ssc"))))
+        (base32 "0ibs575pfr0wmhfcw6ln6iz7gw2y45l3bah11rksf6g9jlwsxy1d"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
-       ("pkg-config" ,pkg-config)))
+     (list `(,glib "bin") ; for glib-compile-schemas, etc.
+           pkg-config))
     (inputs
-     `(("dconf" ,dconf)
-       ("gtk-doc" ,gtk-doc)
-       ("libgnome-keyring" ,libgnome-keyring)
-       ("python" ,python-2)
-       ("xsltproc" ,libxslt)))
+     (list dconf gtk-doc libgnome-keyring python-2 libxslt))
     (propagated-inputs
-     `(("telepathy-glib" ,telepathy-glib)))
+     (list telepathy-glib))
     (home-page "https://telepathy.freedesktop.org/wiki/Components/Mission_Control/")
     (synopsis "Telepathy real-time communication framework management daemon")
     (description
@@ -1625,14 +1625,10 @@ share connections to real-time communication services without conflicting.")
     (build-system gnu-build-system)
     (arguments '(#:tests? #f)) ; require the colord system service
     (native-inputs
-     `(("gobject-introspection" ,gobject-introspection)
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("vala" ,vala)))
+     (list gobject-introspection intltool pkg-config vala))
     (propagated-inputs
      ;; colord-gtk.pc refers to all these.
-     `(("colord" ,colord)
-       ("gtk+" ,gtk+)))
+     (list colord gtk+))
     (synopsis "GTK integration for libcolord")
     (home-page "https://www.freedesktop.org/software/colord/")
     (description
@@ -1644,7 +1640,7 @@ wish to perform colour calibration.")
 (define-public libfprint
   (package
     (name "libfprint")
-    (version "1.90.7")
+    (version "1.94.2")
     (source
      (origin
        (method git-fetch)
@@ -1653,26 +1649,26 @@ wish to perform colour calibration.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00pmdpxxjj4sh8qjq9ch3pylgg9w019rg1bbaw53a4wr637rrz43"))))
+        (base32 "0y3wz5hlxpnvqj67bihvzfi4dwx2m2nx9byppf4jjd80x0j2630m"))))
     (build-system meson-build-system)
     (arguments
-     '(#:configure-flags
-       (list (string-append "-Dudev_rules_dir=" (assoc-ref %outputs "out")
-                            "/lib/udev/rules.d"))))
+     (list #:configure-flags
+           #~(list (string-append "-Dudev_hwdb_dir=" #$output
+                                  "/lib/udev/hwdb.d")
+                   (string-append "-Dudev_rules_dir=" #$output
+                                  "/lib/udev/rules.d"))))
     (native-inputs
-     `(("eudev" ,eudev)
-       ("glib:bin" ,glib "bin")         ; for {glib-,}mkenums
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc/stable)             ; for 88 KiB of API documentation
-       ("pkg-config" ,pkg-config)))
+     (list `(,glib "bin")               ; for {glib-,}mkenums
+           gobject-introspection
+           gtk-doc/stable               ; for 88 KiB of API documentation
+           pkg-config))
     (inputs
-     `(("glib" ,glib)
-       ("gusb" ,gusb)
-       ("nss" ,nss)                     ; for the URU4x00 driver
-
-       ;; Replacing this with cairo works but just results in a reference
-       ;; (only) to pixman in the end.
-       ("pixman" ,pixman)))
+     (list gusb
+           libgudev
+           nss                          ; for the URU4x00 driver
+           ;; Replacing this with cairo works but just results in a reference
+           ;; (only) to pixman in the end.
+           pixman))
     (home-page "https://fprint.freedesktop.org/")
     (synopsis "Library to access fingerprint readers")
     (description
@@ -1684,68 +1680,56 @@ software.")
 (define-public fprintd
   (package
     (name "fprintd")
-    (version "1.90.1")
+    (version "1.94.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://gitlab.freedesktop.org/libfprint/fprintd")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0mbzk263x7f58i9cxhs44mrngs7zw5wkm62j5r6xlcidhmfn03cg"))))
+        (base32 "015j8ikyv48qz8vn6kfvkwwg5ydzppl1lzf7vkali9ymywywfxsw"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags
-       (list "-Dsystemd_system_unit_dir=/tmp"
-             (string-append "-Ddbus_service_dir=" (assoc-ref %outputs "out")
-                            "/share/dbus-1/system-services")
-             (string-append "-Dpam_modules_dir=" (assoc-ref %outputs "out")
-                            "/lib/security"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-output-directories
-           ;; Install files to our output, not that of the ‘owner’ package.
-           ;; These are not exposed as Meson options and must be patched.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* "meson.build"
-                 (("(dbus_interfaces_dir = ).*" _ set)
-                  (string-append set "'" out "/share/dbus-1/interfaces'\n"))
-                 (("(polkit_policy_directory = ).*" _ set)
-                  (string-append set "'" out "/share/polkit-1/actions/'\n"))
-                 (("(dbus_data_dir = ).*" _ set)
-                  (string-append set "get_option('prefix')"
-                                 " / get_option('datadir')\n")))
-               #t)))
-         (add-before 'configure 'patch-mistake
-           (lambda _
-             (substitute* "meson.build"
-               (("(storage_path = )(get_option\\('prefix'\\))(.*)"
-                 _ set mistake value)
-                (string-append set "''" value "\n")))
-             #t))
-         (add-before 'configure 'patch-systemd-dependencies
-           (lambda _
-             (substitute* "meson.build"
-               (("'(libsystemd|systemd)'") "'libelogind'"))
-             #t))
-         (add-before 'configure 'ignore-test-dependencies
-           (lambda _
-             (substitute* "meson.build"
-               (("pam_wrapper_dep .*") "")
-               ((".*'(cairo|dbus|dbusmock|gi|pypamtest)': .*,.*") ""))
-             #t))
-         (add-before 'install 'no-polkit-magic
-           ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
-           (lambda _
-             (setenv "PKEXEC_UID" "something")
-             #t)))
-       #:tests? #f))                    ; XXX depend on unpackaged packages
+     (list #:configure-flags
+           #~(list "-Dsystemd_system_unit_dir=/tmp"
+                   (string-append "-Ddbus_service_dir=" #$output
+                                  "/share/dbus-1/system-services")
+                   (string-append "-Dpam_modules_dir=" #$output
+                                  "/lib/security"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'configure 'patch-output-directories
+                 ;; Install files to our output, not that of the ‘owner’ package.
+                 ;; These are not exposed as Meson options and must be patched.
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out")))
+                     (substitute* "meson.build"
+                       (("(dbus_interfaces_dir = ).*" _ set)
+                        (string-append set "'" out "/share/dbus-1/interfaces'\n"))
+                       (("(polkit_policy_directory = ).*" _ set)
+                        (string-append set "'" out "/share/polkit-1/actions/'\n"))
+                       (("(dbus_data_dir = ).*" _ set)
+                        (string-append set "get_option('prefix')"
+                                       " / get_option('datadir')\n"))))))
+               (add-before 'configure 'patch-systemd-dependencies
+                 (lambda _
+                   (substitute* "meson.build"
+                     (("(dependency\\(')(libsystemd|systemd)" _ prefix)
+                      (string-append prefix "libelogind")))))
+               (add-before 'configure 'ignore-test-dependencies
+                 (lambda _
+                   (substitute* "meson.build"
+                     ((".*gi\\.repository\\.FPrint.*") "")
+                     (("pam_wrapper_dep .*") "")
+                     ((".*'(cairo|dbus|dbusmock|gi|pypamtest)': .*,.*") ""))
+                   (substitute* "tests/pam/meson.build"
+                     ((".*pam_wrapper.*") "")))))
+           #:tests? #f))                    ; XXX depend on unpackaged packages
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("glib:bin" ,glib "bin")         ; for glib-genmarshal
-       ("libxslt" ,libxslt)             ; for xsltproc
        ("perl" ,perl)                   ; for pod2man
        ("pkg-config" ,pkg-config)))
        ;; For tests.
@@ -1756,17 +1740,11 @@ software.")
        ;;("python-pygobject" ,python-pygobject)
        ;;("python-pypamtest" ,python-pypamtest)
     (inputs
-     `(("dbus-glib" ,dbus-glib)
-       ("elogind" ,elogind)
-       ("libfprint" ,libfprint)
-       ("linux-pam" ,linux-pam)
-       ("polkit" ,polkit)
-
-       ;; XXX These are in libfprint's Requires.private.  Meson refuses to grant
-       ;; the ‘libfprint-2’ dependency if they are not provided here.
-       ("gusb" ,gusb)
-       ("nss" ,nss)
-       ("pixman" ,pixman)))
+     (list dbus-glib
+           elogind
+           libfprint
+           linux-pam
+           polkit))
     (home-page "https://fprint.freedesktop.org/")
     (synopsis "D-Bus daemon that exposes fingerprint reader functionality")
     (description
@@ -1790,11 +1768,9 @@ to applications simultaneously competing for fingerprint readers.")
                 "02bkfi6fyk4c0gh2avd897882ww5zl7qg7bzzf28qb57kvkvsvdj"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)))
+     (list autoconf automake pkg-config))
     (inputs
-     `(("glib" ,glib)))
+     (list glib))
     (home-page "https://www.freedesktop.org/wiki/Software/desktop-file-utils/")
     (synopsis "Utilities for working with desktop entries")
     (description
@@ -1869,13 +1845,10 @@ manually by a user.")
          "1qq5ag9zffx8zc5i9b4z03ar80pqj4drgk3vjdlyfapjwb9zqrf0"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-module-build" ,perl-module-build)
-       ("perl-file-which" ,perl-file-which)
-       ("perl-test-pod" ,perl-test-pod)
-       ("perl-test-pod-coverage" ,perl-test-pod-coverage)
-       ("xdg-user-dirs" ,xdg-user-dirs)))
+     (list perl-module-build perl-file-which perl-test-pod
+           perl-test-pod-coverage xdg-user-dirs))
     (propagated-inputs
-     `(("perl-ipc-system-simple" ,perl-ipc-system-simple)))
+     (list perl-ipc-system-simple))
     (home-page "https://metacpan.org/release/File-BaseDir")
     (synopsis "Use the Freedesktop.org base directory specification")
     (description
@@ -1899,11 +1872,9 @@ application data and cache data.")
          "1f1maqix2kbfg2rf008m7mqnvv6nvcf9y6pcgdv2kxp2vbih370n"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-test-pod" ,perl-test-pod)
-       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+     (list perl-test-pod perl-test-pod-coverage))
     (propagated-inputs
-     `(("perl-file-basedir" ,perl-file-basedir)
-       ("perl-uri" ,perl-uri)))
+     (list perl-file-basedir perl-uri))
     (home-page "https://metacpan.org/release/File-DesktopEntry")
     (synopsis "Handle @file{.desktop} files")
     (description
@@ -1928,8 +1899,7 @@ applications define in those files.")
     ;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
     ;; perl-test-tiny as native-inputs.
     (propagated-inputs
-     `(("shared-mime-info" ,shared-mime-info)
-       ("perl-file-desktopentry" ,perl-file-desktopentry)))
+     (list shared-mime-info perl-file-desktopentry))
     (arguments
      ;; Some tests fail due to requiring the mimetype of perl files to be
      ;; text/plain when they are actually application/x-perl.
@@ -1998,7 +1968,7 @@ encoding names are iconv-compatible.")
           "1bqfz85cd51sw0bvhvdq9ikccxi2ld7g5jpni4jkq1a5clrvca64"))))
   (build-system python-build-system)
   (inputs
-   `(("uchardet" ,uchardet)))
+   (list uchardet))
   (home-page "https://github.com/PyYoshi/cChardet")
   (synopsis "High-performance character encoding detection for Python")
   (description "cChardet is a character encoding detector, written in
@@ -2008,33 +1978,24 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
 (define-public udiskie
   (package
     (name "udiskie")
-    (version "2.1.0")
+    (version "2.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "udiskie" version))
        (sha256
         (base32
-         "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz"))
-       ;; Remove support for the libappindicator library of the
-       ;; Unity desktop environment which is not in Guix.
-       (patches (search-patches "udiskie-no-appindicator.patch"))))
+         "0sagdmsc5km32h3jvgj843p8bicrrgfz26qhl04ibxmas6725zr0"))))
     (build-system python-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
        ("gettext" ,gettext-minimal)
        ("gobject-introspection" ,gobject-introspection)))
     (inputs
-     `(("gobject-introspection" ,gobject-introspection)
-       ("gtk+" ,gtk+)
-       ("libnotify" ,libnotify)
-       ("udisks" ,udisks)))
+     (list gobject-introspection gtk+ libappindicator libnotify udisks))
     (propagated-inputs
-     `(("python-docopt" ,python-docopt)
-       ("python-pygobject" ,python-pygobject)
-       ("python-keyutils" ,python-keyutils)
-       ("python-pyxdg" ,python-pyxdg)
-       ("python-pyyaml" ,python-pyyaml)))
+     (list python-docopt python-pygobject python-keyutils python-pyxdg
+           python-pyyaml))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -2116,11 +2077,7 @@ Its features include:
                      (string-append (assoc-ref inputs "docbook-xml")
                                     "/xml/dtd/docbook/catalog.xml")))))))
     (inputs
-     `(("glib" ,glib)
-       ("pango" ,pango)
-       ("libdrm" ,libdrm)
-       ("libpng" ,libpng)
-       ("eudev" ,eudev)))
+     (list glib pango libdrm libpng eudev))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)
@@ -2157,8 +2114,7 @@ useful with system integration.")
        ("pkg-config" ,pkg-config)
        ("xvfb" ,xorg-server-for-tests)))
     (inputs
-     `(("gtk+" ,gtk+)
-       ("glib" ,glib)))
+     (list gtk+ glib))
     (arguments
      `(#:make-flags '("CFLAGS=-Wno-error")
        #:phases
@@ -2192,6 +2148,13 @@ useful with system integration.")
              "https://launchpad.net/libappindicator/"
              (version-major+minor version) "/" version
              "/+download/libappindicator-" version ".tar.gz"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Fix 'multiple definitions' error from GCC 10
+           (substitute* "bindings/python/appindicatormodule.c"
+             (("^#include <pygobject.h>" all)
+              (string-append "#define NO_IMPORT_PYGOBJECT\n" all)))))
        (sha256
         (base32
          "17xlqd60v0zllrxp8bgq3k5a1jkj0svkqn8rzllcyjh8k0gpr46m"))))
@@ -2211,8 +2174,7 @@ useful with system integration.")
        ;; ("mono" ,mono) ; requires non-packaged gapi
        ("vala" ,vala)))
     (propagated-inputs
-     `(("gtk+" ,gtk+)
-       ("libdbusmenu" ,libdbusmenu)))
+     (list gtk+ libdbusmenu))
     (arguments
      ;; FIXME: do not hardcode gtk version
      `(#:configure-flags '("--with-gtk=3")
@@ -2252,62 +2214,56 @@ fallback to generic Systray support if none of those are available.")
     (license license:lgpl2.1+)))
 
 (define-public libportal
-  (let ((commit "bff3289")
-        (revision "1"))
-    (package
-      (name "libportal")
-      (version (git-version "0.3" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/flatpak/libportal")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "104b91qircr1i9jkmm6f725awywky52aimrki303kiaadn2v8b5i"))))
-      (build-system meson-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'move-doc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out"))
-                     (doc (assoc-ref outputs "doc"))
-                     (html "/share/gtk-doc"))
-                 (copy-recursively (string-append out html)
-                                   (string-append doc html))
-                 (delete-file-recursively (string-append out html))
-                 #t))))))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("gtk-doc" ,gtk-doc/stable)
-         ("docbook-xsl" ,docbook-xsl)
-         ("docbook-xml" ,docbook-xml)
-         ("libxml2" ,libxml2)
-         ("glib:bin" ,glib "bin")))
-      (propagated-inputs
-       `(("glib" ,glib)))
-      (outputs '("out" "doc"))
-      (home-page "https://github.com/flatpak/libportal")
-      (synopsis "Flatpak portal library")
-      (description
-       "libportal provides GIO-style async APIs for most Flatpak portals.")
-      (license license:lgpl2.1+))))
-
-(define-public xdg-desktop-portal
   (package
-    (name "xdg-desktop-portal")
-    (version "1.8.1")
+    (name "libportal")
+    (version "0.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/flatpak/xdg-desktop-portal")
-                     (commit version)))
+                    (url "https://github.com/flatpak/libportal")
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0pq0kmvzk56my396vh97pzw4wizwmlmzvv2kr2xv047x3044mr5n"))))
+                "0i4v0wjyiryg7jq9hp9iaplqyhwj1cqy5891s4jfldcdzvcwxwx0"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-Dbackends=gtk4,gtk3,qt5"
+             "-Ddocs=false")))          ; requires unpackaged gi-docgen
+    (native-inputs
+     (list pkg-config
+           docbook-xsl
+           docbook-xml
+           `(,glib "bin")
+           gobject-introspection
+           libxml2
+           vala))
+    (inputs
+     (list gtk
+           gtk+
+           qtbase-5
+           qtx11extras))
+    (propagated-inputs
+     (list glib))
+    (home-page "https://github.com/flatpak/libportal")
+    (synopsis "Flatpak portal library")
+    (description
+     "libportal provides GIO-style async APIs for most Flatpak portals.")
+    (license license:lgpl2.1+)))
+
+(define-public xdg-desktop-portal
+  (package
+    (name "xdg-desktop-portal")
+    (version "1.10.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/flatpak/xdg-desktop-portal/releases/download/"
+                    version "/xdg-desktop-portal-" version ".tar.xz"))
+              (sha256
+               (base32
+                "199lqr2plsy9qqnxx5a381ml8ygcbz4nkjla5pvljjcrwzlqsygd"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -2358,16 +2314,15 @@ and others.")
 (define-public xdg-desktop-portal-gtk
   (package
     (name "xdg-desktop-portal-gtk")
-    (version "1.7.1")
+    (version "1.10.0")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/flatpak/xdg-desktop-portal-gtk")
-                     (commit version)))
-              (file-name (git-file-name name version))
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/flatpak/xdg-desktop-portal-gtk/releases/download/"
+                    version "/xdg-desktop-portal-gtk-" version ".tar.xz"))
               (sha256
                (base32
-                "183iha9dxmvprn99ymgz17jx1lyn1fj5jyj6ghxl716zn9mxmird"))))
+                "0nlbnd6qvs92fanrmmn123vy0y2ml0v3ndxyk5x0cpfbnmxpa2f8"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
@@ -2378,13 +2333,22 @@ and others.")
              (for-each (lambda (po)
                          (chmod po #o666))
                        (find-files "po" "\\.po$"))
-             #t)))))
+             #t)))
+       ;; Enable Gnome portal backends
+       #:configure-flags
+       (list
+        "--enable-appchooser"
+        "--enable-wallpaper"
+        "--enable-screenshot"
+        "--enable-screencast"
+        "--enable-background"
+        "--enable-settings")))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
-       ("xdg-desktop-portal" ,xdg-desktop-portal)
+       ("libxml2" ,libxml2)
        ("glib:bin" ,glib "bin")
        ("which" ,which)
        ("gettext" ,gettext-minimal)))
@@ -2394,10 +2358,8 @@ and others.")
        ("fontconfig" ,fontconfig)
        ("gnome-desktop" ,gnome-desktop)
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
-    (native-search-paths
-     (list (search-path-specification
-            (variable "XDG_DESKTOP_PORTAL_DIR")
-            (files '("share/xdg-desktop-portal/portals")))))
+    (propagated-inputs
+     (list xdg-desktop-portal))
     (home-page "https://github.com/flatpak/xdg-desktop-portal-gtk")
     (synopsis "GTK implementation of xdg-desktop-portal")
     (description
@@ -2410,7 +2372,7 @@ interfaces.")
 (define-public xdg-desktop-portal-wlr
   (package
     (name "xdg-desktop-portal-wlr")
-    (version "0.4.0")
+    (version "0.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2419,22 +2381,39 @@ interfaces.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "13fbzh8bjnhk4xs8j9bpc01q3hy27zpbf0gkk1fnh3hm5pnyfyiv"))))
+                "1ipg35gv8ja39ijwbyi96qlyq2y1fjdggl40s38rv68bsya8zry1"))
+              (patches (search-patches "xdg-desktop-portal-wlr-harcoded-length.patch"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
        '("-Dsystemd=disabled"
-         "-Dsd-bus-provider=libelogind")))
+         "-Dsd-bus-provider=libelogind")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'hardcode-binaries
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((sh (search-input-file inputs "/bin/sh"))
+                   (grim (search-input-file inputs "/bin/grim"))
+                   (slurp (search-input-file inputs "/bin/slurp")))
+               (substitute* "src/screenshot/screenshot.c"
+                 (("grim") grim)
+                 (("slurp") slurp)
+                 (("execl\\(\"/bin/sh\", \"/bin/sh\"")
+                  (string-append "execl(\"" sh "\", \"" sh "\"")))
+               (substitute* "src/screencast/screencast.c"
+                 (("execvp\\(\"sh")
+                  (string-append "execvp(\"" sh)))))))))
     (native-inputs
-     `(("cmake" ,cmake)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("elogind" ,elogind)
-       ("iniparser" ,iniparser)
-       ("pipewire" ,pipewire-0.3)
-       ("inih" ,libinih)
-       ("wayland" ,wayland)
-       ("wayland-protocols" ,wayland-protocols)))
+     (list cmake pkg-config))
+    (inputs (list elogind
+                  bash-minimal
+                  grim
+                  iniparser
+                  libinih
+                  pipewire-0.3
+                  slurp
+                  wayland
+                  wayland-protocols))
     (home-page "https://github.com/emersion/xdg-desktop-portal-wlr")
     (synopsis "@code{xdg-desktop-portal} backend for wlroots")
     (description
@@ -2444,10 +2423,37 @@ remote-desktop @code{xdg-desktop-portal} interfaces for wlroots based
 compositors.")
     (license license:expat)))
 
+(define-public poweralertd
+  (package
+    (name "poweralertd")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.sr.ht/~kennylevinsen/poweralertd")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19rw9q4pcqw56nmzjfglfikzx5wwjl4n08awwdhg0jy1k0bm3dvp"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:configure-flags '("-Dman-pages=enabled")))
+    (native-inputs
+     (list scdoc pkg-config bash-minimal))
+    (inputs
+     (list elogind))
+    (home-page "https://sr.ht/~kennylevinsen/poweralertd")
+    (synopsis "Power alert daemon")
+    (description "poweralertd is a daemon that watches for UPower events and
+notifies the user using any notification daemon implementing
+@code{org.freedesktop.Notifications}.")
+    (license license:gpl3+)))
+
 (define-public waypipe
   (package
     (name "waypipe")
-    (version "0.8.0")
+    (version "0.8.1")
     (source
      (origin
        (method git-fetch)
@@ -2456,22 +2462,12 @@ compositors.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1qa47ljfvb1vv3h647xwn1j5j8gfmcmdfaz4j8ygnkvj36y87vnz"))))
+        (base32 "1v08dv3dfz420v51ahz7qgv3429073kmgrf8f66s4c3jlpch2pa1"))))
     (build-system meson-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-sleep-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((coreutils (assoc-ref inputs "coreutils")))
-               (substitute* "./test/startup_failure.py"
-                 (("sleep") (string-append coreutils "/bin/sleep")))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("scdoc" ,scdoc)
-       ;; For tests
-       ("python" ,python)
-       ("coreutils" ,coreutils)))
+     (list pkg-config scdoc
+           ;; For tests
+           python))
     (home-page "https://gitlab.freedesktop.org/mstoeckl/waypipe")
     (synopsis "Proxy for Wayland protocol applications")
     (description