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