gnu: Move nss & co. to nss.scm.
[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>
93719a66 8;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
3c8ba11a 9;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
d4040f6e 10;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
1f2e0601 11;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
f035e5d0 12;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
825cebdb 13;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
67c23790 14;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
4715f92e 15;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
4163f246 16;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
0b0e11a9
AE
17;;;
18;;; This file is part of GNU Guix.
19;;;
20;;; GNU Guix is free software; you can redistribute it and/or modify it
21;;; under the terms of the GNU General Public License as published by
22;;; the Free Software Foundation; either version 3 of the License, or (at
23;;; your option) any later version.
24;;;
25;;; GNU Guix is distributed in the hope that it will be useful, but
26;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28;;; GNU General Public License for more details.
29;;;
30;;; You should have received a copy of the GNU General Public License
31;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
33(define-module (gnu packages freedesktop)
366553e4 34 #:use-module ((guix licenses) #:prefix license:)
285c091e 35 #:use-module (guix utils)
0b0e11a9
AE
36 #:use-module (guix packages)
37 #:use-module (guix download)
366553e4 38 #:use-module (guix git-download)
1f2e0601 39 #:use-module (guix build-system cmake)
dac354fe 40 #:use-module (guix build-system gnu)
285c091e 41 #:use-module (guix build-system meson)
b32596ec 42 #:use-module (guix build-system perl)
e8444b26 43 #:use-module (guix build-system python)
d4040f6e 44 #:use-module (gnu packages)
73bb984e
EF
45 #:use-module (gnu packages acl)
46 #:use-module (gnu packages admin)
366553e4 47 #:use-module (gnu packages autotools)
fe4e0b0a 48 #:use-module (gnu packages bash)
73bb984e 49 #:use-module (gnu packages boost)
ac257f12 50 #:use-module (gnu packages check)
73bb984e 51 #:use-module (gnu packages compression)
03800de1 52 #:use-module (gnu packages cryptsetup)
03800de1 53 #:use-module (gnu packages disk)
73bb984e
EF
54 #:use-module (gnu packages docbook)
55 #:use-module (gnu packages documentation)
366553e4 56 #:use-module (gnu packages gettext)
24e051cb 57 #:use-module (gnu packages gl)
73bb984e
EF
58 #:use-module (gnu packages glib) ;intltool
59 #:use-module (gnu packages gnome)
366553e4 60 #:use-module (gnu packages gperf)
55ba649d 61 #:use-module (gnu packages graphviz)
e6823279 62 #:use-module (gnu packages gtk)
171ae35c 63 #:use-module (gnu packages libffi)
24e051cb 64 #:use-module (gnu packages libunwind)
dfb01bae 65 #:use-module (gnu packages libusb)
73bb984e
EF
66 #:use-module (gnu packages linux)
67 #:use-module (gnu packages m4)
aff0cce9 68 #:use-module (gnu packages nss)
825cebdb
BT
69 #:use-module (gnu packages perl)
70 #:use-module (gnu packages perl-check)
73bb984e 71 #:use-module (gnu packages pkg-config)
5d46c8b4 72 #:use-module (gnu packages polkit)
73bb984e 73 #:use-module (gnu packages python)
44d10b1f 74 #:use-module (gnu packages python-xyz)
cd0322a3 75 #:use-module (gnu packages sqlite)
285c091e 76 #:use-module (gnu packages valgrind)
fa8a585e 77 #:use-module (gnu packages w3m)
825cebdb 78 #:use-module (gnu packages web)
73bb984e 79 #:use-module (gnu packages xdisorg)
5d46c8b4 80 #:use-module (gnu packages xml)
285c091e
MB
81 #:use-module (gnu packages xorg)
82 #:use-module (srfi srfi-1))
0b0e11a9
AE
83
84(define-public xdg-utils
85 (package
86 (name "xdg-utils")
4d0f463d 87 (version "1.1.3")
0b0e11a9
AE
88 (source
89 (origin
90 (method url-fetch)
91 (uri (string-append
5cc3096c 92 "https://portland.freedesktop.org/download/xdg-utils-"
fa8a585e 93 version ".tar.gz"))
0b0e11a9
AE
94 (sha256
95 (base32
4d0f463d 96 "1nai806smz3zcb2l5iny4x7li0fak0rzmjg6vlyhdqm8z25b166p"))))
0b0e11a9 97 (build-system gnu-build-system)
fa8a585e
MB
98 (native-inputs
99 `(("docbook-xsl" ,docbook-xsl)
100 ("docbook-xml" ,docbook-xml-4.1.2)
101 ("libxslt" ,libxslt)
102 ("w3m" ,w3m)
103 ("xmlto" ,xmlto)))
f072e9ad 104 (propagated-inputs
04c35737
BT
105 `(("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
106 ("xprop" ,xprop) ; for Xfce detecting
b3546174 107 ("xset" ,xset))) ; for xdg-screensaver
0b0e11a9 108 (arguments
fa8a585e
MB
109 `(#:tests? #f ; no check target
110 #:phases
111 (modify-phases %standard-phases
112 (add-after 'unpack 'patch-hardcoded-paths
113 (lambda _
114 (substitute* "scripts/xdg-mime.in"
115 (("/usr/bin/file") (which "file")))
116 (substitute* "scripts/xdg-open.in"
117 (("/usr/bin/printf") (which "printf")))
118 #t))
119 (add-before 'build 'locate-catalog-files
120 (lambda* (#:key inputs #:allow-other-keys)
121 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
122 "/xml/dtd/docbook"))
123 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
124 "/xml/xsl/docbook-xsl-"
125 ,(package-version docbook-xsl))))
126 (for-each (lambda (file)
127 (substitute* file
128 (("http://.*/docbookx\\.dtd")
129 (string-append xmldoc "/docbookx.dtd"))))
130 (find-files "scripts/desc" "\\.xml$"))
131 (substitute* "scripts/Makefile"
132 ;; Apparently `xmlto' does not bother to looks up the stylesheets
133 ;; specified in the XML, unlike the above substitition. Instead it
134 ;; uses a hard-coded URL. Work around it here, but if this is
135 ;; common perhaps we should hardcode this path in xmlto itself.
136 (("\\$\\(XMLTO\\) man")
137 (string-append "$(XMLTO) -x " xsldoc
138 "/manpages/docbook.xsl man")))
139 (setenv "STYLESHEET"
140 (string-append xsldoc "/html/docbook.xsl"))
141 #t))))))
142 (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
0b0e11a9
AE
143 (synopsis "Freedesktop.org scripts for desktop integration")
144 (description "The xdg-utils package is a set of simple scripts that
145provide basic desktop integration functions in the framework of the
146freedesktop.org project.")
366553e4 147 (license license:expat)))
dac354fe
SB
148
149(define-public libinput
150 (package
151 (name "libinput")
dd9d9ae4 152 (version "1.12.3")
dac354fe
SB
153 (source (origin
154 (method url-fetch)
521b1d88 155 (uri (string-append "https://freedesktop.org/software/libinput/"
b4ed7c3e 156 "libinput-" version ".tar.xz"))
dac354fe
SB
157 (sha256
158 (base32
dd9d9ae4 159 "0mg2zqbjcgj0aq7d9nwawvyhx43vakilahrc83hrfyif3a3gyrpj"))))
285c091e
MB
160 (build-system meson-build-system)
161 (arguments
162 `(#:configure-flags '("-Ddocumentation=false")))
dac354fe 163 (native-inputs
285c091e
MB
164 `(("check" ,check)
165 ("pkg-config" ,pkg-config)
166 ("valgrind" ,valgrind)))
dac354fe 167 (propagated-inputs
285c091e 168 `(;; In Requires.private of libinput.pc.
7ca37da8 169 ("libevdev" ,libevdev)
285c091e
MB
170 ("libudev" ,eudev)
171 ("libwacom" ,libwacom)
172 ("mtdev" ,mtdev)))
173 (inputs
174 `(("cairo" ,cairo)
175 ("glib" ,glib)
176 ("gtk+" ,gtk+)))
6aabc87d 177 (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
dac354fe
SB
178 (synopsis "Input devices handling library")
179 (description
180 "Libinput is a library to handle input devices for display servers and
181other applications that need to directly deal with input devices.")
366553e4
RW
182 (license license:x11)))
183
c38fb02e
DC
184(define-public libinput-minimal
185 (package (inherit libinput)
186 (name "libinput-minimal")
285c091e
MB
187 (inputs '())
188 (propagated-inputs
189 (alist-delete "libwacom" (package-propagated-inputs libinput)))
c38fb02e 190 (arguments
285c091e
MB
191 (substitute-keyword-arguments (package-arguments libinput)
192 ((#:configure-flags flags ''())
193 `(cons* "-Dlibwacom=false"
194 "-Ddebug-gui=false" ;requires gtk+@3
195 ,flags))))))
c38fb02e 196
60a5617b
AK
197(define-public libxdg-basedir
198 (package
199 (name "libxdg-basedir")
200 (version "1.2.0")
201 (source (origin
202 (method url-fetch)
203 (uri (string-append
204 "https://github.com/devnev/libxdg-basedir/archive/"
205 name "-" version ".tar.gz"))
206 (sha256
207 (base32
208 "0s28c7sfwqimsmb3kn91mx7wi55fs3flhbmynl9k60rrllr00aqw"))))
209 (build-system gnu-build-system)
210 (arguments
211 '(#:phases
212 (modify-phases %standard-phases
15dc8ed5 213 (add-after 'unpack 'patch-autogen
60a5617b
AK
214 (lambda _
215 ;; Run 'configure' in its own phase, not now.
216 (substitute* "autogen.sh"
217 (("^.*\\./configure.*") ""))
15dc8ed5 218 #t)))))
60a5617b
AK
219 (native-inputs
220 `(("autoconf" ,autoconf)
221 ("automake" ,automake)
222 ("libtool" ,libtool)))
223 (home-page "https://github.com/devnev/libxdg-basedir")
224 (synopsis "Implementation of the XDG Base Directory specification")
225 (description
226 "libxdg-basedir is a C library providing some functions to use with
227the freedesktop.org XDG Base Directory specification.")
228 (license license:expat)))
229
366553e4 230(define-public elogind
5c91962a
AW
231 (package
232 (name "elogind")
3b3fd903 233 (version "241.2")
5c91962a 234 (source (origin
1f9b1d3d
SS
235 (method git-fetch)
236 (uri (git-reference
237 (url "https://github.com/elogind/elogind")
238 (commit (string-append "v" version))))
239 (file-name (git-file-name name version))
5c91962a
AW
240 (sha256
241 (base32
3b3fd903 242 "1ragysp4kh1vj3zpz1aprh5h4k3hmp3i5q55pimpabdpkdfbv2fc"))))
4163f246 243 (build-system meson-build-system)
5c91962a 244 (arguments
4163f246
SS
245 `(#:configure-flags
246 (let* ((out (assoc-ref %outputs "out"))
247 (sysconf (string-append out "/etc"))
248 (libexec (string-append out "/libexec/elogind"))
249 (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
250 (shepherd (assoc-ref %build-inputs "shepherd"))
251 (halt-path (string-append shepherd "/sbin/halt"))
252 (kexec-path "") ;not available in Guix yet
253 (poweroff-path (string-append shepherd "/sbin/shutdown"))
254 (reboot-path (string-append shepherd "/sbin/reboot")))
255 (list
256 (string-append "-Drootprefix=" out)
257 (string-append "-Dsysconfdir=" sysconf)
258 (string-append "-Drootlibexecdir=" libexec)
259 (string-append "-Ddbuspolicydir=" dbuspolicy)
260 (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
261 (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
262 (string-append "-Dhalt-path=" halt-path)
263 (string-append "-Dkexec-path=" kexec-path)
264 (string-append "-Dpoweroff-path=" poweroff-path)
265 (string-append "-Dreboot-path=" reboot-path)
266 "-Dcgroup-controller=elogind"
267 ;; Disable some tests.
268 "-Dtests=false"
269 "-Dslow-tests=false"))
fa67d565
RW
270 #:phases
271 (modify-phases %standard-phases
4163f246 272 (add-after 'unpack 'fix-pkttyagent-path
fa67d565 273 (lambda _
4163f246
SS
274 (substitute* "meson.build"
275 (("join_paths\\(bindir, 'pkttyagent'\\)")
276 "'\"/run/current-system/profile/bin/pkttyagent\"'"))
3f54fd1e 277 #t))
4163f246 278 (add-after 'unpack 'change-pid-file-path
f8446df6 279 (lambda _
4163f246
SS
280 (substitute* "src/login/elogind.c"
281 (("\"/run/elogind.pid\"") "\"/run/systemd/elogind.pid\""))
f8446df6 282 #t)))))
5c91962a 283 (native-inputs
4163f246
SS
284 `(("docbook-xml" ,docbook-xml)
285 ("docbook-xml-4.2" ,docbook-xml-4.2)
5c91962a 286 ("docbook-xsl" ,docbook-xsl)
4163f246
SS
287 ("gettext" ,gettext-minimal)
288 ("gperf" ,gperf)
5c91962a 289 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
4163f246 290 ("m4" ,m4)
b3546174 291 ("pkg-config" ,pkg-config)
4163f246
SS
292 ("python" ,python)
293 ("xsltproc" ,libxslt)))
5c91962a
AW
294 (inputs
295 `(("linux-pam" ,linux-pam)
5c91962a 296 ("libcap" ,libcap)
d312a832 297 ("shepherd" ,shepherd) ;for 'halt' and 'reboot', invoked
1d19bc11 298 ;when pressing the power button
5c91962a 299 ("dbus" ,dbus)
95d7d0c5
CM
300 ("eudev" ,eudev)
301 ("acl" ,acl))) ;to add individual users to ACLs on /dev nodes
fa67d565 302 (home-page "https://github.com/elogind/elogind")
5c91962a
AW
303 (synopsis "User, seat, and session management service")
304 (description "Elogind is the systemd project's \"logind\" service,
366553e4
RW
305extracted out as a separate project. Elogind integrates with PAM to provide
306the org.freedesktop.login1 interface over the system bus, allowing other parts
307of a the system to know what users are logged in, and where.")
5c91962a 308 (license license:lgpl2.1+)))
e8444b26 309
fe4e0b0a
CB
310(define-public packagekit
311 (package
312 (name "packagekit")
99f97a77 313 (version "1.1.11")
fe4e0b0a
CB
314 (source (origin
315 (method url-fetch)
316 (uri (string-append
317 "https://www.freedesktop.org/software/"
318 "PackageKit/releases/"
319 "PackageKit-" version ".tar.xz"))
320 (sha256
321 (base32
99f97a77 322 "0fi6wn54y03zh5sn92nmmxkh4cd8yn44cyk0l8phw60ivfwmkh1q"))))
fe4e0b0a
CB
323 (build-system gnu-build-system)
324 (arguments
325 `(#:tests? #f
326 #:make-flags (list (string-append "BASH_COMPLETIONS_DIR="
327 %output "/etc/bash_completion.d"))
328 #:configure-flags
329 '("--disable-systemd")))
330 (native-inputs
331 `(("intltool" ,intltool)
332 ("pkg-config" ,pkg-config)
333 ("python" ,python-wrapper)
334 ("glib:bin" ,glib "bin")))
335 (inputs
336 `(("glib" ,glib)
c695fb76 337 ("bash-completion" ,bash-completion)
fe4e0b0a
CB
338 ("polkit" ,polkit)))
339 (propagated-inputs
340 `(("sqlite" ,sqlite)))
341 (home-page "https://www.freedesktop.org/software/PackageKit/")
342 (synopsis "API for package management, through D-Bus")
343 (description
344 "PackageKit provides a way of performing package management tasks,
345e.g. updating, removing and installing software. Through supporting many
346backends, PackageKit can perform these tasks using the appropriate package
347manager for the current system.")
348 (license license:gpl2+)))
349
e8444b26
RW
350(define-public python-pyxdg
351 (package
352 (name "python-pyxdg")
353 (version "0.25")
354 (source
355 (origin
356 (method url-fetch)
8f60e533 357 (uri (pypi-uri "pyxdg" version))
e8444b26
RW
358 (sha256
359 (base32
360 "179767h8m634ydlm4v8lnz01ba42gckfp684id764zaip7h87s41"))))
361 (build-system python-build-system)
362 (arguments
363 '(#:phases
dc1d3cde
KK
364 (modify-phases %standard-phases
365 (replace 'check
366 (lambda* (#:key inputs #:allow-other-keys)
367 (setenv "XDG_DATA_DIRS"
368 (string-append (assoc-ref inputs "shared-mime-info")
369 "/share/"))
370 (substitute* "test/test-icon.py"
371 (("/usr/share/icons/hicolor/index.theme")
372 (string-append (assoc-ref inputs "hicolor-icon-theme")
ffcff272
MB
373 "/share/icons/hicolor/index.theme"))
374 ;; FIXME: This test fails because the theme contains the unknown
375 ;; key "Scale".
376 (("theme.validate\\(\\)") "#"))
e8444b26 377
dc1d3cde
KK
378 ;; One test fails with:
379 ;; AssertionError: 'x-apple-ios-png' != 'png'
380 (substitute* "test/test-mime.py"
381 (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
10ee03c1 382 (invoke "nosetests" "-v"))))))
e8444b26 383 (native-inputs
10ee03c1
TGR
384 ;; For tests.
385 `(("shared-mime-info" ,shared-mime-info)
386 ("hicolor-icon-theme" ,hicolor-icon-theme)
f3b98f4f 387 ("python-nose" ,python-nose)))
57e7d748 388 (home-page "https://www.freedesktop.org/wiki/Software/pyxdg")
e8444b26
RW
389 (synopsis "Implementations of freedesktop.org standards in Python")
390 (description
391 "PyXDG is a collection of implementations of freedesktop.org standards in
e881752c 392Python.")
e8444b26
RW
393 (license license:lgpl2.0)))
394
395(define-public python2-pyxdg
396 (package-with-python2 python-pyxdg))
6178d947
SB
397
398(define-public wayland
399 (package
400 (name "wayland")
a5f0c7c1 401 (version "1.16.0")
6178d947
SB
402 (source (origin
403 (method url-fetch)
5cc3096c 404 (uri (string-append "https://wayland.freedesktop.org/releases/"
6178d947
SB
405 name "-" version ".tar.xz"))
406 (sha256
407 (base32
a5f0c7c1 408 "1xajhxad43izq9f7sbww1hlg42nayijy8xnp21kgpk09c6sw4wjf"))))
6178d947 409 (build-system gnu-build-system)
28a96f2a 410 (arguments
62a91d2e 411 `(#:parallel-tests? #f))
6178d947
SB
412 (native-inputs
413 `(("doxygen" ,doxygen)
55ba649d 414 ("graphviz" ,graphviz)
6178d947
SB
415 ("pkg-config" ,pkg-config)
416 ("xmlto" ,xmlto)
417 ("xsltproc" ,libxslt)))
418 (inputs
419 `(("docbook-xml" ,docbook-xml)
420 ("docbook-xsl" ,docbook-xsl)
421 ("expat" ,expat)
422 ("libffi" ,libffi)
423 ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
9012e118 424 (home-page "https://wayland.freedesktop.org/")
6178d947
SB
425 (synopsis "Display server protocol")
426 (description
427 "Wayland is a protocol for a compositor to talk to its clients as well as
428a C library implementation of that protocol. The compositor can be a standalone
429display server running on Linux kernel modesetting and evdev input devices, an X
430application, or a wayland client itself. The clients can be traditional
431applications, X servers (rootless or fullscreen) or other display servers.")
432 (license license:x11)))
177b4255 433
eca4c011
DC
434(define-public wayland-protocols
435 (package
436 (name "wayland-protocols")
3a6372e0 437 (version "1.17")
eca4c011
DC
438 (source (origin
439 (method url-fetch)
440 (uri (string-append
441 "https://wayland.freedesktop.org/releases/"
442 "wayland-protocols-" version ".tar.xz"))
443 (sha256
444 (base32
3a6372e0 445 "0bw1sqixqk2a7mqw630cs4dlgcp5yib90vyikzm3lr05jz7ij4yz"))))
eca4c011
DC
446 (build-system gnu-build-system)
447 (inputs
448 `(("wayland" ,wayland)))
449 (native-inputs
450 `(("pkg-config" ,pkg-config)))
451 (synopsis "Wayland protocols")
452 (description "This package contains XML definitions of the Wayland protocols.")
453 (home-page "https://wayland.freedesktop.org")
454 (license license:expat)))
455
1f2e0601
MB
456(define-public waylandpp
457 (package
458 (name "waylandpp")
459 (version "0.2.5")
460 (home-page "https://github.com/NilsBrause/waylandpp")
461 (source (origin
462 (method git-fetch)
463 (uri (git-reference (url home-page) (commit version)))
464 (sha256
465 (base32
466 "16h57hzd688664qcyznzhjp3hxipdkzgv46x82yhkww24av8b55n"))))
467 (build-system cmake-build-system)
468 (arguments
469 `(#:tests? #f)) ;no tests
470 (native-inputs
471 `(("pkg-config" ,pkg-config)))
472 (inputs
473 `(("mesa" ,mesa)
474 ("pugixml" ,pugixml)))
475 (propagated-inputs
476 `(;; In Requires of the .pc files.
477 ("wayland" ,wayland)))
478 (synopsis "Wayland C++ bindings")
479 (description
480 "This package provides C++ bindings for the Wayland display protocol.")
481 (license license:bsd-2)))
482
24e051cb
DC
483(define-public weston
484 (package
485 (name "weston")
2aeee872 486 (version "5.0.0")
24e051cb
DC
487 (source (origin
488 (method url-fetch)
489 (uri (string-append
490 "https://wayland.freedesktop.org/releases/"
491 "weston-" version ".tar.xz"))
492 (sha256
493 (base32
2aeee872 494 "1bsc9ry566mpk6fdwkqpvwq2j7m79d9cvh7d3lgf6igsphik98hm"))))
24e051cb
DC
495 (build-system gnu-build-system)
496 (native-inputs
497 `(("pkg-config" ,pkg-config)
498 ("xorg-server" ,xorg-server)))
499 (inputs
500 `(("cairo" ,cairo-xcb)
501 ("dbus" ,dbus)
502 ("elogind" ,elogind)
503 ("libinput" ,libinput-minimal)
504 ("libunwind" ,libunwind)
505 ("libxcursor" ,libxcursor)
506 ("libxkbcommon" ,libxkbcommon)
507 ("mesa" ,mesa)
508 ("mtdev" ,mtdev)
509 ("linux-pam" ,linux-pam)
510 ("wayland" ,wayland)
511 ("wayland-protocols" ,wayland-protocols)
512 ("xorg-server-xwayland" ,xorg-server-xwayland)))
513 (arguments
514 `(#:configure-flags
515 (list "--disable-setuid-install"
516 "--enable-systemd-login"
517 (string-append "--with-xserver-path="
518 (assoc-ref %build-inputs "xorg-server-xwayland")
519 "/bin/Xwayland"))
26bcd2a2 520 #:parallel-tests? #f ; Parallel tests cause failures.
24e051cb
DC
521 #:phases
522 (modify-phases %standard-phases
523 (add-before 'configure 'use-elogind
524 (lambda _
525 ;; Use elogind instead of systemd
526 (substitute* "configure"
527 (("libsystemd-login >= 198") "libelogind"))
b23992af
MB
528 (substitute* '("libweston/launcher-logind.c"
529 "libweston/weston-launch.c")
24e051cb 530 (("#include <systemd/sd-login.h>")
b23992af
MB
531 "#include <elogind/sd-login.h>"))
532 #t))
24e051cb
DC
533 (add-after 'configure 'patch-confdefs.h
534 (lambda _
535 (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")))
536 (add-before 'check 'setup
537 (lambda _
538 (setenv "HOME" (getcwd))
539 (setenv "XDG_RUNTIME_DIR" (getcwd))
540 #t))
541 (add-before 'check 'start-xorg-server
542 (lambda* (#:key inputs #:allow-other-keys)
543 ;; The test suite requires a running X server.
544 (system (string-append (assoc-ref inputs "xorg-server")
545 "/bin/Xvfb :1 &"))
546 (setenv "DISPLAY" ":1")
547 #t)))))
548 (home-page "https://wayland.freedesktop.org")
549 (synopsis "Reference implementation of a Wayland compositor")
550 (description "Weston is the reference implementation of a Wayland
551compositor, and a useful compositor in its own right.
552
553A Wayland compositor allows applications to render to a shared offscreen
554buffer using OpenGL ES. The compositor then culls the hidden parts and
555composes the final output. A Wayland compositor is essentially a
556multiplexer to the KMS/DRM Linux kernel devices.")
557 (license license:expat)))
558
177b4255
DH
559(define-public exempi
560 (package
561 (name "exempi")
0b014776 562 (version "2.5.0")
177b4255
DH
563 (source (origin
564 (method url-fetch)
565 (uri (string-append
5cc3096c 566 "https://libopenraw.freedesktop.org/download/"
177b4255
DH
567 name "-" version ".tar.bz2"))
568 (sha256
569 (base32
0b014776 570 "06vi7dc2gappwqm3xpfyy5ihxq14bmvj3bd47yk482jlq0jgr0nw"))))
177b4255
DH
571 (build-system gnu-build-system)
572 (arguments
573 `(#:configure-flags (list (string-append "--with-boost="
574 (assoc-ref %build-inputs "boost")))))
575 (native-inputs
576 `(("boost" ,boost))) ; tests
577 (inputs
578 `(("expat" ,expat)
579 ("zlib" ,zlib)))
580 (home-page "https://wiki.freedesktop.org/libopenraw/Exempi")
581 (synopsis "XMP metadata handling library")
582 (description "Exempi is an implementation of the Extensible Metadata
0b042591
TGR
583Platform (@dfn{XMP}), which enables embedding metadata in PDF and image
584formats.")
177b4255 585 (license license:bsd-3)))
cfbbff31
SB
586
587(define-public libatasmart
588 (package
589 (name "libatasmart")
590 (version "0.19")
591 (source (origin
592 (method url-fetch)
593 (uri (string-append "http://0pointer.de/public/"
594 name "-" version ".tar.xz"))
595 (sha256
596 (base32
597 "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
598 (build-system gnu-build-system)
599 (native-inputs
600 `(("pkg-config" ,pkg-config)))
601 (inputs
602 `(("udev" ,eudev)))
603 (home-page "http://0pointer.de/blog/projects/being-smart.html")
604 (synopsis "ATA S.M.A.R.T. reading and parsing library")
605 (description
606 "This library supports a subset of the ATA S.M.A.R.T. (Self-Monitoring,
607Analysis and Reporting Technology) functionality.")
608 (license license:lgpl2.1+)))
171ae35c
SB
609
610(define-public udisks
611 (package
612 (name "udisks")
92eb7aff 613 (version "2.7.7")
171ae35c
SB
614 (source (origin
615 (method url-fetch)
92eb7aff
PN
616 (uri (string-append
617 "https://github.com/storaged-project/udisks/releases/download/udisks-"
618 version "/udisks-" version ".tar.bz2"))
171ae35c
SB
619 (sha256
620 (base32
92eb7aff 621 "1dnlxqgy9v0mjdknv3b1s64szdykyk3hk0rxj3chwhpd415lrwgs"))))
171ae35c
SB
622 (build-system gnu-build-system)
623 (native-inputs
aef5055f
MC
624 `(("docbook-xml" ,docbook-xml-4.3) ; to build the manpages
625 ("docbook-xsl" ,docbook-xsl)
92eb7aff
PN
626 ("glib:bin" ,glib "bin") ; for glib-mkenums
627 ("gnome-common" ,gnome-common) ; TODO: Why is this needed?
171ae35c 628 ("gobject-introspection" ,gobject-introspection)
92eb7aff 629 ("gtk-doc" ,gtk-doc)
171ae35c
SB
630 ("intltool" ,intltool)
631 ("pkg-config" ,pkg-config)
632 ("xsltproc" ,libxslt)))
633 (propagated-inputs
634 `(("glib" ,glib))) ; required by udisks2.pc
635 (inputs
636 `(("acl" ,acl)
92eb7aff 637 ("cryptsetup" ,cryptsetup)
171ae35c 638 ("libatasmart" ,libatasmart)
92eb7aff 639 ("libblockdev" ,libblockdev)
171ae35c 640 ("libgudev" ,libgudev)
5905114a 641 ("polkit" ,polkit)
92eb7aff 642 ("util-linux" ,util-linux)))
daa3b04c
LC
643 (outputs '("out"
644 "doc")) ;5 MiB of gtk-doc HTML
171ae35c
SB
645 (arguments
646 `(#:tests? #f ; requiring system message dbus
c0351459 647 #:disallowed-references ("doc") ;enforce separation of "doc"
171ae35c 648 #:configure-flags
aef5055f 649 (list "--enable-man"
92eb7aff
PN
650 "--enable-gtk-doc" ; Without this the HTML doc does not seem to build automatically.
651 "--enable-available-modules" ; Such as lvm2, btrfs, etc.
171ae35c 652 "--localstatedir=/var"
35263cd8 653 "--enable-fhs-media" ;mount devices in /media, not /run/media
daa3b04c
LC
654 (string-append "--with-html-dir="
655 (assoc-ref %outputs "doc")
656 "/share/doc/udisks/html")
171ae35c 657 (string-append "--with-udevdir=" %output "/lib/udev"))
aef5055f
MC
658 #:make-flags
659 (let* ((docbook-xsl-name-version ,(string-append
660 (package-name docbook-xsl) "-"
661 (package-version docbook-xsl)))
662 (docbook-xsl-catalog-file (string-append
663 (assoc-ref %build-inputs "docbook-xsl")
664 "/xml/xsl/"
665 docbook-xsl-name-version
666 "/catalog.xml"))
667 (docbook-xml-catalog-file (string-append
668 (assoc-ref %build-inputs "docbook-xml")
669 "/xml/dtd/docbook/catalog.xml")))
670 ;; Reference the catalog files required to build the manpages.
671 (list (string-append "XML_CATALOG_FILES=" docbook-xsl-catalog-file " "
672 docbook-xml-catalog-file)))
171ae35c
SB
673 #:phases
674 (modify-phases %standard-phases
675 (add-before
676 'configure 'fix-girdir
677 (lambda _
678 ;; Install introspection data to its own output.
679 (substitute* "udisks/Makefile.in"
680 (("girdir = .*")
681 "girdir = $(datadir)/gir-1.0\n")
682 (("typelibsdir = .*")
5905114a 683 "typelibsdir = $(libdir)/girepository-1.0\n"))))
03800de1 684 (add-after 'install 'wrap-udisksd
5905114a
LC
685 (lambda* (#:key outputs inputs #:allow-other-keys)
686 ;; Tell 'udisksd' where to find the 'mount' command.
687 (let ((out (assoc-ref outputs "out"))
03800de1
CB
688 (utils (assoc-ref inputs "util-linux"))
689 (cryptsetup (assoc-ref inputs "cryptsetup"))
690 (parted (assoc-ref inputs "parted")))
5905114a
LC
691 (wrap-program (string-append out "/libexec/udisks2/udisksd")
692 `("PATH" ":" prefix
693 (,(string-append utils "/bin") ;for 'mount'
03800de1
CB
694 ;; cryptsetup is required for setting encrypted
695 ;; partitions, e.g. in gnome-disks
696 ,(string-append cryptsetup "/sbin")
5905114a
LC
697 "/run/current-system/profile/bin"
698 "/run/current-system/profile/sbin")))
699 #t))))))
988e1dca 700 (home-page "https://www.freedesktop.org/wiki/Software/udisks/")
171ae35c
SB
701 (synopsis "Disk manager service")
702 (description
703 "UDisks provides interfaces to enumerate and perform operations on disks
704and storage devices. Any application (including unprivileged ones) can access
705the udisksd(8) daemon via the name org.freedesktop.UDisks2 on the system
706message bus.")
707 ;; The dynamic library are under LGPLv2+, others are GPLv2+.
708 (license (list license:gpl2+ license:lgpl2.0+))))
83a2e492
SB
709
710(define-public accountsservice
711 (package
712 (name "accountsservice")
0981ec13 713 (version "0.6.50")
83a2e492
SB
714 (source (origin
715 (method url-fetch)
e1c644a0 716 (uri (string-append "https://www.freedesktop.org/software/"
83a2e492
SB
717 name "/" name "-" version ".tar.xz"))
718 (sha256
719 (base32
0981ec13 720 "0jn7vg1z4vxnna0hl33hbcb4bb3zpilxc2vyclh24vx4vvsjhn83"))))
83a2e492
SB
721 (build-system gnu-build-system)
722 (arguments
723 '(#:tests? #f ; XXX: tests require DocBook 4.1.2
724 #:configure-flags
0981ec13
MB
725 '("--localstatedir=/var"
726 "--disable-systemd"
727 "--enable-elogind")
83a2e492
SB
728 #:phases
729 (modify-phases %standard-phases
730 (add-before
731 'configure 'pre-configure
e76008db
AW
732 (lambda* (#:key inputs #:allow-other-keys)
733 ;; Don't try to create /var/lib/AccountsService.
83a2e492 734 (substitute* "src/Makefile.in"
571ffdeb 735 (("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true"))
e76008db
AW
736 (let ((shadow (assoc-ref inputs "shadow")))
737 (substitute* '("src/user.c" "src/daemon.c")
738 (("/usr/sbin/usermod") (string-append shadow "/sbin/usermod"))
739 (("/usr/sbin/useradd") (string-append shadow "/sbin/useradd"))
740 (("/usr/sbin/userdel") (string-append shadow "/sbin/userdel"))
741 (("/usr/bin/passwd") (string-append shadow "/bin/passwd"))
742 (("/usr/bin/chage") (string-append shadow "/bin/chage"))))
571ffdeb 743 #t)))))
83a2e492
SB
744 (native-inputs
745 `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
746 ("gobject-introspection" ,gobject-introspection)
747 ("intltool" ,intltool)
748 ("pkg-config" ,pkg-config)))
749 (inputs
0981ec13
MB
750 `(("elogind" ,elogind)
751 ("polkit" ,polkit)
752 ("shadow" ,shadow)))
57e7d748 753 (home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
83a2e492
SB
754 (synopsis "D-Bus interface for user account query and manipulation")
755 (description
756 "The AccountService project provides a set of D-Bus interfaces for querying
757and manipulating user account information and an implementation of these
758interfaces, based on the useradd, usermod and userdel commands.")
759 (license license:gpl3+)))
f3ad1490
SB
760
761(define-public libmbim
762 (package
763 (name "libmbim")
de261ace 764 (version "1.18.0")
f3ad1490
SB
765 (source (origin
766 (method url-fetch)
767 (uri (string-append
03422bf8 768 "https://www.freedesktop.org/software/" name "/"
f3ad1490
SB
769 name "-" version ".tar.xz"))
770 (sha256
771 (base32
de261ace 772 "10mjjy860aakfd3h1yaj9l1jw816amrpwmyqlx37j21xv0l03x3c"))))
f3ad1490
SB
773 (build-system gnu-build-system)
774 (native-inputs
775 `(("glib:bin" ,glib "bin") ; for glib-mkenums
776 ("pkg-config" ,pkg-config)
777 ("python" ,python-wrapper)))
778 (propagated-inputs
779 `(("glib" ,glib))) ; required by mbim-glib.pc
780 (inputs
781 `(("libgudev" ,libgudev)))
782 (synopsis "Library to communicate with MBIM-powered modems")
66056126 783 (home-page "https://www.freedesktop.org/wiki/Software/libmbim/")
f3ad1490
SB
784 (description
785 "Libmbim is a GLib-based library for talking to WWAN modems and devices
786which speak the Mobile Interface Broadband Model (MBIM) protocol.")
787 (license
788 ;; The libmbim-glib library is released under the LGPLv2+ license.
789 ;; The mbimcli tool is released under the GPLv2+ license.
790 (list license:lgpl2.0+ license:gpl2+))))
5302c5ff
SB
791
792(define-public libqmi
793 (package
794 (name "libqmi")
407e1dcb 795 (version "1.22.2")
5302c5ff
SB
796 (source (origin
797 (method url-fetch)
798 (uri (string-append
6c5101f8
MB
799 "https://www.freedesktop.org/software/libqmi/"
800 "libqmi-" version ".tar.xz"))
5302c5ff
SB
801 (sha256
802 (base32
407e1dcb 803 "09w20dsgr16bgbqw5ds7r6j2s6ihwyalh9zpbjhcn7cvm0afbwgi"))))
5302c5ff 804 (build-system gnu-build-system)
b707140b
MW
805 (inputs
806 `(("libgudev" ,libgudev)))
5302c5ff
SB
807 (native-inputs
808 `(("glib:bin" ,glib "bin") ; for glib-mkenums
809 ("pkg-config" ,pkg-config)
810 ("python" ,python-wrapper)))
811 (propagated-inputs
812 `(("glib" ,glib))) ; required by qmi-glib.pc
813 (synopsis "Library to communicate with QMI-powered modems")
97a08595 814 (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
5302c5ff
SB
815 (description
816 "Libqmi is a GLib-based library for talking to WWAN modems and devices
817which speak the Qualcomm MSM Interface (QMI) protocol.")
818 (license
819 ;; The libqmi-glib library is released under the LGPLv2+ license.
820 ;; The qmicli tool is released under the GPLv2+ license.
821 (list license:lgpl2.0+ license:gpl2+))))
1509a1dc
SB
822
823(define-public modem-manager
824 (package
825 (name "modem-manager")
473dbe9b 826 (version "1.4.14")
1509a1dc
SB
827 (source (origin
828 (method url-fetch)
829 (uri (string-append
e9f68a64 830 "https://www.freedesktop.org/software/ModemManager/"
1509a1dc
SB
831 "ModemManager-" version ".tar.xz"))
832 (sha256
833 (base32
473dbe9b 834 "18hvffwcncwz14kdzk42jbkh362n0kjv3kgx7axbqx572pawvrmb"))))
1509a1dc
SB
835 (build-system gnu-build-system)
836 (arguments
837 '(#:configure-flags
660c9b47
RW
838 `(,(string-append "--with-udev-base-dir=" %output "/lib/udev")
839 ;; FIXME: Without this flag the build fails with "error: assignment
840 ;; from incompatible pointer type" whenever the return value of
841 ;; "g_object_ref" is assigned to "ctx->self".
842 "--disable-more-warnings")))
1509a1dc
SB
843 (native-inputs
844 `(("glib:bin" ,glib "bin") ; for glib-mkenums
845 ("gobject-introspection" ,gobject-introspection)
846 ("intltool" ,intltool)
847 ("pkg-config" ,pkg-config)
848 ("vala" ,vala)
849 ;; For testing.
850 ("dbus" ,dbus)))
851 (propagated-inputs
852 `(("glib" ,glib))) ; required by mm-glib.pc
853 (inputs
854 `(("libgudev" ,libgudev)
855 ("libmbim" ,libmbim)
856 ("libqmi" ,libqmi)
857 ("polkit" ,polkit)))
858 (synopsis "Mobile broadband modems manager")
57e7d748 859 (home-page "https://www.freedesktop.org/wiki/Software/ModemManager/")
1509a1dc
SB
860 (description
861 "ModemManager is a DBus-activated daemon which controls mobile
862broadband (2G/3G/4G) devices and connections. Whether built-in devices, USB
863dongles, bluetooth-paired telephones, or professional RS232/USB devices with
864external power supplies, ModemManager is able to prepare and configure the
865modems and setup connections with them.")
866 (license license:gpl2+)))
6976e7d2
SB
867
868(define-public telepathy-logger
869 (package
870 (name "telepathy-logger")
871 (version "0.8.2")
872 (source (origin
873 (method url-fetch)
5cc3096c 874 (uri (string-append "https://telepathy.freedesktop.org/releases/"
6976e7d2
SB
875 name "/" name "-" version ".tar.bz2"))
876 (sha256
877 (base32
878 "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg"))))
879 (build-system gnu-build-system)
880 (arguments
8758efe0
LF
881 '(#:parallel-tests? #f
882 #:phases
6976e7d2
SB
883 (modify-phases %standard-phases
884 (add-before 'check 'pre-check
885 (lambda _
886 (setenv "HOME" (getenv "TMPDIR"))
887 #t)))))
888 (native-inputs
889 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
890 ("gobject-introspection" ,gobject-introspection)
891 ("intltool" ,intltool)
892 ("pkg-config" ,pkg-config)
893 ("python" ,python-2)
894 ("xsltproc" ,libxslt)))
895 (propagated-inputs
896 ;; telepathy-logger-0.2.pc refers to all these.
897 `(("libxml2" ,libxml2)
898 ("sqlite" ,sqlite)
899 ("telepathy-glib" ,telepathy-glib)))
900 (synopsis "Telepathy logger library")
57e7d748 901 (home-page "https://telepathy.freedesktop.org/")
6976e7d2
SB
902 (description
903 "Telepathy logger is a headless observer client that logs information
904received by the Telepathy framework. It features pluggable backends to log
905different sorts of messages in different formats.")
906 (license license:lgpl2.1+)))
e6823279 907
bb8b543a
KK
908(define-public telepathy-idle
909 (package
910 (name "telepathy-idle")
911 (version "0.2.0")
912 (source (origin
913 (method url-fetch)
914 (uri (string-append "https://telepathy.freedesktop.org/releases/"
915 name "/" name "-" version ".tar.bz2"))
916 (sha256
917 (base32
918 "1argdzbif1vdmwp5vqbgkadq9ancjmgdm2ncp0qfckni715ss4rh"))))
919 (build-system gnu-build-system)
920 (native-inputs
921 `(("pkg-config" ,pkg-config)))
922 (inputs
923 `(("xsltproc" ,libxslt)
924 ("python" ,python-2)
925 ("python-dbus" ,python2-dbus)))
926 (propagated-inputs
927 `(("telepathy-glib" ,telepathy-glib)))
57e7d748 928 (home-page "https://telepathy.freedesktop.org/")
bb8b543a
KK
929 (synopsis "Telepathy IRC connection manager")
930 (description
931 "Idle is an IRC connection manager for the Telepathy framework. This
932package enables usage of IRC channels and private messages in Telepathy instant
933messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
934 (license (list license:lgpl2.1 license:lgpl2.1+))))
935
261b3da5
KK
936(define-public telepathy-mission-control
937 (package
938 (name "telepathy-mission-control")
ac20cd7b 939 (version "5.16.4")
261b3da5
KK
940 (source (origin
941 (method url-fetch)
942 (uri (string-append "https://telepathy.freedesktop.org/releases/"
ac20cd7b 943 name "/" name "-" version ".tar.gz"))
261b3da5
KK
944 (sha256
945 (base32
ac20cd7b 946 "1jz6wwgsfxixha6ys2hbzbk5faqnj9kh2m5qdlgx5anqgandsscp"))))
261b3da5
KK
947 (build-system gnu-build-system)
948 (native-inputs
949 `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
950 ("pkg-config" ,pkg-config)))
951 (inputs
952 `(("dconf" ,dconf)
953 ("gtk-doc" ,gtk-doc)
954 ("libgnome-keyring" ,libgnome-keyring)
955 ("python" ,python-2)
956 ("xsltproc" ,libxslt)))
957 (propagated-inputs
958 `(("telepathy-glib" ,telepathy-glib)))
959 (home-page "https://telepathy.freedesktop.org/wiki/Components/Mission_Control/")
960 (synopsis "Telepathy real-time communication framework management daemon")
961 (description
962 "Telepathy Mission Control 5 is an account manager and channel dispatcher
963for the Telepathy framework, allowing user interfaces and other clients to
964share connections to real-time communication services without conflicting.")
965 (license license:lgpl2.1)))
966
e6823279
SB
967(define-public colord-gtk
968 (package
969 (name "colord-gtk")
970 (version "0.1.26")
971 (source (origin
972 (method url-fetch)
5cc3096c 973 (uri (string-append "https://www.freedesktop.org/software/colord"
e6823279
SB
974 "/releases/" name "-" version ".tar.xz"))
975 (sha256
976 (base32
977 "0i9y3bb5apj6a0f8cx36l6mjzs7xc0k7nf0magmf58vy2mzhpl18"))))
978 (build-system gnu-build-system)
979 (arguments '(#:tests? #f)) ; require the colord system service
980 (native-inputs
981 `(("gobject-introspection" ,gobject-introspection)
982 ("intltool" ,intltool)
983 ("pkg-config" ,pkg-config)
984 ("vala" ,vala)))
985 (propagated-inputs
986 ;; colord-gtk.pc refers to all these.
987 `(("colord" ,colord)
988 ("gtk+" ,gtk+)))
989 (synopsis "GTK integration for libcolord")
57e7d748 990 (home-page "https://www.freedesktop.org/software/colord/")
e6823279
SB
991 (description
992 "This is a GTK+ convenience library for interacting with colord. It is
993useful for both applications which need colour management and applications that
994wish to perform colour calibration.")
995 (license license:lgpl2.1+)))
dfb01bae
LC
996
997(define-public libfprint
998 (package
999 (name "libfprint")
1000 (version "0.6.0")
1001 (source (origin
1002 (method url-fetch)
1003 (uri (string-append "https://people.freedesktop.org/~hadess/"
1004 name "-" version ".tar.xz"))
1005 (sha256
1006 (base32
1007 "1giwh2z63mn45galsjb59rhyrvgwcy01hvvp4g01iaa2snvzr0r5"))))
1008 (build-system gnu-build-system)
1009 (arguments
1010 '(#:configure-flags (list (string-append "--with-udev-rules-dir="
1011 (assoc-ref %outputs "out")
1012 "/lib/udev/rules.d"))))
1013 (native-inputs
1014 `(("pkg-config" ,pkg-config)))
1015 (inputs
1016 `(("libusb" ,libusb)
1017 ("nss" ,nss)
1018 ("glib" ,glib)
1019 ("eudev" ,eudev)
1020 ("pixman" ,pixman)))
1021 (home-page "https://www.freedesktop.org/wiki/Software/fprint/libfprint/")
1022 (synopsis "Library to access fingerprint readers")
1023 (description
1024 "libfprint is a library designed to make it easy for application
1025developers to add support for consumer fingerprint readers to their
1026software.")
1027 (license license:lgpl2.1+)))
9e3e972d
LC
1028
1029(define-public fprintd
1030 (package
1031 (name "fprintd")
1032 (version "0.7.0")
1033 (source (origin
1034 (method url-fetch)
1035 (uri (string-append
1036 "https://people.freedesktop.org/~hadess/fprintd-"
1037 version ".tar.xz"))
1038 (sha256
1039 (base32
1040 "05915i0bv7q62fqrs5diqwr8dz3pwqa1c1ivcgggkjyw0xk4ldp5"))))
1041 (build-system gnu-build-system)
5c3d6c1d
LC
1042 (arguments
1043 '(#:phases (modify-phases %standard-phases
1044 (add-before 'build 'set-sysconfdir
1045 (lambda* (#:key outputs #:allow-other-keys)
1046 ;; Work around a bug whereby the 'SYSCONFDIR' macro
1047 ;; expands literally to '${prefix}/etc'.
1048 (let ((out (assoc-ref outputs "out")))
1049 (substitute* "src/main.c"
1050 (("SYSCONFDIR, \"fprintd.conf\"")
1051 (string-append "\"" out "/etc\", "
1052 "\"fprintd.conf\"")))
1053 #t))))))
9e3e972d
LC
1054 (native-inputs
1055 `(("pkg-config" ,pkg-config)
1056 ("intltool" ,intltool)))
1057 (inputs
1058 `(("libfprint" ,libfprint)
1059 ("dbus-glib" ,dbus-glib)
1060 ("polkit" ,polkit)
1061 ("linux-pam" ,linux-pam))) ;for pam_fprintd
1062 (home-page "https://www.freedesktop.org/wiki/Software/fprint/fprintd/")
1063 (synopsis "D-Bus daemon that exposes fingerprint reader functionality")
1064 (description
1065 "fprintd is a D-Bus daemon that offers functionality of libfprint, a
1066library to access fingerprint readers, over the D-Bus interprocess
1067communication bus. This daemon layer above libfprint solves problems related
1068to applications simultaneously competing for fingerprint readers.")
1069 (license license:gpl2+)))
324b0040
DM
1070
1071(define-public desktop-file-utils
1072 (package
1073 (name "desktop-file-utils")
1074 (version "0.23")
1075 (source (origin
1076 (method url-fetch)
1077 (uri (string-append "https://www.freedesktop.org/software/" name
1078 "/releases/" name "-" version ".tar.xz"))
1079 (sha256
1080 (base32
1081 "119kj2w0rrxkhg4f9cf5waa55jz1hj8933vh47vcjipcplql02bc"))))
1082 (build-system gnu-build-system)
1083 (native-inputs
1084 `(("pkg-config" ,pkg-config)))
1085 (inputs
1086 `(("glib" ,glib)))
57e7d748 1087 (home-page "https://www.freedesktop.org/wiki/Software/desktop-file-utils/")
324b0040
DM
1088 (synopsis "Utilities for working with desktop entries")
1089 (description
1090 "This package contains a few command line utilities for working with
1091desktop entries:
1092
1093desktop-file-validate: validates a desktop file and prints warnings/errors
1094 about desktop entry specification violations.
1095
1096desktop-file-install: installs a desktop file to the applications directory,
1097 optionally munging it a bit in transit.
1098
1099update-desktop-database: updates the database containing a cache of MIME types
1100 handled by desktop files.")
1101 (license license:gpl2+)))
b9bf08f0
AW
1102
1103(define-public xdg-user-dirs
1104 (package
1105 (name "xdg-user-dirs")
7c9b7c5c 1106 (version "0.17")
b9bf08f0
AW
1107 (source (origin
1108 (method url-fetch)
1109 (uri (string-append "http://user-dirs.freedesktop.org/releases/"
1110 name "-" version ".tar.gz"))
1111 (sha256
7c9b7c5c 1112 (base32 "13216b8rfkzak5k6bvpx6jvqv3cnbgpijnjwj8a8d3kq4cl0a1ra"))))
b9bf08f0
AW
1113 (build-system gnu-build-system)
1114 (native-inputs
1115 `(("gettext" ,gettext-minimal)
1116 ("docbook-xsl" ,docbook-xsl)
1117 ("docbook-xml" ,docbook-xml-4.3)
1118 ("xsltproc" ,libxslt)))
1119 (arguments
1120 `(#:phases
1121 (modify-phases %standard-phases
1122 (add-before 'build 'locate-catalog-files
1123 (lambda* (#:key inputs #:allow-other-keys)
1124 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
1125 "/xml/dtd/docbook"))
1126 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
1127 "/xml/xsl/docbook-xsl-"
1128 ,(package-version docbook-xsl))))
1129 (for-each (lambda (file)
1130 (substitute* file
1131 (("http://.*/docbookx\\.dtd")
1132 (string-append xmldoc "/docbookx.dtd"))))
1133 (find-files "man" "\\.xml$"))
1134 (substitute* "man/Makefile"
1135 (("http://.*/docbook\\.xsl")
1136 (string-append xsldoc "/manpages/docbook.xsl")))
1137 #t))))))
1138 (home-page "https://www.freedesktop.org/wiki/Software/xdg-user-dirs/")
1139 (synopsis "Tool to help manage \"well known\" user directories")
1140 (description "xdg-user-dirs is a tool to help manage \"well known\" user
1141directories, such as the desktop folder or the music folder. It also handles
1142localization (i.e. translation) of the file names. Designed to be
1143automatically run when a user logs in, xdg-user-dirs can also be run
1144manually by a user.")
1145 (license license:gpl2)))
b32596ec
BT
1146
1147(define-public perl-file-basedir
1148 (package
1149 (name "perl-file-basedir")
12c069db 1150 (version "0.08")
b32596ec
BT
1151 (source
1152 (origin
1153 (method url-fetch)
1154 (uri (string-append "mirror://cpan/authors/id/K/KI/KIMRYAN/"
1155 "File-BaseDir-" version ".tar.gz"))
1156 (sha256
1157 (base32
12c069db 1158 "1qq5ag9zffx8zc5i9b4z03ar80pqj4drgk3vjdlyfapjwb9zqrf0"))))
b32596ec
BT
1159 (build-system perl-build-system)
1160 (native-inputs
1161 `(("perl-module-build" ,perl-module-build)
1162 ("perl-file-which" ,perl-file-which)
1163 ("perl-test-pod" ,perl-test-pod)
1164 ("perl-test-pod-coverage" ,perl-test-pod-coverage)
1165 ("xdg-user-dirs" ,xdg-user-dirs)))
1166 (propagated-inputs
1167 `(("perl-ipc-system-simple" ,perl-ipc-system-simple)))
9aba9b12 1168 (home-page "https://metacpan.org/release/File-BaseDir")
b32596ec
BT
1169 (synopsis "Use the Freedesktop.org base directory specification")
1170 (description
1171 "@code{File::Basedir} can be used to find directories and files as
1172specified by the Freedesktop.org Base Directory Specification. This
1173specifications gives a mechanism to locate directories for configuration,
1174application data and cache data.")
1175 (license license:perl-license)))
825cebdb
BT
1176
1177(define-public perl-file-desktopentry
1178 (package
1179 (name "perl-file-desktopentry")
1180 (version "0.22")
1181 (source
1182 (origin
1183 (method url-fetch)
1184 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
1185 "File-DesktopEntry-" version ".tar.gz"))
1186 (sha256
1187 (base32
1188 "1f1maqix2kbfg2rf008m7mqnvv6nvcf9y6pcgdv2kxp2vbih370n"))))
1189 (build-system perl-build-system)
1190 (native-inputs
1191 `(("perl-test-pod" ,perl-test-pod)
1192 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
1193 (propagated-inputs
1194 `(("perl-file-basedir" ,perl-file-basedir)
1195 ("perl-uri" ,perl-uri)))
9aba9b12 1196 (home-page "https://metacpan.org/release/File-DesktopEntry")
825cebdb
BT
1197 (synopsis "Handle @file{.desktop} files")
1198 (description
1199 "@code{File::DesktopEntry} parses @file{.desktop} files defined by the
1200Freedesktop.org @dfn{Desktop Entry} specification. It can also run the
1201applications define in those files.")
1202 (license license:perl-license)))
d0ce96bc
BT
1203
1204(define-public perl-file-mimeinfo
1205 (package
1206 (name "perl-file-mimeinfo")
2f989172 1207 (version "0.29")
d0ce96bc
BT
1208 (source
1209 (origin
1210 (method url-fetch)
1211 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
1212 "File-MimeInfo-" version ".tar.gz"))
1213 (sha256
1214 (base32
2f989172 1215 "1sh8r6vczyz08zm8vfsjmkg6a165wch54akjdrd1vbifcmwjg5pi"))))
d0ce96bc
BT
1216 (build-system perl-build-system)
1217 ;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
1218 ;; perl-test-tiny as native-inputs.
1219 (propagated-inputs
1220 `(("shared-mime-info" ,shared-mime-info)
1221 ("perl-file-desktopentry" ,perl-file-desktopentry)))
1222 (arguments
1223 ;; Some tests fail due to requiring the mimetype of perl files to be
1224 ;; text/plain when they are actually application/x-perl.
1225 `(#:tests? #f
1226 #:phases
1227 (modify-phases %standard-phases
1228 (add-after 'install 'wrap-programs
1229 (lambda* (#:key outputs #:allow-other-keys)
1230 (let ((out (assoc-ref outputs "out")))
1231 (for-each (lambda (prog)
1232 (wrap-program (string-append out "/bin/" prog)
1233 `("PERL5LIB" ":" prefix
1234 (,(string-append (getenv "PERL5LIB") ":" out
1235 "/lib/perl5/site_perl")))))
1236 '("mimeopen" "mimetype")))
1237 #t)))))
9aba9b12 1238 (home-page "https://metacpan.org/release/File-MimeInfo")
d0ce96bc
BT
1239 (synopsis "Determine file type from the file name")
1240 (description
1241 "@code{File::Mimeinfo} can be used to determine the MIME type of a file.
1242It tries to implement the Freedesktop specification for a shared MIME
1243database.
1244
1245This package also contains two related utilities:
1246
1247@itemize
1248@item @command{mimetype} determines a file's MIME type;
1249@item @command{mimeopen} opens files in an appropriate program according to
1250their MIME type.
1251@end itemize")
1252 (license license:perl-license)))