gnu: libinput: Update to 1.15.5.
[jackhill/guix/guix.git] / gnu / packages / freedesktop.scm
CommitLineData
0b0e11a9
AE
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
dac354fe 3;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
e76008db 4;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
aff0cce9 5;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
15dc8ed5 6;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
177b4255 7;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
959a7d73 8;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
3c8ba11a 9;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
5b9bdeb5 10;;; Copyright © 2017 Nikita <nikita@n0.is>
d4040f6e 11;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
20c87138 12;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
a6037072 13;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
ad64b09d 14;;; Copyright © 2017, 2020 Brendan Tildesley <mail@brendan.scot>
239d3e9c 15;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
4715f92e 16;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
4163f246 17;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
748ca12f 18;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
dc4fae11 19;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
2e4bb893 20;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
c9aadd07 21;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
5e2750fb 22;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
0b0e11a9
AE
23;;;
24;;; This file is part of GNU Guix.
25;;;
26;;; GNU Guix is free software; you can redistribute it and/or modify it
27;;; under the terms of the GNU General Public License as published by
28;;; the Free Software Foundation; either version 3 of the License, or (at
29;;; your option) any later version.
30;;;
31;;; GNU Guix is distributed in the hope that it will be useful, but
32;;; WITHOUT ANY WARRANTY; without even the implied warranty of
33;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34;;; GNU General Public License for more details.
35;;;
36;;; You should have received a copy of the GNU General Public License
37;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
38
39(define-module (gnu packages freedesktop)
366553e4 40 #:use-module ((guix licenses) #:prefix license:)
285c091e 41 #:use-module (guix utils)
0b0e11a9
AE
42 #:use-module (guix packages)
43 #:use-module (guix download)
366553e4 44 #:use-module (guix git-download)
1f2e0601 45 #:use-module (guix build-system cmake)
dac354fe 46 #:use-module (guix build-system gnu)
285c091e 47 #:use-module (guix build-system meson)
b32596ec 48 #:use-module (guix build-system perl)
e8444b26 49 #:use-module (guix build-system python)
d4040f6e 50 #:use-module (gnu packages)
73bb984e
EF
51 #:use-module (gnu packages acl)
52 #:use-module (gnu packages admin)
366553e4 53 #:use-module (gnu packages autotools)
2e4bb893 54 #:use-module (gnu packages base)
fe4e0b0a 55 #:use-module (gnu packages bash)
73bb984e 56 #:use-module (gnu packages boost)
ac257f12 57 #:use-module (gnu packages check)
73bb984e 58 #:use-module (gnu packages compression)
03800de1 59 #:use-module (gnu packages cryptsetup)
03800de1 60 #:use-module (gnu packages disk)
73bb984e
EF
61 #:use-module (gnu packages docbook)
62 #:use-module (gnu packages documentation)
2e4bb893 63 #:use-module (gnu packages gawk)
366553e4 64 #:use-module (gnu packages gettext)
23635b2e 65 #:use-module (gnu packages ghostscript)
24e051cb 66 #:use-module (gnu packages gl)
73bb984e
EF
67 #:use-module (gnu packages glib) ;intltool
68 #:use-module (gnu packages gnome)
366553e4 69 #:use-module (gnu packages gperf)
55ba649d 70 #:use-module (gnu packages graphviz)
e6823279 71 #:use-module (gnu packages gtk)
23635b2e 72 #:use-module (gnu packages image)
171ae35c 73 #:use-module (gnu packages libffi)
24e051cb 74 #:use-module (gnu packages libunwind)
dfb01bae 75 #:use-module (gnu packages libusb)
73bb984e 76 #:use-module (gnu packages linux)
ad64b09d 77 #:use-module (gnu packages man)
73bb984e 78 #:use-module (gnu packages m4)
aff0cce9 79 #:use-module (gnu packages nss)
825cebdb
BT
80 #:use-module (gnu packages perl)
81 #:use-module (gnu packages perl-check)
73bb984e 82 #:use-module (gnu packages pkg-config)
5d46c8b4 83 #:use-module (gnu packages polkit)
73bb984e 84 #:use-module (gnu packages python)
d29d04c9 85 #:use-module (gnu packages python-crypto)
44d10b1f 86 #:use-module (gnu packages python-xyz)
cd0322a3 87 #:use-module (gnu packages sqlite)
285c091e 88 #:use-module (gnu packages valgrind)
23635b2e 89 #:use-module (gnu packages video)
fa8a585e 90 #:use-module (gnu packages w3m)
825cebdb 91 #:use-module (gnu packages web)
73bb984e 92 #:use-module (gnu packages xdisorg)
5d46c8b4 93 #:use-module (gnu packages xml)
285c091e
MB
94 #:use-module (gnu packages xorg)
95 #:use-module (srfi srfi-1))
0b0e11a9
AE
96
97(define-public xdg-utils
98 (package
99 (name "xdg-utils")
4d0f463d 100 (version "1.1.3")
0b0e11a9
AE
101 (source
102 (origin
103 (method url-fetch)
104 (uri (string-append
5cc3096c 105 "https://portland.freedesktop.org/download/xdg-utils-"
fa8a585e 106 version ".tar.gz"))
0b0e11a9
AE
107 (sha256
108 (base32
4d0f463d 109 "1nai806smz3zcb2l5iny4x7li0fak0rzmjg6vlyhdqm8z25b166p"))))
0b0e11a9 110 (build-system gnu-build-system)
fa8a585e
MB
111 (native-inputs
112 `(("docbook-xsl" ,docbook-xsl)
113 ("docbook-xml" ,docbook-xml-4.1.2)
114 ("libxslt" ,libxslt)
115 ("w3m" ,w3m)
116 ("xmlto" ,xmlto)))
2e4bb893
JK
117 (inputs
118 `(("awk" ,gawk)
119 ("coreutils" ,coreutils)
120 ("grep" ,grep)
121 ("inetutils" ,inetutils) ; xdg-screensaver uses `hostname'
122 ("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
123 ("sed" ,sed)
04c35737 124 ("xprop" ,xprop) ; for Xfce detecting
b3546174 125 ("xset" ,xset))) ; for xdg-screensaver
0b0e11a9 126 (arguments
fa8a585e 127 `(#:tests? #f ; no check target
2e4bb893
JK
128 #:modules ((srfi srfi-26)
129 ,@%gnu-build-system-modules)
fa8a585e
MB
130 #:phases
131 (modify-phases %standard-phases
132 (add-after 'unpack 'patch-hardcoded-paths
133 (lambda _
134 (substitute* "scripts/xdg-mime.in"
135 (("/usr/bin/file") (which "file")))
136 (substitute* "scripts/xdg-open.in"
137 (("/usr/bin/printf") (which "printf")))
138 #t))
139 (add-before 'build 'locate-catalog-files
140 (lambda* (#:key inputs #:allow-other-keys)
141 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
142 "/xml/dtd/docbook"))
143 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
144 "/xml/xsl/docbook-xsl-"
145 ,(package-version docbook-xsl))))
146 (for-each (lambda (file)
147 (substitute* file
148 (("http://.*/docbookx\\.dtd")
149 (string-append xmldoc "/docbookx.dtd"))))
150 (find-files "scripts/desc" "\\.xml$"))
151 (substitute* "scripts/Makefile"
152 ;; Apparently `xmlto' does not bother to looks up the stylesheets
153 ;; specified in the XML, unlike the above substitition. Instead it
154 ;; uses a hard-coded URL. Work around it here, but if this is
155 ;; common perhaps we should hardcode this path in xmlto itself.
156 (("\\$\\(XMLTO\\) man")
157 (string-append "$(XMLTO) -x " xsldoc
158 "/manpages/docbook.xsl man")))
159 (setenv "STYLESHEET"
160 (string-append xsldoc "/html/docbook.xsl"))
2e4bb893
JK
161 #t)))
162 (add-after 'install 'wrap-executables
163 (lambda* (#:key inputs outputs #:allow-other-keys)
164 (let ((out (assoc-ref outputs "out")))
165 (with-directory-excursion (string-append out "/bin")
166 (let ((path-ext
167 (map (cute string-append <> "/bin")
168 (cons out
169 (map (cute assoc-ref inputs <>)
170 '("awk" "coreutils" "grep" "inetutils"
171 "perl-file-mimeinfo" "sed" "xprop"
172 "xset"))))))
173 (for-each (cute wrap-program <>
174 `("PATH" ":" prefix ,path-ext))
175 (find-files "."))))
fa8a585e
MB
176 #t))))))
177 (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
0b0e11a9
AE
178 (synopsis "Freedesktop.org scripts for desktop integration")
179 (description "The xdg-utils package is a set of simple scripts that
180provide basic desktop integration functions in the framework of the
181freedesktop.org project.")
366553e4 182 (license license:expat)))
dac354fe
SB
183
184(define-public libinput
56451c78 185 ;; Updating this will rebuild over 700 packages through libinput-minimal.
dac354fe
SB
186 (package
187 (name "libinput")
f020f8c4 188 (version "1.15.5")
dac354fe
SB
189 (source (origin
190 (method url-fetch)
521b1d88 191 (uri (string-append "https://freedesktop.org/software/libinput/"
b4ed7c3e 192 "libinput-" version ".tar.xz"))
dac354fe
SB
193 (sha256
194 (base32
f020f8c4 195 "15ww4jl3lcxyi8m8idg8canklbqv729gnwpkz7r98c1w8a7zq3m9"))))
285c091e
MB
196 (build-system meson-build-system)
197 (arguments
794c773d
MB
198 `(#:configure-flags '("-Ddocumentation=false")
199
200 ;; XXX: Using 'debug' or 'debugoptimized' pulls in an additional test that
201 ;; hangs, and the comments around it suggests that we should be using this
202 ;; Meson target anyway.
203 #:build-type "release"))
dac354fe 204 (native-inputs
285c091e 205 `(("check" ,check)
411c27e2 206 ("pkg-config" ,pkg-config)))
c6deabf9
MB
207 (inputs
208 `(("cairo" ,cairo)
209 ("glib" ,glib)
210 ("gtk+" ,gtk+)
7ca37da8 211 ("libevdev" ,libevdev)
285c091e
MB
212 ("libwacom" ,libwacom)
213 ("mtdev" ,mtdev)))
0dbb6c2f
MB
214 (propagated-inputs
215 `(;; libinput.h requires <libudev.h>, so propagate it.
216 ("udev" ,eudev)))
6aabc87d 217 (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
dac354fe
SB
218 (synopsis "Input devices handling library")
219 (description
220 "Libinput is a library to handle input devices for display servers and
221other applications that need to directly deal with input devices.")
366553e4
RW
222 (license license:x11)))
223
c38fb02e
DC
224(define-public libinput-minimal
225 (package (inherit libinput)
226 (name "libinput-minimal")
c6deabf9
MB
227 (inputs
228 (fold alist-delete (package-inputs libinput)
229 '("cairo" "glib" "gtk+" "libwacom")))
c38fb02e 230 (arguments
285c091e
MB
231 (substitute-keyword-arguments (package-arguments libinput)
232 ((#:configure-flags flags ''())
233 `(cons* "-Dlibwacom=false"
234 "-Ddebug-gui=false" ;requires gtk+@3
235 ,flags))))))
c38fb02e 236
60a5617b
AK
237(define-public libxdg-basedir
238 (package
239 (name "libxdg-basedir")
240 (version "1.2.0")
241 (source (origin
959a7d73
EF
242 (method git-fetch)
243 (uri (git-reference
244 (url "https://github.com/devnev/libxdg-basedir")
245 (commit (string-append name "-" version))))
246 (file-name (git-file-name name version))
60a5617b
AK
247 (sha256
248 (base32
959a7d73 249 "12yz53ny5bi2dii3zwcr6b9ay0yy1g1xv13jg097k7gjligcq11m"))))
60a5617b
AK
250 (build-system gnu-build-system)
251 (arguments
252 '(#:phases
253 (modify-phases %standard-phases
15dc8ed5 254 (add-after 'unpack 'patch-autogen
60a5617b
AK
255 (lambda _
256 ;; Run 'configure' in its own phase, not now.
257 (substitute* "autogen.sh"
258 (("^.*\\./configure.*") ""))
15dc8ed5 259 #t)))))
60a5617b
AK
260 (native-inputs
261 `(("autoconf" ,autoconf)
262 ("automake" ,automake)
263 ("libtool" ,libtool)))
264 (home-page "https://github.com/devnev/libxdg-basedir")
265 (synopsis "Implementation of the XDG Base Directory specification")
266 (description
267 "libxdg-basedir is a C library providing some functions to use with
268the freedesktop.org XDG Base Directory specification.")
269 (license license:expat)))
270
366553e4 271(define-public elogind
5c91962a
AW
272 (package
273 (name "elogind")
c0d1f923 274 (version "243.4")
5c91962a 275 (source (origin
1f9b1d3d
SS
276 (method git-fetch)
277 (uri (git-reference
278 (url "https://github.com/elogind/elogind")
279 (commit (string-append "v" version))))
280 (file-name (git-file-name name version))
5c91962a
AW
281 (sha256
282 (base32
c0d1f923 283 "141frvgyk4fafcxsix94qc0d9ffrwksld8lqq4hq6xsgjlvv0mrs"))))
4163f246 284 (build-system meson-build-system)
5c91962a 285 (arguments
4163f246
SS
286 `(#:configure-flags
287 (let* ((out (assoc-ref %outputs "out"))
288 (sysconf (string-append out "/etc"))
289 (libexec (string-append out "/libexec/elogind"))
290 (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
c0d1f923 291 (shadow (assoc-ref %build-inputs "shadow"))
4163f246
SS
292 (shepherd (assoc-ref %build-inputs "shepherd"))
293 (halt-path (string-append shepherd "/sbin/halt"))
294 (kexec-path "") ;not available in Guix yet
c0d1f923 295 (nologin-path (string-append shadow "/sbin/nologin"))
4163f246
SS
296 (poweroff-path (string-append shepherd "/sbin/shutdown"))
297 (reboot-path (string-append shepherd "/sbin/reboot")))
298 (list
299 (string-append "-Drootprefix=" out)
300 (string-append "-Dsysconfdir=" sysconf)
301 (string-append "-Drootlibexecdir=" libexec)
302 (string-append "-Ddbuspolicydir=" dbuspolicy)
303 (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
304 (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
305 (string-append "-Dhalt-path=" halt-path)
306 (string-append "-Dkexec-path=" kexec-path)
307 (string-append "-Dpoweroff-path=" poweroff-path)
308 (string-append "-Dreboot-path=" reboot-path)
c0d1f923 309 (string-append "-Dnologin-path=" nologin-path)
4163f246 310 "-Dcgroup-controller=elogind"
c0d1f923 311 "-Dman=true"
4163f246 312 ;; Disable some tests.
4163f246 313 "-Dslow-tests=false"))
fa67d565
RW
314 #:phases
315 (modify-phases %standard-phases
4163f246 316 (add-after 'unpack 'fix-pkttyagent-path
fa67d565 317 (lambda _
4163f246
SS
318 (substitute* "meson.build"
319 (("join_paths\\(bindir, 'pkttyagent'\\)")
320 "'\"/run/current-system/profile/bin/pkttyagent\"'"))
3f54fd1e 321 #t))
c0d1f923
MB
322 (add-after 'unpack 'adjust-dbus-socket-address
323 (lambda _
324 ;; Look for the D-Bus socket in /var/run instead of /run. Remove
325 ;; this for versions > 243.4.
326 (substitute* "src/libelogind/sd-bus/bus-internal.h"
327 (("=/run/dbus/system_bus_socket")
328 "=/var/run/dbus/system_bus_socket"))
329 #t))
20c87138
MB
330 (add-after 'unpack 'adjust-tests
331 (lambda _
332 ;; This test tries to copy some bytes from /usr/lib/os-release,
333 ;; which does not exist in the build container. Choose something
334 ;; more likely to be available.
335 (substitute* "src/test/test-copy.c"
336 (("/usr/lib/os-release")
337 "/etc/passwd"))
338 ;; Use a shebang that works in the build container.
339 (substitute* "src/test/test-exec-util.c"
340 (("#!/bin/sh")
341 (string-append "#!" (which "sh"))))
342 ;; Do not look for files or directories that do not exist.
343 (substitute* "src/test/test-fs-util.c"
344 (("usr") "etc")
345 (("/etc/machine-id") "/etc/passwd"))
346 ;; FIXME: Why is sd_id128_get_machine_app_specific failing.
347 ;; Disable for now by hooking into the kernel support check.
348 (substitute* "src/test/test-id128.c"
349 (("if \\(r == -EOPNOTSUPP\\)")
350 "if (1)"))
351 ;; This test expects that /sys is available.
352 (substitute* "src/test/test-mountpoint-util.c"
353 (("assert_se\\(path_is_mount_point\\(\"/sys.*")
354 ""))
355 ;; /bin/sh does not exist in the build container.
356 (substitute* "src/test/test-path-util.c"
357 (("/bin/sh") (which "sh")))
358 ;; This test uses sd_device_new_from_syspath to allocate a
359 ;; loopback device, but that fails because /sys is unavailable.
360 (substitute* "src/libelogind/sd-device/test-sd-device-thread.c"
361 ((".*sd_device_new_from_syspath.*/sys/class/net/lo.*")
362 "return 77;"))
363 ;; Most of these tests require cgroups or an actual live
364 ;; logind system so that it can flicker the monitor, etc.
365 ;; Just skip it until a more narrow selection can be made.
366 (substitute* "src/libelogind/sd-login/test-login.c"
367 (("r = sd_pid_get_slice.*")
368 "return 77;"))
369 #t))
4163f246 370 (add-after 'unpack 'change-pid-file-path
f8446df6 371 (lambda _
4163f246
SS
372 (substitute* "src/login/elogind.c"
373 (("\"/run/elogind.pid\"") "\"/run/systemd/elogind.pid\""))
f8446df6 374 #t)))))
5c91962a 375 (native-inputs
4163f246
SS
376 `(("docbook-xml" ,docbook-xml)
377 ("docbook-xml-4.2" ,docbook-xml-4.2)
5c91962a 378 ("docbook-xsl" ,docbook-xsl)
4163f246
SS
379 ("gettext" ,gettext-minimal)
380 ("gperf" ,gperf)
5c91962a 381 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
4163f246 382 ("m4" ,m4)
b3546174 383 ("pkg-config" ,pkg-config)
4163f246
SS
384 ("python" ,python)
385 ("xsltproc" ,libxslt)))
5c91962a
AW
386 (inputs
387 `(("linux-pam" ,linux-pam)
5c91962a 388 ("libcap" ,libcap)
c0d1f923 389 ("shadow" ,shadow) ;for 'nologin'
d312a832 390 ("shepherd" ,shepherd) ;for 'halt' and 'reboot', invoked
1d19bc11 391 ;when pressing the power button
5c91962a 392 ("dbus" ,dbus)
95d7d0c5
CM
393 ("eudev" ,eudev)
394 ("acl" ,acl))) ;to add individual users to ACLs on /dev nodes
fa67d565 395 (home-page "https://github.com/elogind/elogind")
5c91962a
AW
396 (synopsis "User, seat, and session management service")
397 (description "Elogind is the systemd project's \"logind\" service,
366553e4
RW
398extracted out as a separate project. Elogind integrates with PAM to provide
399the org.freedesktop.login1 interface over the system bus, allowing other parts
400of a the system to know what users are logged in, and where.")
5c91962a 401 (license license:lgpl2.1+)))
e8444b26 402
f63861b5
LC
403(define-public localed
404 ;; XXX: This package is extracted from systemd but we retain so little of it
405 ;; that it would make more sense to maintain a fork of the bits we need.
406 (package
407 (name "localed")
408 (version "241")
409 (source (origin
410 (method git-fetch)
411 (uri (git-reference
412 (url "https://github.com/systemd/systemd")
413 (commit (string-append "v" version))))
414 (sha256
415 (base32
416 "0sy91flzbhpq58k7v0294pa2gxpr0bk27rcnxlbhk2fi6nc51d28"))
417 (file-name (git-file-name name version))
418 (modules '((guix build utils)))
419 (snippet
420 '(begin
421 ;; Connect to the right location for our D-Bus daemon.
422 (substitute* '("src/basic/def.h"
423 "src/libsystemd/sd-bus/sd-bus.c"
424 "src/stdio-bridge/stdio-bridge.c")
425 (("/run/dbus/system_bus_socket")
426 "/var/run/dbus/system_bus_socket"))
427
428 ;; Don't insist on having systemd as PID 1 (otherwise
429 ;; 'localectl' would exit without doing anything.)
430 (substitute* "src/shared/bus-util.c"
431 (("sd_booted\\(\\)")
432 "(1)"))
433 #t))
434 (patches (search-patches "localed-xorg-keyboard.patch"))))
435 (build-system meson-build-system)
436 (arguments
437 ;; Try to build as little as possible (list of components taken from the
438 ;; top-level 'meson.build' file.)
439 (let ((components '("utmp"
440 "hibernate"
441 "environment-d"
442 "binfmt"
443 "coredump"
444 "resolve"
445 "logind"
446 "hostnamed"
447 "localed"
448 "machined"
449 "portabled"
450 "networkd"
451 "timedated"
452 "timesyncd"
453 "firstboot"
454 "randomseed"
455 "backlight"
456 "vconsole"
457 "quotacheck"
458 "sysusers"
459 "tmpfiles"
460 "hwdb"
461 "rfkill"
462 "ldconfig"
463 "efi"
464 "tpm"
465 "ima"
466 "smack"
467 "gshadow"
468 "idn"
469 "nss-myhostname"
470 "nss-systemd")))
471 `(#:configure-flags ',(map (lambda (component)
472 (string-append "-D" component "=false"))
473 (delete "localed" components))
474
475 ;; It doesn't make sense to test all of systemd.
476 #:tests? #f
477
478 #:phases (modify-phases %standard-phases
479 (add-after 'unpack 'set-xkeyboard-config-file-name
480 (lambda* (#:key inputs #:allow-other-keys)
481 ;; Set the file name to xkeyboard-config and kbd.
482 ;; This is used by 'localectl list-x11-keymap-layouts'
483 ;; and similar functions.
484 (let ((xkb (assoc-ref inputs "xkeyboard-config"))
485 (kbd (assoc-ref inputs "kbd")))
486 (substitute* "src/locale/localectl.c"
487 (("/usr/share/X11/xkb/rules")
488 (string-append xkb "/share/X11/xkb/rules")))
489 (substitute* "src/basic/def.h"
490 (("/usr/share/keymaps")
491 (string-append kbd "/share/keymaps")))
492 #t)))
493 (replace 'install
494 (lambda* (#:key outputs #:allow-other-keys)
495 ;; Install 'localed', the D-Bus and polkit files, and
496 ;; 'localectl'.
497 (let* ((out (assoc-ref outputs "out"))
498 (libexec (string-append out "/libexec/localed"))
499 (bin (string-append out "/bin"))
500 (lib (string-append out "/lib"))
501 (dbus (string-append out
502 "/share/dbus-1/system-services"))
503 (conf (string-append out
504 "/etc/dbus-1/system.d/"))
505 (polkit (string-append out
506 "/share/polkit-1/actions"))
507 (data (string-append out "/share/systemd")))
508 (define (source-file regexp)
509 (car (find-files ".." regexp)))
510
511 (mkdir-p libexec)
512 (copy-file "systemd-localed"
513 (string-append libexec "/localed"))
514 (install-file "localectl" bin)
515
516 (let ((service-file (source-file
517 "\\.locale1\\.service$")))
518 (substitute* service-file
519 (("^Exec=.*$")
520 (string-append "Exec=" libexec "/localed\n")))
521 (install-file service-file dbus))
522 (install-file (source-file "\\.locale1\\.policy$")
523 polkit)
524 (install-file (source-file "\\.locale1\\.conf$")
525 conf)
526 (for-each (lambda (file)
527 (install-file file lib))
528 (find-files "src/shared"
529 "libsystemd-shared.*\\.so"))
530
531 (for-each (lambda (map)
532 (install-file map data))
533 (find-files ".." "^(kbd-model-map|language-fallback-map)$"))
534 #t)))))))
535 (native-inputs (package-native-inputs elogind))
bb93042c 536 (inputs `(("libmount" ,util-linux "lib")
f63861b5
LC
537 ("xkeyboard-config" ,xkeyboard-config)
538 ("kbd" ,kbd)
539 ,@(package-inputs elogind)))
540 (home-page "https://www.freedesktop.org/wiki/Software/systemd/localed/")
541 (synopsis "Control the system locale and keyboard layout")
542 (description
543 "Localed is a tiny daemon that can be used to control the system locale
544and keyboard mapping from user programs. It is used among other things by the
545GNOME Shell. The @command{localectl} command-line tool allows you to interact
546with localed. This package is extracted from the broader systemd package.")
547 (license license:lgpl2.1+)))
548
fe4e0b0a
CB
549(define-public packagekit
550 (package
551 (name "packagekit")
ba0b9d41 552 (version "1.1.13")
fe4e0b0a
CB
553 (source (origin
554 (method url-fetch)
555 (uri (string-append
556 "https://www.freedesktop.org/software/"
557 "PackageKit/releases/"
558 "PackageKit-" version ".tar.xz"))
559 (sha256
560 (base32
ba0b9d41 561 "1dr1laic65ld95abp2yxbwvijnngh0dwyb1x49x4wjm5rhq43dl8"))))
fe4e0b0a
CB
562 (build-system gnu-build-system)
563 (arguments
564 `(#:tests? #f
565 #:make-flags (list (string-append "BASH_COMPLETIONS_DIR="
566 %output "/etc/bash_completion.d"))
567 #:configure-flags
568 '("--disable-systemd")))
569 (native-inputs
570 `(("intltool" ,intltool)
571 ("pkg-config" ,pkg-config)
572 ("python" ,python-wrapper)
573 ("glib:bin" ,glib "bin")))
574 (inputs
575 `(("glib" ,glib)
c695fb76 576 ("bash-completion" ,bash-completion)
fe4e0b0a
CB
577 ("polkit" ,polkit)))
578 (propagated-inputs
579 `(("sqlite" ,sqlite)))
580 (home-page "https://www.freedesktop.org/software/PackageKit/")
581 (synopsis "API for package management, through D-Bus")
582 (description
583 "PackageKit provides a way of performing package management tasks,
584e.g. updating, removing and installing software. Through supporting many
585backends, PackageKit can perform these tasks using the appropriate package
586manager for the current system.")
587 (license license:gpl2+)))
588
e8444b26
RW
589(define-public python-pyxdg
590 (package
591 (name "python-pyxdg")
592 (version "0.25")
593 (source
594 (origin
595 (method url-fetch)
8f60e533 596 (uri (pypi-uri "pyxdg" version))
e8444b26
RW
597 (sha256
598 (base32
599 "179767h8m634ydlm4v8lnz01ba42gckfp684id764zaip7h87s41"))))
600 (build-system python-build-system)
601 (arguments
602 '(#:phases
dc1d3cde
KK
603 (modify-phases %standard-phases
604 (replace 'check
605 (lambda* (#:key inputs #:allow-other-keys)
606 (setenv "XDG_DATA_DIRS"
607 (string-append (assoc-ref inputs "shared-mime-info")
608 "/share/"))
609 (substitute* "test/test-icon.py"
610 (("/usr/share/icons/hicolor/index.theme")
611 (string-append (assoc-ref inputs "hicolor-icon-theme")
ffcff272
MB
612 "/share/icons/hicolor/index.theme"))
613 ;; FIXME: This test fails because the theme contains the unknown
614 ;; key "Scale".
615 (("theme.validate\\(\\)") "#"))
e8444b26 616
dc1d3cde
KK
617 ;; One test fails with:
618 ;; AssertionError: 'x-apple-ios-png' != 'png'
619 (substitute* "test/test-mime.py"
620 (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
10ee03c1 621 (invoke "nosetests" "-v"))))))
e8444b26 622 (native-inputs
10ee03c1
TGR
623 ;; For tests.
624 `(("shared-mime-info" ,shared-mime-info)
625 ("hicolor-icon-theme" ,hicolor-icon-theme)
f3b98f4f 626 ("python-nose" ,python-nose)))
57e7d748 627 (home-page "https://www.freedesktop.org/wiki/Software/pyxdg")
e8444b26
RW
628 (synopsis "Implementations of freedesktop.org standards in Python")
629 (description
630 "PyXDG is a collection of implementations of freedesktop.org standards in
e881752c 631Python.")
e8444b26
RW
632 (license license:lgpl2.0)))
633
634(define-public python2-pyxdg
635 (package-with-python2 python-pyxdg))
6178d947
SB
636
637(define-public wayland
638 (package
639 (name "wayland")
a6037072 640 (version "1.17.0")
6178d947
SB
641 (source (origin
642 (method url-fetch)
5cc3096c 643 (uri (string-append "https://wayland.freedesktop.org/releases/"
6178d947
SB
644 name "-" version ".tar.xz"))
645 (sha256
646 (base32
a6037072 647 "194ibzwpdcn6fvk4xngr4bf5axpciwg2bj82fdvz88kfmjw13akj"))))
6178d947 648 (build-system gnu-build-system)
28a96f2a 649 (arguments
62a91d2e 650 `(#:parallel-tests? #f))
6178d947
SB
651 (native-inputs
652 `(("doxygen" ,doxygen)
55ba649d 653 ("graphviz" ,graphviz)
6178d947
SB
654 ("pkg-config" ,pkg-config)
655 ("xmlto" ,xmlto)
656 ("xsltproc" ,libxslt)))
657 (inputs
658 `(("docbook-xml" ,docbook-xml)
659 ("docbook-xsl" ,docbook-xsl)
660 ("expat" ,expat)
661 ("libffi" ,libffi)
662 ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
9012e118 663 (home-page "https://wayland.freedesktop.org/")
6178d947
SB
664 (synopsis "Display server protocol")
665 (description
666 "Wayland is a protocol for a compositor to talk to its clients as well as
667a C library implementation of that protocol. The compositor can be a standalone
668display server running on Linux kernel modesetting and evdev input devices, an X
669application, or a wayland client itself. The clients can be traditional
670applications, X servers (rootless or fullscreen) or other display servers.")
671 (license license:x11)))
177b4255 672
eca4c011
DC
673(define-public wayland-protocols
674 (package
675 (name "wayland-protocols")
5ceb1a3d 676 (version "1.18")
eca4c011
DC
677 (source (origin
678 (method url-fetch)
679 (uri (string-append
680 "https://wayland.freedesktop.org/releases/"
681 "wayland-protocols-" version ".tar.xz"))
682 (sha256
683 (base32
5ceb1a3d 684 "1cvl93h83ymbfhb567jv5gzyq08181w7c46rsw4xqqqpcvkvfwrx"))))
eca4c011
DC
685 (build-system gnu-build-system)
686 (inputs
687 `(("wayland" ,wayland)))
688 (native-inputs
689 `(("pkg-config" ,pkg-config)))
690 (synopsis "Wayland protocols")
691 (description "This package contains XML definitions of the Wayland protocols.")
692 (home-page "https://wayland.freedesktop.org")
693 (license license:expat)))
694
1f2e0601
MB
695(define-public waylandpp
696 (package
697 (name "waylandpp")
bdc801e1 698 (version "0.2.7")
1f2e0601
MB
699 (home-page "https://github.com/NilsBrause/waylandpp")
700 (source (origin
701 (method git-fetch)
702 (uri (git-reference (url home-page) (commit version)))
f1d4d79f 703 (file-name (git-file-name name version))
1f2e0601
MB
704 (sha256
705 (base32
bdc801e1 706 "1r4m0xhvwpcqxrqvp3hz1bzlkxqj2jiymd5r6hj8xjzz536hyprz"))))
1f2e0601
MB
707 (build-system cmake-build-system)
708 (arguments
709 `(#:tests? #f)) ;no tests
710 (native-inputs
711 `(("pkg-config" ,pkg-config)))
712 (inputs
713 `(("mesa" ,mesa)
714 ("pugixml" ,pugixml)))
715 (propagated-inputs
716 `(;; In Requires of the .pc files.
717 ("wayland" ,wayland)))
718 (synopsis "Wayland C++ bindings")
719 (description
720 "This package provides C++ bindings for the Wayland display protocol.")
721 (license license:bsd-2)))
722
24e051cb
DC
723(define-public weston
724 (package
725 (name "weston")
38c8437e 726 (version "6.0.1")
24e051cb
DC
727 (source (origin
728 (method url-fetch)
729 (uri (string-append
730 "https://wayland.freedesktop.org/releases/"
731 "weston-" version ".tar.xz"))
732 (sha256
733 (base32
38c8437e 734 "1d2m658ll8x7prlsfk71qgw89c7dz6y7d6nndfxwl49fmrd6sbxz"))))
23635b2e 735 (build-system meson-build-system)
24e051cb
DC
736 (native-inputs
737 `(("pkg-config" ,pkg-config)
738 ("xorg-server" ,xorg-server)))
739 (inputs
740 `(("cairo" ,cairo-xcb)
23635b2e 741 ("colord" ,colord)
24e051cb
DC
742 ("dbus" ,dbus)
743 ("elogind" ,elogind)
23635b2e
RH
744 ("lcms" ,lcms)
745 ("libevdev" ,libevdev)
24e051cb 746 ("libinput" ,libinput-minimal)
4bd428a7 747 ("libjpeg" ,libjpeg-turbo)
24e051cb 748 ("libunwind" ,libunwind)
23635b2e
RH
749 ("libva" ,libva)
750 ("libwebp" ,libwebp)
24e051cb
DC
751 ("libxcursor" ,libxcursor)
752 ("libxkbcommon" ,libxkbcommon)
23635b2e 753 ("libxml2" ,libxml2)
24e051cb
DC
754 ("mesa" ,mesa)
755 ("mtdev" ,mtdev)
756 ("linux-pam" ,linux-pam)
23635b2e 757 ("pango" ,pango)
24e051cb
DC
758 ("wayland" ,wayland)
759 ("wayland-protocols" ,wayland-protocols)
760 ("xorg-server-xwayland" ,xorg-server-xwayland)))
761 (arguments
762 `(#:configure-flags
23635b2e
RH
763 (list "-Dbackend-rdp=false" ; TODO: Enable.
764 "-Dremoting=false" ; TODO: Enable.
765 "-Dsimple-dmabuf-drm=auto"
766 "-Dsystemd=false"
767 (string-append "-Dxwayland-path="
24e051cb
DC
768 (assoc-ref %build-inputs "xorg-server-xwayland")
769 "/bin/Xwayland"))
26bcd2a2 770 #:parallel-tests? #f ; Parallel tests cause failures.
24e051cb
DC
771 #:phases
772 (modify-phases %standard-phases
773 (add-before 'configure 'use-elogind
774 (lambda _
775 ;; Use elogind instead of systemd
23635b2e
RH
776 (substitute* "libweston/meson.build"
777 (("libsystemd-login") "libelogind"))
b23992af
MB
778 (substitute* '("libweston/launcher-logind.c"
779 "libweston/weston-launch.c")
24e051cb 780 (("#include <systemd/sd-login.h>")
b23992af
MB
781 "#include <elogind/sd-login.h>"))
782 #t))
24e051cb
DC
783 (add-after 'configure 'patch-confdefs.h
784 (lambda _
23635b2e
RH
785 (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")
786 #t))
24e051cb
DC
787 (add-before 'check 'setup
788 (lambda _
789 (setenv "HOME" (getcwd))
790 (setenv "XDG_RUNTIME_DIR" (getcwd))
791 #t))
792 (add-before 'check 'start-xorg-server
793 (lambda* (#:key inputs #:allow-other-keys)
794 ;; The test suite requires a running X server.
795 (system (string-append (assoc-ref inputs "xorg-server")
796 "/bin/Xvfb :1 &"))
797 (setenv "DISPLAY" ":1")
798 #t)))))
799 (home-page "https://wayland.freedesktop.org")
800 (synopsis "Reference implementation of a Wayland compositor")
801 (description "Weston is the reference implementation of a Wayland
802compositor, and a useful compositor in its own right.
803
804A Wayland compositor allows applications to render to a shared offscreen
805buffer using OpenGL ES. The compositor then culls the hidden parts and
806composes the final output. A Wayland compositor is essentially a
807multiplexer to the KMS/DRM Linux kernel devices.")
808 (license license:expat)))
809
ad64b09d
BT
810(define-public wev
811 ;; There simple tool has no version or release yet.
812 (let ((commit "cee3dfb2a8b40ee303611018c68ae182d84a7f46"))
813 (package
814 (name "wev")
815 (version (string-append "2020-02-06-" (string-take commit 8)))
816 (source (origin
817 (method git-fetch)
818 (uri (git-reference
819 (url "https://git.sr.ht/~sircmpwn/wev")
820 (commit commit)))
821 (file-name (git-file-name name version))
822 (sha256
823 (base32
824 "0l71v3fzgiiv6xkk365q1l08qvaymxd4kpaya6r2g8yzkr7i2hms"))))
825 (build-system gnu-build-system)
826 (arguments
827 `(#:tests? #f ; no tests
828 #:make-flags
829 (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))
830 #:phases
831 (modify-phases %standard-phases
832 (delete 'configure))))
833 (native-inputs
834 `(("pkg-config" ,pkg-config)
835 ("scdoc" ,scdoc)))
836 (inputs
837 `(("libxkbcommon" ,libxkbcommon)
838 ("wayland" ,wayland)
839 ("wayland-protocols" ,wayland-protocols)))
840 (home-page "https://git.sr.ht/~sircmpwn/wev")
841 (synopsis "Wayland event viewer")
842 (description "Wev is a tool that opens a window, printing all events
843sent to a Wayland window, such as key presses. It is analogous to the X11 tool
844XEv.")
845 (license license:expat))))
846
177b4255
DH
847(define-public exempi
848 (package
849 (name "exempi")
df3db975 850 (version "2.5.1")
177b4255
DH
851 (source (origin
852 (method url-fetch)
853 (uri (string-append
5cc3096c 854 "https://libopenraw.freedesktop.org/download/"
177b4255
DH
855 name "-" version ".tar.bz2"))
856 (sha256
857 (base32
df3db975 858 "1j4vx054l1c2cggw4aka4iw48jkcf68qk5y064pbqw1k3ddks2qh"))))
177b4255
DH
859 (build-system gnu-build-system)
860 (arguments
861 `(#:configure-flags (list (string-append "--with-boost="
862 (assoc-ref %build-inputs "boost")))))
863 (native-inputs
864 `(("boost" ,boost))) ; tests
865 (inputs
866 `(("expat" ,expat)
867 ("zlib" ,zlib)))
c96ec771 868 (home-page "https://libopenraw.freedesktop.org/exempi/")
177b4255
DH
869 (synopsis "XMP metadata handling library")
870 (description "Exempi is an implementation of the Extensible Metadata
0b042591
TGR
871Platform (@dfn{XMP}), which enables embedding metadata in PDF and image
872formats.")
177b4255 873 (license license:bsd-3)))
cfbbff31
SB
874
875(define-public libatasmart
876 (package
877 (name "libatasmart")
878 (version "0.19")
879 (source (origin
880 (method url-fetch)
881 (uri (string-append "http://0pointer.de/public/"
882 name "-" version ".tar.xz"))
883 (sha256
884 (base32
885 "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
886 (build-system gnu-build-system)
887 (native-inputs
888 `(("pkg-config" ,pkg-config)))
889 (inputs
890 `(("udev" ,eudev)))
891 (home-page "http://0pointer.de/blog/projects/being-smart.html")
892 (synopsis "ATA S.M.A.R.T. reading and parsing library")
893 (description
894 "This library supports a subset of the ATA S.M.A.R.T. (Self-Monitoring,
895Analysis and Reporting Technology) functionality.")
896 (license license:lgpl2.1+)))
171ae35c
SB
897
898(define-public udisks
899 (package
900 (name "udisks")
59b7689e 901 (version "2.8.4")
171ae35c
SB
902 (source (origin
903 (method url-fetch)
92eb7aff
PN
904 (uri (string-append
905 "https://github.com/storaged-project/udisks/releases/download/udisks-"
906 version "/udisks-" version ".tar.bz2"))
171ae35c
SB
907 (sha256
908 (base32
59b7689e 909 "06cq52kp1nyy15qzylywy9s7hhhqc45k0s3y68crf0zsmjyng0yj"))))
171ae35c
SB
910 (build-system gnu-build-system)
911 (native-inputs
aef5055f
MC
912 `(("docbook-xml" ,docbook-xml-4.3) ; to build the manpages
913 ("docbook-xsl" ,docbook-xsl)
92eb7aff
PN
914 ("glib:bin" ,glib "bin") ; for glib-mkenums
915 ("gnome-common" ,gnome-common) ; TODO: Why is this needed?
171ae35c 916 ("gobject-introspection" ,gobject-introspection)
92eb7aff 917 ("gtk-doc" ,gtk-doc)
171ae35c
SB
918 ("intltool" ,intltool)
919 ("pkg-config" ,pkg-config)
920 ("xsltproc" ,libxslt)))
921 (propagated-inputs
922 `(("glib" ,glib))) ; required by udisks2.pc
923 (inputs
924 `(("acl" ,acl)
92eb7aff 925 ("cryptsetup" ,cryptsetup)
171ae35c 926 ("libatasmart" ,libatasmart)
92eb7aff 927 ("libblockdev" ,libblockdev)
171ae35c 928 ("libgudev" ,libgudev)
5905114a 929 ("polkit" ,polkit)
92eb7aff 930 ("util-linux" ,util-linux)))
daa3b04c
LC
931 (outputs '("out"
932 "doc")) ;5 MiB of gtk-doc HTML
171ae35c
SB
933 (arguments
934 `(#:tests? #f ; requiring system message dbus
c0351459 935 #:disallowed-references ("doc") ;enforce separation of "doc"
171ae35c 936 #:configure-flags
aef5055f 937 (list "--enable-man"
92eb7aff 938 "--enable-available-modules" ; Such as lvm2, btrfs, etc.
171ae35c 939 "--localstatedir=/var"
35263cd8 940 "--enable-fhs-media" ;mount devices in /media, not /run/media
daa3b04c
LC
941 (string-append "--with-html-dir="
942 (assoc-ref %outputs "doc")
943 "/share/doc/udisks/html")
171ae35c 944 (string-append "--with-udevdir=" %output "/lib/udev"))
aef5055f
MC
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)))
171ae35c
SB
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 = .*")
5905114a 970 "typelibsdir = $(libdir)/girepository-1.0\n"))))
03800de1 971 (add-after 'install 'wrap-udisksd
5905114a
LC
972 (lambda* (#:key outputs inputs #:allow-other-keys)
973 ;; Tell 'udisksd' where to find the 'mount' command.
974 (let ((out (assoc-ref outputs "out"))
03800de1
CB
975 (utils (assoc-ref inputs "util-linux"))
976 (cryptsetup (assoc-ref inputs "cryptsetup"))
977 (parted (assoc-ref inputs "parted")))
5905114a
LC
978 (wrap-program (string-append out "/libexec/udisks2/udisksd")
979 `("PATH" ":" prefix
980 (,(string-append utils "/bin") ;for 'mount'
03800de1
CB
981 ;; cryptsetup is required for setting encrypted
982 ;; partitions, e.g. in gnome-disks
983 ,(string-append cryptsetup "/sbin")
5905114a
LC
984 "/run/current-system/profile/bin"
985 "/run/current-system/profile/sbin")))
986 #t))))))
988e1dca 987 (home-page "https://www.freedesktop.org/wiki/Software/udisks/")
171ae35c
SB
988 (synopsis "Disk manager service")
989 (description
990 "UDisks provides interfaces to enumerate and perform operations on disks
991and storage devices. Any application (including unprivileged ones) can access
992the udisksd(8) daemon via the name org.freedesktop.UDisks2 on the system
993message bus.")
994 ;; The dynamic library are under LGPLv2+, others are GPLv2+.
995 (license (list license:gpl2+ license:lgpl2.0+))))
83a2e492
SB
996
997(define-public accountsservice
998 (package
999 (name "accountsservice")
0981ec13 1000 (version "0.6.50")
2a6403c1
TGR
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"))))
83a2e492
SB
1008 (build-system gnu-build-system)
1009 (arguments
1010 '(#:tests? #f ; XXX: tests require DocBook 4.1.2
1011 #:configure-flags
0981ec13
MB
1012 '("--localstatedir=/var"
1013 "--disable-systemd"
1014 "--enable-elogind")
83a2e492
SB
1015 #:phases
1016 (modify-phases %standard-phases
c9aadd07
RS
1017 (add-after 'unpack 'patch-/bin/cat
1018 (lambda _
1019 (substitute* "src/user.c"
1020 (("/bin/cat") (which "cat")))
1021 #t))
83a2e492
SB
1022 (add-before
1023 'configure 'pre-configure
e76008db
AW
1024 (lambda* (#:key inputs #:allow-other-keys)
1025 ;; Don't try to create /var/lib/AccountsService.
83a2e492 1026 (substitute* "src/Makefile.in"
571ffdeb 1027 (("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true"))
e76008db
AW
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"))))
571ffdeb 1035 #t)))))
83a2e492
SB
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
0981ec13
MB
1042 `(("elogind" ,elogind)
1043 ("polkit" ,polkit)
1044 ("shadow" ,shadow)))
57e7d748 1045 (home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
83a2e492
SB
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
1049and manipulating user account information and an implementation of these
1050interfaces, based on the useradd, usermod and userdel commands.")
1051 (license license:gpl3+)))
f3ad1490
SB
1052
1053(define-public libmbim
1054 (package
1055 (name "libmbim")
fdb88305 1056 (version "1.20.2")
f3ad1490
SB
1057 (source (origin
1058 (method url-fetch)
1059 (uri (string-append
351c8042
TGR
1060 "https://www.freedesktop.org/software/libmbim/"
1061 "libmbim-" version ".tar.xz"))
f3ad1490
SB
1062 (sha256
1063 (base32
fdb88305 1064 "16q550sy84izi5ic3sbbhjnnka2fwhj8vvdrirpn9xspbsgbc3sm"))))
f3ad1490
SB
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")
66056126 1075 (home-page "https://www.freedesktop.org/wiki/Software/libmbim/")
f3ad1490
SB
1076 (description
1077 "Libmbim is a GLib-based library for talking to WWAN modems and devices
1078which 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+))))
5302c5ff
SB
1083
1084(define-public libqmi
1085 (package
1086 (name "libqmi")
82a2bd3a 1087 (version "1.24.4")
5302c5ff
SB
1088 (source (origin
1089 (method url-fetch)
1090 (uri (string-append
6c5101f8
MB
1091 "https://www.freedesktop.org/software/libqmi/"
1092 "libqmi-" version ".tar.xz"))
5302c5ff
SB
1093 (sha256
1094 (base32
82a2bd3a 1095 "12licfsszr6qxpg9b2b04qm2glk8d42fcy32zr8jzwrgr7gbl5h3"))))
5302c5ff 1096 (build-system gnu-build-system)
b707140b
MW
1097 (inputs
1098 `(("libgudev" ,libgudev)))
5302c5ff
SB
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")
97a08595 1106 (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
5302c5ff
SB
1107 (description
1108 "Libqmi is a GLib-based library for talking to WWAN modems and devices
1109which 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+))))
1509a1dc
SB
1114
1115(define-public modem-manager
1116 (package
1117 (name "modem-manager")
352f710b 1118 (version "1.10.8")
1509a1dc
SB
1119 (source (origin
1120 (method url-fetch)
1121 (uri (string-append
e9f68a64 1122 "https://www.freedesktop.org/software/ModemManager/"
1509a1dc
SB
1123 "ModemManager-" version ".tar.xz"))
1124 (sha256
1125 (base32
352f710b 1126 "16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb"))))
1509a1dc
SB
1127 (build-system gnu-build-system)
1128 (arguments
1129 '(#:configure-flags
660c9b47
RW
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")))
1509a1dc
SB
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")
57e7d748 1151 (home-page "https://www.freedesktop.org/wiki/Software/ModemManager/")
1509a1dc
SB
1152 (description
1153 "ModemManager is a DBus-activated daemon which controls mobile
1154broadband (2G/3G/4G) devices and connections. Whether built-in devices, USB
1155dongles, bluetooth-paired telephones, or professional RS232/USB devices with
1156external power supplies, ModemManager is able to prepare and configure the
1157modems and setup connections with them.")
1158 (license license:gpl2+)))
6976e7d2
SB
1159
1160(define-public telepathy-logger
1161 (package
1162 (name "telepathy-logger")
1163 (version "0.8.2")
1164 (source (origin
1165 (method url-fetch)
5cc3096c 1166 (uri (string-append "https://telepathy.freedesktop.org/releases/"
6976e7d2
SB
1167 name "/" name "-" version ".tar.bz2"))
1168 (sha256
1169 (base32
1170 "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg"))))
1171 (build-system gnu-build-system)
1172 (arguments
8758efe0
LF
1173 '(#:parallel-tests? #f
1174 #:phases
6976e7d2
SB
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")
57e7d748 1193 (home-page "https://telepathy.freedesktop.org/")
6976e7d2
SB
1194 (description
1195 "Telepathy logger is a headless observer client that logs information
1196received by the Telepathy framework. It features pluggable backends to log
1197different sorts of messages in different formats.")
1198 (license license:lgpl2.1+)))
e6823279 1199
bb8b543a
KK
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)))
57e7d748 1220 (home-page "https://telepathy.freedesktop.org/")
bb8b543a
KK
1221 (synopsis "Telepathy IRC connection manager")
1222 (description
1223 "Idle is an IRC connection manager for the Telepathy framework. This
1224package enables usage of IRC channels and private messages in Telepathy instant
1225messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
1226 (license (list license:lgpl2.1 license:lgpl2.1+))))
1227
261b3da5
KK
1228(define-public telepathy-mission-control
1229 (package
1230 (name "telepathy-mission-control")
6c5401fc 1231 (version "5.16.5")
da42873c
TGR
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
6c5401fc 1239 (base32 "00xxv38cfdirnfvgyd56m60j0nkmsv5fz6p2ydyzsychicxl6ssc"))))
261b3da5
KK
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
1256for the Telepathy framework, allowing user interfaces and other clients to
1257share connections to real-time communication services without conflicting.")
1258 (license license:lgpl2.1)))
1259
e6823279
SB
1260(define-public colord-gtk
1261 (package
1262 (name "colord-gtk")
1263 (version "0.1.26")
1264 (source (origin
1265 (method url-fetch)
5cc3096c 1266 (uri (string-append "https://www.freedesktop.org/software/colord"
e6823279
SB
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")
57e7d748 1283 (home-page "https://www.freedesktop.org/software/colord/")
e6823279
SB
1284 (description
1285 "This is a GTK+ convenience library for interacting with colord. It is
1286useful for both applications which need colour management and applications that
1287wish to perform colour calibration.")
1288 (license license:lgpl2.1+)))
dfb01bae
LC
1289
1290(define-public libfprint
1291 (package
1292 (name "libfprint")
239d3e9c
TGR
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)
dfb01bae 1304 (arguments
239d3e9c
TGR
1305 '(#:configure-flags
1306 (list (string-append "-Dudev_rules_dir=" (assoc-ref %outputs "out")
1307 "/lib/udev/rules.d"))))
dfb01bae 1308 (native-inputs
239d3e9c
TGR
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)))
dfb01bae 1314 (inputs
239d3e9c
TGR
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.
dfb01bae 1321 ("pixman" ,pixman)))
50f02ced 1322 (home-page "https://fprint.freedesktop.org/")
dfb01bae
LC
1323 (synopsis "Library to access fingerprint readers")
1324 (description
1325 "libfprint is a library designed to make it easy for application
1326developers to add support for consumer fingerprint readers to their
1327software.")
1328 (license license:lgpl2.1+)))
9e3e972d
LC
1329
1330(define-public fprintd
1331 (package
1332 (name "fprintd")
239d3e9c
TGR
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)
5c3d6c1d 1344 (arguments
239d3e9c
TGR
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
9e3e972d 1391 (native-inputs
239d3e9c
TGR
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)
9e3e972d 1404 (inputs
239d3e9c
TGR
1405 `(("dbus-glib" ,dbus-glib)
1406 ("elogind" ,elogind)
1407 ("libfprint" ,libfprint)
1408 ("linux-pam" ,linux-pam)
9e3e972d 1409 ("polkit" ,polkit)
239d3e9c
TGR
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)))
50f02ced 1416 (home-page "https://fprint.freedesktop.org/")
9e3e972d
LC
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
1420library to access fingerprint readers, over the D-Bus interprocess
1421communication bus. This daemon layer above libfprint solves problems related
1422to applications simultaneously competing for fingerprint readers.")
1423 (license license:gpl2+)))
324b0040
DM
1424
1425(define-public desktop-file-utils
1426 (package
1427 (name "desktop-file-utils")
8b6d893d 1428 (version "0.24")
324b0040
DM
1429 (source (origin
1430 (method url-fetch)
d4c09245
TGR
1431 (uri (string-append "https://www.freedesktop.org/software/"
1432 "desktop-file-utils/releases/"
1433 "desktop-file-utils-" version ".tar.xz"))
324b0040
DM
1434 (sha256
1435 (base32
8b6d893d 1436 "1nc3bwjdrpcrkbdmzvhckq0yngbcxspwj2n1r7jr3gmx1jk5vpm1"))))
324b0040
DM
1437 (build-system gnu-build-system)
1438 (native-inputs
1439 `(("pkg-config" ,pkg-config)))
1440 (inputs
1441 `(("glib" ,glib)))
57e7d748 1442 (home-page "https://www.freedesktop.org/wiki/Software/desktop-file-utils/")
324b0040
DM
1443 (synopsis "Utilities for working with desktop entries")
1444 (description
1445 "This package contains a few command line utilities for working with
1446desktop entries:
1447
1448desktop-file-validate: validates a desktop file and prints warnings/errors
1449 about desktop entry specification violations.
1450
1451desktop-file-install: installs a desktop file to the applications directory,
1452 optionally munging it a bit in transit.
1453
1454update-desktop-database: updates the database containing a cache of MIME types
1455 handled by desktop files.")
1456 (license license:gpl2+)))
b9bf08f0
AW
1457
1458(define-public xdg-user-dirs
1459 (package
1460 (name "xdg-user-dirs")
7c9b7c5c 1461 (version "0.17")
b9bf08f0
AW
1462 (source (origin
1463 (method url-fetch)
1464 (uri (string-append "http://user-dirs.freedesktop.org/releases/"
1465 name "-" version ".tar.gz"))
1466 (sha256
7c9b7c5c 1467 (base32 "13216b8rfkzak5k6bvpx6jvqv3cnbgpijnjwj8a8d3kq4cl0a1ra"))))
b9bf08f0
AW
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
1496directories, such as the desktop folder or the music folder. It also handles
1497localization (i.e. translation) of the file names. Designed to be
1498automatically run when a user logs in, xdg-user-dirs can also be run
1499manually by a user.")
1500 (license license:gpl2)))
b32596ec
BT
1501
1502(define-public perl-file-basedir
1503 (package
1504 (name "perl-file-basedir")
12c069db 1505 (version "0.08")
b32596ec
BT
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
12c069db 1513 "1qq5ag9zffx8zc5i9b4z03ar80pqj4drgk3vjdlyfapjwb9zqrf0"))))
b32596ec
BT
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)))
9aba9b12 1523 (home-page "https://metacpan.org/release/File-BaseDir")
b32596ec
BT
1524 (synopsis "Use the Freedesktop.org base directory specification")
1525 (description
1526 "@code{File::Basedir} can be used to find directories and files as
1527specified by the Freedesktop.org Base Directory Specification. This
1528specifications gives a mechanism to locate directories for configuration,
1529application data and cache data.")
1530 (license license:perl-license)))
825cebdb
BT
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)))
9aba9b12 1551 (home-page "https://metacpan.org/release/File-DesktopEntry")
825cebdb
BT
1552 (synopsis "Handle @file{.desktop} files")
1553 (description
1554 "@code{File::DesktopEntry} parses @file{.desktop} files defined by the
1555Freedesktop.org @dfn{Desktop Entry} specification. It can also run the
1556applications define in those files.")
1557 (license license:perl-license)))
d0ce96bc
BT
1558
1559(define-public perl-file-mimeinfo
1560 (package
1561 (name "perl-file-mimeinfo")
2f989172 1562 (version "0.29")
d0ce96bc
BT
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
2f989172 1570 "1sh8r6vczyz08zm8vfsjmkg6a165wch54akjdrd1vbifcmwjg5pi"))))
d0ce96bc
BT
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)))))
9aba9b12 1593 (home-page "https://metacpan.org/release/File-MimeInfo")
d0ce96bc
BT
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.
1597It tries to implement the Freedesktop specification for a shared MIME
1598database.
1599
1600This 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
1605their MIME type.
1606@end itemize")
1607 (license license:perl-license)))
748ca12f
RAM
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
1624sequence of bytes in an unknown character encoding without any additional
1625information, and attempts to determine the encoding of the text. Returned
1626encoding 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+)))
d29d04c9
GLV
1631
1632(define-public udiskie
1633 (package
1634 (name "udiskie")
034d9544 1635 (version "2.1.0")
d29d04c9
GLV
1636 (source
1637 (origin
1638 (method url-fetch)
1639 (uri (pypi-uri "udiskie" version))
1640 (sha256
1641 (base32
034d9544 1642 "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz"))
d29d04c9
GLV
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
bf6c2788
VC
1675 "The @command{udiskie} program is a udisks2 front-end that
1676manages removable media such as CDs or flash drives from userspace.
d29d04c9
GLV
1677
1678Its 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)))
5b9bdeb5
RW
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
1759that provides a graphical boot animation while the boot process happens in the
1760background. You are not supposed to install this on your own, it is only
1761useful with system integration.")
1762 (license license:gpl2+)))
5e2750fb
NB
1763
1764(define-public libindicator
1765 (package
1766 (name "libindicator")
1767 (version "12.10.1")
1768 (source
1769 (origin
1770 (method url-fetch)
1771 (uri (string-append
1772 "https://launchpad.net/libindicator/"
1773 (version-major+minor version) "/" version
1774 "/+download/libindicator-" version ".tar.gz"))
1775 (sha256
1776 (base32
1777 "0zs4z7l9b57jldwz0ban77f3c2zq43ambd0dssf5qg9i216f9lmj"))))
1778 (build-system gnu-build-system)
1779 (native-inputs
1780 `(("dbus-test-runner" ,dbus-test-runner)
1781 ("glib:bin" ,glib "bin")
1782 ("pkg-config" ,pkg-config)
1783 ("xvfb" ,xorg-server-for-tests)))
1784 (inputs
1785 `(("gtk+" ,gtk+)
1786 ("glib" ,glib)))
1787 (arguments
1788 `(#:make-flags '("CFLAGS=-Wno-error")
1789 #:phases
1790 (modify-phases %standard-phases
1791 (add-before 'configure 'fix-missing-space-for-libm
1792 (lambda* (#:key outputs #:allow-other-keys)
1793 (substitute* "configure"
1794 (("LIBM=\"-lm\"") "LIBM=\" -lm\""))
1795 #t))
1796 (add-before 'configure 'fix-test-paths
1797 (lambda* (#:key inputs #:allow-other-keys)
1798 (substitute* "tests/Makefile.in"
1799 (("/bin/sh") (which "sh"))
1800 (("#!/bin/bash") (string-append "#!" (which "bash")))
1801 (("/usr/share")
1802 (string-append (assoc-ref inputs "dbus-test-runner") "/share")))
1803 #t)))))
1804 (home-page "https://launchpad.net/libindicator")
1805 (synopsis "Ayatana indicators symbols and functions")
1806 (description "A set of symbols and convenience functions for Ayatana indicators.")
1807 (license license:gpl3)))
c7b77713
NB
1808
1809(define-public libappindicator
1810 (package
1811 (name "libappindicator")
1812 (version "12.10.0")
1813 (source
1814 (origin
1815 (method url-fetch)
1816 (uri (string-append
1817 "https://launchpad.net/libappindicator/"
1818 (version-major+minor version) "/" version
1819 "/+download/libappindicator-" version ".tar.gz"))
1820 (sha256
1821 (base32
1822 "17xlqd60v0zllrxp8bgq3k5a1jkj0svkqn8rzllcyjh8k0gpr46m"))))
1823 (build-system gnu-build-system)
1824 (native-inputs
1825 `(("dbus-test-runner" ,dbus-test-runner)
1826 ("glib:bin" ,glib "bin")
1827 ("gobject-introspection" ,gobject-introspection)
1828 ("pkg-config" ,pkg-config)
1829 ("xvfb" ,xorg-server-for-tests)))
1830 (inputs
1831 `(("dbus-glib" ,dbus-glib)
1832 ("gtk+" ,gtk+)
1833 ("libdbusmenu" ,libdbusmenu)
1834 ("libindicator" ,libindicator)
1835 ("python@2" ,python-2)
1836 ("python2-pygtk" ,python2-pygtk)
1837 ("python2-pygobject-2" ,python2-pygobject-2)
1838 ;; ("mono" ,mono) ; requires non-packaged gapi
1839 ("vala" ,vala)))
1840 (arguments
1841 ;; FIXME: do not hardcode gtk version
1842 `(#:configure-flags '("--with-gtk=3")
1843 #:make-flags '("CFLAGS=-Wno-error")
1844 #:tests? #f ; One test does not pass (it succeeds when it should fail).
1845 #:phases
1846 (modify-phases %standard-phases
1847 (add-before 'configure 'fix-paths
1848 (lambda* (#:key inputs #:allow-other-keys)
1849 (substitute* "docs/reference/Makefile.in"
1850 (("/bin/sh") (which "sh")))
1851 (substitute* "tests/Makefile.in"
1852 (("/bin/sh") (which "sh"))
1853 (("#!/bin/bash") (string-append "#!" (which "bash")))
1854 (("/usr") (string-append (assoc-ref inputs "dbus-test-runner"))))
1855 (substitute* "bindings/python/Makefile.in"
1856 (("-lappindicator") "-lappindicator3"))
1857 #t))
1858 (add-after 'unpack 'fix-codegen-path
1859 (lambda _
1860 (substitute* "configure"
1861 (("PYGTK_CODEGEN=.*") "PYGTK_CODEGEN=pygtk-codegen-2.0\n"))
1862 #t))
1863 (add-after 'build 'build-bindings
1864 (lambda _
1865 (invoke "make" "-C" "bindings/python")
1866 #t))
1867 (add-after 'install 'install-bindings
1868 (lambda _
1869 (invoke "make" "-C" "bindings/python" "install")
1870 #t)))))
1871 (home-page "https://launchpad.net/libappindicator")
1872 (synopsis "Allow applications to export a menu into the Unity menu bar")
1873 (description "A library to allow applications to export a menu, originally
1874into the Unity menu bar. Based on KSNI, it also works in KDE and will
1875fallback to generic Systray support if none of those are available.")
1876 (license license:lgpl2.1+)))