Merge branch 'core-updates'
[jackhill/guix/guix.git] / gnu / packages / freedesktop.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
4 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
5 ;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
6 ;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
8 ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
9 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
10 ;;; Copyright © 2017 Nikita <nikita@n0.is>
11 ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
12 ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
13 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
14 ;;; Copyright © 2017, 2020 Brendan Tildesley <mail@brendan.scot>
15 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
16 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
17 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
18 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
19 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
20 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
21 ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
22 ;;;
23 ;;; This file is part of GNU Guix.
24 ;;;
25 ;;; GNU Guix is free software; you can redistribute it and/or modify it
26 ;;; under the terms of the GNU General Public License as published by
27 ;;; the Free Software Foundation; either version 3 of the License, or (at
28 ;;; your option) any later version.
29 ;;;
30 ;;; GNU Guix is distributed in the hope that it will be useful, but
31 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
32 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 ;;; GNU General Public License for more details.
34 ;;;
35 ;;; You should have received a copy of the GNU General Public License
36 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
37
38 (define-module (gnu packages freedesktop)
39 #:use-module ((guix licenses) #:prefix license:)
40 #:use-module (guix utils)
41 #:use-module (guix packages)
42 #:use-module (guix download)
43 #:use-module (guix git-download)
44 #:use-module (guix build-system cmake)
45 #:use-module (guix build-system gnu)
46 #:use-module (guix build-system meson)
47 #:use-module (guix build-system perl)
48 #:use-module (guix build-system python)
49 #:use-module (gnu packages)
50 #:use-module (gnu packages acl)
51 #:use-module (gnu packages admin)
52 #:use-module (gnu packages autotools)
53 #:use-module (gnu packages base)
54 #:use-module (gnu packages bash)
55 #:use-module (gnu packages boost)
56 #:use-module (gnu packages check)
57 #:use-module (gnu packages compression)
58 #:use-module (gnu packages cryptsetup)
59 #:use-module (gnu packages disk)
60 #:use-module (gnu packages docbook)
61 #:use-module (gnu packages documentation)
62 #:use-module (gnu packages gawk)
63 #:use-module (gnu packages gettext)
64 #:use-module (gnu packages ghostscript)
65 #:use-module (gnu packages gl)
66 #:use-module (gnu packages glib) ;intltool
67 #:use-module (gnu packages gnome)
68 #:use-module (gnu packages gperf)
69 #:use-module (gnu packages graphviz)
70 #:use-module (gnu packages gtk)
71 #:use-module (gnu packages image)
72 #:use-module (gnu packages libffi)
73 #:use-module (gnu packages libunwind)
74 #:use-module (gnu packages libusb)
75 #:use-module (gnu packages linux)
76 #:use-module (gnu packages man)
77 #:use-module (gnu packages m4)
78 #:use-module (gnu packages nss)
79 #:use-module (gnu packages perl)
80 #:use-module (gnu packages perl-check)
81 #:use-module (gnu packages pkg-config)
82 #:use-module (gnu packages polkit)
83 #:use-module (gnu packages python)
84 #:use-module (gnu packages python-crypto)
85 #:use-module (gnu packages python-xyz)
86 #:use-module (gnu packages sqlite)
87 #:use-module (gnu packages valgrind)
88 #:use-module (gnu packages video)
89 #:use-module (gnu packages w3m)
90 #:use-module (gnu packages web)
91 #:use-module (gnu packages xdisorg)
92 #:use-module (gnu packages xml)
93 #:use-module (gnu packages xorg)
94 #:use-module (srfi srfi-1))
95
96 (define-public xdg-utils
97 (package
98 (name "xdg-utils")
99 (version "1.1.3")
100 (source
101 (origin
102 (method url-fetch)
103 (uri (string-append
104 "https://portland.freedesktop.org/download/xdg-utils-"
105 version ".tar.gz"))
106 (sha256
107 (base32
108 "1nai806smz3zcb2l5iny4x7li0fak0rzmjg6vlyhdqm8z25b166p"))))
109 (build-system gnu-build-system)
110 (native-inputs
111 `(("docbook-xsl" ,docbook-xsl)
112 ("docbook-xml" ,docbook-xml-4.1.2)
113 ("libxslt" ,libxslt)
114 ("w3m" ,w3m)
115 ("xmlto" ,xmlto)))
116 (inputs
117 `(("awk" ,gawk)
118 ("coreutils" ,coreutils)
119 ("grep" ,grep)
120 ("inetutils" ,inetutils) ; xdg-screensaver uses `hostname'
121 ("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
122 ("sed" ,sed)
123 ("xprop" ,xprop) ; for Xfce detecting
124 ("xset" ,xset))) ; for xdg-screensaver
125 (arguments
126 `(#:tests? #f ; no check target
127 #:modules ((srfi srfi-26)
128 ,@%gnu-build-system-modules)
129 #:phases
130 (modify-phases %standard-phases
131 (add-after 'unpack 'patch-hardcoded-paths
132 (lambda _
133 (substitute* "scripts/xdg-mime.in"
134 (("/usr/bin/file") (which "file")))
135 (substitute* "scripts/xdg-open.in"
136 (("/usr/bin/printf") (which "printf")))
137 #t))
138 (add-before 'build 'locate-catalog-files
139 (lambda* (#:key inputs #:allow-other-keys)
140 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
141 "/xml/dtd/docbook"))
142 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
143 "/xml/xsl/docbook-xsl-"
144 ,(package-version docbook-xsl))))
145 (for-each (lambda (file)
146 (substitute* file
147 (("http://.*/docbookx\\.dtd")
148 (string-append xmldoc "/docbookx.dtd"))))
149 (find-files "scripts/desc" "\\.xml$"))
150 (substitute* "scripts/Makefile"
151 ;; Apparently `xmlto' does not bother to looks up the stylesheets
152 ;; specified in the XML, unlike the above substitition. Instead it
153 ;; uses a hard-coded URL. Work around it here, but if this is
154 ;; common perhaps we should hardcode this path in xmlto itself.
155 (("\\$\\(XMLTO\\) man")
156 (string-append "$(XMLTO) -x " xsldoc
157 "/manpages/docbook.xsl man")))
158 (setenv "STYLESHEET"
159 (string-append xsldoc "/html/docbook.xsl"))
160 #t)))
161 (add-after 'install 'wrap-executables
162 (lambda* (#:key inputs outputs #:allow-other-keys)
163 (let ((out (assoc-ref outputs "out")))
164 (with-directory-excursion (string-append out "/bin")
165 (let ((path-ext
166 (map (cute string-append <> "/bin")
167 (cons out
168 (map (cute assoc-ref inputs <>)
169 '("awk" "coreutils" "grep" "inetutils"
170 "perl-file-mimeinfo" "sed" "xprop"
171 "xset"))))))
172 (for-each (cute wrap-program <>
173 `("PATH" ":" prefix ,path-ext))
174 (find-files "."))))
175 #t))))))
176 (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
177 (synopsis "Freedesktop.org scripts for desktop integration")
178 (description "The xdg-utils package is a set of simple scripts that
179 provide basic desktop integration functions in the framework of the
180 freedesktop.org project.")
181 (license license:expat)))
182
183 (define-public libinput
184 ;; Updating this will rebuild over 700 packages through libinput-minimal.
185 (package
186 (name "libinput")
187 (version "1.15.2")
188 (source (origin
189 (method url-fetch)
190 (uri (string-append "https://freedesktop.org/software/libinput/"
191 "libinput-" version ".tar.xz"))
192 (sha256
193 (base32
194 "0ivpb4sghl80cs7jg3xrs53kckif6wy81cny3a8mry94nszky74p"))))
195 (build-system meson-build-system)
196 (arguments
197 `(#:configure-flags '("-Ddocumentation=false")
198
199 ;; XXX: Using 'debug' or 'debugoptimized' pulls in an additional test that
200 ;; hangs, and the comments around it suggests that we should be using this
201 ;; Meson target anyway.
202 #:build-type "release"))
203 (native-inputs
204 `(("check" ,check)
205 ("pkg-config" ,pkg-config)))
206 (inputs
207 `(("cairo" ,cairo)
208 ("glib" ,glib)
209 ("gtk+" ,gtk+)
210 ("libevdev" ,libevdev)
211 ("libwacom" ,libwacom)
212 ("mtdev" ,mtdev)))
213 (propagated-inputs
214 `(;; libinput.h requires <libudev.h>, so propagate it.
215 ("udev" ,eudev)))
216 (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
217 (synopsis "Input devices handling library")
218 (description
219 "Libinput is a library to handle input devices for display servers and
220 other applications that need to directly deal with input devices.")
221 (license license:x11)))
222
223 (define-public libinput-minimal
224 (package (inherit libinput)
225 (name "libinput-minimal")
226 (inputs
227 (fold alist-delete (package-inputs libinput)
228 '("cairo" "glib" "gtk+" "libwacom")))
229 (arguments
230 (substitute-keyword-arguments (package-arguments libinput)
231 ((#:configure-flags flags ''())
232 `(cons* "-Dlibwacom=false"
233 "-Ddebug-gui=false" ;requires gtk+@3
234 ,flags))))))
235
236 (define-public libxdg-basedir
237 (package
238 (name "libxdg-basedir")
239 (version "1.2.0")
240 (source (origin
241 (method git-fetch)
242 (uri (git-reference
243 (url "https://github.com/devnev/libxdg-basedir")
244 (commit (string-append name "-" version))))
245 (file-name (git-file-name name version))
246 (sha256
247 (base32
248 "12yz53ny5bi2dii3zwcr6b9ay0yy1g1xv13jg097k7gjligcq11m"))))
249 (build-system gnu-build-system)
250 (arguments
251 '(#:phases
252 (modify-phases %standard-phases
253 (add-after 'unpack 'patch-autogen
254 (lambda _
255 ;; Run 'configure' in its own phase, not now.
256 (substitute* "autogen.sh"
257 (("^.*\\./configure.*") ""))
258 #t)))))
259 (native-inputs
260 `(("autoconf" ,autoconf)
261 ("automake" ,automake)
262 ("libtool" ,libtool)))
263 (home-page "https://github.com/devnev/libxdg-basedir")
264 (synopsis "Implementation of the XDG Base Directory specification")
265 (description
266 "libxdg-basedir is a C library providing some functions to use with
267 the freedesktop.org XDG Base Directory specification.")
268 (license license:expat)))
269
270 (define-public elogind
271 (package
272 (name "elogind")
273 (version "243.4")
274 (source (origin
275 (method git-fetch)
276 (uri (git-reference
277 (url "https://github.com/elogind/elogind")
278 (commit (string-append "v" version))))
279 (file-name (git-file-name name version))
280 (sha256
281 (base32
282 "141frvgyk4fafcxsix94qc0d9ffrwksld8lqq4hq6xsgjlvv0mrs"))))
283 (build-system meson-build-system)
284 (arguments
285 `(#:configure-flags
286 (let* ((out (assoc-ref %outputs "out"))
287 (sysconf (string-append out "/etc"))
288 (libexec (string-append out "/libexec/elogind"))
289 (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
290 (shadow (assoc-ref %build-inputs "shadow"))
291 (shepherd (assoc-ref %build-inputs "shepherd"))
292 (halt-path (string-append shepherd "/sbin/halt"))
293 (kexec-path "") ;not available in Guix yet
294 (nologin-path (string-append shadow "/sbin/nologin"))
295 (poweroff-path (string-append shepherd "/sbin/shutdown"))
296 (reboot-path (string-append shepherd "/sbin/reboot")))
297 (list
298 (string-append "-Drootprefix=" out)
299 (string-append "-Dsysconfdir=" sysconf)
300 (string-append "-Drootlibexecdir=" libexec)
301 (string-append "-Ddbuspolicydir=" dbuspolicy)
302 (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
303 (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
304 (string-append "-Dhalt-path=" halt-path)
305 (string-append "-Dkexec-path=" kexec-path)
306 (string-append "-Dpoweroff-path=" poweroff-path)
307 (string-append "-Dreboot-path=" reboot-path)
308 (string-append "-Dnologin-path=" nologin-path)
309 "-Dcgroup-controller=elogind"
310 "-Dman=true"
311 ;; Disable some tests.
312 "-Dslow-tests=false"))
313 #:phases
314 (modify-phases %standard-phases
315 (add-after 'unpack 'fix-pkttyagent-path
316 (lambda _
317 (substitute* "meson.build"
318 (("join_paths\\(bindir, 'pkttyagent'\\)")
319 "'\"/run/current-system/profile/bin/pkttyagent\"'"))
320 #t))
321 (add-after 'unpack 'adjust-dbus-socket-address
322 (lambda _
323 ;; Look for the D-Bus socket in /var/run instead of /run. Remove
324 ;; this for versions > 243.4.
325 (substitute* "src/libelogind/sd-bus/bus-internal.h"
326 (("=/run/dbus/system_bus_socket")
327 "=/var/run/dbus/system_bus_socket"))
328 #t))
329 (add-after 'unpack 'adjust-tests
330 (lambda _
331 ;; This test tries to copy some bytes from /usr/lib/os-release,
332 ;; which does not exist in the build container. Choose something
333 ;; more likely to be available.
334 (substitute* "src/test/test-copy.c"
335 (("/usr/lib/os-release")
336 "/etc/passwd"))
337 ;; Use a shebang that works in the build container.
338 (substitute* "src/test/test-exec-util.c"
339 (("#!/bin/sh")
340 (string-append "#!" (which "sh"))))
341 ;; Do not look for files or directories that do not exist.
342 (substitute* "src/test/test-fs-util.c"
343 (("usr") "etc")
344 (("/etc/machine-id") "/etc/passwd"))
345 ;; FIXME: Why is sd_id128_get_machine_app_specific failing.
346 ;; Disable for now by hooking into the kernel support check.
347 (substitute* "src/test/test-id128.c"
348 (("if \\(r == -EOPNOTSUPP\\)")
349 "if (1)"))
350 ;; This test expects that /sys is available.
351 (substitute* "src/test/test-mountpoint-util.c"
352 (("assert_se\\(path_is_mount_point\\(\"/sys.*")
353 ""))
354 ;; /bin/sh does not exist in the build container.
355 (substitute* "src/test/test-path-util.c"
356 (("/bin/sh") (which "sh")))
357 ;; This test uses sd_device_new_from_syspath to allocate a
358 ;; loopback device, but that fails because /sys is unavailable.
359 (substitute* "src/libelogind/sd-device/test-sd-device-thread.c"
360 ((".*sd_device_new_from_syspath.*/sys/class/net/lo.*")
361 "return 77;"))
362 ;; Most of these tests require cgroups or an actual live
363 ;; logind system so that it can flicker the monitor, etc.
364 ;; Just skip it until a more narrow selection can be made.
365 (substitute* "src/libelogind/sd-login/test-login.c"
366 (("r = sd_pid_get_slice.*")
367 "return 77;"))
368 #t))
369 (add-after 'unpack 'change-pid-file-path
370 (lambda _
371 (substitute* "src/login/elogind.c"
372 (("\"/run/elogind.pid\"") "\"/run/systemd/elogind.pid\""))
373 #t)))))
374 (native-inputs
375 `(("docbook-xml" ,docbook-xml)
376 ("docbook-xml-4.2" ,docbook-xml-4.2)
377 ("docbook-xsl" ,docbook-xsl)
378 ("gettext" ,gettext-minimal)
379 ("gperf" ,gperf)
380 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
381 ("m4" ,m4)
382 ("pkg-config" ,pkg-config)
383 ("python" ,python)
384 ("xsltproc" ,libxslt)))
385 (inputs
386 `(("linux-pam" ,linux-pam)
387 ("libcap" ,libcap)
388 ("shadow" ,shadow) ;for 'nologin'
389 ("shepherd" ,shepherd) ;for 'halt' and 'reboot', invoked
390 ;when pressing the power button
391 ("dbus" ,dbus)
392 ("eudev" ,eudev)
393 ("acl" ,acl))) ;to add individual users to ACLs on /dev nodes
394 (home-page "https://github.com/elogind/elogind")
395 (synopsis "User, seat, and session management service")
396 (description "Elogind is the systemd project's \"logind\" service,
397 extracted out as a separate project. Elogind integrates with PAM to provide
398 the org.freedesktop.login1 interface over the system bus, allowing other parts
399 of a the system to know what users are logged in, and where.")
400 (license license:lgpl2.1+)))
401
402 (define-public localed
403 ;; XXX: This package is extracted from systemd but we retain so little of it
404 ;; that it would make more sense to maintain a fork of the bits we need.
405 (package
406 (name "localed")
407 (version "241")
408 (source (origin
409 (method git-fetch)
410 (uri (git-reference
411 (url "https://github.com/systemd/systemd")
412 (commit (string-append "v" version))))
413 (sha256
414 (base32
415 "0sy91flzbhpq58k7v0294pa2gxpr0bk27rcnxlbhk2fi6nc51d28"))
416 (file-name (git-file-name name version))
417 (modules '((guix build utils)))
418 (snippet
419 '(begin
420 ;; Connect to the right location for our D-Bus daemon.
421 (substitute* '("src/basic/def.h"
422 "src/libsystemd/sd-bus/sd-bus.c"
423 "src/stdio-bridge/stdio-bridge.c")
424 (("/run/dbus/system_bus_socket")
425 "/var/run/dbus/system_bus_socket"))
426
427 ;; Don't insist on having systemd as PID 1 (otherwise
428 ;; 'localectl' would exit without doing anything.)
429 (substitute* "src/shared/bus-util.c"
430 (("sd_booted\\(\\)")
431 "(1)"))
432 #t))
433 (patches (search-patches "localed-xorg-keyboard.patch"))))
434 (build-system meson-build-system)
435 (arguments
436 ;; Try to build as little as possible (list of components taken from the
437 ;; top-level 'meson.build' file.)
438 (let ((components '("utmp"
439 "hibernate"
440 "environment-d"
441 "binfmt"
442 "coredump"
443 "resolve"
444 "logind"
445 "hostnamed"
446 "localed"
447 "machined"
448 "portabled"
449 "networkd"
450 "timedated"
451 "timesyncd"
452 "firstboot"
453 "randomseed"
454 "backlight"
455 "vconsole"
456 "quotacheck"
457 "sysusers"
458 "tmpfiles"
459 "hwdb"
460 "rfkill"
461 "ldconfig"
462 "efi"
463 "tpm"
464 "ima"
465 "smack"
466 "gshadow"
467 "idn"
468 "nss-myhostname"
469 "nss-systemd")))
470 `(#:configure-flags ',(map (lambda (component)
471 (string-append "-D" component "=false"))
472 (delete "localed" components))
473
474 ;; It doesn't make sense to test all of systemd.
475 #:tests? #f
476
477 #:phases (modify-phases %standard-phases
478 (add-after 'unpack 'set-xkeyboard-config-file-name
479 (lambda* (#:key inputs #:allow-other-keys)
480 ;; Set the file name to xkeyboard-config and kbd.
481 ;; This is used by 'localectl list-x11-keymap-layouts'
482 ;; and similar functions.
483 (let ((xkb (assoc-ref inputs "xkeyboard-config"))
484 (kbd (assoc-ref inputs "kbd")))
485 (substitute* "src/locale/localectl.c"
486 (("/usr/share/X11/xkb/rules")
487 (string-append xkb "/share/X11/xkb/rules")))
488 (substitute* "src/basic/def.h"
489 (("/usr/share/keymaps")
490 (string-append kbd "/share/keymaps")))
491 #t)))
492 (replace 'install
493 (lambda* (#:key outputs #:allow-other-keys)
494 ;; Install 'localed', the D-Bus and polkit files, and
495 ;; 'localectl'.
496 (let* ((out (assoc-ref outputs "out"))
497 (libexec (string-append out "/libexec/localed"))
498 (bin (string-append out "/bin"))
499 (lib (string-append out "/lib"))
500 (dbus (string-append out
501 "/share/dbus-1/system-services"))
502 (conf (string-append out
503 "/etc/dbus-1/system.d/"))
504 (polkit (string-append out
505 "/share/polkit-1/actions"))
506 (data (string-append out "/share/systemd")))
507 (define (source-file regexp)
508 (car (find-files ".." regexp)))
509
510 (mkdir-p libexec)
511 (copy-file "systemd-localed"
512 (string-append libexec "/localed"))
513 (install-file "localectl" bin)
514
515 (let ((service-file (source-file
516 "\\.locale1\\.service$")))
517 (substitute* service-file
518 (("^Exec=.*$")
519 (string-append "Exec=" libexec "/localed\n")))
520 (install-file service-file dbus))
521 (install-file (source-file "\\.locale1\\.policy$")
522 polkit)
523 (install-file (source-file "\\.locale1\\.conf$")
524 conf)
525 (for-each (lambda (file)
526 (install-file file lib))
527 (find-files "src/shared"
528 "libsystemd-shared.*\\.so"))
529
530 (for-each (lambda (map)
531 (install-file map data))
532 (find-files ".." "^(kbd-model-map|language-fallback-map)$"))
533 #t)))))))
534 (native-inputs (package-native-inputs elogind))
535 (inputs `(("libmount" ,util-linux "lib")
536 ("xkeyboard-config" ,xkeyboard-config)
537 ("kbd" ,kbd)
538 ,@(package-inputs elogind)))
539 (home-page "https://www.freedesktop.org/wiki/Software/systemd/localed/")
540 (synopsis "Control the system locale and keyboard layout")
541 (description
542 "Localed is a tiny daemon that can be used to control the system locale
543 and keyboard mapping from user programs. It is used among other things by the
544 GNOME Shell. The @command{localectl} command-line tool allows you to interact
545 with localed. This package is extracted from the broader systemd package.")
546 (license license:lgpl2.1+)))
547
548 (define-public packagekit
549 (package
550 (name "packagekit")
551 (version "1.1.13")
552 (source (origin
553 (method url-fetch)
554 (uri (string-append
555 "https://www.freedesktop.org/software/"
556 "PackageKit/releases/"
557 "PackageKit-" version ".tar.xz"))
558 (sha256
559 (base32
560 "1dr1laic65ld95abp2yxbwvijnngh0dwyb1x49x4wjm5rhq43dl8"))))
561 (build-system gnu-build-system)
562 (arguments
563 `(#:tests? #f
564 #:make-flags (list (string-append "BASH_COMPLETIONS_DIR="
565 %output "/etc/bash_completion.d"))
566 #:configure-flags
567 '("--disable-systemd")))
568 (native-inputs
569 `(("intltool" ,intltool)
570 ("pkg-config" ,pkg-config)
571 ("python" ,python-wrapper)
572 ("glib:bin" ,glib "bin")))
573 (inputs
574 `(("glib" ,glib)
575 ("bash-completion" ,bash-completion)
576 ("polkit" ,polkit)))
577 (propagated-inputs
578 `(("sqlite" ,sqlite)))
579 (home-page "https://www.freedesktop.org/software/PackageKit/")
580 (synopsis "API for package management, through D-Bus")
581 (description
582 "PackageKit provides a way of performing package management tasks,
583 e.g. updating, removing and installing software. Through supporting many
584 backends, PackageKit can perform these tasks using the appropriate package
585 manager for the current system.")
586 (license license:gpl2+)))
587
588 (define-public python-pyxdg
589 (package
590 (name "python-pyxdg")
591 (version "0.25")
592 (source
593 (origin
594 (method url-fetch)
595 (uri (pypi-uri "pyxdg" version))
596 (sha256
597 (base32
598 "179767h8m634ydlm4v8lnz01ba42gckfp684id764zaip7h87s41"))))
599 (build-system python-build-system)
600 (arguments
601 '(#:phases
602 (modify-phases %standard-phases
603 (replace 'check
604 (lambda* (#:key inputs #:allow-other-keys)
605 (setenv "XDG_DATA_DIRS"
606 (string-append (assoc-ref inputs "shared-mime-info")
607 "/share/"))
608 (substitute* "test/test-icon.py"
609 (("/usr/share/icons/hicolor/index.theme")
610 (string-append (assoc-ref inputs "hicolor-icon-theme")
611 "/share/icons/hicolor/index.theme"))
612 ;; FIXME: This test fails because the theme contains the unknown
613 ;; key "Scale".
614 (("theme.validate\\(\\)") "#"))
615
616 ;; One test fails with:
617 ;; AssertionError: 'x-apple-ios-png' != 'png'
618 (substitute* "test/test-mime.py"
619 (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
620 (invoke "nosetests" "-v"))))))
621 (native-inputs
622 ;; For tests.
623 `(("shared-mime-info" ,shared-mime-info)
624 ("hicolor-icon-theme" ,hicolor-icon-theme)
625 ("python-nose" ,python-nose)))
626 (home-page "https://www.freedesktop.org/wiki/Software/pyxdg")
627 (synopsis "Implementations of freedesktop.org standards in Python")
628 (description
629 "PyXDG is a collection of implementations of freedesktop.org standards in
630 Python.")
631 (license license:lgpl2.0)))
632
633 (define-public python2-pyxdg
634 (package-with-python2 python-pyxdg))
635
636 (define-public wayland
637 (package
638 (name "wayland")
639 (version "1.17.0")
640 (source (origin
641 (method url-fetch)
642 (uri (string-append "https://wayland.freedesktop.org/releases/"
643 name "-" version ".tar.xz"))
644 (sha256
645 (base32
646 "194ibzwpdcn6fvk4xngr4bf5axpciwg2bj82fdvz88kfmjw13akj"))))
647 (build-system gnu-build-system)
648 (arguments
649 `(#:parallel-tests? #f))
650 (native-inputs
651 `(("doxygen" ,doxygen)
652 ("graphviz" ,graphviz)
653 ("pkg-config" ,pkg-config)
654 ("xmlto" ,xmlto)
655 ("xsltproc" ,libxslt)))
656 (inputs
657 `(("docbook-xml" ,docbook-xml)
658 ("docbook-xsl" ,docbook-xsl)
659 ("expat" ,expat)
660 ("libffi" ,libffi)
661 ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
662 (home-page "https://wayland.freedesktop.org/")
663 (synopsis "Display server protocol")
664 (description
665 "Wayland is a protocol for a compositor to talk to its clients as well as
666 a C library implementation of that protocol. The compositor can be a standalone
667 display server running on Linux kernel modesetting and evdev input devices, an X
668 application, or a wayland client itself. The clients can be traditional
669 applications, X servers (rootless or fullscreen) or other display servers.")
670 (license license:x11)))
671
672 (define-public wayland-protocols
673 (package
674 (name "wayland-protocols")
675 (version "1.18")
676 (source (origin
677 (method url-fetch)
678 (uri (string-append
679 "https://wayland.freedesktop.org/releases/"
680 "wayland-protocols-" version ".tar.xz"))
681 (sha256
682 (base32
683 "1cvl93h83ymbfhb567jv5gzyq08181w7c46rsw4xqqqpcvkvfwrx"))))
684 (build-system gnu-build-system)
685 (inputs
686 `(("wayland" ,wayland)))
687 (native-inputs
688 `(("pkg-config" ,pkg-config)))
689 (synopsis "Wayland protocols")
690 (description "This package contains XML definitions of the Wayland protocols.")
691 (home-page "https://wayland.freedesktop.org")
692 (license license:expat)))
693
694 (define-public waylandpp
695 (package
696 (name "waylandpp")
697 (version "0.2.5")
698 (home-page "https://github.com/NilsBrause/waylandpp")
699 (source (origin
700 (method git-fetch)
701 (uri (git-reference (url home-page) (commit version)))
702 (file-name (git-file-name name version))
703 (sha256
704 (base32
705 "16h57hzd688664qcyznzhjp3hxipdkzgv46x82yhkww24av8b55n"))))
706 (build-system cmake-build-system)
707 (arguments
708 `(#:tests? #f)) ;no tests
709 (native-inputs
710 `(("pkg-config" ,pkg-config)))
711 (inputs
712 `(("mesa" ,mesa)
713 ("pugixml" ,pugixml)))
714 (propagated-inputs
715 `(;; In Requires of the .pc files.
716 ("wayland" ,wayland)))
717 (synopsis "Wayland C++ bindings")
718 (description
719 "This package provides C++ bindings for the Wayland display protocol.")
720 (license license:bsd-2)))
721
722 (define-public weston
723 (package
724 (name "weston")
725 (version "6.0.1")
726 (source (origin
727 (method url-fetch)
728 (uri (string-append
729 "https://wayland.freedesktop.org/releases/"
730 "weston-" version ".tar.xz"))
731 (sha256
732 (base32
733 "1d2m658ll8x7prlsfk71qgw89c7dz6y7d6nndfxwl49fmrd6sbxz"))))
734 (build-system meson-build-system)
735 (native-inputs
736 `(("pkg-config" ,pkg-config)
737 ("xorg-server" ,xorg-server)))
738 (inputs
739 `(("cairo" ,cairo-xcb)
740 ("colord" ,colord)
741 ("dbus" ,dbus)
742 ("elogind" ,elogind)
743 ("lcms" ,lcms)
744 ("libevdev" ,libevdev)
745 ("libinput" ,libinput-minimal)
746 ("libjpeg" ,libjpeg-turbo)
747 ("libunwind" ,libunwind)
748 ("libva" ,libva)
749 ("libwebp" ,libwebp)
750 ("libxcursor" ,libxcursor)
751 ("libxkbcommon" ,libxkbcommon)
752 ("libxml2" ,libxml2)
753 ("mesa" ,mesa)
754 ("mtdev" ,mtdev)
755 ("linux-pam" ,linux-pam)
756 ("pango" ,pango)
757 ("wayland" ,wayland)
758 ("wayland-protocols" ,wayland-protocols)
759 ("xorg-server-xwayland" ,xorg-server-xwayland)))
760 (arguments
761 `(#:configure-flags
762 (list "-Dbackend-rdp=false" ; TODO: Enable.
763 "-Dremoting=false" ; TODO: Enable.
764 "-Dsimple-dmabuf-drm=auto"
765 "-Dsystemd=false"
766 (string-append "-Dxwayland-path="
767 (assoc-ref %build-inputs "xorg-server-xwayland")
768 "/bin/Xwayland"))
769 #:parallel-tests? #f ; Parallel tests cause failures.
770 #:phases
771 (modify-phases %standard-phases
772 (add-before 'configure 'use-elogind
773 (lambda _
774 ;; Use elogind instead of systemd
775 (substitute* "libweston/meson.build"
776 (("libsystemd-login") "libelogind"))
777 (substitute* '("libweston/launcher-logind.c"
778 "libweston/weston-launch.c")
779 (("#include <systemd/sd-login.h>")
780 "#include <elogind/sd-login.h>"))
781 #t))
782 (add-after 'configure 'patch-confdefs.h
783 (lambda _
784 (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")
785 #t))
786 (add-before 'check 'setup
787 (lambda _
788 (setenv "HOME" (getcwd))
789 (setenv "XDG_RUNTIME_DIR" (getcwd))
790 #t))
791 (add-before 'check 'start-xorg-server
792 (lambda* (#:key inputs #:allow-other-keys)
793 ;; The test suite requires a running X server.
794 (system (string-append (assoc-ref inputs "xorg-server")
795 "/bin/Xvfb :1 &"))
796 (setenv "DISPLAY" ":1")
797 #t)))))
798 (home-page "https://wayland.freedesktop.org")
799 (synopsis "Reference implementation of a Wayland compositor")
800 (description "Weston is the reference implementation of a Wayland
801 compositor, and a useful compositor in its own right.
802
803 A Wayland compositor allows applications to render to a shared offscreen
804 buffer using OpenGL ES. The compositor then culls the hidden parts and
805 composes the final output. A Wayland compositor is essentially a
806 multiplexer to the KMS/DRM Linux kernel devices.")
807 (license license:expat)))
808
809 (define-public wev
810 ;; There simple tool has no version or release yet.
811 (let ((commit "cee3dfb2a8b40ee303611018c68ae182d84a7f46"))
812 (package
813 (name "wev")
814 (version (string-append "2020-02-06-" (string-take commit 8)))
815 (source (origin
816 (method git-fetch)
817 (uri (git-reference
818 (url "https://git.sr.ht/~sircmpwn/wev")
819 (commit commit)))
820 (file-name (git-file-name name version))
821 (sha256
822 (base32
823 "0l71v3fzgiiv6xkk365q1l08qvaymxd4kpaya6r2g8yzkr7i2hms"))))
824 (build-system gnu-build-system)
825 (arguments
826 `(#:tests? #f ; no tests
827 #:make-flags
828 (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))
829 #:phases
830 (modify-phases %standard-phases
831 (delete 'configure))))
832 (native-inputs
833 `(("pkg-config" ,pkg-config)
834 ("scdoc" ,scdoc)))
835 (inputs
836 `(("libxkbcommon" ,libxkbcommon)
837 ("wayland" ,wayland)
838 ("wayland-protocols" ,wayland-protocols)))
839 (home-page "https://git.sr.ht/~sircmpwn/wev")
840 (synopsis "Wayland event viewer")
841 (description "Wev is a tool that opens a window, printing all events
842 sent to a Wayland window, such as key presses. It is analogous to the X11 tool
843 XEv.")
844 (license license:expat))))
845
846 (define-public exempi
847 (package
848 (name "exempi")
849 (version "2.5.1")
850 (source (origin
851 (method url-fetch)
852 (uri (string-append
853 "https://libopenraw.freedesktop.org/download/"
854 name "-" version ".tar.bz2"))
855 (sha256
856 (base32
857 "1j4vx054l1c2cggw4aka4iw48jkcf68qk5y064pbqw1k3ddks2qh"))))
858 (build-system gnu-build-system)
859 (arguments
860 `(#:configure-flags (list (string-append "--with-boost="
861 (assoc-ref %build-inputs "boost")))))
862 (native-inputs
863 `(("boost" ,boost))) ; tests
864 (inputs
865 `(("expat" ,expat)
866 ("zlib" ,zlib)))
867 (home-page "https://libopenraw.freedesktop.org/exempi/")
868 (synopsis "XMP metadata handling library")
869 (description "Exempi is an implementation of the Extensible Metadata
870 Platform (@dfn{XMP}), which enables embedding metadata in PDF and image
871 formats.")
872 (license license:bsd-3)))
873
874 (define-public libatasmart
875 (package
876 (name "libatasmart")
877 (version "0.19")
878 (source (origin
879 (method url-fetch)
880 (uri (string-append "http://0pointer.de/public/"
881 name "-" version ".tar.xz"))
882 (sha256
883 (base32
884 "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
885 (build-system gnu-build-system)
886 (native-inputs
887 `(("pkg-config" ,pkg-config)))
888 (inputs
889 `(("udev" ,eudev)))
890 (home-page "http://0pointer.de/blog/projects/being-smart.html")
891 (synopsis "ATA S.M.A.R.T. reading and parsing library")
892 (description
893 "This library supports a subset of the ATA S.M.A.R.T. (Self-Monitoring,
894 Analysis and Reporting Technology) functionality.")
895 (license license:lgpl2.1+)))
896
897 (define-public udisks
898 (package
899 (name "udisks")
900 (version "2.7.7")
901 (source (origin
902 (method url-fetch)
903 (uri (string-append
904 "https://github.com/storaged-project/udisks/releases/download/udisks-"
905 version "/udisks-" version ".tar.bz2"))
906 (sha256
907 (base32
908 "1dnlxqgy9v0mjdknv3b1s64szdykyk3hk0rxj3chwhpd415lrwgs"))))
909 (build-system gnu-build-system)
910 (native-inputs
911 `(("docbook-xml" ,docbook-xml-4.3) ; to build the manpages
912 ("docbook-xsl" ,docbook-xsl)
913 ("glib:bin" ,glib "bin") ; for glib-mkenums
914 ("gnome-common" ,gnome-common) ; TODO: Why is this needed?
915 ("gobject-introspection" ,gobject-introspection)
916 ("gtk-doc" ,gtk-doc)
917 ("intltool" ,intltool)
918 ("pkg-config" ,pkg-config)
919 ("xsltproc" ,libxslt)))
920 (propagated-inputs
921 `(("glib" ,glib))) ; required by udisks2.pc
922 (inputs
923 `(("acl" ,acl)
924 ("cryptsetup" ,cryptsetup)
925 ("libatasmart" ,libatasmart)
926 ("libblockdev" ,libblockdev)
927 ("libgudev" ,libgudev)
928 ("polkit" ,polkit)
929 ("util-linux" ,util-linux)))
930 (outputs '("out"
931 "doc")) ;5 MiB of gtk-doc HTML
932 (arguments
933 `(#:tests? #f ; requiring system message dbus
934 #:disallowed-references ("doc") ;enforce separation of "doc"
935 #:configure-flags
936 (list "--enable-man"
937 "--enable-gtk-doc" ; Without this the HTML doc does not seem to build automatically.
938 "--enable-available-modules" ; Such as lvm2, btrfs, etc.
939 "--localstatedir=/var"
940 "--enable-fhs-media" ;mount devices in /media, not /run/media
941 (string-append "--with-html-dir="
942 (assoc-ref %outputs "doc")
943 "/share/doc/udisks/html")
944 (string-append "--with-udevdir=" %output "/lib/udev"))
945 #:make-flags
946 (let* ((docbook-xsl-name-version ,(string-append
947 (package-name docbook-xsl) "-"
948 (package-version docbook-xsl)))
949 (docbook-xsl-catalog-file (string-append
950 (assoc-ref %build-inputs "docbook-xsl")
951 "/xml/xsl/"
952 docbook-xsl-name-version
953 "/catalog.xml"))
954 (docbook-xml-catalog-file (string-append
955 (assoc-ref %build-inputs "docbook-xml")
956 "/xml/dtd/docbook/catalog.xml")))
957 ;; Reference the catalog files required to build the manpages.
958 (list (string-append "XML_CATALOG_FILES=" docbook-xsl-catalog-file " "
959 docbook-xml-catalog-file)))
960 #:phases
961 (modify-phases %standard-phases
962 (add-before
963 'configure 'fix-girdir
964 (lambda _
965 ;; Install introspection data to its own output.
966 (substitute* "udisks/Makefile.in"
967 (("girdir = .*")
968 "girdir = $(datadir)/gir-1.0\n")
969 (("typelibsdir = .*")
970 "typelibsdir = $(libdir)/girepository-1.0\n"))))
971 (add-after 'install 'wrap-udisksd
972 (lambda* (#:key outputs inputs #:allow-other-keys)
973 ;; Tell 'udisksd' where to find the 'mount' command.
974 (let ((out (assoc-ref outputs "out"))
975 (utils (assoc-ref inputs "util-linux"))
976 (cryptsetup (assoc-ref inputs "cryptsetup"))
977 (parted (assoc-ref inputs "parted")))
978 (wrap-program (string-append out "/libexec/udisks2/udisksd")
979 `("PATH" ":" prefix
980 (,(string-append utils "/bin") ;for 'mount'
981 ;; cryptsetup is required for setting encrypted
982 ;; partitions, e.g. in gnome-disks
983 ,(string-append cryptsetup "/sbin")
984 "/run/current-system/profile/bin"
985 "/run/current-system/profile/sbin")))
986 #t))))))
987 (home-page "https://www.freedesktop.org/wiki/Software/udisks/")
988 (synopsis "Disk manager service")
989 (description
990 "UDisks provides interfaces to enumerate and perform operations on disks
991 and storage devices. Any application (including unprivileged ones) can access
992 the udisksd(8) daemon via the name org.freedesktop.UDisks2 on the system
993 message bus.")
994 ;; The dynamic library are under LGPLv2+, others are GPLv2+.
995 (license (list license:gpl2+ license:lgpl2.0+))))
996
997 (define-public accountsservice
998 (package
999 (name "accountsservice")
1000 (version "0.6.50")
1001 (source
1002 (origin
1003 (method url-fetch)
1004 (uri (string-append "https://www.freedesktop.org/software/"
1005 "accountsservice/accountsservice-" version ".tar.xz"))
1006 (sha256
1007 (base32 "0jn7vg1z4vxnna0hl33hbcb4bb3zpilxc2vyclh24vx4vvsjhn83"))))
1008 (build-system gnu-build-system)
1009 (arguments
1010 '(#:tests? #f ; XXX: tests require DocBook 4.1.2
1011 #:configure-flags
1012 '("--localstatedir=/var"
1013 "--disable-systemd"
1014 "--enable-elogind")
1015 #:phases
1016 (modify-phases %standard-phases
1017 (add-after 'unpack 'patch-/bin/cat
1018 (lambda _
1019 (substitute* "src/user.c"
1020 (("/bin/cat") (which "cat")))
1021 #t))
1022 (add-before
1023 'configure 'pre-configure
1024 (lambda* (#:key inputs #:allow-other-keys)
1025 ;; Don't try to create /var/lib/AccountsService.
1026 (substitute* "src/Makefile.in"
1027 (("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true"))
1028 (let ((shadow (assoc-ref inputs "shadow")))
1029 (substitute* '("src/user.c" "src/daemon.c")
1030 (("/usr/sbin/usermod") (string-append shadow "/sbin/usermod"))
1031 (("/usr/sbin/useradd") (string-append shadow "/sbin/useradd"))
1032 (("/usr/sbin/userdel") (string-append shadow "/sbin/userdel"))
1033 (("/usr/bin/passwd") (string-append shadow "/bin/passwd"))
1034 (("/usr/bin/chage") (string-append shadow "/bin/chage"))))
1035 #t)))))
1036 (native-inputs
1037 `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
1038 ("gobject-introspection" ,gobject-introspection)
1039 ("intltool" ,intltool)
1040 ("pkg-config" ,pkg-config)))
1041 (inputs
1042 `(("elogind" ,elogind)
1043 ("polkit" ,polkit)
1044 ("shadow" ,shadow)))
1045 (home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
1046 (synopsis "D-Bus interface for user account query and manipulation")
1047 (description
1048 "The AccountService project provides a set of D-Bus interfaces for querying
1049 and manipulating user account information and an implementation of these
1050 interfaces, based on the useradd, usermod and userdel commands.")
1051 (license license:gpl3+)))
1052
1053 (define-public libmbim
1054 (package
1055 (name "libmbim")
1056 (version "1.20.2")
1057 (source (origin
1058 (method url-fetch)
1059 (uri (string-append
1060 "https://www.freedesktop.org/software/libmbim/"
1061 "libmbim-" version ".tar.xz"))
1062 (sha256
1063 (base32
1064 "16q550sy84izi5ic3sbbhjnnka2fwhj8vvdrirpn9xspbsgbc3sm"))))
1065 (build-system gnu-build-system)
1066 (native-inputs
1067 `(("glib:bin" ,glib "bin") ; for glib-mkenums
1068 ("pkg-config" ,pkg-config)
1069 ("python" ,python-wrapper)))
1070 (propagated-inputs
1071 `(("glib" ,glib))) ; required by mbim-glib.pc
1072 (inputs
1073 `(("libgudev" ,libgudev)))
1074 (synopsis "Library to communicate with MBIM-powered modems")
1075 (home-page "https://www.freedesktop.org/wiki/Software/libmbim/")
1076 (description
1077 "Libmbim is a GLib-based library for talking to WWAN modems and devices
1078 which speak the Mobile Interface Broadband Model (MBIM) protocol.")
1079 (license
1080 ;; The libmbim-glib library is released under the LGPLv2+ license.
1081 ;; The mbimcli tool is released under the GPLv2+ license.
1082 (list license:lgpl2.0+ license:gpl2+))))
1083
1084 (define-public libqmi
1085 (package
1086 (name "libqmi")
1087 (version "1.24.4")
1088 (source (origin
1089 (method url-fetch)
1090 (uri (string-append
1091 "https://www.freedesktop.org/software/libqmi/"
1092 "libqmi-" version ".tar.xz"))
1093 (sha256
1094 (base32
1095 "12licfsszr6qxpg9b2b04qm2glk8d42fcy32zr8jzwrgr7gbl5h3"))))
1096 (build-system gnu-build-system)
1097 (inputs
1098 `(("libgudev" ,libgudev)))
1099 (native-inputs
1100 `(("glib:bin" ,glib "bin") ; for glib-mkenums
1101 ("pkg-config" ,pkg-config)
1102 ("python" ,python-wrapper)))
1103 (propagated-inputs
1104 `(("glib" ,glib))) ; required by qmi-glib.pc
1105 (synopsis "Library to communicate with QMI-powered modems")
1106 (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
1107 (description
1108 "Libqmi is a GLib-based library for talking to WWAN modems and devices
1109 which speak the Qualcomm MSM Interface (QMI) protocol.")
1110 (license
1111 ;; The libqmi-glib library is released under the LGPLv2+ license.
1112 ;; The qmicli tool is released under the GPLv2+ license.
1113 (list license:lgpl2.0+ license:gpl2+))))
1114
1115 (define-public modem-manager
1116 (package
1117 (name "modem-manager")
1118 (version "1.10.8")
1119 (source (origin
1120 (method url-fetch)
1121 (uri (string-append
1122 "https://www.freedesktop.org/software/ModemManager/"
1123 "ModemManager-" version ".tar.xz"))
1124 (sha256
1125 (base32
1126 "16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb"))))
1127 (build-system gnu-build-system)
1128 (arguments
1129 '(#:configure-flags
1130 `(,(string-append "--with-udev-base-dir=" %output "/lib/udev")
1131 ;; FIXME: Without this flag the build fails with "error: assignment
1132 ;; from incompatible pointer type" whenever the return value of
1133 ;; "g_object_ref" is assigned to "ctx->self".
1134 "--disable-more-warnings")))
1135 (native-inputs
1136 `(("glib:bin" ,glib "bin") ; for glib-mkenums
1137 ("gobject-introspection" ,gobject-introspection)
1138 ("intltool" ,intltool)
1139 ("pkg-config" ,pkg-config)
1140 ("vala" ,vala)
1141 ;; For testing.
1142 ("dbus" ,dbus)))
1143 (propagated-inputs
1144 `(("glib" ,glib))) ; required by mm-glib.pc
1145 (inputs
1146 `(("libgudev" ,libgudev)
1147 ("libmbim" ,libmbim)
1148 ("libqmi" ,libqmi)
1149 ("polkit" ,polkit)))
1150 (synopsis "Mobile broadband modems manager")
1151 (home-page "https://www.freedesktop.org/wiki/Software/ModemManager/")
1152 (description
1153 "ModemManager is a DBus-activated daemon which controls mobile
1154 broadband (2G/3G/4G) devices and connections. Whether built-in devices, USB
1155 dongles, bluetooth-paired telephones, or professional RS232/USB devices with
1156 external power supplies, ModemManager is able to prepare and configure the
1157 modems and setup connections with them.")
1158 (license license:gpl2+)))
1159
1160 (define-public telepathy-logger
1161 (package
1162 (name "telepathy-logger")
1163 (version "0.8.2")
1164 (source (origin
1165 (method url-fetch)
1166 (uri (string-append "https://telepathy.freedesktop.org/releases/"
1167 name "/" name "-" version ".tar.bz2"))
1168 (sha256
1169 (base32
1170 "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg"))))
1171 (build-system gnu-build-system)
1172 (arguments
1173 '(#:parallel-tests? #f
1174 #:phases
1175 (modify-phases %standard-phases
1176 (add-before 'check 'pre-check
1177 (lambda _
1178 (setenv "HOME" (getenv "TMPDIR"))
1179 #t)))))
1180 (native-inputs
1181 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
1182 ("gobject-introspection" ,gobject-introspection)
1183 ("intltool" ,intltool)
1184 ("pkg-config" ,pkg-config)
1185 ("python" ,python-2)
1186 ("xsltproc" ,libxslt)))
1187 (propagated-inputs
1188 ;; telepathy-logger-0.2.pc refers to all these.
1189 `(("libxml2" ,libxml2)
1190 ("sqlite" ,sqlite)
1191 ("telepathy-glib" ,telepathy-glib)))
1192 (synopsis "Telepathy logger library")
1193 (home-page "https://telepathy.freedesktop.org/")
1194 (description
1195 "Telepathy logger is a headless observer client that logs information
1196 received by the Telepathy framework. It features pluggable backends to log
1197 different sorts of messages in different formats.")
1198 (license license:lgpl2.1+)))
1199
1200 (define-public telepathy-idle
1201 (package
1202 (name "telepathy-idle")
1203 (version "0.2.0")
1204 (source (origin
1205 (method url-fetch)
1206 (uri (string-append "https://telepathy.freedesktop.org/releases/"
1207 name "/" name "-" version ".tar.bz2"))
1208 (sha256
1209 (base32
1210 "1argdzbif1vdmwp5vqbgkadq9ancjmgdm2ncp0qfckni715ss4rh"))))
1211 (build-system gnu-build-system)
1212 (native-inputs
1213 `(("pkg-config" ,pkg-config)))
1214 (inputs
1215 `(("xsltproc" ,libxslt)
1216 ("python" ,python-2)
1217 ("python-dbus" ,python2-dbus)))
1218 (propagated-inputs
1219 `(("telepathy-glib" ,telepathy-glib)))
1220 (home-page "https://telepathy.freedesktop.org/")
1221 (synopsis "Telepathy IRC connection manager")
1222 (description
1223 "Idle is an IRC connection manager for the Telepathy framework. This
1224 package enables usage of IRC channels and private messages in Telepathy instant
1225 messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
1226 (license (list license:lgpl2.1 license:lgpl2.1+))))
1227
1228 (define-public telepathy-mission-control
1229 (package
1230 (name "telepathy-mission-control")
1231 (version "5.16.5")
1232 (source
1233 (origin
1234 (method url-fetch)
1235 (uri (string-append "https://telepathy.freedesktop.org/releases/"
1236 "telepathy-mission-control/"
1237 "telepathy-mission-control-" version ".tar.gz"))
1238 (sha256
1239 (base32 "00xxv38cfdirnfvgyd56m60j0nkmsv5fz6p2ydyzsychicxl6ssc"))))
1240 (build-system gnu-build-system)
1241 (native-inputs
1242 `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
1243 ("pkg-config" ,pkg-config)))
1244 (inputs
1245 `(("dconf" ,dconf)
1246 ("gtk-doc" ,gtk-doc)
1247 ("libgnome-keyring" ,libgnome-keyring)
1248 ("python" ,python-2)
1249 ("xsltproc" ,libxslt)))
1250 (propagated-inputs
1251 `(("telepathy-glib" ,telepathy-glib)))
1252 (home-page "https://telepathy.freedesktop.org/wiki/Components/Mission_Control/")
1253 (synopsis "Telepathy real-time communication framework management daemon")
1254 (description
1255 "Telepathy Mission Control 5 is an account manager and channel dispatcher
1256 for the Telepathy framework, allowing user interfaces and other clients to
1257 share connections to real-time communication services without conflicting.")
1258 (license license:lgpl2.1)))
1259
1260 (define-public colord-gtk
1261 (package
1262 (name "colord-gtk")
1263 (version "0.1.26")
1264 (source (origin
1265 (method url-fetch)
1266 (uri (string-append "https://www.freedesktop.org/software/colord"
1267 "/releases/" name "-" version ".tar.xz"))
1268 (sha256
1269 (base32
1270 "0i9y3bb5apj6a0f8cx36l6mjzs7xc0k7nf0magmf58vy2mzhpl18"))))
1271 (build-system gnu-build-system)
1272 (arguments '(#:tests? #f)) ; require the colord system service
1273 (native-inputs
1274 `(("gobject-introspection" ,gobject-introspection)
1275 ("intltool" ,intltool)
1276 ("pkg-config" ,pkg-config)
1277 ("vala" ,vala)))
1278 (propagated-inputs
1279 ;; colord-gtk.pc refers to all these.
1280 `(("colord" ,colord)
1281 ("gtk+" ,gtk+)))
1282 (synopsis "GTK integration for libcolord")
1283 (home-page "https://www.freedesktop.org/software/colord/")
1284 (description
1285 "This is a GTK+ convenience library for interacting with colord. It is
1286 useful for both applications which need colour management and applications that
1287 wish to perform colour calibration.")
1288 (license license:lgpl2.1+)))
1289
1290 (define-public libfprint
1291 (package
1292 (name "libfprint")
1293 (version "1.90.1")
1294 (source
1295 (origin
1296 (method git-fetch)
1297 (uri (git-reference
1298 (url "https://gitlab.freedesktop.org/libfprint/libfprint")
1299 (commit (string-append "v" version))))
1300 (file-name (git-file-name name version))
1301 (sha256
1302 (base32 "0fdaak7qjr9b4482g7fhhqpyfdqpxq5kpmyzkp7f5i7qq2ynb78a"))))
1303 (build-system meson-build-system)
1304 (arguments
1305 '(#:configure-flags
1306 (list (string-append "-Dudev_rules_dir=" (assoc-ref %outputs "out")
1307 "/lib/udev/rules.d"))))
1308 (native-inputs
1309 `(("eudev" ,eudev)
1310 ("glib:bin" ,glib "bin") ; for {glib-,}mkenums
1311 ("gobject-introspection" ,gobject-introspection)
1312 ("gtk-doc" ,gtk-doc) ; for 88 KiB of API documentation
1313 ("pkg-config" ,pkg-config)))
1314 (inputs
1315 `(("glib" ,glib)
1316 ("gusb" ,gusb)
1317 ("nss" ,nss) ; for the URU4x00 driver
1318
1319 ;; Replacing this with cairo works but just results in a reference
1320 ;; (only) to pixman in the end.
1321 ("pixman" ,pixman)))
1322 (home-page "https://fprint.freedesktop.org/")
1323 (synopsis "Library to access fingerprint readers")
1324 (description
1325 "libfprint is a library designed to make it easy for application
1326 developers to add support for consumer fingerprint readers to their
1327 software.")
1328 (license license:lgpl2.1+)))
1329
1330 (define-public fprintd
1331 (package
1332 (name "fprintd")
1333 (version "1.90.1")
1334 (source
1335 (origin
1336 (method git-fetch)
1337 (uri (git-reference
1338 (url "https://gitlab.freedesktop.org/libfprint/fprintd")
1339 (commit version)))
1340 (file-name (git-file-name name version))
1341 (sha256
1342 (base32 "0mbzk263x7f58i9cxhs44mrngs7zw5wkm62j5r6xlcidhmfn03cg"))))
1343 (build-system meson-build-system)
1344 (arguments
1345 `(#:configure-flags
1346 (list "-Dsystemd_system_unit_dir=/tmp"
1347 (string-append "-Ddbus_service_dir=" (assoc-ref %outputs "out")
1348 "/share/dbus-1/system-services")
1349 (string-append "-Dpam_modules_dir=" (assoc-ref %outputs "out")
1350 "/lib/security"))
1351 #:phases
1352 (modify-phases %standard-phases
1353 (add-before 'configure 'patch-output-directories
1354 ;; Install files to our output, not that of the ‘owner’ package.
1355 ;; These are not exposed as Meson options and must be patched.
1356 (lambda* (#:key outputs #:allow-other-keys)
1357 (let ((out (assoc-ref outputs "out")))
1358 (substitute* "meson.build"
1359 (("(dbus_interfaces_dir = ).*" _ set)
1360 (string-append set "'" out "/share/dbus-1/interfaces'\n"))
1361 (("(polkit_policy_directory = ).*" _ set)
1362 (string-append set "'" out "/share/polkit-1/actions/'\n"))
1363 (("(dbus_data_dir = ).*" _ set)
1364 (string-append set "get_option('prefix')"
1365 " / get_option('datadir')\n")))
1366 #t)))
1367 (add-before 'configure 'patch-mistake
1368 (lambda _
1369 (substitute* "meson.build"
1370 (("(storage_path = )(get_option\\('prefix'\\))(.*)"
1371 _ set mistake value)
1372 (string-append set "''" value "\n")))
1373 #t))
1374 (add-before 'configure 'patch-systemd-dependencies
1375 (lambda _
1376 (substitute* "meson.build"
1377 (("'(libsystemd|systemd)'") "'libelogind'"))
1378 #t))
1379 (add-before 'configure 'ignore-test-dependencies
1380 (lambda _
1381 (substitute* "meson.build"
1382 (("pam_wrapper_dep .*") "")
1383 ((".*'(cairo|dbus|dbusmock|gi|pypamtest)': .*,.*") ""))
1384 #t))
1385 (add-before 'install 'no-polkit-magic
1386 ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
1387 (lambda _
1388 (setenv "PKEXEC_UID" "something")
1389 #t)))
1390 #:tests? #f)) ; XXX depend on unpackaged packages
1391 (native-inputs
1392 `(("gettext" ,gettext-minimal)
1393 ("glib:bin" ,glib "bin") ; for glib-genmarshal
1394 ("libxslt" ,libxslt) ; for xsltproc
1395 ("perl" ,perl) ; for pod2man
1396 ("pkg-config" ,pkg-config)))
1397 ;; For tests.
1398 ;;("pam_wrapper" ,pam_wrapper)
1399 ;;("python-pycairo" ,python-pycairo)
1400 ;;("python-dbus" ,python-dbus)
1401 ;;("python-dbusmock" ,python-dbusmock)
1402 ;;("python-pygobject" ,python-pygobject)
1403 ;;("python-pypamtest" ,python-pypamtest)
1404 (inputs
1405 `(("dbus-glib" ,dbus-glib)
1406 ("elogind" ,elogind)
1407 ("libfprint" ,libfprint)
1408 ("linux-pam" ,linux-pam)
1409 ("polkit" ,polkit)
1410
1411 ;; XXX These are in libfprint's Requires.private. Meson refuses to grant
1412 ;; the ‘libfprint-2’ dependency if they are not provided here.
1413 ("gusb" ,gusb)
1414 ("nss" ,nss)
1415 ("pixman" ,pixman)))
1416 (home-page "https://fprint.freedesktop.org/")
1417 (synopsis "D-Bus daemon that exposes fingerprint reader functionality")
1418 (description
1419 "fprintd is a D-Bus daemon that offers functionality of libfprint, a
1420 library to access fingerprint readers, over the D-Bus interprocess
1421 communication bus. This daemon layer above libfprint solves problems related
1422 to applications simultaneously competing for fingerprint readers.")
1423 (license license:gpl2+)))
1424
1425 (define-public desktop-file-utils
1426 (package
1427 (name "desktop-file-utils")
1428 (version "0.24")
1429 (source (origin
1430 (method url-fetch)
1431 (uri (string-append "https://www.freedesktop.org/software/"
1432 "desktop-file-utils/releases/"
1433 "desktop-file-utils-" version ".tar.xz"))
1434 (sha256
1435 (base32
1436 "1nc3bwjdrpcrkbdmzvhckq0yngbcxspwj2n1r7jr3gmx1jk5vpm1"))))
1437 (build-system gnu-build-system)
1438 (native-inputs
1439 `(("pkg-config" ,pkg-config)))
1440 (inputs
1441 `(("glib" ,glib)))
1442 (home-page "https://www.freedesktop.org/wiki/Software/desktop-file-utils/")
1443 (synopsis "Utilities for working with desktop entries")
1444 (description
1445 "This package contains a few command line utilities for working with
1446 desktop entries:
1447
1448 desktop-file-validate: validates a desktop file and prints warnings/errors
1449 about desktop entry specification violations.
1450
1451 desktop-file-install: installs a desktop file to the applications directory,
1452 optionally munging it a bit in transit.
1453
1454 update-desktop-database: updates the database containing a cache of MIME types
1455 handled by desktop files.")
1456 (license license:gpl2+)))
1457
1458 (define-public xdg-user-dirs
1459 (package
1460 (name "xdg-user-dirs")
1461 (version "0.17")
1462 (source (origin
1463 (method url-fetch)
1464 (uri (string-append "http://user-dirs.freedesktop.org/releases/"
1465 name "-" version ".tar.gz"))
1466 (sha256
1467 (base32 "13216b8rfkzak5k6bvpx6jvqv3cnbgpijnjwj8a8d3kq4cl0a1ra"))))
1468 (build-system gnu-build-system)
1469 (native-inputs
1470 `(("gettext" ,gettext-minimal)
1471 ("docbook-xsl" ,docbook-xsl)
1472 ("docbook-xml" ,docbook-xml-4.3)
1473 ("xsltproc" ,libxslt)))
1474 (arguments
1475 `(#:phases
1476 (modify-phases %standard-phases
1477 (add-before 'build 'locate-catalog-files
1478 (lambda* (#:key inputs #:allow-other-keys)
1479 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
1480 "/xml/dtd/docbook"))
1481 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
1482 "/xml/xsl/docbook-xsl-"
1483 ,(package-version docbook-xsl))))
1484 (for-each (lambda (file)
1485 (substitute* file
1486 (("http://.*/docbookx\\.dtd")
1487 (string-append xmldoc "/docbookx.dtd"))))
1488 (find-files "man" "\\.xml$"))
1489 (substitute* "man/Makefile"
1490 (("http://.*/docbook\\.xsl")
1491 (string-append xsldoc "/manpages/docbook.xsl")))
1492 #t))))))
1493 (home-page "https://www.freedesktop.org/wiki/Software/xdg-user-dirs/")
1494 (synopsis "Tool to help manage \"well known\" user directories")
1495 (description "xdg-user-dirs is a tool to help manage \"well known\" user
1496 directories, such as the desktop folder or the music folder. It also handles
1497 localization (i.e. translation) of the file names. Designed to be
1498 automatically run when a user logs in, xdg-user-dirs can also be run
1499 manually by a user.")
1500 (license license:gpl2)))
1501
1502 (define-public perl-file-basedir
1503 (package
1504 (name "perl-file-basedir")
1505 (version "0.08")
1506 (source
1507 (origin
1508 (method url-fetch)
1509 (uri (string-append "mirror://cpan/authors/id/K/KI/KIMRYAN/"
1510 "File-BaseDir-" version ".tar.gz"))
1511 (sha256
1512 (base32
1513 "1qq5ag9zffx8zc5i9b4z03ar80pqj4drgk3vjdlyfapjwb9zqrf0"))))
1514 (build-system perl-build-system)
1515 (native-inputs
1516 `(("perl-module-build" ,perl-module-build)
1517 ("perl-file-which" ,perl-file-which)
1518 ("perl-test-pod" ,perl-test-pod)
1519 ("perl-test-pod-coverage" ,perl-test-pod-coverage)
1520 ("xdg-user-dirs" ,xdg-user-dirs)))
1521 (propagated-inputs
1522 `(("perl-ipc-system-simple" ,perl-ipc-system-simple)))
1523 (home-page "https://metacpan.org/release/File-BaseDir")
1524 (synopsis "Use the Freedesktop.org base directory specification")
1525 (description
1526 "@code{File::Basedir} can be used to find directories and files as
1527 specified by the Freedesktop.org Base Directory Specification. This
1528 specifications gives a mechanism to locate directories for configuration,
1529 application data and cache data.")
1530 (license license:perl-license)))
1531
1532 (define-public perl-file-desktopentry
1533 (package
1534 (name "perl-file-desktopentry")
1535 (version "0.22")
1536 (source
1537 (origin
1538 (method url-fetch)
1539 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
1540 "File-DesktopEntry-" version ".tar.gz"))
1541 (sha256
1542 (base32
1543 "1f1maqix2kbfg2rf008m7mqnvv6nvcf9y6pcgdv2kxp2vbih370n"))))
1544 (build-system perl-build-system)
1545 (native-inputs
1546 `(("perl-test-pod" ,perl-test-pod)
1547 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
1548 (propagated-inputs
1549 `(("perl-file-basedir" ,perl-file-basedir)
1550 ("perl-uri" ,perl-uri)))
1551 (home-page "https://metacpan.org/release/File-DesktopEntry")
1552 (synopsis "Handle @file{.desktop} files")
1553 (description
1554 "@code{File::DesktopEntry} parses @file{.desktop} files defined by the
1555 Freedesktop.org @dfn{Desktop Entry} specification. It can also run the
1556 applications define in those files.")
1557 (license license:perl-license)))
1558
1559 (define-public perl-file-mimeinfo
1560 (package
1561 (name "perl-file-mimeinfo")
1562 (version "0.29")
1563 (source
1564 (origin
1565 (method url-fetch)
1566 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
1567 "File-MimeInfo-" version ".tar.gz"))
1568 (sha256
1569 (base32
1570 "1sh8r6vczyz08zm8vfsjmkg6a165wch54akjdrd1vbifcmwjg5pi"))))
1571 (build-system perl-build-system)
1572 ;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
1573 ;; perl-test-tiny as native-inputs.
1574 (propagated-inputs
1575 `(("shared-mime-info" ,shared-mime-info)
1576 ("perl-file-desktopentry" ,perl-file-desktopentry)))
1577 (arguments
1578 ;; Some tests fail due to requiring the mimetype of perl files to be
1579 ;; text/plain when they are actually application/x-perl.
1580 `(#:tests? #f
1581 #:phases
1582 (modify-phases %standard-phases
1583 (add-after 'install 'wrap-programs
1584 (lambda* (#:key outputs #:allow-other-keys)
1585 (let ((out (assoc-ref outputs "out")))
1586 (for-each (lambda (prog)
1587 (wrap-program (string-append out "/bin/" prog)
1588 `("PERL5LIB" ":" prefix
1589 (,(string-append (getenv "PERL5LIB") ":" out
1590 "/lib/perl5/site_perl")))))
1591 '("mimeopen" "mimetype")))
1592 #t)))))
1593 (home-page "https://metacpan.org/release/File-MimeInfo")
1594 (synopsis "Determine file type from the file name")
1595 (description
1596 "@code{File::Mimeinfo} can be used to determine the MIME type of a file.
1597 It tries to implement the Freedesktop specification for a shared MIME
1598 database.
1599
1600 This package also contains two related utilities:
1601
1602 @itemize
1603 @item @command{mimetype} determines a file's MIME type;
1604 @item @command{mimeopen} opens files in an appropriate program according to
1605 their MIME type.
1606 @end itemize")
1607 (license license:perl-license)))
1608
1609 (define-public uchardet
1610 (package
1611 (name "uchardet")
1612 (version "0.0.6")
1613 (source
1614 (origin
1615 (method url-fetch)
1616 (uri (string-append "https://www.freedesktop.org/software/"
1617 name "/releases/" name "-" version ".tar.xz"))
1618 (sha256
1619 (base32 "0q9c02b6nmw41yfsiqsnphgc3f0yg3fj31wkccp47cmwvy634lc3"))))
1620 (build-system cmake-build-system)
1621 (home-page "https://www.freedesktop.org/wiki/Software/uchardet/")
1622 (synopsis "Encoding detector library")
1623 (description "uchardet is an encoding detector library, which takes a
1624 sequence of bytes in an unknown character encoding without any additional
1625 information, and attempts to determine the encoding of the text. Returned
1626 encoding names are iconv-compatible.")
1627
1628 ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
1629 ;; combination is GPL 2.0+.
1630 (license license:gpl2+)))
1631
1632 (define-public udiskie
1633 (package
1634 (name "udiskie")
1635 (version "2.1.0")
1636 (source
1637 (origin
1638 (method url-fetch)
1639 (uri (pypi-uri "udiskie" version))
1640 (sha256
1641 (base32
1642 "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz"))
1643 ;; Remove support for the libappindicator library of the
1644 ;; Unity desktop environment which is not in Guix.
1645 (patches (search-patches "udiskie-no-appindicator.patch"))))
1646 (build-system python-build-system)
1647 (native-inputs
1648 `(("asciidoc" ,asciidoc)
1649 ("gettext" ,gettext-minimal)
1650 ("gobject-introspection" ,gobject-introspection)))
1651 (inputs
1652 `(("gobject-introspection" ,gobject-introspection)
1653 ("gtk+" ,gtk+)
1654 ("libnotify" ,libnotify)
1655 ("udisks" ,udisks)))
1656 (propagated-inputs
1657 `(("python-docopt" ,python-docopt)
1658 ("python-pygobject" ,python-pygobject)
1659 ("python-keyutils" ,python-keyutils)
1660 ("python-pyxdg" ,python-pyxdg)
1661 ("python-pyyaml" ,python-pyyaml)))
1662 (arguments
1663 `(#:phases
1664 (modify-phases %standard-phases
1665 (add-after 'install 'wrap-gi-typelib
1666 (lambda* (#:key outputs #:allow-other-keys)
1667 (let ((out (assoc-ref outputs "out"))
1668 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
1669 (wrap-program (string-append out "/bin/udiskie")
1670 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
1671 #t)))))
1672 (home-page "https://github.com/coldfix/udiskie")
1673 (synopsis "Automounter for removable media")
1674 (description
1675 "The @command{udiskie} program is a udisks2 front-end that
1676 manages removable media such as CDs or flash drives from userspace.
1677
1678 Its features include:
1679
1680 @itemize
1681 @item automount removable media,
1682 @item notifications,
1683 @item tray icon,
1684 @item command line tools for manual (un)mounting,
1685 @item LUKS encrypted devices,
1686 @item unlocking with keyfiles,
1687 @item loop devices (mounting ISO archives),
1688 @item password caching.
1689 @end itemize
1690 ")
1691 (license license:expat)))
1692
1693 (define-public plymouth
1694 (package
1695 (name "plymouth")
1696 (version "0.9.4")
1697 (source
1698 (origin
1699 (method url-fetch)
1700 (uri (string-append "https://www.freedesktop.org/software/"
1701 "plymouth/releases/" name "-" version ".tar.xz"))
1702 (sha256
1703 (base32
1704 "0l8kg7b2vfxgz9gnrn0v2w4jvysj2cirp0nxads5sy05397pl6aa"))))
1705 (build-system gnu-build-system)
1706 (arguments
1707 `(#:configure-flags
1708 (list (string-append "--with-logo="
1709 "/etc/plymouth/logo.png")
1710 (string-append "--with-background-color="
1711 "0x00ff00")
1712 (string-append "--with-background-start-color-stop="
1713 "0xff0000")
1714 (string-append "--with-background-end-color-stop="
1715 "0x0000ff")
1716 "--localstatedir=/var"
1717 "--with-boot-tty=/dev/console"
1718 "--without-system-root-install"
1719 "--without-rhgb-compat-link"
1720 "--enable-drm"
1721 "--disable-systemd-integration"
1722 ;; Disable GTK to dramatically reduce the closure
1723 ;; size from ~800 MiB to a little more than 200 MiB
1724 "--disable-gtk")
1725 #:phases
1726 (modify-phases %standard-phases
1727 (add-after 'unpack 'make-reproducible
1728 (lambda _
1729 (substitute* "src/main.c"
1730 (("__DATE__") "\"guix\""))
1731 #t))
1732 (add-before 'configure 'fix-docbook
1733 (lambda* (#:key inputs #:allow-other-keys)
1734 (substitute* "docs/Makefile.in"
1735 (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
1736 (string-append (assoc-ref inputs "docbook-xsl")
1737 "/xml/xsl/docbook-xsl-"
1738 ,(package-version docbook-xsl)
1739 "/manpages/docbook.xsl")))
1740 (setenv "XML_CATALOG_FILES"
1741 (string-append (assoc-ref inputs "docbook-xml")
1742 "/xml/dtd/docbook/catalog.xml"))
1743 #t)))))
1744 (inputs
1745 `(("glib" ,glib)
1746 ("pango" ,pango)
1747 ("libdrm" ,libdrm)
1748 ("libpng" ,libpng)
1749 ("eudev" ,eudev)))
1750 (native-inputs
1751 `(("pkg-config" ,pkg-config)
1752 ("libxslt" ,libxslt)
1753 ("docbook-xsl" ,docbook-xsl)
1754 ("docbook-xml" ,docbook-xml)))
1755 (synopsis "Graphical boot animation (splash) and logger")
1756 (home-page "https://www.freedesktop.org/wiki/Software/Plymouth/")
1757 (description
1758 "Plymouth is an application that runs very early in the boot process and
1759 that provides a graphical boot animation while the boot process happens in the
1760 background. You are not supposed to install this on your own, it is only
1761 useful with system integration.")
1762 (license license:gpl2+)))