freedesktop.scm 43 KB

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