84fa104038ad82e5fc782b5add1417741ee9ccee
[jackhill/guix/guix.git] / gnu / packages / freedesktop.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
4 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
5 ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
6 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
8 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
9 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
10 ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
11 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
12 ;;;
13 ;;; This file is part of GNU Guix.
14 ;;;
15 ;;; GNU Guix is free software; you can redistribute it and/or modify it
16 ;;; under the terms of the GNU General Public License as published by
17 ;;; the Free Software Foundation; either version 3 of the License, or (at
18 ;;; your option) any later version.
19 ;;;
20 ;;; GNU Guix is distributed in the hope that it will be useful, but
21 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 ;;; GNU General Public License for more details.
24 ;;;
25 ;;; You should have received a copy of the GNU General Public License
26 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28 (define-module (gnu packages freedesktop)
29 #:use-module ((guix licenses) #:prefix license:)
30 #:use-module (guix packages)
31 #:use-module (guix download)
32 #:use-module (guix git-download)
33 #:use-module (guix build-system gnu)
34 #:use-module (guix build-system python)
35 #:use-module (gnu packages acl)
36 #:use-module (gnu packages admin)
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages bash)
39 #:use-module (gnu packages boost)
40 #:use-module (gnu packages compression)
41 #:use-module (gnu packages databases)
42 #:use-module (gnu packages docbook)
43 #:use-module (gnu packages documentation)
44 #:use-module (gnu packages gettext)
45 #:use-module (gnu packages gl)
46 #:use-module (gnu packages glib) ;intltool
47 #:use-module (gnu packages gnome)
48 #:use-module (gnu packages gnuzilla)
49 #:use-module (gnu packages gperf)
50 #:use-module (gnu packages graphviz)
51 #:use-module (gnu packages gtk)
52 #:use-module (gnu packages libffi)
53 #:use-module (gnu packages libunwind)
54 #:use-module (gnu packages libusb)
55 #:use-module (gnu packages linux)
56 #:use-module (gnu packages m4)
57 #:use-module (gnu packages polkit)
58 #:use-module (gnu packages pkg-config)
59 #:use-module (gnu packages python)
60 #:use-module (gnu packages w3m)
61 #:use-module (gnu packages xml)
62 #:use-module (gnu packages xdisorg)
63 #:use-module (gnu packages xorg))
64
65 (define-public xdg-utils
66 (package
67 (name "xdg-utils")
68 (version "1.1.1")
69 (source
70 (origin
71 (method url-fetch)
72 (uri (string-append
73 "https://portland.freedesktop.org/download/xdg-utils-"
74 version ".tar.gz"))
75 (sha256
76 (base32
77 "09a1pk3ifsndc5qz2kcd1557i137gpgnv3d739pv22vfayi67pdh"))))
78 (build-system gnu-build-system)
79 (native-inputs
80 `(("docbook-xsl" ,docbook-xsl)
81 ("docbook-xml" ,docbook-xml-4.1.2)
82 ("libxslt" ,libxslt)
83 ("w3m" ,w3m)
84 ("xmlto" ,xmlto)))
85 (propagated-inputs
86 `(("xprop" ,xprop) ; for Xfce detecting
87 ("xset" ,xset))) ; for xdg-screensaver
88 (arguments
89 `(#:tests? #f ; no check target
90 #:phases
91 (modify-phases %standard-phases
92 (add-after 'unpack 'patch-hardcoded-paths
93 (lambda _
94 (substitute* "scripts/xdg-mime.in"
95 (("/usr/bin/file") (which "file")))
96 (substitute* "scripts/xdg-open.in"
97 (("/usr/bin/printf") (which "printf")))
98 #t))
99 (add-before 'build 'locate-catalog-files
100 (lambda* (#:key inputs #:allow-other-keys)
101 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
102 "/xml/dtd/docbook"))
103 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
104 "/xml/xsl/docbook-xsl-"
105 ,(package-version docbook-xsl))))
106 (for-each (lambda (file)
107 (substitute* file
108 (("http://.*/docbookx\\.dtd")
109 (string-append xmldoc "/docbookx.dtd"))))
110 (find-files "scripts/desc" "\\.xml$"))
111 (substitute* "scripts/Makefile"
112 ;; Apparently `xmlto' does not bother to looks up the stylesheets
113 ;; specified in the XML, unlike the above substitition. Instead it
114 ;; uses a hard-coded URL. Work around it here, but if this is
115 ;; common perhaps we should hardcode this path in xmlto itself.
116 (("\\$\\(XMLTO\\) man")
117 (string-append "$(XMLTO) -x " xsldoc
118 "/manpages/docbook.xsl man")))
119 (setenv "STYLESHEET"
120 (string-append xsldoc "/html/docbook.xsl"))
121 #t))))))
122 (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
123 (synopsis "Freedesktop.org scripts for desktop integration")
124 (description "The xdg-utils package is a set of simple scripts that
125 provide basic desktop integration functions in the framework of the
126 freedesktop.org project.")
127 (license license:expat)))
128
129 (define-public libinput
130 (package
131 (name "libinput")
132 (version "1.7.3")
133 (source (origin
134 (method url-fetch)
135 (uri (string-append "https://freedesktop.org/software/libinput/"
136 name "-" version ".tar.xz"))
137 (sha256
138 (base32
139 "07fbzxddvhjcch43hdxb24sj7ri96zzpcjalvsicmw0i4wnn2v89"))))
140 (build-system gnu-build-system)
141 (native-inputs
142 `(("cairo" ,cairo)
143 ("gtk+" ,gtk+)
144 ("pkg-config" ,pkg-config)))
145 (propagated-inputs
146 `(("libudev" ,eudev))) ; required by libinput.pc
147 (inputs
148 `(("glib" ,glib)
149 ("libevdev" ,libevdev)
150 ("mtdev" ,mtdev)
151 ("libwacom" ,libwacom)))
152 (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
153 (synopsis "Input devices handling library")
154 (description
155 "Libinput is a library to handle input devices for display servers and
156 other applications that need to directly deal with input devices.")
157 (license license:x11)))
158
159 (define-public libinput-minimal
160 (package (inherit libinput)
161 (name "libinput-minimal")
162 (native-inputs
163 `(("pkg-config" ,pkg-config)))
164 (inputs
165 `(("libevdev" ,libevdev)
166 ("mtdev" ,mtdev)))
167 (arguments
168 `(#:configure-flags
169 '("--disable-libwacom")))))
170
171 (define-public libxdg-basedir
172 (package
173 (name "libxdg-basedir")
174 (version "1.2.0")
175 (source (origin
176 (method url-fetch)
177 (uri (string-append
178 "https://github.com/devnev/libxdg-basedir/archive/"
179 name "-" version ".tar.gz"))
180 (sha256
181 (base32
182 "0s28c7sfwqimsmb3kn91mx7wi55fs3flhbmynl9k60rrllr00aqw"))))
183 (build-system gnu-build-system)
184 (arguments
185 '(#:phases
186 (modify-phases %standard-phases
187 (add-after 'unpack 'autogen
188 (lambda _
189 ;; Run 'configure' in its own phase, not now.
190 (substitute* "autogen.sh"
191 (("^.*\\./configure.*") ""))
192 (zero? (system* "sh" "autogen.sh")))))))
193 (native-inputs
194 `(("autoconf" ,autoconf)
195 ("automake" ,automake)
196 ("libtool" ,libtool)))
197 (home-page "https://github.com/devnev/libxdg-basedir")
198 (synopsis "Implementation of the XDG Base Directory specification")
199 (description
200 "libxdg-basedir is a C library providing some functions to use with
201 the freedesktop.org XDG Base Directory specification.")
202 (license license:expat)))
203
204 (define-public elogind
205 (package
206 (name "elogind")
207 (version "232.4")
208 (source (origin
209 (method url-fetch)
210 (uri (string-append "https://github.com/elogind/elogind/"
211 "archive/v" version ".tar.gz"))
212 (sha256
213 (base32
214 "1qcxian48z2dj5gfmp7brrngdydqf2jm00f4rjr5sy1myh8fy931"))
215 (modules '((guix build utils)))
216 (snippet
217 '(begin
218 (use-modules (guix build utils))
219 (substitute* "Makefile.am"
220 ;; Avoid validation against DTD because the DTDs for
221 ;; both doctype 4.2 and 4.5 are needed.
222 (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))))))
223 (build-system gnu-build-system)
224 (arguments
225 `(#:tests? #f ;FIXME: "make check" in the "po" directory fails.
226 #:configure-flags
227 (list (string-append "--with-udevrulesdir="
228 (assoc-ref %outputs "out")
229 "/lib/udev/rules.d")
230
231 ;; Let elogind be its own cgroup controller, rather than relying
232 ;; on systemd or OpenRC. By default, 'configure' makes an
233 ;; incorrect guess.
234 "--with-cgroup-controller=elogind"
235
236 (string-append "--with-rootprefix="
237 (assoc-ref %outputs "out"))
238 (string-append "--with-rootlibexecdir="
239 (assoc-ref %outputs "out")
240 "/libexec/elogind")
241 ;; These are needed to ensure that lto linking works.
242 "RANLIB=gcc-ranlib"
243 "AR=gcc-ar"
244 "NM=gcc-nm")
245 #:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")
246 #:phases
247 (modify-phases %standard-phases
248 (add-before 'configure 'autogen
249 (lambda _
250 (and (zero? (system* "intltoolize" "--force" "--automake"))
251 (zero? (system* "autoreconf" "-vif")))))
252 (add-before 'build 'fix-service-file
253 (lambda* (#:key outputs #:allow-other-keys)
254 ;; Fix the file name of the 'elogind' binary in the D-Bus
255 ;; '.service' file.
256 (substitute* "src/login/org.freedesktop.login1.service"
257 (("^Exec=.*")
258 (string-append "Exec=" (assoc-ref %outputs "out")
259 "/libexec/elogind/elogind\n")))))
260 (add-after 'install 'add-libcap-to-search-path
261 (lambda* (#:key inputs outputs #:allow-other-keys)
262 ;; Add a missing '-L' for libcap in libelogind.la. See
263 ;; <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00084.html>.
264 (let ((libcap (assoc-ref inputs "libcap"))
265 (out (assoc-ref outputs "out")))
266 (substitute* (string-append out "/lib/libelogind.la")
267 (("-lcap")
268 (string-append "-L" libcap "/lib -lcap")))
269 #t))))))
270 (native-inputs
271 `(("autoconf" ,autoconf)
272 ("automake" ,automake)
273 ("libtool" ,libtool)
274 ("intltool" ,intltool)
275 ("gettext" ,gettext-minimal)
276 ("python" ,python)
277 ("docbook-xsl" ,docbook-xsl)
278 ("docbook-xml" ,docbook-xml)
279 ("xsltproc" ,libxslt)
280 ("m4" ,m4)
281 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
282 ("pkg-config" ,pkg-config)
283
284 ;; Use gperf 3.0 to work around
285 ;; <https://github.com/wingo/elogind/issues/8>.
286 ("gperf" ,gperf-3.0)))
287 (inputs
288 `(("linux-pam" ,linux-pam)
289 ("linux-libre-headers" ,linux-libre-headers)
290 ("libcap" ,libcap)
291 ("shepherd" ,shepherd) ;for 'halt' and 'reboot', invoked
292 ;when pressing the power button
293 ("dbus" ,dbus)
294 ("eudev" ,eudev)
295 ("acl" ,acl))) ;to add individual users to ACLs on /dev nodes
296 (home-page "https://github.com/elogind/elogind")
297 (synopsis "User, seat, and session management service")
298 (description "Elogind is the systemd project's \"logind\" service,
299 extracted out as a separate project. Elogind integrates with PAM to provide
300 the org.freedesktop.login1 interface over the system bus, allowing other parts
301 of a the system to know what users are logged in, and where.")
302 (license license:lgpl2.1+)))
303
304 (define-public packagekit
305 (package
306 (name "packagekit")
307 (version "1.1.5")
308 (source (origin
309 (method url-fetch)
310 (uri (string-append
311 "https://www.freedesktop.org/software/"
312 "PackageKit/releases/"
313 "PackageKit-" version ".tar.xz"))
314 (sha256
315 (base32
316 "035pqxgkyki813hyw2frrbpfllq113zfk5qcp9wvsq5lsp74ix2h"))))
317 (build-system gnu-build-system)
318 (arguments
319 `(#:tests? #f
320 #:make-flags (list (string-append "BASH_COMPLETIONS_DIR="
321 %output "/etc/bash_completion.d"))
322 #:configure-flags
323 '("--disable-systemd")))
324 (native-inputs
325 `(("intltool" ,intltool)
326 ("pkg-config" ,pkg-config)
327 ("python" ,python-wrapper)
328 ("glib:bin" ,glib "bin")))
329 (inputs
330 `(("glib" ,glib)
331 ("bash-completion", bash-completion)
332 ("polkit" ,polkit)))
333 (propagated-inputs
334 `(("sqlite" ,sqlite)))
335 (home-page "https://www.freedesktop.org/software/PackageKit/")
336 (synopsis "API for package management, through D-Bus")
337 (description
338 "PackageKit provides a way of performing package management tasks,
339 e.g. updating, removing and installing software. Through supporting many
340 backends, PackageKit can perform these tasks using the appropriate package
341 manager for the current system.")
342 (license license:gpl2+)))
343
344 (define-public python-pyxdg
345 (package
346 (name "python-pyxdg")
347 (version "0.25")
348 (source
349 (origin
350 (method url-fetch)
351 (uri (string-append
352 "https://pypi.python.org/packages/source/p/pyxdg/pyxdg-"
353 version ".tar.gz"))
354 (sha256
355 (base32
356 "179767h8m634ydlm4v8lnz01ba42gckfp684id764zaip7h87s41"))))
357 (build-system python-build-system)
358 (arguments
359 '(#:phases
360 (alist-replace
361 'check
362 (lambda* (#:key inputs #:allow-other-keys)
363 (setenv "XDG_DATA_DIRS"
364 (string-append (assoc-ref inputs "shared-mime-info")
365 "/share/"))
366 (substitute* "test/test-icon.py"
367 (("/usr/share/icons/hicolor/index.theme")
368 (string-append (assoc-ref inputs "hicolor-icon-theme")
369 "/share/icons/hicolor/index.theme")))
370
371 ;; One test fails with:
372 ;; AssertionError: 'x-apple-ios-png' != 'png'
373 (substitute* "test/test-mime.py"
374 (("self.check_mimetype\\(imgpng, 'image', 'png'\\)") "#"))
375 (zero? (system* "nosetests" "-v")))
376 %standard-phases)))
377 (native-inputs
378 `(("shared-mime-info" ,shared-mime-info) ;for tests
379 ("hicolor-icon-theme" ,hicolor-icon-theme) ;for tests
380 ("python-nose" ,python-nose)))
381 (home-page "http://freedesktop.org/wiki/Software/pyxdg")
382 (synopsis "Implementations of freedesktop.org standards in Python")
383 (description
384 "PyXDG is a collection of implementations of freedesktop.org standards in
385 Python.")
386 (license license:lgpl2.0)))
387
388 (define-public python2-pyxdg
389 (package-with-python2 python-pyxdg))
390
391 (define-public wayland
392 (package
393 (name "wayland")
394 (version "1.13.0")
395 (source (origin
396 (method url-fetch)
397 (uri (string-append "https://wayland.freedesktop.org/releases/"
398 name "-" version ".tar.xz"))
399 (sha256
400 (base32
401 "0lgywr1m0d79vr4s8aimj8a307nss29hhy68gjpqj7m667055c39"))))
402 (build-system gnu-build-system)
403 (arguments
404 `(#:parallel-tests? #f
405 #:phases
406 (modify-phases %standard-phases
407 ;; Remove record shapes to workaround graphviz 2.40.1 problems.
408 ;; http://www.graphviz.org/content/i-havent-been-able-render-these-files-graphviz-226
409 ;; This will likely be fixed upstream in the next release.
410 ;; https://lists.freedesktop.org/archives/wayland-devel/2017-June/034218.html
411 (add-before 'build 'fix-graphviz
412 (lambda _
413 (substitute* "doc/doxygen/dot/x-architecture.gv"
414 (("Mrecord") "none"))
415 #t)))))
416 (native-inputs
417 `(("doxygen" ,doxygen)
418 ("graphviz" ,graphviz)
419 ("pkg-config" ,pkg-config)
420 ("xmlto" ,xmlto)
421 ("xsltproc" ,libxslt)))
422 (inputs
423 `(("docbook-xml" ,docbook-xml)
424 ("docbook-xsl" ,docbook-xsl)
425 ("expat" ,expat)
426 ("libffi" ,libffi)
427 ("libxml2" ,libxml2))) ; for XML_CATALOG_FILES
428 (home-page "https://wayland.freedesktop.org/")
429 (synopsis "Display server protocol")
430 (description
431 "Wayland is a protocol for a compositor to talk to its clients as well as
432 a C library implementation of that protocol. The compositor can be a standalone
433 display server running on Linux kernel modesetting and evdev input devices, an X
434 application, or a wayland client itself. The clients can be traditional
435 applications, X servers (rootless or fullscreen) or other display servers.")
436 (license license:x11)))
437
438 (define-public wayland-protocols
439 (package
440 (name "wayland-protocols")
441 (version "1.9")
442 (source (origin
443 (method url-fetch)
444 (uri (string-append
445 "https://wayland.freedesktop.org/releases/"
446 "wayland-protocols-" version ".tar.xz"))
447 (sha256
448 (base32
449 "0xag2yci0l13brmq2k12vdv0wlnb2j0rxk2cnp170fya63g74sv6"))))
450 (build-system gnu-build-system)
451 (inputs
452 `(("wayland" ,wayland)))
453 (native-inputs
454 `(("pkg-config" ,pkg-config)))
455 (synopsis "Wayland protocols")
456 (description "This package contains XML definitions of the Wayland protocols.")
457 (home-page "https://wayland.freedesktop.org")
458 (license license:expat)))
459
460 (define-public weston
461 (package
462 (name "weston")
463 (version "2.0.0")
464 (source (origin
465 (method url-fetch)
466 (uri (string-append
467 "https://wayland.freedesktop.org/releases/"
468 "weston-" version ".tar.xz"))
469 (sha256
470 (base32
471 "1n35acsknwqfhsni854q5mjq2gnbnfdvinh92rpij67i4yn4dr5l"))))
472 (build-system gnu-build-system)
473 (native-inputs
474 `(("pkg-config" ,pkg-config)
475 ("xorg-server" ,xorg-server)))
476 (inputs
477 `(("cairo" ,cairo-xcb)
478 ("dbus" ,dbus)
479 ("elogind" ,elogind)
480 ("libinput" ,libinput-minimal)
481 ("libunwind" ,libunwind)
482 ("libxcursor" ,libxcursor)
483 ("libxkbcommon" ,libxkbcommon)
484 ("mesa" ,mesa)
485 ("mtdev" ,mtdev)
486 ("linux-pam" ,linux-pam)
487 ("wayland" ,wayland)
488 ("wayland-protocols" ,wayland-protocols)
489 ("xorg-server-xwayland" ,xorg-server-xwayland)))
490 (arguments
491 `(#:configure-flags
492 (list "--disable-setuid-install"
493 "--enable-systemd-login"
494 (string-append "--with-xserver-path="
495 (assoc-ref %build-inputs "xorg-server-xwayland")
496 "/bin/Xwayland"))
497 #:phases
498 (modify-phases %standard-phases
499 (add-before 'configure 'use-elogind
500 (lambda _
501 ;; Use elogind instead of systemd
502 (substitute* "configure"
503 (("libsystemd-login >= 198") "libelogind"))
504 (substitute* '("libweston/launcher-logind.c"
505 "libweston/weston-launch.c")
506 (("#include <systemd/sd-login.h>")
507 "#include <elogind/sd-login.h>"))
508 #t))
509 (add-after 'configure 'patch-confdefs.h
510 (lambda _
511 (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")))
512 (add-before 'check 'setup
513 (lambda _
514 (setenv "HOME" (getcwd))
515 (setenv "XDG_RUNTIME_DIR" (getcwd))
516 #t))
517 (add-before 'check 'start-xorg-server
518 (lambda* (#:key inputs #:allow-other-keys)
519 ;; The test suite requires a running X server.
520 (system (string-append (assoc-ref inputs "xorg-server")
521 "/bin/Xvfb :1 &"))
522 (setenv "DISPLAY" ":1")
523 #t)))))
524 (home-page "https://wayland.freedesktop.org")
525 (synopsis "Reference implementation of a Wayland compositor")
526 (description "Weston is the reference implementation of a Wayland
527 compositor, and a useful compositor in its own right.
528
529 A Wayland compositor allows applications to render to a shared offscreen
530 buffer using OpenGL ES. The compositor then culls the hidden parts and
531 composes the final output. A Wayland compositor is essentially a
532 multiplexer to the KMS/DRM Linux kernel devices.")
533 (license license:expat)))
534
535 (define-public exempi
536 (package
537 (name "exempi")
538 (version "2.4.2")
539 (source (origin
540 (method url-fetch)
541 (uri (string-append
542 "https://libopenraw.freedesktop.org/download/"
543 name "-" version ".tar.bz2"))
544 (sha256
545 (base32
546 "1v665fc7x0yi7x6lzskvd8bd2anf7951svn2vd5384dblmgv43av"))))
547 (build-system gnu-build-system)
548 (arguments
549 `(#:configure-flags (list (string-append "--with-boost="
550 (assoc-ref %build-inputs "boost")))))
551 (native-inputs
552 `(("boost" ,boost))) ; tests
553 (inputs
554 `(("expat" ,expat)
555 ("zlib" ,zlib)))
556 (home-page "https://wiki.freedesktop.org/libopenraw/Exempi")
557 (synopsis "XMP metadata handling library")
558 (description "Exempi is an implementation of the Extensible Metadata
559 Platform (XMP), which enables embedding metadata in PDF and image formats.")
560 (license license:bsd-3)))
561
562 (define-public libatasmart
563 (package
564 (name "libatasmart")
565 (version "0.19")
566 (source (origin
567 (method url-fetch)
568 (uri (string-append "http://0pointer.de/public/"
569 name "-" version ".tar.xz"))
570 (sha256
571 (base32
572 "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
573 (build-system gnu-build-system)
574 (native-inputs
575 `(("pkg-config" ,pkg-config)))
576 (inputs
577 `(("udev" ,eudev)))
578 (home-page "http://0pointer.de/blog/projects/being-smart.html")
579 (synopsis "ATA S.M.A.R.T. reading and parsing library")
580 (description
581 "This library supports a subset of the ATA S.M.A.R.T. (Self-Monitoring,
582 Analysis and Reporting Technology) functionality.")
583 (license license:lgpl2.1+)))
584
585 (define-public udisks
586 (package
587 (name "udisks")
588 (version "2.1.8")
589 (source (origin
590 (method url-fetch)
591 (uri (string-append "https://udisks.freedesktop.org/releases/"
592 name "-" version ".tar.bz2"))
593 (sha256
594 (base32
595 "1nkxhnqh39c9pzvm4zfj50rgv6apqawdx09bv3sfaxrah4a6jhfs"))))
596 (build-system gnu-build-system)
597 (native-inputs
598 `(("docbook-xml" ,docbook-xml-4.3) ; to build the manpages
599 ("docbook-xsl" ,docbook-xsl)
600 ("glib:bin" ,glib "bin") ; for glib-mkenums
601 ("gobject-introspection" ,gobject-introspection)
602 ("intltool" ,intltool)
603 ("pkg-config" ,pkg-config)
604 ("xsltproc" ,libxslt)))
605 (propagated-inputs
606 `(("glib" ,glib))) ; required by udisks2.pc
607 (inputs
608 `(("acl" ,acl)
609 ("libatasmart" ,libatasmart)
610 ("libgudev" ,libgudev)
611 ("polkit" ,polkit)
612 ("util-linux" ,util-linux)))
613 (outputs '("out"
614 "doc")) ;5 MiB of gtk-doc HTML
615 (arguments
616 `(#:tests? #f ; requiring system message dbus
617 #:disallowed-references ("doc") ;enforce separation of "doc"
618 #:configure-flags
619 (list "--enable-man"
620 "--localstatedir=/var"
621 "--enable-fhs-media" ;mount devices in /media, not /run/media
622 (string-append "--with-html-dir="
623 (assoc-ref %outputs "doc")
624 "/share/doc/udisks/html")
625 (string-append "--with-udevdir=" %output "/lib/udev"))
626 #:make-flags
627 (let* ((docbook-xsl-name-version ,(string-append
628 (package-name docbook-xsl) "-"
629 (package-version docbook-xsl)))
630 (docbook-xsl-catalog-file (string-append
631 (assoc-ref %build-inputs "docbook-xsl")
632 "/xml/xsl/"
633 docbook-xsl-name-version
634 "/catalog.xml"))
635 (docbook-xml-catalog-file (string-append
636 (assoc-ref %build-inputs "docbook-xml")
637 "/xml/dtd/docbook/catalog.xml")))
638 ;; Reference the catalog files required to build the manpages.
639 (list (string-append "XML_CATALOG_FILES=" docbook-xsl-catalog-file " "
640 docbook-xml-catalog-file)))
641 #:phases
642 (modify-phases %standard-phases
643 (add-before
644 'configure 'fix-girdir
645 (lambda _
646 ;; Install introspection data to its own output.
647 (substitute* "udisks/Makefile.in"
648 (("girdir = .*")
649 "girdir = $(datadir)/gir-1.0\n")
650 (("typelibsdir = .*")
651 "typelibsdir = $(libdir)/girepository-1.0\n"))))
652 (add-after 'install 'set-mount-file-name
653 (lambda* (#:key outputs inputs #:allow-other-keys)
654 ;; Tell 'udisksd' where to find the 'mount' command.
655 (let ((out (assoc-ref outputs "out"))
656 (utils (assoc-ref inputs "util-linux")))
657 (wrap-program (string-append out "/libexec/udisks2/udisksd")
658 `("PATH" ":" prefix
659 (,(string-append utils "/bin") ;for 'mount'
660 "/run/current-system/profile/bin"
661 "/run/current-system/profile/sbin")))
662 #t))))))
663 (home-page "https://www.freedesktop.org/wiki/Software/udisks/")
664 (synopsis "Disk manager service")
665 (description
666 "UDisks provides interfaces to enumerate and perform operations on disks
667 and storage devices. Any application (including unprivileged ones) can access
668 the udisksd(8) daemon via the name org.freedesktop.UDisks2 on the system
669 message bus.")
670 ;; The dynamic library are under LGPLv2+, others are GPLv2+.
671 (license (list license:gpl2+ license:lgpl2.0+))))
672
673 (define-public accountsservice
674 (package
675 (name "accountsservice")
676 (version "0.6.43")
677 (source (origin
678 (method url-fetch)
679 (uri (string-append "https://www.freedesktop.org/software/"
680 name "/" name "-" version ".tar.xz"))
681 (sha256
682 (base32
683 "1k6n9079001sgcwlkq0bz6mkn4m8y4dwf6hs1qm85swcld5ajfzd"))))
684 (build-system gnu-build-system)
685 (arguments
686 '(#:tests? #f ; XXX: tests require DocBook 4.1.2
687 #:configure-flags
688 '("--localstatedir=/var")
689 #:phases
690 (modify-phases %standard-phases
691 (add-before
692 'configure 'pre-configure
693 (lambda* (#:key inputs #:allow-other-keys)
694 ;; Don't try to create /var/lib/AccountsService.
695 (substitute* "src/Makefile.in"
696 (("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true"))
697 (let ((shadow (assoc-ref inputs "shadow")))
698 (substitute* '("src/user.c" "src/daemon.c")
699 (("/usr/sbin/usermod") (string-append shadow "/sbin/usermod"))
700 (("/usr/sbin/useradd") (string-append shadow "/sbin/useradd"))
701 (("/usr/sbin/userdel") (string-append shadow "/sbin/userdel"))
702 (("/usr/bin/passwd") (string-append shadow "/bin/passwd"))
703 (("/usr/bin/chage") (string-append shadow "/bin/chage"))))
704 #t)))))
705 (native-inputs
706 `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
707 ("gobject-introspection" ,gobject-introspection)
708 ("intltool" ,intltool)
709 ("pkg-config" ,pkg-config)))
710 (inputs
711 `(("shadow" ,shadow)
712 ("polkit" ,polkit)))
713 (home-page "http://www.freedesktop.org/wiki/Software/AccountsService/")
714 (synopsis "D-Bus interface for user account query and manipulation")
715 (description
716 "The AccountService project provides a set of D-Bus interfaces for querying
717 and manipulating user account information and an implementation of these
718 interfaces, based on the useradd, usermod and userdel commands.")
719 (license license:gpl3+)))
720
721 (define-public libmbim
722 (package
723 (name "libmbim")
724 (version "1.12.4")
725 (source (origin
726 (method url-fetch)
727 (uri (string-append
728 "https://www.freedesktop.org/software/" name "/"
729 name "-" version ".tar.xz"))
730 (sha256
731 (base32
732 "0flpgzsqpjgybjkx4smbb4rjxf2w1xgd1v9gmz61rvl89qasznbv"))))
733 (build-system gnu-build-system)
734 (native-inputs
735 `(("glib:bin" ,glib "bin") ; for glib-mkenums
736 ("pkg-config" ,pkg-config)
737 ("python" ,python-wrapper)))
738 (propagated-inputs
739 `(("glib" ,glib))) ; required by mbim-glib.pc
740 (inputs
741 `(("libgudev" ,libgudev)))
742 (synopsis "Library to communicate with MBIM-powered modems")
743 (home-page "https://www.freedesktop.org/wiki/Software/libmbim/")
744 (description
745 "Libmbim is a GLib-based library for talking to WWAN modems and devices
746 which speak the Mobile Interface Broadband Model (MBIM) protocol.")
747 (license
748 ;; The libmbim-glib library is released under the LGPLv2+ license.
749 ;; The mbimcli tool is released under the GPLv2+ license.
750 (list license:lgpl2.0+ license:gpl2+))))
751
752 (define-public libqmi
753 (package
754 (name "libqmi")
755 (version "1.14.2")
756 (source (origin
757 (method url-fetch)
758 (uri (string-append
759 "https://www.freedesktop.org/software/" name "/"
760 name "-" version ".tar.xz"))
761 (sha256
762 (base32
763 "0h009bzss4bal47nk21lyp4s3mmlcivhhaaj7r9229qvx85bi0v2"))))
764 (build-system gnu-build-system)
765 (native-inputs
766 `(("glib:bin" ,glib "bin") ; for glib-mkenums
767 ("pkg-config" ,pkg-config)
768 ("python" ,python-wrapper)))
769 (propagated-inputs
770 `(("glib" ,glib))) ; required by qmi-glib.pc
771 (synopsis "Library to communicate with QMI-powered modems")
772 (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
773 (description
774 "Libqmi is a GLib-based library for talking to WWAN modems and devices
775 which speak the Qualcomm MSM Interface (QMI) protocol.")
776 (license
777 ;; The libqmi-glib library is released under the LGPLv2+ license.
778 ;; The qmicli tool is released under the GPLv2+ license.
779 (list license:lgpl2.0+ license:gpl2+))))
780
781 (define-public modem-manager
782 (package
783 (name "modem-manager")
784 (version "1.4.14")
785 (source (origin
786 (method url-fetch)
787 (uri (string-append
788 "https://www.freedesktop.org/software/ModemManager/"
789 "ModemManager-" version ".tar.xz"))
790 (sha256
791 (base32
792 "18hvffwcncwz14kdzk42jbkh362n0kjv3kgx7axbqx572pawvrmb"))))
793 (build-system gnu-build-system)
794 (arguments
795 '(#:configure-flags
796 `(,(string-append "--with-udev-base-dir=" %output "/lib/udev"))))
797 (native-inputs
798 `(("glib:bin" ,glib "bin") ; for glib-mkenums
799 ("gobject-introspection" ,gobject-introspection)
800 ("intltool" ,intltool)
801 ("pkg-config" ,pkg-config)
802 ("vala" ,vala)
803 ;; For testing.
804 ("dbus" ,dbus)))
805 (propagated-inputs
806 `(("glib" ,glib))) ; required by mm-glib.pc
807 (inputs
808 `(("libgudev" ,libgudev)
809 ("libmbim" ,libmbim)
810 ("libqmi" ,libqmi)
811 ("polkit" ,polkit)))
812 (synopsis "Mobile broadband modems manager")
813 (home-page "http://www.freedesktop.org/wiki/Software/ModemManager/")
814 (description
815 "ModemManager is a DBus-activated daemon which controls mobile
816 broadband (2G/3G/4G) devices and connections. Whether built-in devices, USB
817 dongles, bluetooth-paired telephones, or professional RS232/USB devices with
818 external power supplies, ModemManager is able to prepare and configure the
819 modems and setup connections with them.")
820 (license license:gpl2+)))
821
822 (define-public telepathy-logger
823 (package
824 (name "telepathy-logger")
825 (version "0.8.2")
826 (source (origin
827 (method url-fetch)
828 (uri (string-append "https://telepathy.freedesktop.org/releases/"
829 name "/" name "-" version ".tar.bz2"))
830 (sha256
831 (base32
832 "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg"))))
833 (build-system gnu-build-system)
834 (arguments
835 '(#:parallel-tests? #f
836 #:phases
837 (modify-phases %standard-phases
838 (add-before 'check 'pre-check
839 (lambda _
840 (setenv "HOME" (getenv "TMPDIR"))
841 #t)))))
842 (native-inputs
843 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
844 ("gobject-introspection" ,gobject-introspection)
845 ("intltool" ,intltool)
846 ("pkg-config" ,pkg-config)
847 ("python" ,python-2)
848 ("xsltproc" ,libxslt)))
849 (propagated-inputs
850 ;; telepathy-logger-0.2.pc refers to all these.
851 `(("libxml2" ,libxml2)
852 ("sqlite" ,sqlite)
853 ("telepathy-glib" ,telepathy-glib)))
854 (synopsis "Telepathy logger library")
855 (home-page "http://telepathy.freedesktop.org/")
856 (description
857 "Telepathy logger is a headless observer client that logs information
858 received by the Telepathy framework. It features pluggable backends to log
859 different sorts of messages in different formats.")
860 (license license:lgpl2.1+)))
861
862 (define-public telepathy-idle
863 (package
864 (name "telepathy-idle")
865 (version "0.2.0")
866 (source (origin
867 (method url-fetch)
868 (uri (string-append "https://telepathy.freedesktop.org/releases/"
869 name "/" name "-" version ".tar.bz2"))
870 (sha256
871 (base32
872 "1argdzbif1vdmwp5vqbgkadq9ancjmgdm2ncp0qfckni715ss4rh"))))
873 (build-system gnu-build-system)
874 (native-inputs
875 `(("pkg-config" ,pkg-config)))
876 (inputs
877 `(("xsltproc" ,libxslt)
878 ("python" ,python-2)
879 ("python-dbus" ,python2-dbus)))
880 (propagated-inputs
881 `(("telepathy-glib" ,telepathy-glib)))
882 (home-page "http://telepathy.freedesktop.org/")
883 (synopsis "Telepathy IRC connection manager")
884 (description
885 "Idle is an IRC connection manager for the Telepathy framework. This
886 package enables usage of IRC channels and private messages in Telepathy instant
887 messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
888 (license (list license:lgpl2.1 license:lgpl2.1+))))
889
890 (define-public telepathy-mission-control
891 (package
892 (name "telepathy-mission-control")
893 (version "5.16.4")
894 (source (origin
895 (method url-fetch)
896 (uri (string-append "https://telepathy.freedesktop.org/releases/"
897 name "/" name "-" version ".tar.gz"))
898 (sha256
899 (base32
900 "1jz6wwgsfxixha6ys2hbzbk5faqnj9kh2m5qdlgx5anqgandsscp"))))
901 (build-system gnu-build-system)
902 (native-inputs
903 `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
904 ("pkg-config" ,pkg-config)))
905 (inputs
906 `(("dconf" ,dconf)
907 ("gtk-doc" ,gtk-doc)
908 ("libgnome-keyring" ,libgnome-keyring)
909 ("python" ,python-2)
910 ("xsltproc" ,libxslt)))
911 (propagated-inputs
912 `(("telepathy-glib" ,telepathy-glib)))
913 (home-page "https://telepathy.freedesktop.org/wiki/Components/Mission_Control/")
914 (synopsis "Telepathy real-time communication framework management daemon")
915 (description
916 "Telepathy Mission Control 5 is an account manager and channel dispatcher
917 for the Telepathy framework, allowing user interfaces and other clients to
918 share connections to real-time communication services without conflicting.")
919 (license license:lgpl2.1)))
920
921 (define-public colord-gtk
922 (package
923 (name "colord-gtk")
924 (version "0.1.26")
925 (source (origin
926 (method url-fetch)
927 (uri (string-append "https://www.freedesktop.org/software/colord"
928 "/releases/" name "-" version ".tar.xz"))
929 (sha256
930 (base32
931 "0i9y3bb5apj6a0f8cx36l6mjzs7xc0k7nf0magmf58vy2mzhpl18"))))
932 (build-system gnu-build-system)
933 (arguments '(#:tests? #f)) ; require the colord system service
934 (native-inputs
935 `(("gobject-introspection" ,gobject-introspection)
936 ("intltool" ,intltool)
937 ("pkg-config" ,pkg-config)
938 ("vala" ,vala)))
939 (propagated-inputs
940 ;; colord-gtk.pc refers to all these.
941 `(("colord" ,colord)
942 ("gtk+" ,gtk+)))
943 (synopsis "GTK integration for libcolord")
944 (home-page "http://www.freedesktop.org/software/colord/")
945 (description
946 "This is a GTK+ convenience library for interacting with colord. It is
947 useful for both applications which need colour management and applications that
948 wish to perform colour calibration.")
949 (license license:lgpl2.1+)))
950
951 (define-public libfprint
952 (package
953 (name "libfprint")
954 (version "0.6.0")
955 (source (origin
956 (method url-fetch)
957 (uri (string-append "https://people.freedesktop.org/~hadess/"
958 name "-" version ".tar.xz"))
959 (sha256
960 (base32
961 "1giwh2z63mn45galsjb59rhyrvgwcy01hvvp4g01iaa2snvzr0r5"))))
962 (build-system gnu-build-system)
963 (arguments
964 '(#:configure-flags (list (string-append "--with-udev-rules-dir="
965 (assoc-ref %outputs "out")
966 "/lib/udev/rules.d"))))
967 (native-inputs
968 `(("pkg-config" ,pkg-config)))
969 (inputs
970 `(("libusb" ,libusb)
971 ("nss" ,nss)
972 ("glib" ,glib)
973 ("eudev" ,eudev)
974 ("pixman" ,pixman)))
975 (home-page "https://www.freedesktop.org/wiki/Software/fprint/libfprint/")
976 (synopsis "Library to access fingerprint readers")
977 (description
978 "libfprint is a library designed to make it easy for application
979 developers to add support for consumer fingerprint readers to their
980 software.")
981 (license license:lgpl2.1+)))
982
983 (define-public fprintd
984 (package
985 (name "fprintd")
986 (version "0.7.0")
987 (source (origin
988 (method url-fetch)
989 (uri (string-append
990 "https://people.freedesktop.org/~hadess/fprintd-"
991 version ".tar.xz"))
992 (sha256
993 (base32
994 "05915i0bv7q62fqrs5diqwr8dz3pwqa1c1ivcgggkjyw0xk4ldp5"))))
995 (build-system gnu-build-system)
996 (arguments
997 '(#:phases (modify-phases %standard-phases
998 (add-before 'build 'set-sysconfdir
999 (lambda* (#:key outputs #:allow-other-keys)
1000 ;; Work around a bug whereby the 'SYSCONFDIR' macro
1001 ;; expands literally to '${prefix}/etc'.
1002 (let ((out (assoc-ref outputs "out")))
1003 (substitute* "src/main.c"
1004 (("SYSCONFDIR, \"fprintd.conf\"")
1005 (string-append "\"" out "/etc\", "
1006 "\"fprintd.conf\"")))
1007 #t))))))
1008 (native-inputs
1009 `(("pkg-config" ,pkg-config)
1010 ("intltool" ,intltool)))
1011 (inputs
1012 `(("libfprint" ,libfprint)
1013 ("dbus-glib" ,dbus-glib)
1014 ("polkit" ,polkit)
1015 ("linux-pam" ,linux-pam))) ;for pam_fprintd
1016 (home-page "https://www.freedesktop.org/wiki/Software/fprint/fprintd/")
1017 (synopsis "D-Bus daemon that exposes fingerprint reader functionality")
1018 (description
1019 "fprintd is a D-Bus daemon that offers functionality of libfprint, a
1020 library to access fingerprint readers, over the D-Bus interprocess
1021 communication bus. This daemon layer above libfprint solves problems related
1022 to applications simultaneously competing for fingerprint readers.")
1023 (license license:gpl2+)))
1024
1025 (define-public desktop-file-utils
1026 (package
1027 (name "desktop-file-utils")
1028 (version "0.23")
1029 (source (origin
1030 (method url-fetch)
1031 (uri (string-append "https://www.freedesktop.org/software/" name
1032 "/releases/" name "-" version ".tar.xz"))
1033 (sha256
1034 (base32
1035 "119kj2w0rrxkhg4f9cf5waa55jz1hj8933vh47vcjipcplql02bc"))))
1036 (build-system gnu-build-system)
1037 (native-inputs
1038 `(("pkg-config" ,pkg-config)))
1039 (inputs
1040 `(("glib" ,glib)))
1041 (home-page "http://www.freedesktop.org/wiki/Software/desktop-file-utils/")
1042 (synopsis "Utilities for working with desktop entries")
1043 (description
1044 "This package contains a few command line utilities for working with
1045 desktop entries:
1046
1047 desktop-file-validate: validates a desktop file and prints warnings/errors
1048 about desktop entry specification violations.
1049
1050 desktop-file-install: installs a desktop file to the applications directory,
1051 optionally munging it a bit in transit.
1052
1053 update-desktop-database: updates the database containing a cache of MIME types
1054 handled by desktop files.")
1055 (license license:gpl2+)))
1056
1057 (define-public xdg-user-dirs
1058 (package
1059 (name "xdg-user-dirs")
1060 (version "0.16")
1061 (source (origin
1062 (method url-fetch)
1063 (uri (string-append "http://user-dirs.freedesktop.org/releases/"
1064 name "-" version ".tar.gz"))
1065 (sha256
1066 (base32 "1rp3c94hxjlfsryvwajklynfnrcvxplhwnjqc7395l89i0nb83vp"))))
1067 (build-system gnu-build-system)
1068 (native-inputs
1069 `(("gettext" ,gettext-minimal)
1070 ("docbook-xsl" ,docbook-xsl)
1071 ("docbook-xml" ,docbook-xml-4.3)
1072 ("xsltproc" ,libxslt)))
1073 (arguments
1074 `(#:phases
1075 (modify-phases %standard-phases
1076 (add-before 'build 'locate-catalog-files
1077 (lambda* (#:key inputs #:allow-other-keys)
1078 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
1079 "/xml/dtd/docbook"))
1080 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
1081 "/xml/xsl/docbook-xsl-"
1082 ,(package-version docbook-xsl))))
1083 (for-each (lambda (file)
1084 (substitute* file
1085 (("http://.*/docbookx\\.dtd")
1086 (string-append xmldoc "/docbookx.dtd"))))
1087 (find-files "man" "\\.xml$"))
1088 (substitute* "man/Makefile"
1089 (("http://.*/docbook\\.xsl")
1090 (string-append xsldoc "/manpages/docbook.xsl")))
1091 #t))))))
1092 (home-page "https://www.freedesktop.org/wiki/Software/xdg-user-dirs/")
1093 (synopsis "Tool to help manage \"well known\" user directories")
1094 (description "xdg-user-dirs is a tool to help manage \"well known\" user
1095 directories, such as the desktop folder or the music folder. It also handles
1096 localization (i.e. translation) of the file names. Designed to be
1097 automatically run when a user logs in, xdg-user-dirs can also be run
1098 manually by a user.")
1099 (license license:gpl2)))