projects/guix·blob python-team · refs

3779 lines · 143.0 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Andreas Enge <[email protected]>
3;;; Copyright © 2015 Sou Bunnbu <[email protected]>
4;;; Copyright © 2015, 2017 Andy Wingo <[email protected]>
5;;; Copyright © 2015-2017, 2019, 2021-2022, 2025-2026 Ludovic Courtès <[email protected]>
6;;; Copyright © 2015, 2017, 2018, 2019, 2021, 2022, 2023 Ricardo Wurmus <[email protected]>
7;;; Copyright © 2015 David Hashe <[email protected]>
8;;; Copyright © 2016, 2017, 2019, 2021-2025 Efraim Flashner <[email protected]>
9;;; Copyright © 2016 Kei Kebreau <[email protected]>
10;;; Copyright © 2017 Nikita <[email protected]>
11;;; Copyright © 2017, 2018 Mark H Weaver <[email protected]>
12;;; Copyright © 2017, 2018, 2019, 2020, 2022 Marius Bakke <[email protected]>
13;;; Copyright © 2017, 2018, 2019 Rutger Helling <[email protected]>
14;;; Copyright © 2017, 2020, 2021, 2022 Brendan Tildesley <[email protected]>
15;;; Copyright © 2018, 2020–2022 Tobias Geerinckx-Rice <[email protected]>
16;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
17;;; Copyright © 2018 Stefan Stefanović <[email protected]>
18;;; Copyright © 2019 Reza Alizadeh Majd <[email protected]>
19;;; Copyright © 2019, 2020 Guillaume Le Vaillant <[email protected]>
20;;; Copyright © 2020 Jakub Kądziołka <[email protected]>
21;;; Copyright © 2020 Rene Saavedra <[email protected]>
22;;; Copyright © 2020 Nicolò Balzarotti <[email protected]>
23;;; Copyright © 2020 Anders Thuné <[email protected]>
24;;; Copyright © 2020 Raghav Gururajan <[email protected]>
25;;; Copyright © 2021 pineapples <[email protected]>
26;;; Copyright © 2021 Sarah Morgensen <[email protected]>
27;;; Copyright © 2021 Robby Zambito <[email protected]>
28;;; Copyright © 2021, 2022, 2023 Maxime Devos <[email protected]>
29;;; Copyright © 2021, 2022, 2024 John Kehayias <[email protected]>
30;;; Copyright © 2021-2026 Maxim Cournoyer <[email protected]>
31;;; Copyright © 2022 Daniel Meißner <[email protected]>
32;;; Copyright © 2022 Wamm K. D. <[email protected]>
33;;; Copyright © 2022 Petr Hodina <[email protected]>
34;;; Copyright © 2022 muradm <[email protected]>
35;;; Copyright © 2023 Alex Devaure <[email protected]>
36;;; Copyright © 2023 Bruno Victal <[email protected]>
37;;; Copyright © 2024-2025 Zheng Junjie <[email protected]>
38;;; Copyright © 2022 Samuel Culpepper <[email protected]>
39;;; Copyright © 2024-2025 Alvin Hsu <[email protected]>
40;;; Copyright © 2024 Dariqq <[email protected]>
41;;; Copyright © 2024 Wilko Meyer <[email protected]>
42;;; Copyright © 2024, 2025 dan <[email protected]>
43;;; Copyright © 2024 Janneke Nieuwenhuizen <[email protected]>
44;;; Copyright © 2025 wvlab <[email protected]>
45;;; Copyright © 2025 jgart <[email protected]>
46;;; Copyright © 2026 Daniel Littlewood <[email protected]>
47;;; Copyright © 2026 Luis Guilherme Coelho <[email protected]>
48;;;
49;;; This file is part of GNU Guix.
50;;;
51;;; GNU Guix is free software; you can redistribute it and/or modify it
52;;; under the terms of the GNU General Public License as published by
53;;; the Free Software Foundation; either version 3 of the License, or (at
54;;; your option) any later version.
55;;;
56;;; GNU Guix is distributed in the hope that it will be useful, but
57;;; WITHOUT ANY WARRANTY; without even the implied warranty of
58;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59;;; GNU General Public License for more details.
60;;;
61;;; You should have received a copy of the GNU General Public License
62;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
63
64(define-module (gnu packages freedesktop)
65 #:use-module (guix bzr-download)
66 #:use-module (guix download)
67 #:use-module (guix gexp)
68 #:use-module (guix git-download)
69 #:use-module ((guix licenses) #:prefix license:)
70 #:use-module (guix packages)
71 #:use-module (guix utils)
72 #:use-module (guix build-system cargo)
73 #:use-module (guix build-system cmake)
74 #:use-module (guix build-system gnu)
75 #:use-module (guix build-system meson)
76 #:use-module (guix build-system perl)
77 #:use-module (guix build-system pyproject)
78 #:use-module (guix build-system glib-or-gtk)
79 #:use-module (guix build-system qt)
80 #:use-module (guix search-paths)
81 #:use-module (gnu packages)
82 #:use-module (gnu packages acl)
83 #:use-module (gnu packages admin)
84 #:use-module (gnu packages autotools)
85 #:use-module (gnu packages base)
86 #:use-module (gnu packages bash)
87 #:use-module (gnu packages boost)
88 #:use-module (gnu packages build-tools)
89 #:use-module (gnu packages c)
90 #:use-module (gnu packages check)
91 #:use-module (gnu packages cmake)
92 #:use-module (gnu packages compression)
93 #:use-module (gnu packages cpp)
94 #:use-module (gnu packages crypto)
95 #:use-module (gnu packages cryptsetup)
96 #:use-module (gnu packages cups)
97 #:use-module (gnu packages curl)
98 #:use-module (gnu packages databases)
99 #:use-module (gnu packages disk)
100 #:use-module (gnu packages dns)
101 #:use-module (gnu packages docbook)
102 #:use-module (gnu packages documentation)
103 #:use-module (gnu packages file)
104 #:use-module (gnu packages fontutils)
105 #:use-module (gnu packages gawk)
106 #:use-module (gnu packages gcc)
107 #:use-module (gnu packages gettext)
108 #:use-module (gnu packages ghostscript)
109 #:use-module (gnu packages gl)
110 #:use-module (gnu packages glib) ;intltool
111 #:use-module (gnu packages gnome)
112 #:use-module (gnu packages gperf)
113 #:use-module (gnu packages graph)
114 #:use-module (gnu packages graphviz)
115 #:use-module (gnu packages gstreamer)
116 #:use-module (gnu packages gtk)
117 #:use-module (gnu packages hunspell)
118 #:use-module (gnu packages ibus)
119 #:use-module (gnu packages image)
120 #:use-module (gnu packages kde-frameworks)
121 #:use-module (gnu packages language)
122 #:use-module (gnu packages llvm)
123 #:use-module (gnu packages libffi)
124 #:use-module (gnu packages libunwind)
125 #:use-module (gnu packages libusb)
126 #:use-module (gnu packages linux)
127 #:use-module (gnu packages lxqt)
128 #:use-module (gnu packages man)
129 #:use-module (gnu packages m4)
130 #:use-module (gnu packages networking)
131 #:use-module (gnu packages nss)
132 #:use-module (gnu packages package-management)
133 #:use-module (gnu packages pciutils)
134 #:use-module (gnu packages perl)
135 #:use-module (gnu packages perl-check)
136 #:use-module (gnu packages pkg-config)
137 #:use-module (gnu packages polkit)
138 #:use-module (gnu packages python)
139 #:use-module (gnu packages python-build)
140 #:use-module (gnu packages python-crypto)
141 #:use-module (gnu packages python-xyz)
142 #:use-module (gnu packages qt)
143 #:use-module (gnu packages rdesktop)
144 #:use-module (gnu packages rsync)
145 #:use-module (gnu packages rust)
146 #:use-module (gnu packages rust-apps)
147 #:use-module (gnu packages samba)
148 #:use-module (gnu packages serialization)
149 #:use-module (gnu packages sqlite)
150 #:use-module (gnu packages tls)
151 #:use-module (gnu packages valgrind)
152 #:use-module (gnu packages video)
153 #:use-module (gnu packages vim)
154 #:use-module (gnu packages virtualization)
155 #:use-module (gnu packages vnc)
156 #:use-module (gnu packages vulkan)
157 #:use-module (gnu packages w3m)
158 #:use-module (gnu packages web)
159 #:use-module (gnu packages window-management)
160 #:use-module (gnu packages xdisorg)
161 #:use-module (gnu packages xml)
162 #:use-module (gnu packages xorg)
163 #:use-module (srfi srfi-1))
164
165(define-public appstream
166 (package
167 (name "appstream")
168 (version "1.0.5")
169 (source
170 (origin
171 (method url-fetch)
172 (uri
173 (string-append "https://www.freedesktop.org/software/"
174 "appstream/releases/"
175 "AppStream-" version ".tar.xz"))
176 (sha256
177 (base32 "08aijy6mfyd9cc7b7gk0610w6rqr5xwpva0fg77z1mdbi6gd43nf"))))
178 (build-system meson-build-system)
179 (arguments
180 (list
181 #:glib-or-gtk? #t
182 #:configure-flags #~(list "-Dsystemd=false")
183 #:phases
184 #~(modify-phases %standard-phases
185 (add-after 'unpack 'patch-libstemmer
186 (lambda* (#:key inputs #:allow-other-keys)
187 (let ((libstemmer.h (search-input-file inputs
188 "include/libstemmer.h")))
189 (substitute* "meson.build"
190 (("/usr/include")
191 (dirname libstemmer.h))))))
192 (add-before 'check 'check-setup
193 (lambda _
194 (setenv "HOME" (getcwd)))))))
195 (native-inputs
196 (list docbook-xml-4.3
197 docbook-xml
198 docbook-xsl
199 gettext-minimal
200 `(,glib "bin")
201 gobject-introspection
202 gperf
203 gtk-doc/stable
204 itstool
205 libxslt
206 pkg-config
207 python-wrapper
208 gi-docgen))
209 (inputs
210 (list curl libsoup-minimal-2 libstemmer libxmlb libxml2 libyaml lmdb))
211 (propagated-inputs
212 (list glib))
213 (synopsis "Tools and libraries to work with AppStream metadata")
214 (description "AppStream is a cross-distribution effort for enhancing the way
215we interact with the software repositories provided by distributions by
216standardizing software component metadata. It provides the foundation to build
217software-center applications, by providing metadata necessary for an
218application-centric view on package repositories. It additionally provides
219specifications for things like an unified software metadata database, screenshot
220services and various other things needed to create user-friendly
221application-centers for distributions.")
222 (home-page "https://www.freedesktop.org/wiki/Distributions/AppStream/")
223 (license license:lgpl2.1+)))
224
225(define-public appstream-qt
226 (package/inherit appstream
227 (name "appstream-qt")
228 (native-inputs
229 (modify-inputs native-inputs
230 (prepend qttools-5)))
231 (inputs
232 (modify-inputs inputs
233 (prepend qtbase-5)))
234 (arguments
235 (substitute-keyword-arguments arguments
236 ((#:configure-flags flags #~'())
237 #~(append '("-Dqt=true" "-Dqt-versions=5") #$flags))))))
238
239(define-public appstream-qt6
240 (package/inherit appstream
241 (name "appstream-qt6")
242 (native-inputs
243 (modify-inputs native-inputs
244 (prepend qttools)))
245 (inputs
246 (modify-inputs inputs
247 (prepend qtbase)))
248 (arguments
249 (substitute-keyword-arguments arguments
250 ((#:configure-flags flags #~'())
251 #~(append '("-Dqt=true" "-Dqt-versions=6") #$flags))))))
252
253(define-public libglib-testing
254 (package
255 (name "libglib-testing")
256 (version "0.1.0")
257 (source
258 (origin
259 (method git-fetch)
260 (uri (git-reference
261 (url "https://gitlab.gnome.org/pwithnall/libglib-testing.git")
262 (commit version)))
263 (file-name (git-file-name name version))
264 (sha256
265 (base32 "0xmycsrlqyji6sc2i4wvp2gxf3897z65a57ygihfnpjpyl7zlwkr"))))
266 (build-system meson-build-system)
267 (arguments
268 `(#:glib-or-gtk? #t
269 #:phases
270 (modify-phases %standard-phases
271 (add-before
272 'check 'pre-check
273 (lambda _
274 ;; The test suite requires a running dbus-daemon.
275 (system "dbus-daemon &")
276 ;; Don't fail on missing '/etc/machine-id'.
277 (setenv "DBUS_FATAL_WARNINGS" "0")
278 #t)))))
279 (native-inputs
280 `(("glib:bin" ,glib "bin")
281 ("gobject-introspection" ,gobject-introspection)
282 ("pkg-config" ,pkg-config)
283 ("gtk-doc" ,gtk-doc/stable)))
284 (inputs
285 (list dbus glib))
286 (synopsis "Glib testing library")
287 (description "Libglib-testing is a test library providing test harnesses and
288mock classes which complement the classes provided by GLib. It is intended to
289be used by any project which uses GLib and which wants to write internal unit
290tests.")
291 (home-page "https://gitlab.gnome.org/pwithnall/libglib-testing")
292 (license license:lgpl2.1+)))
293
294(define-public libsfdo
295 (package
296 (name "libsfdo")
297 (version "0.1.3")
298 (source
299 (origin
300 (method git-fetch)
301 (uri (git-reference
302 (url "https://gitlab.freedesktop.org/vyivel/libsfdo")
303 (commit (string-append "v" version))))
304 (file-name (git-file-name name version))
305 (sha256
306 (base32 "1fi9hlg9ms8sszb0ylx4v0q49265vbsix455x64nkvklh049yc7n"))))
307 (build-system meson-build-system)
308 (home-page "https://gitlab.freedesktop.org/vyivel/libsfdo")
309 (synopsis "Implementation of some of the freedesktop.org specifications")
310 (description "libsfdo is a collection of libraries which implement
311some of the freedesktop.org specifications.")
312 (license license:bsd-2)))
313
314(define-public libliftoff
315 (package
316 (name "libliftoff")
317 (version "0.5.0")
318 (source (origin
319 (method git-fetch)
320 (uri (git-reference
321 (url "https://gitlab.freedesktop.org/emersion/libliftoff")
322 (commit (string-append "v" version))))
323 (file-name (git-file-name name version))
324 (sha256
325 (base32
326 "163g8ndsbma7acy2k9mrnvlpb7yi4431hgkx1gygkafgwpq1ii1x"))))
327 (build-system meson-build-system)
328 (native-inputs (list pkg-config))
329 (inputs (list libdrm))
330 (home-page "https://gitlab.freedesktop.org/emersion/libliftoff")
331 (synopsis "Lightweight KMS plane library for compositors")
332 (description "Libliftoff eases the use of
333@acronym{KMS, Kernel Mode Setting} planes from userspace. Users create
334\"virtual planes\" called layers, set KMS properties on them, and libliftoff
335will pick hardware planes for these layers if possible.")
336 (license license:expat)))
337
338(define-public lisgd
339 (package
340 (name "lisgd")
341 (version "0.4.0")
342 (source
343 (origin
344 (method git-fetch)
345 (uri (git-reference
346 (url "https://git.sr.ht/~mil/lisgd")
347 (commit version)))
348 (sha256
349 (base32
350 "0rkm6d3jn0i1fwf5qj47hv8w9aax5fijhccnc6f6v59q3aj5jd4n"))
351 (file-name (git-file-name name version))))
352 (build-system gnu-build-system)
353 (arguments
354 (list
355 #:tests? #f ; There are no tests.
356 #:make-flags
357 #~(list
358 (string-append "CC=" #$(cc-for-target))
359 (string-append "PREFIX=" %output)
360 (string-append "CPPFLAGS="
361 "-DWITH_WAYLAND "
362 "-I" #$libinput "/include "
363 "-I" #$wayland "/include")
364 (string-append "LDFLAGS="
365 "-L" #$libinput "/lib "
366 "-L" #$wayland "/lib"))
367 #:phases
368 #~(modify-phases %standard-phases
369 (delete 'configure)))) ; There is no configure script.
370 (inputs (list libinput libx11 wayland))
371 (home-page "https://git.sr.ht/~mil/lisgd")
372 (synopsis "Bind gestures via libinput touch events")
373 (description "Bind gestures on touchscreens and unsupported gesture
374devices via libinput touch events.")
375 (license (list license:expat license:x11))))
376
377(define-public malcontent
378 (package
379 (name "malcontent")
380 (version "0.11.1")
381 (source
382 (origin
383 (method git-fetch)
384 (uri (git-reference
385 (url "https://gitlab.freedesktop.org/pwithnall/malcontent.git")
386 (commit version)))
387 (file-name (git-file-name name version))
388 (sha256
389 (base32 "0g622ig5ffrzk9184xff3lardk7rnmkvj8y5g6h6s41bfh51b71m"))))
390 (build-system meson-build-system)
391 (arguments
392 `(#:glib-or-gtk? #t
393 #:phases
394 (modify-phases %standard-phases
395 ;; AppInfo not available inside build environment.
396 (add-after 'unpack 'fix-tests
397 (lambda _
398 (substitute* "libmalcontent/tests/app-filter.c"
399 (("g_test_add_func \\(\"/app-filter/appinfo\", test_app_filter_appinfo\\);")
400 "")))))))
401 (native-inputs
402 (list desktop-file-utils
403 gettext-minimal
404 `(,glib "bin")
405 gobject-introspection
406 `(,gtk "bin")
407 itstool
408 libglib-testing
409 libxml2
410 pkg-config))
411 (inputs
412 (list accountsservice
413 appstream
414 appstream-glib
415 dbus
416 flatpak
417 glib
418 gtk
419 libadwaita
420 libostree
421 linux-pam
422 polkit))
423 (synopsis "Parental controls support")
424 (description "MalContent implements parental controls support which can
425be used by applications to filter or limit the access of child accounts to
426inappropriate content.")
427 (home-page "https://gitlab.freedesktop.org/pwithnall/malcontent")
428 (license
429 (list
430 license:gpl2+
431 license:lgpl2.1+))))
432
433;; Hidden package used by shared-mime-info.
434(define-public xdgmime
435 ;; No public release, match commit to the one used in the
436 ;; shared-mime-info release.
437 (let ((commit "179296748e92bd91bf531656632a1056307fb7b7")
438 (revision "2"))
439 (package
440 (name "xdgmime")
441 (version (git-version "0.0" revision commit))
442 (source (origin
443 (method git-fetch)
444 (uri (git-reference
445 (url "https://gitlab.freedesktop.org/xdg/xdgmime.git")
446 (commit commit)))
447 (file-name (git-file-name name version))
448 (sha256
449 (base32
450 "04bpbqlkmwi2pqx1lj3awa9f9gwp4n91fpnz8hbbd0hl8x41przm"))))
451 (build-system gnu-build-system)
452 (arguments
453 (list
454 #:tests? #f ; no tests
455 #:make-flags #~(list (string-append "DESTDIR=" #$output)
456 #$(string-append "CC=" (cc-for-target)))
457 #:imported-modules `((guix build copy-build-system)
458 ,@%default-gnu-imported-modules)
459 #:modules `((guix build gnu-build-system)
460 ((guix build copy-build-system) #:prefix copy:)
461 (guix build utils))
462 #:phases
463 #~(modify-phases %standard-phases
464 ;; Package uses a hand-crafted Makefile.
465 (delete 'configure)
466 (replace 'install
467 (lambda args
468 (apply (assoc-ref copy:%standard-phases 'install)
469 #:install-plan
470 '(("src" "bin/" #:include ("print-mime-data"
471 "test-mime-data"
472 "test-mime")))
473 args))))))
474 (home-page "https://gitlab.freedesktop.org/xdg/xdgmime/")
475 (synopsis "Module that parses the freedesktop.org MIME spec")
476 (description "This module is used for shared-mime-info package tests.")
477 (properties '((hidden? . #t)))
478 (license (list license:lgpl2.1+ license:artistic2.0)))))
479
480;; Note: when updating shared-mime-info, don't forget to update xdgmime's commit
481;; to the one used in the release.
482(define-public shared-mime-info
483 (package
484 (name "shared-mime-info")
485 (version "2.3")
486 (source (origin
487 (method git-fetch)
488 (uri (git-reference
489 (url "https://gitlab.freedesktop.org/xdg/shared-mime-info.git")
490 (commit version)))
491 (file-name (git-file-name name version))
492 (sha256
493 (base32
494 "0w8sbhz00sk6k8pyiykfig4rm22jyibalj7g22j9qf3d2nfy8ivh"))
495 (patches (search-patches "shared-mime-info-xdgmime-path.patch"))))
496 (build-system meson-build-system)
497 (arguments
498 (list
499 #:configure-flags
500 #~(list (string-append
501 "-Dxdgmime-path="
502 (dirname
503 (search-input-file %build-inputs "/bin/test-mime")))
504 "-Dupdate-mimedb=true")
505 #:phases
506 #~(modify-phases %standard-phases
507 ;; Don't patch shebangs for the test files.
508 (replace 'patch-source-shebangs
509 (lambda _
510 (let ((pred (lambda (file stat)
511 (and (eq? 'regular (stat:type stat))
512 (not (string-prefix? "./tests/mime-detection"
513 file))))))
514 (for-each patch-shebang
515 (find-files "." pred #:stat lstat)))))
516 ;; The docs have no install rule.
517 (add-after 'install 'install-doc
518 (lambda* (#:key source #:allow-other-keys)
519 (let ((dest (string-append #$output:doc "/share/doc")))
520 (with-directory-excursion "data/shared-mime-info-spec-html"
521 (install-file "shared-mime-info-spec.html"
522 (string-append dest "/html")))
523 (install-file (string-append source
524 "/data/shared-mime-info-spec.xml")
525 dest)))))))
526 (inputs
527 (list glib libxml2))
528 (native-inputs
529 (append
530 (if (%current-target-system)
531 (list libxml2 this-package)
532 '())
533 (list gettext-minimal pkg-config python xdgmime
534 ;; For 'doc' output.
535 docbook-xml-4.1.2 docbook-xsl xmlto)))
536 (outputs (list "out" "doc"))
537 (home-page "https://www.freedesktop.org/wiki/Software/shared-mime-info")
538 (synopsis "Database of common MIME types")
539 (description
540 "The shared-mime-info package contains the core database of common types
541and the update-mime-database command used to extend it. It requires glib2 to
542be installed for building the update command. Additionally, it uses intltool
543for translations, though this is only a dependency for the maintainers. This
544database is translated at Transifex.")
545 (license license:gpl2+)))
546
547(define-public xdgcpp
548 ;; XXX: Does not release anymore.
549 (let ((commit "e2c40c081e2ee2d315d1d0b3ae5981d5fd77260e")
550 (revision "0"))
551 (package
552 (name "xdgcpp")
553 (version (git-version "0.1.0" revision commit))
554 (source
555 (origin
556 (method git-fetch)
557 (uri (git-reference
558 (url "https://github.com/Grumbel/xdgcpp")
559 (commit commit)))
560 (file-name (git-file-name name version))
561 (sha256
562 (base32 "0wxxck7phbgqdlg3g1ryw0vhkx17xi1ivqsbh32r0liw9i2xis3s"))))
563 (build-system cmake-build-system)
564 (arguments
565 (list
566 #:tests? #f)) ;no test suite
567 (home-page "https://github.com/Grumbel/xdgcpp")
568 (synopsis "C++ implementation of the XDG base dir specification")
569 (description
570 "This package provides a straightforward implementation of the XDG Base
571Directory Specification.")
572 (license license:lgpl3+))))
573
574(define-public xdg-utils
575 (package
576 (name "xdg-utils")
577 (version "1.2.1")
578 (source
579 (origin
580 (method git-fetch)
581 (uri (git-reference
582 (url "https://gitlab.freedesktop.org/xdg/xdg-utils.git/")
583 (commit (string-append "v" version))))
584 (file-name (git-file-name name version))
585 (sha256
586 (base32
587 "0hnb523hiz8wy6gffapys6vw7h1xq50li0s31mvyv4v5nmp2bhg7"))))
588 (build-system gnu-build-system)
589 (native-inputs
590 (list docbook-xsl
591 docbook-xml-4.1.2
592 docbook-xml-4.3
593 libxslt xmlto w3m-for-tests))
594 (inputs
595 (list bash-minimal ;for 'wrap-program'
596 coreutils
597 file
598 gawk
599 grep
600 inetutils ;xdg-screensaver uses `hostname'
601 perl-file-mimeinfo ;for mimeopen fallback
602 sed
603 xprop ;for Xfce detecting
604 xset)) ;for xdg-screensaver
605 (arguments
606 (list
607 #:tests? #f ;no check target
608 #:modules `((srfi srfi-26)
609 ,@%default-gnu-modules)
610 #:phases
611 #~(modify-phases %standard-phases
612 (add-after 'unpack 'patch-hardcoded-paths
613 (lambda* (#:key inputs #:allow-other-keys)
614 (substitute* "scripts/xdg-mime.in"
615 (("/usr/bin/file")
616 (search-input-file inputs "bin/file")))
617 (substitute* "scripts/xdg-open.in"
618 (("/usr/bin/printf")
619 (search-input-file inputs "bin/printf")))))
620 (add-after 'install 'wrap-executables
621 (lambda* (#:key inputs outputs #:allow-other-keys)
622 (let* ((dependencies '("awk" "grep" "hostname" "ls" "mimeopen"
623 "sed" "xprop" "xset"))
624 (pkgs (map (lambda (cmd)
625 (search-input-file inputs
626 (string-append "bin/" cmd)))
627 dependencies))
628 (bindirs (map dirname pkgs)))
629 (with-directory-excursion (string-append #$output "/bin")
630 (for-each (cute wrap-program <>
631 `("PATH" ":" prefix ,bindirs))
632 (find-files ".")))))))))
633 (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
634 (synopsis "Freedesktop.org scripts for desktop integration")
635 (description "The xdg-utils package is a set of simple scripts that
636provide basic desktop integration functions in the framework of the
637freedesktop.org project.")
638 (license license:expat)))
639
640(define-public libinput
641 ;; Updating this will rebuild over 700 packages through libinput-minimal.
642 (package
643 (name "libinput")
644 (version "1.29.1")
645 (source (origin
646 (method git-fetch)
647 (uri (git-reference
648 (url "https://gitlab.freedesktop.org/libinput/libinput.git")
649 (commit version)))
650 (file-name (git-file-name name version))
651 (sha256
652 (base32
653 "11n2vqkdz40vbqdjwm19i7rv2lzqf4i7anlla0havf7h0glqin60"))))
654 (build-system meson-build-system)
655 (arguments
656 `(#:configure-flags '("-Ddocumentation=false")
657
658 ;; XXX: Using 'debug' or 'debugoptimized' pulls in an additional test that
659 ;; hangs, and the comments around it suggests that we should be using this
660 ;; Meson target anyway.
661 #:build-type "release"
662 #:phases
663 ,@(if (target-32bit?)
664 `((modify-phases %standard-phases
665 ;; Backported from a commit after the 1.29.0 release.
666 (add-after 'unpack 'correct-value-type-in-atou64_test
667 (lambda _
668 (substitute* "test/test-utils.c"
669 (("unsigned long val") "uint64_t val"))))))
670 `(%standard-phases))))
671 (native-inputs
672 (append (list check pkg-config python-minimal-wrapper python-pytest)
673 (if (%current-target-system)
674 (list pkg-config-for-build)
675 '())))
676 (inputs
677 (append (list cairo
678 glib
679 gtk+
680 libevdev
681 libwacom
682 mtdev)
683 (if (%current-target-system)
684 (list check)
685 '())))
686 (propagated-inputs
687 ;; libinput.h requires <libudev.h>, so propagate it.
688 (list eudev))
689 (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
690 (synopsis "Input devices handling library")
691 (description
692 "Libinput is a library to handle input devices for display servers and
693other applications that need to directly deal with input devices.")
694 (license license:x11)))
695
696(define-public libinput-minimal
697 (package/inherit libinput
698 (name "libinput-minimal")
699 (inputs
700 (fold alist-delete (package-inputs libinput)
701 '("cairo" "glib" "gtk+" "libwacom")))
702 (arguments
703 (substitute-keyword-arguments arguments
704 ((#:configure-flags flags ''())
705 `(cons* "-Dlibwacom=false"
706 "-Ddebug-gui=false" ;requires gtk+@3
707 ,flags))))))
708
709(define-public libei
710 (package
711 (name "libei")
712 (version "1.4.0")
713 (source (origin
714 (method git-fetch)
715 (uri (git-reference
716 (url "https://gitlab.freedesktop.org/libinput/libei.git")
717 (commit version)))
718 (sha256
719 (base32
720 "04ll43616pyfm7c835azdggx9x3vfykpcg3pzmsfz4f2vl5whalm"))
721 (snippet
722 #~(begin
723 (use-modules (guix build utils))
724 ;; Unbundle munit, we provide it as input.
725 (substitute* "test/meson.build"
726 (("subproject\\('munit'")
727 "# subproject('munit'")
728 ((", fallback: \\['munit', 'munit_dep'\\]")
729 ""))
730 (delete-file-recursively "subprojects")))))
731 (build-system meson-build-system)
732 (arguments
733 (list
734 #:configure-flags #~'("-Ddocumentation=api" ;protocol requires hugo
735 "-Dsd-bus-provider=libelogind")))
736 (inputs
737 (list elogind libevdev libxkbcommon))
738 (propagated-inputs
739 ;; liboeffis-1.0.pc requires.private libelogind
740 (list elogind))
741 (native-inputs
742 (list dbus
743 doxygen
744 libxml2
745 munit
746 pkg-config
747 python
748 python-attrs
749 python-dbusmock
750 python-jinja2
751 python-pytest
752 python-structlog
753 python-pyaml
754 valgrind/pinned))
755 (home-page "https://libinput.pages.freedesktop.org/libei/")
756 (synopsis "Emulated Input protocol implementation")
757 (description
758 "Libei provides a client and server implementation of the @acronym{EI,
759Emulated Input} protocol for Wayland compositors.")
760 (license license:x11)))
761
762(define-public libxdg-basedir
763 (package
764 (name "libxdg-basedir")
765 (version "1.2.3")
766 (source (origin
767 (method git-fetch)
768 (uri (git-reference
769 (url "https://github.com/devnev/libxdg-basedir")
770 (commit (string-append name "-" version))))
771 (file-name (git-file-name name version))
772 (sha256
773 (base32
774 "0j8fgp41kxipzdnqsdy83d7w6kadbc45n98qyr84zsj46wl582vv"))))
775 (build-system gnu-build-system)
776 (arguments
777 '(#:configure-flags
778 (list "--disable-static")
779 #:phases
780 (modify-phases %standard-phases
781 (add-after 'unpack 'patch-autogen
782 (lambda _
783 ;; Run 'configure' in its own phase, not now.
784 (substitute* "autogen.sh"
785 (("^.*\\./configure.*") ""))
786 #t)))))
787 (native-inputs
788 (list autoconf automake libtool))
789 (home-page "https://github.com/devnev/libxdg-basedir")
790 (synopsis "Implementation of the XDG Base Directory specification")
791 (description
792 "libxdg-basedir is a C library providing some functions to use with
793the freedesktop.org XDG Base Directory specification.")
794 (license license:expat)))
795
796(define-public elogind
797 (package
798 (name "elogind")
799 (version "257.14")
800 (replacement elogind/fixed)
801 (source (origin
802 (method git-fetch)
803 (uri (git-reference
804 (url "https://github.com/elogind/elogind")
805 (commit (string-append "v" version))))
806 (file-name (git-file-name name version))
807 (sha256
808 (base32
809 "16cbkkia2wmcjwqxgzl714igi9sgpcl4sdvag388vlh941136bs9"))))
810 (build-system meson-build-system)
811 (arguments
812 `(#:configure-flags
813 ,#~(let* ((out #$output)
814 (sysconf (string-append out "/etc"))
815 (libexec (string-append out "/libexec/elogind"))
816 (dbus-data (string-append out "/share/dbus-1"))
817 (dbuspolicy (string-append dbus-data "/system.d"))
818 (dbussystemservice (string-append dbus-data
819 "/system-services"))
820 #$@(if (not (target-riscv64?))
821 #~((kexec-tools #$(this-package-input "kexec-tools")))
822 #~())
823 (shadow #$(this-package-input "shadow"))
824 (shepherd #$(this-package-input "shepherd"))
825 (halt-path (string-append shepherd "/sbin/halt"))
826 #$@(if (not (target-riscv64?))
827 #~((kexec-path (string-append kexec-tools "/sbin/kexec")))
828 #~())
829 (nologin-path (string-append shadow "/sbin/nologin"))
830 (poweroff-path (string-append shepherd "/sbin/shutdown"))
831 (reboot-path (string-append shepherd "/sbin/reboot")))
832 (list
833 "-Dmode=release"
834 (string-append "-Dlibexecdir=" libexec)
835 (string-append "-Dsysconfdir=" sysconf)
836 (string-append "-Ddbuspolicydir=" dbuspolicy)
837 (string-append "-Ddbussystemservicedir=" dbussystemservice)
838 (string-append "-Dc_link_args=-Wl,-rpath=" libexec)
839 (string-append "-Dcpp_link_args=-Wl,-rpath=" libexec)
840 (string-append "-Dhalt-path=" halt-path)
841 #$@(if (not (target-riscv64?))
842 #~((string-append "-Dkexec-path=" kexec-path))
843 #~())
844 (string-append "-Dpoweroff-path=" poweroff-path)
845 (string-append "-Dreboot-path=" reboot-path)
846 (string-append "-Dnologin-path=" nologin-path)
847 "-Dcgroup-controller=elogind"
848 "-Dman=enabled"
849 ;; Disable some tests.
850 "-Dslow-tests=false"
851 ;; Adjust the default user shell to /bin/sh (otherwise it is set
852 ;; to /bin/bash).
853 "-Ddefault-user-shell=/bin/sh"))
854 #:phases
855 (modify-phases %standard-phases
856 (add-after 'unpack 'patch-tzdata
857 (lambda* (#:key native-inputs inputs #:allow-other-keys)
858 (substitute* "src/basic/time-util.c"
859 (("/usr/share/zoneinfo")
860 (search-input-directory (or native-inputs inputs)
861 "share/zoneinfo")))))
862 (add-after 'unpack 'do-not-install-empty-/var/log/elogind-dir
863 (lambda _
864 ;; This is the elogind state directory, which is not writable in
865 ;; the build environment.
866 (substitute* "meson.build"
867 (("install_emptydir\\(elogindstatedir)") ""))))
868 (add-after 'unpack 'fix-pkttyagent-path
869 (lambda _
870 (substitute* "meson.build"
871 (("bindir / 'pkttyagent'")
872 "'/run/current-system/profile/bin/pkttyagent'"))))
873 (add-after 'unpack 'use-global-hook-directory
874 ;; XXX There is no run-time setting to set this per-process, only a
875 ;; build-time, hard-coded list of global directories.
876 (lambda _
877 (substitute* (list "src/login/logind-core.c"
878 "src/login/logind-dbus.c"
879 "src/sleep/sleep.c"
880 "src/shared/sleep-config.c")
881 (("PKGSYSCONFDIR") "\"/etc/elogind\""))))
882 (add-after 'unpack 'adjust-tests
883 (lambda _
884 ;; A few tests expect /var/tmp to exists, but it doesn't in the
885 ;; container.
886 (substitute* '("src/test/test-xattr-util.c"
887 "src/test/test-copy.c"
888 "src/test/test-fs-util.c")
889 (("/var/tmp/")
890 "/tmp/"))
891 (substitute* "src/test/test-xattr-util.c"
892 ;; The xattr-util test depends on /usr; patch it to use /tmp
893 ;; instead.
894 (("fd, \"usr\", \"user.idontexist\"")
895 "fd, \"/tmp\", \"user.idontexist\""))
896 (substitute* '("src/test/test-chase.c"
897 "src/test/test-fd-util.c")
898 ;; Many checks use /usr, which doesn't exist in our
899 ;; environment.
900 (("/usr")
901 "/tmp")
902 (("\"usr\"")
903 "\"tmp\""))
904 (substitute* "src/test/meson.build"
905 ;; Requires cgroup support.
906 ((".*'test-cgroup-util\\.c'.*") "")
907 ;; Requires privilege to create mount namespaces.
908 ((".*'test-mountpoint-util\\.c'.*") ""))
909 (substitute* "src/libelogind/meson.build"
910 ;; The bus-creds test fails due to requiring cgroups.
911 ((".*'sd-bus/test-bus-creds.c'.*") "")
912 ;; The login test fails due to 'sd_pid_get_slice' returning
913 ;; NULL.
914 ((".*'sd-login/test-login.c'.*") "")
915 ;; The sd-device test fails due to 'devname_from_devnum'
916 ;; returning NULL.
917 ((".*'sd-device/test-sd-device.c'.*") ""))
918 ;; This test tries to copy some bytes from /usr/lib/os-release,
919 ;; which does not exist in the build container. Choose something
920 ;; more likely to be available.
921 (substitute* "src/test/test-copy.c"
922 (("/usr/lib/os-release")
923 "/etc/passwd"))
924 ;; Use a shebang that works in the build container.
925 (substitute* "src/test/test-exec-util.c"
926 (("#!/bin/sh")
927 (string-append "#!" (which "sh"))))
928 ;; Do not look for files or directories that do not exist.
929 (substitute* "src/test/test-fs-util.c"
930 (("usr") "etc")
931 (("/etc/machine-id") "/etc/passwd"))
932 ;; FIXME: Why is sd_id128_get_machine_app_specific failing.
933 ;; Disable for now by hooking into the kernel support check.
934 (substitute* "src/test/test-id128.c"
935 (("if \\(r == -EOPNOTSUPP\\)")
936 "if (1)"))
937 ;; This test expects that /sys is available.
938 (substitute* "src/test/test-mountpoint-util.c"
939 (("assert_se\\(path_is_mount_point\\(\"/sys.*")
940 ""))
941 ;; /bin/sh does not exist in the build container.
942 (substitute* "src/test/test-path-util.c"
943 (("/bin/sh") (which "sh")))
944 ;; This test uses sd_device_new_from_syspath to allocate a
945 ;; loopback device, but that fails because /sys is unavailable.
946 (substitute* "src/libelogind/sd-device/test-sd-device-thread.c"
947 ((".*sd_device_new_from_syspath.*/sys/class/net/lo.*")
948 "return 77;"))))
949 (add-after 'unpack 'change-pid-file-path
950 (lambda _
951 (substitute* "src/login/elogind.c"
952 (("\"/run/elogind.pid\"") "\"/run/systemd/elogind.pid\"")))))))
953 (native-inputs
954 (list docbook-xml-4.5
955 docbook-xml-4.2
956 docbook-xsl
957 gettext-minimal
958 gperf
959 pkg-config
960 python
961 python-jinja2
962 libxslt
963 tzdata))
964 (inputs
965 (append
966 (if (not (target-riscv64?))
967 (list kexec-tools)
968 '())
969 (list linux-pam
970 libcap
971 libxcrypt
972 `(,util-linux "lib") ;for 'libmount'
973 shadow ;for 'nologin'
974 shepherd ;for 'halt' and 'reboot', invoked
975 ;when pressing the power button
976 dbus
977 eudev
978 acl))) ; to add individual users to ACLs on /dev nodes
979 (home-page "https://github.com/elogind/elogind")
980 (synopsis "User, seat, and session management service")
981 (description "Elogind is the systemd project's \"logind\" service,
982extracted out as a separate project. Elogind integrates with PAM to provide
983the org.freedesktop.login1 interface over the system bus, allowing other parts
984of a the system to know what users are logged in, and where.")
985 (license license:lgpl2.1+)))
986
987(define elogind/fixed
988 (package
989 (inherit elogind)
990 (source
991 (let ((s (package-source elogind)))
992 (origin
993 (inherit s)
994 (patches
995 (append (search-patches "elogind-fix-logind-dbus-install.patch")
996 (origin-patches s))))))))
997
998(define-public basu
999 (package
1000 (name "basu")
1001 (version "0.2.1")
1002 (home-page "https://git.sr.ht/~emersion/basu")
1003 (source
1004 (origin
1005 (method git-fetch)
1006 (uri
1007 (git-reference
1008 (url home-page)
1009 (commit (string-append "v" version))))
1010 (file-name (git-file-name name version))
1011 (sha256
1012 (base32 "054mg6f9aqi0i3i3w8fc37qnns1vng3qq5b8nfd9g51wi8h891nc"))))
1013 (build-system meson-build-system)
1014 (native-inputs
1015 (list pkg-config python gperf))
1016 (propagated-inputs
1017 ;; Propagated because of pkg-config
1018 (list libcap))
1019 (synopsis "The sd-bus library, extracted from systemd")
1020 (description "Some projects rely on the sd-bus library for DBus support.
1021However not all systems have systemd or elogind installed.
1022This library provides just sd-bus (and the busctl utility).")
1023 (license license:lgpl2.1+)))
1024
1025(define-public localed
1026 ;; XXX: This package is extracted from systemd but we retain so little of it
1027 ;; that it would make more sense to maintain a fork of the bits we need.
1028 (package
1029 (name "localed")
1030 (version "257.4")
1031 (source (origin
1032 (method git-fetch)
1033 (uri (git-reference
1034 (url "https://github.com/systemd/systemd")
1035 (commit (string-append "v" version))))
1036 (sha256
1037 (base32
1038 "06fackmig43p9xx1155vrr5bx8a6a1cfb958x5acxvvahi8lkg7a"))
1039 (file-name (git-file-name name version))
1040 (modules '((guix build utils)))
1041 (snippet
1042 '(begin
1043 ;; Don't insist on having systemd as PID 1 (otherwise
1044 ;; 'localectl' would exit without doing anything.)
1045 (substitute* "src/shared/bus-util.c"
1046 (("sd_booted\\(\\)")
1047 "(1)"))))
1048 (patches (search-patches "localed-xorg-keyboard.patch"))))
1049 (build-system meson-build-system)
1050 (arguments
1051 ;; Try to build as little as possible (list of components taken from the
1052 ;; top-level 'meson.build' file.)
1053 (let ((components '("utmp"
1054 "hibernate"
1055 "environment-d"
1056 "binfmt"
1057 "coredump"
1058 "resolve"
1059 "logind"
1060 "hostnamed"
1061 "localed"
1062 "machined"
1063 "portabled"
1064 "networkd"
1065 "timedated"
1066 "timesyncd"
1067 "firstboot"
1068 "randomseed"
1069 "backlight"
1070 "vconsole"
1071 "quotacheck"
1072 "sysusers"
1073 "tmpfiles"
1074 "hwdb"
1075 "rfkill"
1076 "ldconfig"
1077 "efi"
1078 "tpm"
1079 "ima"
1080 "smack"
1081 "gshadow"
1082 "idn"
1083 "nss-myhostname"
1084 "nss-systemd")))
1085 (list
1086 #:configure-flags #~(list
1087 ;; Relax gcc-14's strictness.
1088 "-Dc_args=-g -O2 -Wno-format-overflow"
1089 #$@(map (lambda (component)
1090 (string-append "-D" component "=false"))
1091 (delete "localed" components)))
1092
1093 ;; It doesn't make sense to test all of systemd.
1094 #:tests? #f
1095
1096 #:phases
1097 #~(modify-phases %standard-phases
1098 (add-after 'unpack 'set-xkeyboard-config-file-name
1099 (lambda _
1100 ;; Set the file name to xkeyboard-config and kbd.
1101 ;; This is used by 'localectl list-x11-keymap-layouts'
1102 ;; and similar functions.
1103 (let ((xkb #$(this-package-input "xkeyboard-config"))
1104 (kbd #$(this-package-input "kbd")))
1105 (substitute* "src/locale/localectl.c"
1106 (("/usr/share/X11/xkb/rules")
1107 (string-append xkb "/share/X11/xkb/rules")))
1108 (substitute* "src/shared/kbd-util.c"
1109 (("/usr/share/keymaps")
1110 (string-append kbd "/share/keymaps"))))))
1111 (replace 'install
1112 (lambda _
1113 ;; Install 'localed', the D-Bus and polkit files, and
1114 ;; 'localectl'.
1115 (let* ((out #$output)
1116 (libexec (string-append out "/libexec/localed"))
1117 (bin (string-append out "/bin"))
1118 (lib (string-append out "/lib"))
1119 (dbus (string-append out
1120 "/share/dbus-1/system-services"))
1121 (conf (string-append out
1122 "/etc/dbus-1/system.d/"))
1123 (polkit (string-append out
1124 "/share/polkit-1/actions"))
1125 (data (string-append out "/share/systemd")))
1126 (define (source-file regexp)
1127 (car (find-files ".." regexp)))
1128
1129 (mkdir-p libexec)
1130 (copy-file "systemd-localed"
1131 (string-append libexec "/localed"))
1132 (install-file "localectl" bin)
1133
1134 (let ((service-file (source-file "\\.locale1\\.service$")))
1135 (substitute* service-file
1136 (("^Exec=.*$")
1137 (string-append "Exec=" libexec "/localed\n")))
1138 (install-file service-file dbus))
1139 (install-file (source-file "\\.locale1\\.policy$") polkit)
1140 (install-file (source-file "\\.locale1\\.conf$") conf)
1141 (for-each (lambda (file)
1142 (install-file file lib))
1143 (find-files "src/shared"
1144 "libsystemd-shared.*\\.so"))
1145
1146 (for-each
1147 (lambda (map)
1148 (install-file map data))
1149 (find-files
1150 ".."
1151 "^(kbd-model-map|language-fallback-map)$")))))))))
1152 (native-inputs
1153 (modify-inputs (package-native-inputs elogind)
1154 (append rsync)))
1155 (inputs
1156 (modify-inputs (package-inputs elogind)
1157 (prepend `(,util-linux "lib")
1158 kbd
1159 xkeyboard-config)))
1160 (home-page "https://www.freedesktop.org/wiki/Software/systemd/localed/")
1161 (synopsis "Control the system locale and keyboard layout")
1162 (description
1163 "Localed is a tiny daemon that can be used to control the system locale
1164and keyboard mapping from user programs. It is used among other things by the
1165GNOME Shell. The @command{localectl} command-line tool allows you to interact
1166with localed. This package is extracted from the broader systemd package.")
1167 (license license:lgpl2.1+)))
1168
1169(define-public gardenhostd
1170 (package
1171 (name "gardenhostd")
1172 (version "1.1")
1173 (source (origin
1174 (method git-fetch)
1175 (uri (git-reference
1176 (url "https://codeberg.org/axtlos/gardenhostd.git")
1177 (commit (string-append "v" version))))
1178 (file-name (git-file-name name version))
1179 (sha256
1180 (base32
1181 "1q0pdh0imc2ggb26cddl62hx6fmz6z4hqj2352a4k9wxyn5kfiam"))))
1182 (build-system meson-build-system)
1183 (arguments
1184 (list
1185 #:imported-modules `(,@%meson-build-system-modules
1186 ,@%pyproject-build-system-modules)
1187 #:modules '(((guix build pyproject-build-system) #:prefix pyproject:)
1188 (guix build meson-build-system)
1189 (guix build utils))
1190 #:phases
1191 #~(modify-phases %standard-phases
1192 (add-after 'install 'remove-extra-files
1193 (lambda _
1194 (with-directory-excursion #$output
1195 (delete-file-recursively "etc/init.d")
1196 (rmdir "etc"))))
1197 ;; See <https://codeberg.org/guix/guix/issues/7579>.
1198 (add-after 'install 'wrap-search-paths
1199 (lambda _
1200 (wrap-program (string-append #$output "/libexec/gardenhostd")
1201 `("GUIX_PYTHONPATH" prefix
1202 ,(map
1203 (lambda (package)
1204 (string-append
1205 package "/lib/python"
1206 (pyproject:python-version #$(this-package-input "python"))
1207 "/site-packages"))
1208 ;; Avoids references to meson’s libraries.
1209 (list #$(this-package-input "python")
1210 #$(this-package-input "python-pygobject"))))))))))
1211 (inputs
1212 (list bash-minimal
1213 python
1214 python-pygobject))
1215 (home-page "https://codeberg.org/axtlos/gardenhostd")
1216 (synopsis "Minimal Python implementation of systemd-hostnamed")
1217 (description "This package is a partial implementation of the
1218systemd-hostnamed daemon. It provides the @code{org.freedesktop.hostname1}
1219D-Bus interface, which helps applications like GNOME Settings retrieve and
1220modify the system’s hostname, as well as set a pretty hostname for display.")
1221 (license license:gpl3+)))
1222
1223(define-public packagekit
1224 (package
1225 (name "packagekit")
1226 (version "1.2.5")
1227 (source (origin
1228 (method url-fetch)
1229 (uri (string-append "https://www.freedesktop.org/software/"
1230 "PackageKit/releases/" "PackageKit-" version
1231 ".tar.xz"))
1232 (sha256
1233 (base32
1234 "09md23m4fw87x264mls1f5isrswk6iw7y9g4hr1nib008wbbk370"))
1235 (modules '((guix build utils)))
1236 (snippet
1237 '(begin
1238 (substitute* "contrib/meson.build"
1239 (("bash_.*_dep\\.get_.*\\('completionsdir', .*\\)")
1240 "join_paths(get_option('prefix'), 'share',
1241 'bash-completion', 'completions')"))))))
1242 (build-system meson-build-system)
1243 (arguments
1244 (list #:tests? #f
1245 #:configure-flags #~'("-Dsystemd=false" "-Doffline_update=false")))
1246 (native-inputs
1247 (list bash-completion
1248 docbook-xsl
1249 gettext-minimal
1250 `(,glib "bin")
1251 gobject-introspection
1252 libxslt
1253 pkg-config
1254 python-wrapper
1255 vala))
1256 (inputs
1257 (list glib
1258 gstreamer
1259 gst-plugins-base
1260 gtk+
1261 polkit))
1262 (propagated-inputs (list sqlite))
1263 (home-page "https://www.freedesktop.org/software/PackageKit/")
1264 (synopsis "API for package management, through D-Bus")
1265 (description
1266 "PackageKit provides a way of performing package management tasks,
1267e.g. updating, removing and installing software. Through supporting many
1268backends, PackageKit can perform these tasks using the appropriate package
1269manager for the current system.")
1270 (license license:gpl2+)))
1271
1272(define-public power-profiles-daemon
1273 (package
1274 (name "power-profiles-daemon")
1275 (version "0.30")
1276 (source
1277 (origin
1278 (method git-fetch)
1279 (uri (git-reference
1280 (url "https://gitlab.freedesktop.org/upower/power-profiles-daemon")
1281 (commit version)))
1282 (file-name (git-file-name name version))
1283 (sha256
1284 (base32
1285 "0bp14d1bazylcpqmi26z3kq2gc33rk7w8092lzy5j4l1iq1j21c9"))))
1286 (build-system meson-build-system)
1287 (outputs '("out" "doc"))
1288 (arguments
1289 (list #:configure-flags #~(list "-Dsystemdsystemunitdir="
1290 "-Dpylint=disabled"
1291 "-Dgtk_doc=true"
1292 (string-append "-Dzshcomp=" #$output
1293 "/share/zsh/site-functions/"))
1294 #:phases
1295 #~(modify-phases %standard-phases
1296 (add-before 'configure 'correct-polkit-dir
1297 (lambda _
1298 (setenv "PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR"
1299 (string-append #$output "/share/polkit-1/actions"))))
1300 (add-after 'install 'wrap-program
1301 (lambda _
1302 (wrap-program
1303 (string-append #$output "/bin/powerprofilesctl")
1304 `("GUIX_PYTHONPATH" prefix
1305 (,(string-append
1306 #$(this-package-input "python-pygobject")
1307 "/lib/python" #$(version-major+minor
1308 (package-version
1309 (this-package-input "python")))
1310 "/site-packages")))
1311 `("GI_TYPELIB_PATH" prefix (,(string-append
1312 #$(this-package-input "glib")
1313 "/lib/girepository-1.0"))))))
1314 (add-after 'install 'move-docs
1315 (lambda _
1316 (mkdir-p (string-append #$output:doc "/share"))
1317 (rename-file
1318 (string-append #$output "/share/gtk-doc")
1319 (string-append #$output:doc "/share/gtk-doc")))))))
1320 (native-inputs
1321 (list `(,glib "bin")
1322 gtk-doc/stable
1323 libxslt
1324 pkg-config
1325 python
1326 python-argparse-manpage
1327 python-dbusmock
1328 python-shtab
1329 umockdev))
1330 (inputs
1331 (list bash-minimal ;for 'wrap-program'
1332 bash-completion
1333 libgudev
1334 glib
1335 polkit
1336 python
1337 python-pygobject
1338 upower))
1339 (home-page "https://gitlab.freedesktop.org/upower/power-profiles-daemon")
1340 (synopsis "Power profile handling over D-Bus")
1341 (description
1342 "power-profiles-daemon offers to modify system behaviour based upon
1343user-selected power profiles. There are 3 different power profiles, a
1344\"balanced\" default mode, a \"power-saver\" mode, as well as a
1345\"performance\" mode. The first 2 of those are available on every system.
1346The \"performance\" mode is only available on select systems and is
1347implemented by different \"drivers\" based on the system or systems it
1348targets. In addition to those 2 or 3 modes (depending on the system),
1349\"actions\" can be hooked up to change the behaviour of a particular device.
1350For example, this can be used to disable the fast-charging for some USB
1351devices when in power-saver mode.")
1352 (license license:gpl3)))
1353
1354
1355(define-public python-libevdev
1356 (package
1357 (name "python-libevdev")
1358 (version "0.13.1")
1359 (source
1360 (origin
1361 (method git-fetch)
1362 (uri (git-reference
1363 (url "https://gitlab.freedesktop.org/libevdev/python-libevdev")
1364 (commit version)))
1365 (file-name (git-file-name name version))
1366 (sha256
1367 (base32 "1976gqf1rlgv68dc99xzaixa8cy4qrxgn11gh5xgw1ryzs0ps9pp"))))
1368 (build-system pyproject-build-system)
1369 (arguments
1370 (list
1371 #:phases
1372 #~(modify-phases %standard-phases
1373 (add-after 'unpack 'patch-dlopen-calls
1374 (lambda* (#:key inputs #:allow-other-keys)
1375 (substitute* "libevdev/_clib.py"
1376 (("libevdev.so.2")
1377 (search-input-file inputs "lib/libevdev.so.2"))))))))
1378 (native-inputs (list python-hatchling python-pytest))
1379 (inputs (list libevdev))
1380 (home-page "https://gitlab.freedesktop.org/libevdev/python-libevdev")
1381 (synopsis "Python wrapper for libevdev")
1382 (description
1383 "This package provides a Python wrapper around @code{libevdev}, taking
1384advantage of @code{libevdev}'s advanced event handling. Documentation is
1385available at @url{https://python-libevdev.readthedocs.io/en/latest/}.
1386@code{libevdev} makes it easy to:
1387@itemize
1388@item read and parse events from an input device;
1389@item create a virtual input device and make it send events;
1390@item duplicate an existing device and modify the event stream.
1391@end itemize
1392For information about libevdev, see:
1393@url{https://freedesktop.org/wiki/Software/libevdev/}.")
1394 (license license:expat)))
1395
1396(define-public python-pyxdg
1397 ;; Latest unreleased commits add Python 3.12, 3.14 and 3.15 support.
1398 (let ((commit "63033ac306aa26d32e1439417e59ae8f8a4c9820")
1399 (revision "0"))
1400 (package
1401 (name "python-pyxdg")
1402 (version "0.28")
1403 (source
1404 (origin
1405 (method git-fetch)
1406 (uri (git-reference
1407 (url "https://gitlab.freedesktop.org/xdg/pyxdg")
1408 (commit commit)))
1409 (file-name (git-file-name name version))
1410 (sha256
1411 (base32
1412 "10wk95rmcr2fglmvmv1a6ad9hkw9587r0rlww0gq6kbfz85whgmd"))))
1413 (build-system pyproject-build-system)
1414 (arguments
1415 (list
1416 #:phases
1417 #~(modify-phases %standard-phases
1418 (add-before 'check 'pre-check
1419 (lambda _
1420 (setenv "XDG_DATA_DIRS"
1421 (string-append #$(this-package-native-input "shared-mime-info")
1422 "/share/")))))))
1423 (native-inputs
1424 (list shared-mime-info
1425 hicolor-icon-theme
1426 python-pytest
1427 python-setuptools))
1428 (home-page "https://www.freedesktop.org/wiki/Software/pyxdg")
1429 (synopsis "Implementations of freedesktop.org standards in Python")
1430 (description
1431 "PyXDG is a collection of implementations of freedesktop.org standards in
1432Python.")
1433 (license license:lgpl2.0))))
1434
1435(define-public hyprland-protocols
1436 (package
1437 (name "hyprland-protocols")
1438 (version "0.7.0")
1439 (source (origin
1440 (method git-fetch)
1441 (uri (git-reference
1442 (url "https://github.com/hyprwm/hyprland-protocols")
1443 (commit (string-append "v" version))))
1444 (file-name (git-file-name name version))
1445 (sha256
1446 (base32
1447 "10mnr5sni5cnc0n5q4jhp197gh8d32pjwlx7dgz0rwsyl2f1b8gq"))))
1448 (build-system meson-build-system)
1449 (home-page "https://github.com/hyprwm/hyprland-protocols")
1450 (synopsis "Wayland protocol extensions for Hyprland")
1451 (description
1452 "This package provides Wayland protocol extensions for Hyprland.")
1453 (license license:bsd-3)))
1454
1455(define-public hyprwayland-scanner
1456 (package
1457 (name "hyprwayland-scanner")
1458 (version "0.4.6")
1459 (source (origin
1460 (method git-fetch)
1461 (uri (git-reference
1462 (url "https://github.com/hyprwm/hyprwayland-scanner")
1463 (commit (string-append "v" version))))
1464 (file-name (git-file-name name version))
1465 (sha256
1466 (base32
1467 "0n5g8yrd4scnfxv1qc6hbqpj89v1jkic9n3iz8lib9hrmk1v2617"))))
1468 (build-system cmake-build-system)
1469 (arguments (list #:tests? #f)) ;No tests.
1470 (inputs (list pugixml))
1471 (native-inputs (list gcc-15 pkg-config))
1472 (home-page "https://github.com/hyprwm/hyprwayland-scanner")
1473 (synopsis "Hyprland implementation of @code{wayland-scanner}")
1474 (description
1475 "This package provides a Hyprland implementation of @code{wayland-scanner},
1476in and for C++.")
1477 (license license:bsd-3)))
1478
1479(define-public wayland
1480 (package
1481 (name "wayland")
1482 (version "1.24.0")
1483 (source (origin
1484 (method url-fetch)
1485 (uri (string-append "https://gitlab.freedesktop.org/" name
1486 "/" name "/-/releases/" version "/downloads/"
1487 name "-" version ".tar.xz"))
1488 (sha256
1489 (base32
1490 "0dh5bldg24ajxz7xmylwm01nmj572x1vb0ya9qrppmhsl23j92c2"))))
1491 (build-system meson-build-system)
1492 (outputs '("out" "doc"))
1493 (arguments
1494 (list #:phases
1495 #~(modify-phases %standard-phases
1496 (add-after 'install 'move-doc
1497 (lambda _
1498 (mkdir-p (string-append #$output:doc "/share"))
1499 (rename-file
1500 (string-append #$output "/share/doc")
1501 (string-append #$output:doc "/share/doc")))))))
1502 (native-inputs
1503 (append
1504 (list docbook-xml-4.2
1505 docbook-xml-4.5
1506 docbook-xsl
1507 graphviz
1508 doxygen
1509 pkg-config
1510 python
1511 xmlto
1512 libxslt)
1513 (if (%current-target-system)
1514 (list pkg-config-for-build
1515 this-package) ;for wayland-scanner
1516 '())))
1517 (inputs (list expat libxml2))
1518 (propagated-inputs (list libffi))
1519 (home-page "https://wayland.freedesktop.org/")
1520 (synopsis "Core Wayland window system code and protocol")
1521 (description "Wayland is a project to define a protocol for a compositor to
1522talk to its clients as well as a library implementation of the protocol. The
1523compositor can be a standalone display server running on Linux kernel
1524modesetting and evdev input devices, an X application, or a wayland client
1525itself. The clients can be traditional applications, X servers (rootless or
1526fullscreen) or other display servers.")
1527 (license license:expat)))
1528
1529(define-public wayland-protocols
1530 (package
1531 (name "wayland-protocols")
1532 (version "1.47")
1533 (source (origin
1534 (method git-fetch)
1535 (uri (git-reference
1536 (url "https://gitlab.freedesktop.org/wayland/wayland-protocols")
1537 (commit version)))
1538 (file-name (git-file-name name version))
1539 (sha256
1540 (base32
1541 "0i30fp6p03qrvv4msm9yj39sk6gmcryp3q6x29v2wycbv27wsgmw"))))
1542 (build-system meson-build-system)
1543 (inputs
1544 (list wayland))
1545 (native-inputs (cons* pkg-config python
1546 (if (%current-target-system)
1547 (list pkg-config-for-build
1548 wayland) ; for wayland-scanner
1549 '())))
1550 (synopsis "Wayland protocols")
1551 (description "Wayland-Protocols contains Wayland protocols that add
1552functionality not available in the Wayland core protocol. Such protocols either
1553add completely new functionality, or extend the functionality of some other
1554protocol either in Wayland core, or some other protocol in wayland-protocols.")
1555 (home-page "https://wayland.freedesktop.org")
1556 (license license:expat)))
1557
1558(define-public wayland-protocols-1.42
1559 (package
1560 (inherit wayland-protocols)
1561 (name "wayland-protocols-1.42")
1562 (version "1.42")
1563 (source (origin
1564 (method git-fetch)
1565 (uri (git-reference
1566 (url "https://gitlab.freedesktop.org/wayland/wayland-protocols")
1567 (commit version)))
1568 (file-name (git-file-name name version))
1569 (sha256
1570 (base32
1571 "1gx8788wgkl42x3fh4kwkfz2xy7n84slbjwqg9w5z2b7jjkwzrrq"))))))
1572
1573(define-public wayland-utils
1574 (package
1575 (name "wayland-utils")
1576 (version "1.2.0")
1577 (source (origin
1578 (method git-fetch)
1579 (uri (git-reference
1580 (url "https://gitlab.freedesktop.org/wayland/wayland-utils")
1581 (commit version)))
1582 (file-name (git-file-name name version))
1583 (sha256
1584 (base32
1585 "1dj9p7vrv3a0fflqkwps8im2hz3ari385a3nqb4ar1ci3crxp204"))))
1586 (build-system meson-build-system)
1587 (native-inputs (list pkg-config))
1588 (inputs (list libdrm wayland wayland-protocols))
1589 (home-page "https://wayland.freedesktop.org/")
1590 (synopsis "Display information about the Wayland protocols")
1591 (description "This package provides @code{wayland-info} tool that can be
1592used to check which Wayland protocols and versions are advertised by the Wayland
1593compositor.")
1594 (license license:expat)))
1595
1596(define-public waylandpp
1597 (package
1598 (name "waylandpp")
1599 (version "1.0.1")
1600 (home-page "https://github.com/NilsBrause/waylandpp")
1601 (source (origin
1602 (method git-fetch)
1603 (uri (git-reference (url home-page) (commit version)))
1604 (file-name (git-file-name name version))
1605 (sha256
1606 (base32
1607 "0y7k6hr4azy6fx54m9k74n47bcrvyvk0yawxf786i5mrg98hm9mw"))))
1608 (build-system cmake-build-system)
1609 (arguments
1610 `(#:tests? #f)) ; no tests
1611 (native-inputs
1612 (list pkg-config))
1613 (inputs
1614 (list mesa pugixml))
1615 (propagated-inputs
1616 (list ;; In Requires of the .pc files.
1617 wayland))
1618 (synopsis "Wayland C++ bindings")
1619 (description
1620 "This package provides C++ bindings for the Wayland display protocol.")
1621 (license license:bsd-2)))
1622
1623(define-public weston
1624 (package
1625 (name "weston")
1626 (version "16.0.0")
1627 (source (origin
1628 (method url-fetch)
1629 (uri (string-append
1630 "https://gitlab.freedesktop.org/wayland/weston/-/releases/"
1631 version "/downloads/weston-" version ".tar.xz"))
1632 (sha256
1633 (base32
1634 "0zqgraad4676wcz59g3yr1qqrldcfmhfrl58jixrbnmbrhmjxcyz"))
1635 (patches (search-patches "weston-disable-failing-tests.patch"))))
1636 (build-system meson-build-system)
1637 (native-inputs
1638 (list mscgen pkg-config python-3 xorg-server xcb-util-cursor))
1639 (inputs
1640 (list aml
1641 cairo-xcb
1642 colord
1643 dbus
1644 freerdp
1645 glib
1646 glslang
1647 gstreamer
1648 gst-plugins-base
1649 lcms
1650 libdisplay-info
1651 libdrm
1652 libevdev
1653 libinput-minimal
1654 libjpeg-turbo
1655 libpng
1656 libseat
1657 libunwind
1658 libva
1659 libwebp
1660 libx11
1661 libxcb
1662 libxcursor
1663 libxml2
1664 mesa
1665 mtdev
1666 linux-pam
1667 neatvnc
1668 pango
1669 pipewire
1670 vulkan-loader
1671 wayland-protocols
1672 xorg-server-xwayland))
1673 (propagated-inputs
1674 (list libxkbcommon pixman wayland))
1675 (arguments
1676 (list
1677 #:configure-flags
1678 #~(list
1679 ;; Otherwise, the RUNPATH will lack the final path component.
1680 (string-append "-Dc_link_args=-Wl,-rpath="
1681 #$output "/lib:"
1682 #$output "/lib/weston:"
1683 #$output "/lib/libweston-"
1684 #$(version-major (package-version this-package)))
1685 "-Dbackend-default=auto"
1686 "-Dshell-lua=false" ;lua detection fails
1687 "-Dsystemd=false"
1688 (string-append "-Dxwayland-path="
1689 #$(this-package-input "xorg-server-xwayland")
1690 "/bin/Xwayland"))
1691 #:phases
1692 '(modify-phases %standard-phases
1693 (add-before 'check 'setup
1694 (lambda _
1695 (setenv "HOME" (getcwd))
1696 (setenv "XDG_RUNTIME_DIR" (getcwd))))
1697 (add-before 'check 'start-xorg-server
1698 (lambda* (#:key inputs #:allow-other-keys)
1699 ;; The test suite requires a running X server.
1700 (system "Xvfb :1 &")
1701 (setenv "DISPLAY" ":1"))))))
1702 (home-page "https://wayland.freedesktop.org")
1703 (synopsis "Reference implementation of a Wayland compositor")
1704 (description "Weston is the reference implementation of a Wayland
1705compositor, and a useful compositor in its own right.
1706
1707A Wayland compositor allows applications to render to a shared offscreen
1708buffer using OpenGL ES. The compositor then culls the hidden parts and
1709composes the final output. A Wayland compositor is essentially a
1710multiplexer to the KMS/DRM Linux kernel devices.")
1711 (license license:expat)))
1712
1713(define-public wev
1714 (package
1715 (name "wev")
1716 (version "1.1.0")
1717 (source (origin
1718 (method git-fetch)
1719 (uri (git-reference
1720 (url "https://git.sr.ht/~sircmpwn/wev")
1721 (commit version)))
1722 (file-name (git-file-name name version))
1723 (sha256
1724 (base32
1725 "06890chzir0pp77akx04m4slyiyqr3kv9vjplqgmdf83sghki46i"))))
1726 (build-system gnu-build-system)
1727 (arguments
1728 `(#:tests? #f ; no tests
1729 #:make-flags
1730 (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))
1731 #:phases
1732 (modify-phases %standard-phases
1733 (delete 'configure))))
1734 (native-inputs
1735 (list pkg-config scdoc))
1736 (inputs
1737 (list libxkbcommon wayland wayland-protocols))
1738 (home-page "https://git.sr.ht/~sircmpwn/wev")
1739 (synopsis "Wayland event viewer")
1740 (description "Wev is a tool that opens a window, printing all events
1741sent to a Wayland window, such as key presses. It is analogous to the X11 tool
1742XEv.")
1743 (license license:expat)))
1744
1745(define-public wlr-protocols
1746 (let ((commit "2b8d43325b7012cc3f9b55c08d26e50e42beac7d")
1747 (revision "0"))
1748 (package
1749 (name "wlr-protocols")
1750 (version (git-version "1.0" revision commit))
1751 (source
1752 (origin
1753 (method git-fetch)
1754 (uri (git-reference
1755 (url "https://gitlab.freedesktop.org/wlroots/wlr-protocols.git")
1756 (commit commit)))
1757 (file-name (git-file-name name version))
1758 (sha256
1759 (base32 "17blwww6rcrahwc6h6j68gh6wjbj14if3mihpxymfdw5pwl72rav"))))
1760 (build-system gnu-build-system)
1761 (arguments
1762 (list #:make-flags
1763 #~(list (string-append "PREFIX=" #$output))
1764 #:phases
1765 #~(modify-phases %standard-phases
1766 (delete 'configure))))
1767 (native-inputs (list wayland)) ;For wayland-scanner.
1768 (home-page "https://gitlab.freedesktop.org/wlroots/wlr-protocols")
1769 (synopsis
1770 "Wayland protocols designed for use in wlroots (and other compositors)")
1771 (description
1772 "This package provides Wayland protocols designed for use in wlroots (and
1773other compositors).")
1774 (license license:expat))))
1775
1776(define-public wtype
1777 (package
1778 (name "wtype")
1779 (version "0.4")
1780 (source
1781 (origin
1782 (method git-fetch)
1783 (uri (git-reference
1784 (url "https://github.com/atx/wtype.git")
1785 (commit (string-append "v" version))))
1786 (file-name (git-file-name name version))
1787 (sha256
1788 (base32 "0bpix92vzip9vlhzihj3k8h9flrlna231x3y8ah7p4965l177yjd"))))
1789 (build-system meson-build-system)
1790 (native-inputs
1791 (list pkg-config
1792 ;; for wayland-scanner
1793 wayland))
1794 (inputs (list wayland libxkbcommon))
1795 (synopsis "Xdotool type for Wayland")
1796 (description "Wtype lets you simulate keyboard input and mouse activity,
1797move and resize windows, etc.")
1798 (home-page "https://github.com/atx/wtype")
1799 ;; MIT License
1800 (license license:expat)))
1801
1802(define-public exempi
1803 (package
1804 (name "exempi")
1805 (version "2.6.5")
1806 (source (origin
1807 (method url-fetch)
1808 (uri (string-append
1809 "https://libopenraw.freedesktop.org/download/"
1810 name "-" version ".tar.bz2"))
1811 (sha256
1812 (base32
1813 "1zhzwkfna14sy78llhfc94cy5hv3076j5v3p1zmvawzz5gaa7yg9"))))
1814 (build-system gnu-build-system)
1815 (arguments
1816 `(#:configure-flags (list (string-append "--with-boost="
1817 (assoc-ref %build-inputs "boost")))
1818 #:phases
1819 (modify-phases %standard-phases
1820 (add-after 'install 'remove-static-library
1821 (lambda* (#:key outputs #:allow-other-keys)
1822 ;; XXX: Some tests fail to build with --disable-static due to
1823 ;; symbols not being visible in the shared library:
1824 ;; <https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/17>.
1825 ;; Simply delete the static library instead to save ~4.3 MiB.
1826 (delete-file (string-append (assoc-ref outputs "out")
1827 "/lib/libexempi.a")))))))
1828 (native-inputs
1829 (list boost)) ; tests
1830 (inputs
1831 (list expat zlib))
1832 (home-page "https://libopenraw.freedesktop.org/exempi/")
1833 (synopsis "XMP metadata handling library")
1834 (description "Exempi is an implementation of the Extensible Metadata
1835Platform (@dfn{XMP}), which enables embedding metadata in PDF and image
1836formats.")
1837 (license license:bsd-3)))
1838
1839(define-public libatasmart
1840 (package
1841 (name "libatasmart")
1842 (version "0.19")
1843 (source (origin
1844 (method url-fetch)
1845 (uri (string-append "http://0pointer.de/public/"
1846 name "-" version ".tar.xz"))
1847 (sha256
1848 (base32
1849 "138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
1850 (build-system gnu-build-system)
1851 (native-inputs
1852 (append (if (and (%current-target-system)
1853 (target-riscv64?))
1854 (list config)
1855 '())
1856 (list pkg-config)))
1857 (arguments
1858 (if (and (%current-target-system)
1859 (target-riscv64?))
1860 (list #:phases
1861 #~(modify-phases %standard-phases
1862 (add-after 'unpack 'update-config
1863 (lambda* (#:key native-inputs inputs #:allow-other-keys)
1864 (for-each (lambda (file)
1865 (install-file
1866 (search-input-file
1867 (or native-inputs inputs)
1868 (string-append "/bin/" file)) "build-aux"))
1869 '("config.guess" "config.sub"))))))
1870 '()))
1871 (inputs
1872 (list eudev))
1873 (home-page "https://0pointer.de/blog/projects/being-smart.html")
1874 (synopsis "ATA S.M.A.R.T. reading and parsing library")
1875 (description
1876 "This library supports a subset of the ATA S.M.A.R.T. (Self-Monitoring,
1877Analysis and Reporting Technology) functionality.")
1878 (license license:lgpl2.1+)))
1879
1880(define-public udisks
1881 (package
1882 (name "udisks")
1883 (version "2.10.1")
1884 (source (origin
1885 (method url-fetch)
1886 (uri (string-append
1887 "https://github.com/storaged-project/" name
1888 "/releases/download/" name "-" version "/"
1889 name "-" version ".tar.bz2"))
1890 (sha256
1891 (base32
1892 "1klf5pcr9yg8g88mwwh3q2j0idfwd8hfr2q6nknhsm02yv638mxp"))))
1893 (build-system gnu-build-system)
1894 (native-inputs
1895 (list docbook-xml-4.3 ; to build the manpages
1896 docbook-xsl
1897 gettext-minimal
1898 `(,glib "bin") ; for glib-mkenums
1899 gobject-introspection
1900 gtk-doc/stable
1901 pkg-config
1902 libxslt))
1903 (propagated-inputs
1904 (list glib)) ; required by udisks2.pc
1905 (inputs
1906 (list acl
1907 bash-minimal
1908 cryptsetup-minimal
1909 kmod
1910 libatasmart
1911 libblockdev
1912 libgudev
1913 polkit
1914 util-linux))
1915 (outputs '("out"
1916 "doc")) ;5 MiB of gtk-doc HTML
1917 (arguments
1918 (list
1919 #:tests? #f ; requiring system message dbus
1920 #:disallowed-references '("doc") ;enforce separation of "doc"
1921 #:configure-flags
1922 #~(list "--enable-man"
1923 "--enable-available-modules" ; Such as lvm2, btrfs, etc.
1924 "--localstatedir=/var"
1925 (string-append "--with-html-dir=" #$output:doc
1926 "/share/doc/udisks/html")
1927 (string-append "--with-udevdir=" #$output "/lib/udev"))
1928 #:phases
1929 #~(modify-phases %standard-phases
1930 (add-after 'unpack 'patch-commands
1931 (lambda* (#:key inputs #:allow-other-keys)
1932 (substitute* "src/udiskslinuxdrive.c"
1933 (("\"eject %s\"")
1934 (format #f "\"~a %s\""
1935 (search-input-file inputs "bin/eject"))))
1936 (substitute* "src/udiskslinuxmanager.c"
1937 (("\"mkswap\"")
1938 (format #f "~s"
1939 (search-input-file inputs "sbin/mkswap"))))
1940 (substitute* "src/udisksstate.c"
1941 (("\"umount -l %s\"")
1942 (format #f "\"~a -l %s\""
1943 (search-input-file inputs "bin/umount"))))))
1944 (add-before 'configure 'fix-girdir
1945 (lambda _
1946 ;; Install introspection data to its own output.
1947 (substitute* "udisks/Makefile.in"
1948 (("girdir = .*")
1949 "girdir = $(datadir)/gir-1.0\n")
1950 (("typelibsdir = .*")
1951 "typelibsdir = $(libdir)/girepository-1.0\n")))))))
1952 (home-page "https://www.freedesktop.org/wiki/Software/udisks/")
1953 (synopsis "Disk manager service")
1954 (description
1955 "UDisks provides interfaces to enumerate and perform operations on disks
1956and storage devices. Any application (including unprivileged ones) can access
1957the udisksd(8) daemon via the name org.freedesktop.UDisks2 on the system
1958message bus.")
1959 ;; The dynamic library are under LGPLv2+, others are GPLv2+.
1960 (license (list license:gpl2+ license:lgpl2.0+))))
1961
1962(define-public accountsservice
1963 (package
1964 (name "accountsservice")
1965 (version "23.13.9")
1966 (source
1967 (origin
1968 (method url-fetch)
1969 (uri (string-append "https://www.freedesktop.org/software/"
1970 "accountsservice/accountsservice-"
1971 version ".tar.xz"))
1972 (sha256
1973 (base32 "0kwjkff5m7gnzpns6cy27az90w7sxzwzygyzwy90kyi4mvg4rnmd"))
1974 (patches (search-patches "accountsservice-extensions.patch"))))
1975 (build-system meson-build-system)
1976 (arguments
1977 `(#:configure-flags
1978 '("--localstatedir=/var"
1979 "-Delogind=true"
1980 "-Ddocbook=true"
1981 "-Dgtk_doc=true"
1982 "-Dsystemdsystemunitdir=/tmp/empty")
1983 #:phases
1984 (modify-phases %standard-phases
1985 (add-after 'unpack 'fix-python-incompatibilities
1986 (lambda _
1987 (substitute* (find-files "tests" "\\.py$")
1988 (("assertEquals") "assertEqual"))))
1989 (add-after 'unpack 'patch-paths
1990 (lambda* (#:key inputs #:allow-other-keys)
1991 (substitute* "meson_post_install.py"
1992 (("in dst_dirs") "in []"))
1993 (substitute* '("src/user.c" "src/daemon.c")
1994 (("/bin/cat")
1995 (search-input-file inputs "bin/cat"))
1996 (("/usr/sbin/usermod")
1997 (search-input-file inputs "sbin/usermod"))
1998 (("/usr/sbin/useradd")
1999 (search-input-file inputs "sbin/useradd"))
2000 (("/usr/sbin/userdel")
2001 (search-input-file inputs "sbin/userdel"))
2002 (("/usr/bin/passwd")
2003 (search-input-file inputs "bin/passwd"))
2004 (("/usr/bin/chage")
2005 (search-input-file inputs "bin/chage")))))
2006 (add-before 'configure 'relax-gcc-14-strictness
2007 (lambda _
2008 (setenv "CFLAGS"
2009 "-g -O2 -Wno-error=implicit-function-declaration")))
2010 (add-after 'install 'wrap-with-xdg-data-dirs
2011 ;; This is to allow accountsservice finding extensions, which
2012 ;; should be installed to the system profile.
2013 (lambda* (#:key outputs #:allow-other-keys)
2014 (wrap-program (search-input-file outputs "libexec/accounts-daemon")
2015 '("XDG_DATA_DIRS" prefix
2016 ("/run/current-system/profile/share")))))
2017 (delete 'check)
2018 (add-after 'install 'check
2019 (assoc-ref %standard-phases 'check)))))
2020 (native-inputs
2021 (list docbook-xml-4.1.2
2022 docbook-xsl
2023 gettext-minimal
2024 `(,glib "bin") ; for gdbus-codegen, etc.
2025 (libc-locales-for-target (%current-system)) ;for tests
2026 gobject-introspection
2027 gtk-doc/stable
2028 libxslt
2029 pkg-config
2030 vala
2031 xmlto
2032
2033 ;; For the tests.
2034 python
2035 python-dbusmock
2036 python-pygobject))
2037 (inputs
2038 (list bash-minimal
2039 coreutils-minimal
2040 dbus
2041 elogind
2042 libxcrypt
2043 shadow))
2044 (propagated-inputs
2045 ;; accountsservice.pc 'Requires' these:
2046 (list glib polkit))
2047 (home-page "https://www.freedesktop.org/wiki/Software/AccountsService/")
2048 (synopsis "D-Bus interface for user account query and manipulation")
2049 (description
2050 "The AccountService project provides a set of D-Bus interfaces for
2051querying and manipulating user account information and an implementation of
2052these interfaces, based on the useradd, usermod and userdel commands.")
2053 (license license:gpl3+)))
2054
2055(define-public libmbim
2056 (package
2057 (name "libmbim")
2058 (version "1.30.0")
2059 (source
2060 (origin
2061 (method git-fetch)
2062 (uri (git-reference
2063 (url "https://gitlab.freedesktop.org/mobile-broadband/libmbim")
2064 (commit version)))
2065 (file-name (git-file-name name version))
2066 (sha256
2067 (base32
2068 "00kbjvpka51zrfjigzd3rk6r4x8hkg1xfj7d9zl9lccysnxyjx5h"))))
2069 (build-system meson-build-system)
2070 (native-inputs
2071 (list `(,glib "bin") ;for glib-mkenums
2072 gobject-introspection
2073 help2man
2074 pkg-config
2075 python-minimal))
2076 (propagated-inputs
2077 (list glib)) ;required by mbim-glib.pc
2078 (inputs
2079 (list
2080 bash-completion
2081 libgudev))
2082 (synopsis "Library to communicate with MBIM-powered modems")
2083 (home-page "https://www.freedesktop.org/wiki/Software/libmbim/")
2084 (description
2085 "Libmbim is a GLib-based library for talking to WWAN modems and devices
2086which speak the Mobile Interface Broadband Model (MBIM) protocol.")
2087 (license
2088 ;; The libmbim-glib library is released under the LGPLv2+ license.
2089 ;; The mbimcli tool is released under the GPLv2+ license.
2090 (list license:lgpl2.0+ license:gpl2+))))
2091
2092(define-public libqrtr-glib
2093 (package
2094 (name "libqrtr-glib")
2095 (version "1.2.2")
2096 (source
2097 (origin
2098 (method git-fetch)
2099 (uri
2100 (git-reference
2101 (url "https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib")
2102 (commit version)))
2103 (file-name (git-file-name name version))
2104 (sha256
2105 (base32
2106 "0bfn5kfscli0rrxvmzdl6ix5ikh0kxia7ad83rmh1hksfcwynwlh"))))
2107 (build-system meson-build-system)
2108 (inputs
2109 (list libgudev libmbim))
2110 (native-inputs
2111 (list bash-completion
2112 `(,glib "bin")
2113 gtk-doc/stable
2114 gobject-introspection
2115 pkg-config))
2116 (propagated-inputs
2117 (list glib)) ;required by mm-glib.pc
2118 (synopsis "Qualcomm IPC Router protocol helper library")
2119 (description
2120 "libqrtr-glib is a glib-based library to use and manage the QRTR (Qualcomm
2121IPC Router) bus.")
2122 (home-page "https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib")
2123 (license license:lgpl2.1+)))
2124
2125(define-public libqmi
2126 (package
2127 (name "libqmi")
2128 (version "1.34.0")
2129 (source
2130 (origin
2131 (method git-fetch)
2132 (uri (git-reference
2133 (url "https://gitlab.freedesktop.org/mobile-broadband/libqmi")
2134 (commit version)))
2135 (file-name (git-file-name name version))
2136 (sha256
2137 (base32
2138 "1m5y2sf14qd2i9mvbb68wxqlfwvpiprgz8zmcx6wb2cnjgsszmwp"))))
2139 (build-system meson-build-system)
2140 (native-inputs
2141 (list bash-completion
2142 `(,glib "bin") ;for glib-mkenums
2143 gobject-introspection
2144 help2man
2145 pkg-config
2146 python-minimal))
2147 (inputs
2148 (list libgudev))
2149 (propagated-inputs
2150 ;; These are required by qmi-glib.pc.
2151 (list glib
2152 libmbim
2153 libqrtr-glib))
2154 (synopsis "Library to communicate with QMI-powered modems")
2155 (home-page "https://www.freedesktop.org/wiki/Software/libqmi/")
2156 (description
2157 "Libqmi is a GLib-based library for talking to WWAN modems and devices
2158which speak the Qualcomm MSM Interface (QMI) protocol.")
2159 (license
2160 ;; The libqmi-glib library is released under the LGPLv2+ license.
2161 ;; The qmicli tool is released under the GPLv2+ license.
2162 (list license:lgpl2.0+ license:gpl2+))))
2163
2164(define-public modem-manager
2165 (package
2166 (name "modem-manager")
2167 (version "1.22.0")
2168 (source
2169 (origin
2170 (method git-fetch)
2171 (uri
2172 (git-reference
2173 (url "https://gitlab.freedesktop.org/mobile-broadband/ModemManager")
2174 (commit version)))
2175 (patches (search-patches "modem-manager-fix-test-wrapper.patch"))
2176 (file-name (git-file-name name version))
2177 (sha256
2178 (base32
2179 "0fj4ibjfsxal3xfk3hrj4l9vg7zbj42k9lj7151illl2n3d5ngzw"))))
2180 (build-system meson-build-system)
2181 (arguments
2182 (list
2183 #:configure-flags
2184 #~(list (string-append "-Dudevdir=" #$output "/lib/udev")
2185 "-Dsystemdsystemunitdir=no"
2186 "-Dvapi=true")))
2187 (native-inputs
2188 (list dbus
2189 gettext-minimal
2190 gobject-introspection
2191 `(,glib "bin") ;for glib-mkenums
2192 libxslt ;for xsltproc
2193 pkg-config
2194 python-minimal
2195 python-dbus ;for test
2196 python-pygobject ;for test
2197 vala))
2198 (propagated-inputs
2199 (list glib)) ;required by mm-glib.pc
2200 (inputs
2201 (list bash-completion
2202 elogind
2203 libgudev
2204 libmbim
2205 libqmi
2206 libqrtr-glib
2207 polkit))
2208 (synopsis "Mobile broadband modems manager")
2209 (home-page "https://www.freedesktop.org/wiki/Software/ModemManager/")
2210 (description
2211 "ModemManager is a DBus-activated daemon which controls mobile
2212broadband (2G/3G/4G) devices and connections. Whether built-in devices, USB
2213dongles, bluetooth-paired telephones, or professional RS232/USB devices with
2214external power supplies, ModemManager is able to prepare and configure the
2215modems and setup connections with them.")
2216 (properties
2217 '((upstream-name . "ModemManager")))
2218 (license license:gpl2+)))
2219
2220(define-public telepathy-gabble
2221 ;; telepathy-gabble bundles wocky, an unreleased library. The latest commit
2222 ;; includes a more recent version.
2223 (let ((commit "f1c762df6328916b811a834047fedac8529cf157")
2224 (revision "1"))
2225 (package
2226 (name "telepathy-gabble")
2227 (version (git-version "0.18.4" revision commit))
2228 (source
2229 (origin
2230 (method git-fetch)
2231 (uri (git-reference
2232 (url "https://github.com/TelepathyIM/telepathy-gabble/")
2233 (commit commit)
2234 (recursive? #true)))
2235 (file-name (git-file-name name version))
2236 (sha256
2237 (base32
2238 "00ss14hf1qwb42648cldghmfjfn1nkjvpy508b7vaz322fj37qa4"))
2239 (modules '((guix build utils)))
2240 (snippet
2241 ;; Add missing 'const' qualifier to '_error' function. This fixes
2242 ;; an "incompatible pointer type" error with libxml2 2.14.
2243 #~(substitute* "lib/ext/wocky/wocky/wocky-xmpp-reader.c"
2244 (("xmlErrorPtr error")
2245 "const xmlError *error")))))
2246 (build-system gnu-build-system)
2247 (arguments
2248 (list
2249 ;; Parallel tests freeze.
2250 #:parallel-tests? #false
2251 #:phases
2252 '(modify-phases %standard-phases
2253 (add-after 'unpack 'delete-autogen
2254 (lambda _ (delete-file "autogen.sh")))
2255 (add-before 'configure 'configure-wocky
2256 (lambda* (#:key configure-flags #:allow-other-keys)
2257 (with-directory-excursion "lib/ext/wocky"
2258 (invoke "gtkdocize")
2259 (invoke "bash" "autoreconf" "-vif")
2260 (substitute* "configure"
2261 (("/bin/sh") (which "sh")))
2262 (apply invoke "bash" "configure" configure-flags)))))
2263 #:configure-flags
2264 #~(list (string-append "--prefix=" #$output)
2265 "--disable-avahi-tests"
2266 "--disable-dependency-tracking"
2267 "--disable-Werror"
2268 "--without-ca-certificates")))
2269 (native-inputs
2270 (list autoconf
2271 automake
2272 libtool
2273 `(,glib "bin") ;for glib-compile-schemas, etc.
2274 gtk-doc
2275 pkg-config))
2276 (inputs
2277 (list dbus
2278 glib
2279 gnutls
2280 gobject-introspection
2281 libnice
2282 libsoup-minimal-2
2283 libxslt
2284 python))
2285 (propagated-inputs
2286 (list telepathy-glib))
2287 (home-page "https://telepathy.freedesktop.org/components/telepathy-gabble/")
2288 (synopsis "XMPP connection manager for Telepathy")
2289 (description
2290 "Gabble is a Jabber/XMPP connection manager for the Telepathy
2291framework, currently supporting:
2292
2293@itemize
2294@item single-user chats
2295@item multi-user chats
2296@item voice/video calling
2297@item file transfer
2298@end itemize
2299
2300with Jabber/XMPP interoperability.
2301
2302Telepathy is a D-Bus framework for unifying real time communication, including
2303instant messaging, voice calls and video calls. It abstracts differences
2304between protocols to provide a unified interface for applications.")
2305 (license license:lgpl2.1))))
2306
2307(define-public telepathy-logger
2308 ;; Use the latest commit as the latest release is still using Python 2.
2309 (let ((commit "5eaf8c99748b3d4e61afaba24ff6bf763f81695d")
2310 (revision "0"))
2311 (package
2312 (name "telepathy-logger")
2313 (version (git-version "0.8.2" revision commit))
2314 (source (origin
2315 (method git-fetch)
2316 (uri (git-reference
2317 (url "https://github.com/TelepathyIM/telepathy-logger")
2318 (commit commit)))
2319 (file-name (git-file-name name version))
2320 (sha256
2321 (base32
2322 "13rry9y1fb5dcfd26r7zi79sw3rfss17sr19xhxavjnq08a0cgg2"))))
2323 (build-system gnu-build-system)
2324 (arguments
2325 (list
2326 ;; The 'test-log-manager' fails non-deterministically with
2327 ;; "../../tools/with-session-bus.sh: line 97: 10583 Segmentation
2328 ;; fault" (see:
2329 ;; https://github.com/TelepathyIM/telepathy-logger/issues/6).
2330 #:tests? #f
2331 ;; Do not treat deprecation warnings as errors, as there are some for
2332 ;; telepathy-glib functions, e.g "error: ‘GTimeVal’ is deprecated: Use
2333 ;; 'GDateTime' instead" (see:
2334 ;; https://github.com/TelepathyIM/telepathy-logger/issues/7).
2335 #:configure-flags #~(list "--disable-Werror")
2336 #:phases
2337 #~(modify-phases %standard-phases
2338 (add-after 'unpack 'fix-autogen.sh
2339 (lambda _
2340 (substitute* "autogen.sh"
2341 ;; The script calls configure before its shebang is
2342 ;; patched.
2343 (("\\./configure" all)
2344 (string-append "CONFIG_SHELL=sh sh configure")))))
2345 (add-before 'check 'pre-check
2346 (lambda _
2347 (setenv "HOME" (getenv "TMPDIR")))))))
2348 (native-inputs
2349 (list autoconf
2350 automake
2351 `(,glib "bin") ;for glib-genmarshal, etc.
2352 gobject-introspection
2353 gtk-doc/stable
2354 intltool
2355 libtool
2356 libxslt
2357 pkg-config
2358 python-minimal))
2359 (inputs (list sqlite))
2360 (propagated-inputs
2361 ;; telepathy-logger-0.2.pc refers to all these.
2362 (list libxml2 telepathy-glib))
2363 (synopsis "Telepathy logger library")
2364 (home-page "https://telepathy.freedesktop.org/")
2365 (description
2366 "Telepathy logger is a headless observer client that logs information
2367received by the Telepathy framework. It features pluggable backends to log
2368different sorts of messages in different formats.")
2369 (license license:lgpl2.1+))))
2370
2371(define-public telepathy-idle
2372 ;; Use the latest commit, as the latest release does not support Python 3.
2373 (let ((commit "b516eab0f2b92e078e0f5cab4224214d215b2ea5")
2374 (revision "0"))
2375 (package
2376 (name "telepathy-idle")
2377 (version (git-version "0.2.2" revision commit))
2378 (source
2379 (origin
2380 (method git-fetch)
2381 (uri (git-reference
2382 (url "https://github.com/TelepathyIM/telepathy-idle")
2383 (commit commit)))
2384 (file-name (git-file-name name version))
2385 (sha256
2386 (base32 "02wb61h2k3hhis5y2xi5rhc6pmikd13x722hk620sqb9b3m5pn3s"))))
2387 (build-system gnu-build-system)
2388 (native-inputs (list autoconf automake libtool pkg-config))
2389 (inputs (list libxslt python-wrapper python-dbus))
2390 (propagated-inputs (list telepathy-glib))
2391 (home-page "https://telepathy.freedesktop.org/")
2392 (synopsis "Telepathy IRC connection manager")
2393 (description
2394 "Idle is an IRC connection manager for the Telepathy framework. This
2395package enables usage of IRC channels and private messages in Telepathy instant
2396messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
2397 (license (list license:lgpl2.1 license:lgpl2.1+)))))
2398
2399(define-public telepathy-mission-control
2400 (package
2401 (name "telepathy-mission-control")
2402 (version "5.16.6")
2403 (source
2404 (origin
2405 (method url-fetch)
2406 (uri (string-append "https://telepathy.freedesktop.org/releases/"
2407 "telepathy-mission-control/"
2408 "telepathy-mission-control-" version ".tar.gz"))
2409 (sha256
2410 (base32 "0ibs575pfr0wmhfcw6ln6iz7gw2y45l3bah11rksf6g9jlwsxy1d"))))
2411 (build-system gnu-build-system)
2412 (native-inputs
2413 (list `(,glib "bin") ; for glib-compile-schemas, etc.
2414 gtk-doc/stable
2415 pkg-config
2416 python-minimal
2417 libxslt))
2418 (inputs (list dconf libgnome-keyring))
2419 (propagated-inputs (list telepathy-glib))
2420 (home-page "https://telepathy.freedesktop.org/wiki/Components/Mission_Control/")
2421 (synopsis "Telepathy real-time communication framework management daemon")
2422 (description
2423 "Telepathy Mission Control 5 is an account manager and channel dispatcher
2424for the Telepathy framework, allowing user interfaces and other clients to
2425share connections to real-time communication services without conflicting.")
2426 (license license:lgpl2.1)))
2427
2428(define-public telepathy-salut
2429 ;; telepathy-salut bundles wocky, an unreleased library. The latest commit
2430 ;; includes a more recent version.
2431 (let ((commit "90dbe5e74ccdd063cb123212a754f994c9d2019f")
2432 (revision "1"))
2433 (package
2434 (name "telepathy-salut")
2435 (version (git-version "0.8.1" revision commit))
2436 (source
2437 (origin
2438 (method git-fetch)
2439 (uri (git-reference
2440 (url "https://github.com/TelepathyIM/telepathy-salut")
2441 (commit commit)
2442 (recursive? #true)))
2443 (file-name (git-file-name name version))
2444 (sha256
2445 (base32
2446 "195pz8dgwhyy1cygd0rlncyr3c4wzhnf99sfjj5qmc8j195j1k7a"))
2447 (modules '((guix build utils)))
2448 (snippet ;for wocky
2449 (origin-snippet (package-source telepathy-gabble)))))
2450 (build-system gnu-build-system)
2451 (arguments
2452 (list
2453 #:phases
2454 '(modify-phases %standard-phases
2455 (add-after 'unpack 'delete-autogen
2456 (lambda _ (delete-file "autogen.sh")))
2457 ;; The twisted tests all fail, but there are no logs, so we can't
2458 ;; tell what's wrong.
2459 (add-after 'unpack 'disable-twisted-tests
2460 (lambda _
2461 (substitute* "tests/Makefile.am"
2462 (("SUBDIRS = twisted") ""))))
2463 (add-before 'configure 'configure-wocky
2464 (lambda* (#:key configure-flags #:allow-other-keys)
2465 (with-directory-excursion "lib/ext/wocky"
2466 (invoke "gtkdocize")
2467 (invoke "bash" "autoreconf" "-vif")
2468 (substitute* "configure"
2469 (("/bin/sh") (which "sh")))
2470 (apply invoke "bash" "configure" configure-flags)))))
2471 #:configure-flags
2472 #~(list (string-append "--prefix=" #$output)
2473 "--disable-avahi-tests"
2474 "--without-ca-certificates"
2475 "--disable-Werror"
2476 "--enable-olpc")))
2477 (native-inputs
2478 (list autoconf
2479 automake
2480 libtool
2481 `(,glib "bin") ;for glib-compile-schemas, etc.
2482 gtk-doc
2483 pkg-config))
2484 (inputs
2485 (list avahi
2486 dbus
2487 glib
2488 gnutls
2489 gobject-introspection
2490 libxml2
2491 libxslt
2492 libsoup-minimal-2
2493 python
2494 `(,util-linux "lib")))
2495 (propagated-inputs
2496 (list telepathy-glib))
2497 (home-page "https://telepathy.freedesktop.org/wiki/Components/")
2498 (synopsis "Link-local XMPP connection manager")
2499 (description
2500 "Salut is a link-local XMPP (XEP-0174) connection manager for the
2501Telepathy framework, currently supporting presence and single-user chats with
2502iChat interoperability, and multi-user chats and Tubes using the
2503@url{https://telepathy.freedesktop.org/wiki/Clique,Clique} protocol.")
2504 (license license:lgpl2.1))))
2505
2506(define-public colord-gtk
2507 (package
2508 (name "colord-gtk")
2509 (version "0.3.1")
2510 (source (origin
2511 (method url-fetch)
2512 (uri (string-append "https://www.freedesktop.org/software/colord"
2513 "/releases/" name "-" version ".tar.xz"))
2514 (sha256
2515 (base32
2516 "0b8j7an572ww8n3n0j9kwrl27qd3156g4zix9rzs2c2nny4vhxn1"))))
2517 (outputs '("out" "doc"))
2518 (build-system meson-build-system)
2519 (arguments
2520 (list
2521 #:tests? #f ;require the colord system service
2522 #:phases
2523 #~(modify-phases %standard-phases
2524 (add-after 'install 'split-package
2525 (lambda _
2526 (let* ((old (string-append #$output "/share/gtk-doc"))
2527 (new (string-append #$output:doc "/share/gtk-doc")))
2528 (mkdir-p (dirname new))
2529 (rename-file old new)))))))
2530 (native-inputs
2531 (list docbook-xsl
2532 gettext-minimal
2533 gobject-introspection
2534 gtk-doc/stable
2535 libxslt
2536 pkg-config
2537 vala))
2538 (inputs
2539 (list gtk+))
2540 (propagated-inputs
2541 ;; colord-gtk.pc refers to all these.
2542 (list colord gtk))
2543 (synopsis "GTK integration for libcolord")
2544 (home-page "https://www.freedesktop.org/software/colord/")
2545 (description
2546 "This is a GTK convenience library for interacting with colord. It is
2547useful for both applications which need colour management and applications
2548that wish to perform colour calibration.")
2549 (license license:lgpl2.1+)))
2550
2551(define-public libfprint
2552 (package
2553 (name "libfprint")
2554 (version "1.94.5")
2555 (source
2556 (origin
2557 (method git-fetch)
2558 (uri (git-reference
2559 (url "https://gitlab.freedesktop.org/libfprint/libfprint")
2560 (commit (string-append "v" version))))
2561 (file-name (git-file-name name version))
2562 (sha256
2563 (base32 "1l1ak7y2kz0nrdkfj41n7h34dyykgzdg50y752ayk3ginp6szr7r"))))
2564 (build-system meson-build-system)
2565 (arguments
2566 (list #:configure-flags
2567 #~(list (string-append "-Dudev_hwdb_dir=" #$output
2568 "/lib/udev/hwdb.d")
2569 (string-append "-Dc_link_args=-Wl,-rpath="
2570 (search-input-directory %build-inputs
2571 "lib/nss"))
2572 (string-append "-Dudev_rules_dir=" #$output
2573 "/lib/udev/rules.d"))))
2574 (native-inputs
2575 (list `(,glib "bin") ; for {glib-,}mkenums
2576 gobject-introspection
2577 gtk-doc/stable ; for 88 KiB of API documentation
2578 pkg-config
2579 ;; For tests
2580 python-minimal))
2581 (inputs
2582 (list gusb
2583 libgudev
2584 nss ; for the URU4x00 driver
2585 ;; Replacing this with cairo works but just results in a reference
2586 ;; (only) to pixman in the end.
2587 pixman))
2588 (home-page "https://fprint.freedesktop.org/")
2589 (synopsis "Library to access fingerprint readers")
2590 (description
2591 "libfprint is a library designed to make it easy for application
2592developers to add support for consumer fingerprint readers to their
2593software.")
2594 (license license:lgpl2.1+)))
2595
2596(define-public fprintd
2597 (package
2598 (name "fprintd")
2599 (version "1.94.2")
2600 (source
2601 (origin
2602 (method git-fetch)
2603 (uri (git-reference
2604 (url "https://gitlab.freedesktop.org/libfprint/fprintd")
2605 (commit (string-append "v" version))))
2606 (file-name (git-file-name name version))
2607 (sha256
2608 (base32 "015k3kc4fmas0vc2b21qzq7kvdc9x6lcqvjhbvy6m84pkhhmry3q"))))
2609 (build-system meson-build-system)
2610 (arguments
2611 (list #:configure-flags
2612 #~(list "-Dsystemd_system_unit_dir=/tmp"
2613 (string-append "-Ddbus_service_dir=" #$output
2614 "/share/dbus-1/system-services")
2615 (string-append "-Dpam_modules_dir=" #$output
2616 "/lib/security"))
2617 #:phases
2618 #~(modify-phases %standard-phases
2619 (add-before 'configure 'patch-output-directories
2620 ;; Install files to our output, not that of the ‘owner’ package.
2621 ;; These are not exposed as Meson options and must be patched.
2622 (lambda* (#:key outputs #:allow-other-keys)
2623 (let ((out (assoc-ref outputs "out")))
2624 (substitute* "meson.build"
2625 (("(dbus_interfaces_dir = ).*" _ set)
2626 (string-append set "'" out "/share/dbus-1/interfaces'\n"))
2627 (("(polkit_policy_directory = ).*" _ set)
2628 (string-append set "'" out "/share/polkit-1/actions/'\n"))
2629 (("(dbus_data_dir = ).*" _ set)
2630 (string-append set "get_option('prefix')"
2631 " / get_option('datadir')\n"))))))
2632 (add-before 'configure 'patch-systemd-dependencies
2633 (lambda _
2634 (substitute* "meson.build"
2635 (("(dependency\\(')(libsystemd|systemd)" _ prefix)
2636 (string-append prefix "libelogind")))))
2637 (add-before 'configure 'ignore-test-dependencies
2638 (lambda _
2639 (substitute* "meson.build"
2640 ((".*gi\\.repository\\.FPrint.*") "")
2641 (("pam_wrapper_dep .*") "")
2642 ((".*'(cairo|dbus|dbusmock|gi|pypamtest)': .*,.*") ""))
2643 (substitute* "tests/pam/meson.build"
2644 ((".*pam_wrapper.*") "")))))
2645 #:tests? #f)) ; XXX depend on unpackaged packages
2646 (native-inputs
2647 (list gettext-minimal
2648 `(,glib "bin") ; for glib-genmarshal
2649 perl ; for pod2man
2650 pkg-config
2651 ;; For tests.
2652 python)) ; needed unconditionally
2653 ;; pam_wrapper
2654 ;; python-pycairo
2655 ;; python-dbus
2656 ;; python-dbusmock
2657 ;; python-pygobject
2658 ;; python-pypamtest
2659 (inputs
2660 (list dbus-glib
2661 elogind
2662 libfprint
2663 linux-pam
2664 polkit))
2665 (home-page "https://fprint.freedesktop.org/")
2666 (synopsis "D-Bus daemon that exposes fingerprint reader functionality")
2667 (description
2668 "fprintd is a D-Bus daemon that offers functionality of libfprint, a
2669library to access fingerprint readers, over the D-Bus interprocess
2670communication bus. This daemon layer above libfprint solves problems related
2671to applications simultaneously competing for fingerprint readers.")
2672 (license license:gpl2+)))
2673
2674(define-public desktop-file-utils
2675 (package
2676 (name "desktop-file-utils")
2677 (version "0.28")
2678 (source (origin
2679 (method url-fetch)
2680 (uri (string-append "https://www.freedesktop.org/software/"
2681 "desktop-file-utils/releases/"
2682 "desktop-file-utils-" version ".tar.xz"))
2683 (sha256
2684 (base32
2685 "0w4ai6a3bwrdh86n2pvgv664djlmlds5lfa2hbgc4hnq67id80a4"))))
2686 (build-system meson-build-system)
2687 (native-inputs
2688 (list pkg-config))
2689 (inputs
2690 (list glib))
2691 (home-page "https://www.freedesktop.org/wiki/Software/desktop-file-utils/")
2692 (synopsis "Utilities for working with desktop entries")
2693 (description
2694 "This package contains a few command line utilities for working with
2695desktop entries:
2696@table @command
2697@item desktop-file-validate
2698Validates a desktop file and prints warnings/errors about desktop entry
2699specification violations.
2700
2701@item desktop-file-install
2702Installs a desktop file to the applications directory, optionally munging it
2703a bit in transit.
2704
2705@item update-desktop-database
2706Updates the database containing a cache of MIME types handled by desktop
2707files.
2708@end table")
2709 (license license:gpl2+)))
2710
2711(define-public drm-info
2712 (package
2713 (name "drm-info")
2714 (version "2.6.0")
2715 (source
2716 (origin
2717 (method git-fetch)
2718 (uri (git-reference
2719 (url "https://gitlab.freedesktop.org/emersion/drm_info.git")
2720 (commit (string-append "v" version))))
2721 (file-name (git-file-name name version))
2722 (sha256
2723 (base32
2724 "0fc1rd3c16ddzbdpcj473ykszipzblj98lk376slk63v7mqvc1qm"))))
2725 (build-system meson-build-system)
2726 (arguments (list #:configure-flags
2727 #~(list "-Dman-pages=enabled"
2728 "-Dlibpci=enabled")))
2729 (native-inputs
2730 (append (if (%current-target-system)
2731 (list pkg-config-for-build)
2732 '())
2733 (list pkg-config scdoc)))
2734 (inputs
2735 (list libdrm json-c pciutils))
2736 (home-page "https://gitlab.freedesktop.org/emersion/drm_info")
2737 (synopsis "Dump DRM device info")
2738 (description "Displaying and dumping information on Direct
2739Rendering Manager devices.")
2740 (license license:expat)))
2741
2742(define-public xdg-user-dirs
2743 (package
2744 (name "xdg-user-dirs")
2745 (version "0.20")
2746 (source (origin
2747 (method git-fetch)
2748 (uri (git-reference
2749 (url "https://gitlab.freedesktop.org/xdg/xdg-user-dirs.git")
2750 (commit (string-append "v" version))))
2751 (file-name (git-file-name name version))
2752 (sha256
2753 (base32
2754 "1s235wp6z0d94z5qhwf408ppli1p3s3zah8rynm9ljh3hmmv0p2g"))))
2755 (build-system meson-build-system)
2756 (native-inputs
2757 (list gettext-minimal
2758 docbook-xsl
2759 libxslt))
2760 (home-page "https://www.freedesktop.org/wiki/Software/xdg-user-dirs/")
2761 (synopsis "Tool to help manage \"well known\" user directories")
2762 (description "xdg-user-dirs is a tool to help manage \"well known\" user
2763directories, such as the desktop folder or the music folder. It also handles
2764localization (i.e. translation) of the file names. Designed to be
2765automatically run when a user logs in, xdg-user-dirs can also be run
2766manually by a user.")
2767 (license license:gpl2)))
2768
2769(define-public perl-file-basedir
2770 (package
2771 (name "perl-file-basedir")
2772 (version "0.09")
2773 (source
2774 (origin
2775 (method url-fetch)
2776 (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
2777 "File-BaseDir-" version ".tar.gz"))
2778 (sha256
2779 (base32
2780 "1nb757cyyy80xln147qgns113i2ivfpgcfhsxw8qzb322llgg9kd"))))
2781 (build-system perl-build-system)
2782 (native-inputs
2783 (list perl-module-build perl-file-which perl-test-pod
2784 perl-test-pod-coverage xdg-user-dirs))
2785 (propagated-inputs
2786 (list perl-ipc-system-simple))
2787 (home-page "https://metacpan.org/release/File-BaseDir")
2788 (synopsis "Use the Freedesktop.org base directory specification")
2789 (description
2790 "@code{File::Basedir} can be used to find directories and files as
2791specified by the Freedesktop.org Base Directory Specification. This
2792specifications gives a mechanism to locate directories for configuration,
2793application data and cache data.")
2794 (license license:perl-license)))
2795
2796(define-public perl-file-desktopentry
2797 (package
2798 (name "perl-file-desktopentry")
2799 (version "0.22")
2800 (source
2801 (origin
2802 (method url-fetch)
2803 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
2804 "File-DesktopEntry-" version ".tar.gz"))
2805 (sha256
2806 (base32
2807 "1f1maqix2kbfg2rf008m7mqnvv6nvcf9y6pcgdv2kxp2vbih370n"))))
2808 (build-system perl-build-system)
2809 (native-inputs
2810 (list perl-test-pod perl-test-pod-coverage))
2811 (propagated-inputs
2812 (list perl-file-basedir perl-uri))
2813 (home-page "https://metacpan.org/release/File-DesktopEntry")
2814 (synopsis "Handle @file{.desktop} files")
2815 (description
2816 "@code{File::DesktopEntry} parses @file{.desktop} files defined by the
2817Freedesktop.org @dfn{Desktop Entry} specification. It can also run the
2818applications define in those files.")
2819 (license license:perl-license)))
2820
2821(define-public perl-file-mimeinfo
2822 (package
2823 (name "perl-file-mimeinfo")
2824 (version "0.37")
2825 (source
2826 (origin
2827 (method url-fetch)
2828 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
2829 "File-MimeInfo-" version ".tar.gz"))
2830 (sha256
2831 (base32
2832 "0syhn8cq54xznrvnb410j0ilfa9icyq4ma8ki4csza3dsgyvpr8k"))))
2833 (build-system perl-build-system)
2834 (inputs (list bash-minimal)) ;for wrap-program
2835 ;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
2836 ;; perl-test-tiny as native-inputs.
2837 (propagated-inputs
2838 (list shared-mime-info perl-encode-locale perl-file-desktopentry))
2839 (arguments
2840 ;; Some tests fail due to requiring the mimetype of perl files to be
2841 ;; text/plain when they are actually application/x-perl.
2842 (list #:tests? #f
2843 #:phases
2844 #~(modify-phases %standard-phases
2845 (add-after 'install 'wrap-programs
2846 ;; TODO(staging): Make unconditional.
2847 (lambda* (#:key #$@(if (%current-target-system)
2848 #~(inputs)
2849 #~()) outputs #:allow-other-keys)
2850 (let ((out (assoc-ref outputs "out")))
2851 (for-each
2852 (lambda (prog)
2853 (wrap-program (string-append out "/bin/" prog)
2854 `("PERL5LIB" ":" prefix
2855 ;; PERL5LIB looks in 'native-inputs', not 'inputs',
2856 ;; whereas the latter is required for
2857 ;; cross-compilation.
2858 #$(if (%current-target-system)
2859 #~,(search-path-as-list
2860 '("lib/perl5/site_perl")
2861 (map cdr (append inputs outputs)))
2862 #~(,(string-append
2863 (getenv "PERL5LIB")
2864 ":" out "/lib/perl5/site_perl"))))))
2865 '("mimeopen" "mimetype"))))))))
2866 (home-page "https://metacpan.org/release/File-MimeInfo")
2867 (synopsis "Determine file type from the file name")
2868 (description
2869 "@code{File::Mimeinfo} can be used to determine the MIME type of a file.
2870It tries to implement the Freedesktop specification for a shared MIME
2871database.
2872
2873This package also contains two related utilities:
2874
2875@itemize
2876@item @command{mimetype} determines a file's MIME type;
2877@item @command{mimeopen} opens files in an appropriate program according to
2878their MIME type.
2879@end itemize")
2880 (license license:perl-license)))
2881
2882(define-public uchardet
2883 (package
2884 (name "uchardet")
2885 (version "0.0.8")
2886 (source
2887 (origin
2888 (method url-fetch)
2889 (uri (string-append "https://www.freedesktop.org/software/"
2890 name "/releases/" name "-" version ".tar.xz"))
2891 (sha256
2892 (base32 "1w659aiphbnczpry771diakrzg9a8aqpn2abcxx1870aq37n0yp9"))))
2893 (build-system cmake-build-system)
2894 (home-page "https://www.freedesktop.org/wiki/Software/uchardet/")
2895 (synopsis "Encoding detector library")
2896 (description "uchardet is an encoding detector library, which takes a
2897sequence of bytes in an unknown character encoding without any additional
2898information, and attempts to determine the encoding of the text. Returned
2899encoding names are iconv-compatible.")
2900
2901 ;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
2902 ;; combination is GPL 2.0+.
2903 (license license:gpl2+)))
2904
2905(define-public python-cchardet
2906 (package
2907 (name "python-cchardet")
2908 (version "2.2.0a2")
2909 (source
2910 (origin
2911 (method url-fetch)
2912 (uri (pypi-uri "cchardet" version))
2913 (sha256
2914 (base32 "08wq5yfaafbjipabfc6kpyvivkk2394w7isv0mwx5agcf8cbnwnx"))))
2915 (build-system pyproject-build-system)
2916 (arguments
2917 (list
2918 #:test-flags
2919 ;; No test data in PyPI archive:
2920 ;; '<...>/tests/samples/wikipediaJa_One_Thousand_and_One_Nights_SJIS.txt'
2921 #~(list "--deselect=tests/test_1.py::TestCChardet::test_detector")))
2922 (inputs
2923 (list uchardet))
2924 (native-inputs
2925 (list python-pytest python-setuptools))
2926 (home-page "https://github.com/PyYoshi/cChardet")
2927 (synopsis "High-performance character encoding detection for Python")
2928 (description
2929 "cChardet is a character encoding detector, written in Python, that binds
2930to the C library @code{uchardet} to increase performance.")
2931 (license license:gpl2+)))
2932
2933(define-public udiskie
2934 (package
2935 (name "udiskie")
2936 (version "2.6.2")
2937 (source
2938 (origin
2939 (method git-fetch)
2940 (uri (git-reference
2941 (url "https://github.com/coldfix/udiskie")
2942 (commit (string-append "v" version))))
2943 (file-name (git-file-name name version))
2944 (sha256
2945 (base32 "0zc23yf2sw1m21xkfbpfjzbp7xykqjwq56fr2nxzlc02n7g6iqgk"))))
2946 (build-system pyproject-build-system)
2947 (arguments
2948 (list
2949 #:test-backend #~'custom
2950 #:test-flags #~(list "test/test_match.py")
2951 #:phases
2952 #~(modify-phases %standard-phases
2953 (add-after 'wrap 'wrap-gi-typelib
2954 (lambda _
2955 (wrap-program (string-append #$output "/bin/udiskie")
2956 `("GI_TYPELIB_PATH" ":" prefix
2957 (,(getenv "GI_TYPELIB_PATH")))))))))
2958 (native-inputs
2959 (list asciidoc
2960 gettext-minimal
2961 gobject-introspection
2962 python-setuptools))
2963 (inputs
2964 (list bash-minimal
2965 gobject-introspection
2966 gtk+
2967 libappindicator
2968 libnotify
2969 python-docopt
2970 python-keyutils
2971 python-pygobject
2972 python-pyyaml
2973 udisks))
2974 (home-page "https://github.com/coldfix/udiskie")
2975 (synopsis "Automounter for removable media")
2976 (description
2977 "The @command{udiskie} program is a udisks2 front-end that
2978manages removable media such as CDs or flash drives from userspace.
2979
2980Its features include:
2981
2982@itemize
2983@item automount removable media,
2984@item notifications,
2985@item tray icon,
2986@item command line tools for manual (un)mounting,
2987@item LUKS encrypted devices,
2988@item unlocking with keyfiles,
2989@item loop devices (mounting ISO archives),
2990@item password caching.
2991@end itemize
2992")
2993 (license license:expat)))
2994
2995(define-public plymouth
2996 (package
2997 (name "plymouth")
2998 (version "24.004.60")
2999 (source
3000 (origin
3001 (method url-fetch)
3002 (uri (string-append "https://www.freedesktop.org/software/"
3003 "plymouth/releases/" name "-" version ".tar.xz"))
3004 (sha256
3005 (base32
3006 "0d0wbfsy70xhgxv4mldv72gzv0k8bvfxpvm90rxmx3y9b09q9xzk"))))
3007 (build-system meson-build-system)
3008 (arguments
3009 (list
3010 #:configure-flags
3011 '(list "-Dlogo=/var/run/plymouth/logo.png"
3012 "-Dlocalstatedir=/var"
3013 "-Dboot-tty=/dev/console"
3014 "-Ddrm=true"
3015 "-Dsystemd-integration=false"
3016 ;; Disable GTK to dramatically reduce the closure
3017 ;; size from ~800 MiB to a little more than 200 MiB
3018 "-Dgtk=disabled")
3019 #:phases
3020 #~(modify-phases %standard-phases
3021 (add-after 'unpack 'fix-install
3022 (lambda _
3023 (substitute* "src/meson.build"
3024 (("install_emptydir" all) (string-append "# " all)))
3025 (substitute* "themes/meson.build"
3026 ;; XXX: meson barfs when installing (temporarily broken)
3027 ;; symlink to logo.
3028 (("subdir\\('spinfinity'\\)") ""))))
3029 (add-after 'unpack 'make-reproducible
3030 (lambda _
3031 (substitute* "src/main.c"
3032 (("__DATE__") "\"guix\"")))))))
3033 (inputs
3034 (list eudev
3035 glib
3036 libdrm
3037 libevdev
3038 libpng
3039 libxkbcommon
3040 pango
3041 xkeyboard-config))
3042 (native-inputs
3043 (list gettext-minimal
3044 pkg-config
3045 libxslt
3046 docbook-xsl
3047 docbook-xml))
3048 (synopsis "Graphical boot animation (splash) and logger")
3049 (home-page "https://www.freedesktop.org/wiki/Software/Plymouth/")
3050 (description
3051 "Plymouth is an application that runs very early in the boot process and
3052that provides a graphical boot animation while the boot process happens in the
3053background. You are not supposed to install this on your own, it is only
3054useful with system integration.")
3055 (license license:gpl2+)))
3056
3057(define-public libindicator
3058 (package
3059 (name "libindicator")
3060 (version "12.10.1")
3061 (source
3062 (origin
3063 (method url-fetch)
3064 (uri (string-append
3065 "https://launchpad.net/libindicator/"
3066 (version-major+minor version) "/" version
3067 "/+download/libindicator-" version ".tar.gz"))
3068 (sha256
3069 (base32
3070 "0zs4z7l9b57jldwz0ban77f3c2zq43ambd0dssf5qg9i216f9lmj"))))
3071 (build-system gnu-build-system)
3072 (native-inputs
3073 (list dbus-test-runner
3074 (list glib "bin")
3075 pkg-config
3076 xorg-server-for-tests))
3077 (inputs
3078 (list gtk+ glib))
3079 (arguments
3080 `(#:make-flags '("CFLAGS=-Wno-error")
3081 #:phases
3082 (modify-phases %standard-phases
3083 (add-before 'configure 'fix-missing-space-for-libm
3084 (lambda* (#:key outputs #:allow-other-keys)
3085 (substitute* "configure"
3086 (("LIBM=\"-lm\"") "LIBM=\" -lm\""))
3087 #t))
3088 (add-before 'configure 'fix-test-paths
3089 (lambda* (#:key inputs #:allow-other-keys)
3090 (substitute* "tests/Makefile.in"
3091 (("/bin/sh") (which "sh"))
3092 (("#!/bin/bash") (string-append "#!" (which "bash")))
3093 (("/usr/share")
3094 (string-append (assoc-ref inputs "dbus-test-runner") "/share")))
3095 #t)))))
3096 (home-page "https://launchpad.net/libindicator")
3097 (synopsis "Ayatana indicators symbols and functions")
3098 (description "A set of symbols and convenience functions for Ayatana indicators.")
3099 (license license:gpl3)))
3100
3101(define-public libappindicator
3102 ;; Use the latest commit as the latest official release from 2012 uses
3103 ;; Python 2.
3104 (let ((revision "0")
3105 ;; Corresponds to the 12.10.1+20.10.20200706.1-0ubuntu1 tag.
3106 (bazaar-revision "298"))
3107 (package
3108 (name "libappindicator")
3109 (version (string-append "12.10.1-" revision "-" bazaar-revision))
3110 (source (origin
3111 (method bzr-fetch)
3112 (uri (bzr-reference
3113 (url "lp:libappindicator")
3114 (revision bazaar-revision)))
3115 (file-name (string-append name "-" version "-checkout"))
3116 (sha256
3117 (base32
3118 "0jkc1xdsa7r71vrr2l7wgkarvzvwrpwn0m8m4ipaqlzfa5d45n3a"))))
3119 (build-system gnu-build-system)
3120 (native-inputs
3121 (list autoconf
3122 automake
3123 at-spi2-core
3124 dbus-test-runner
3125 `(,glib "bin")
3126 gnome-common
3127 gobject-introspection
3128 gtk-doc/stable
3129 libtool
3130 pkg-config
3131 vala
3132 which
3133 xorg-server-for-tests))
3134 (inputs
3135 (list dbus-glib))
3136 (propagated-inputs
3137 (list gtk+ libdbusmenu))
3138 (arguments
3139 `(#:parallel-build? #f ; race condition for application-service-marshal.h
3140 #:configure-flags '("--with-gtk=3")
3141 #:make-flags '("CFLAGS=-Wno-error")
3142 #:tests? #f ; One test does not pass (it succeeds when it should fail).
3143 #:phases
3144 (modify-phases %standard-phases
3145 (add-before 'configure 'fix-paths
3146 (lambda* (#:key native-inputs inputs #:allow-other-keys)
3147 (substitute* "tests/Makefile.in"
3148 (("/bin/sh") (which "sh"))
3149 (("/bin/bash") (which "bash"))
3150 (("/usr/(share/dbus-test-runner/session.conf)" _ tail)
3151 (search-input-file (or native-inputs inputs) tail))))))))
3152 (home-page "https://launchpad.net/libappindicator")
3153 (synopsis "Allow applications to export a menu into the Unity menu bar")
3154 (description "A library to allow applications to export a menu, originally
3155into the Unity menu bar. Based on KSNI, it also works in KDE and will
3156fallback to generic Systray support if none of those are available.")
3157 (license license:lgpl2.1+))))
3158
3159(define-public snixembed
3160 (package
3161 (name "snixembed")
3162 (version "0.3.3")
3163 (source (origin
3164 (method git-fetch)
3165 (uri (git-reference
3166 (url "https://git.sr.ht/~steef/snixembed/")
3167 (commit version)))
3168 (file-name (git-file-name name version))
3169 (sha256
3170 (base32
3171 "14fkgxww4qbsxyqj9h3yqpdqsdz9r6015c9graas50r5b5ggd3bj"))
3172 (modules '((guix build utils)))))
3173 (build-system gnu-build-system)
3174 (arguments
3175 (list #:tests? #f ;no tests
3176 #:make-flags #~(list "CC=gcc"
3177 (string-append "PREFIX="
3178 #$output))
3179 #:phases #~(modify-phases %standard-phases
3180 (delete 'configure)))) ;no configure
3181 (inputs (list gtk+ libdbusmenu))
3182 (native-inputs (list pkg-config vala))
3183 (synopsis "Proxy StatusNotifierItems as XEmbedded systemtray-spec icons")
3184 (home-page "https://git.sr.ht/~steef/snixembed")
3185 (description
3186 "Snixembed is a program to proxy StatusNotifierItems as
3187XEmbedded systemtray-spec icons. This allows programs that only support the
3188newer StatusNotifierItem to have the older XEmbedded systemtray support.
3189While snixembed works fine with most setups, some bars and DEs provide their
3190own optional SNI support, which should be preferred when available.
3191
3192Currently supported:
3193@itemize
3194@item icons (by pixmap and by freedesktop name)
3195@item activation on left mouse button
3196@item context menu on right mouse button (Menu dbusmenu or ContextMenu)
3197@item tooltips (on hover, all markup except hyperlinks)
3198@item limited AppIndicator support as a fallback
3199@end itemize")
3200 (license license:isc)))
3201
3202(define-public flatpak-xdg-utils
3203 (package
3204 (name "flatpak-xdg-utils")
3205 (version "1.0.5")
3206 (source (origin
3207 (method git-fetch)
3208 (uri (git-reference
3209 (url "https://github.com/flatpak/flatpak-xdg-utils")
3210 (commit version)))
3211 (file-name (git-file-name name version))
3212 (sha256
3213 (base32
3214 "1q8wsc46fcjm737hz10jvgci5wl9sz8hj9aix2y2zdj11bqib9af"))))
3215 (build-system meson-build-system)
3216 (arguments
3217 (list #:phases #~(modify-phases %standard-phases
3218 (replace 'check
3219 (lambda* (#:key tests? #:allow-other-keys)
3220 (when tests?
3221 (invoke "dbus-run-session" "--" "meson" "test"
3222 "--print-errorlogs")))))))
3223 (inputs (list glib))
3224 (native-inputs (list dbus pkg-config))
3225 (synopsis
3226 "Simple portal-based commandline tools for use inside sandboxes")
3227 (description
3228 "This package contains a number of commandline utilities for use inside
3229Flatpak sandboxes and other containers, like @command{guix shell --container}.
3230They work by talking to portals. Currently, there is flatpak-spawn for
3231running commands in sandboxes as well as xdg-open and xdg-email, which are
3232compatible with the well-known scripts of the same name.")
3233 (home-page "https://github.com/flatpak/flatpak-xdg-utils")
3234 (license (list license:lgpl2.0+ license:lgpl2.1+))))
3235
3236(define-public libportal
3237 (package
3238 (name "libportal")
3239 (version "0.9.1")
3240 (source (origin
3241 (method git-fetch)
3242 (uri (git-reference
3243 (url "https://github.com/flatpak/libportal")
3244 (commit version)))
3245 (file-name (git-file-name name version))
3246 (sha256
3247 (base32
3248 "1rbqkmvvfig98ig8gsf93waiizrminj7gywxbza15hzx3an3hwh9"))
3249 (patches (search-patches "libportal-qt-6.9.patch"))))
3250 (build-system meson-build-system)
3251 (arguments
3252 (list
3253 #:configure-flags
3254 #~(list "-Ddocs=false") ; requires unpackaged gi-docgen
3255 #:phases
3256 #~(modify-phases %standard-phases
3257 (add-before 'check 'set-qt-environment-variables
3258 (lambda* (#:key inputs #:allow-other-keys)
3259 ;; Required for tests
3260 (setenv "QT_QPA_PLATFORM" "offscreen"))))))
3261 (native-inputs
3262 (list pkg-config
3263 docbook-xsl
3264 docbook-xml
3265 `(,glib "bin")
3266 gobject-introspection
3267 libxml2
3268 vala))
3269 (inputs
3270 (list gtk
3271 gtk+
3272 qtbase))
3273 (propagated-inputs
3274 (list glib))
3275 (home-page "https://github.com/flatpak/libportal")
3276 (synopsis "Flatpak portal library")
3277 (description
3278 "libportal provides GIO-style async APIs for most Flatpak portals.")
3279 (license license:lgpl2.1+)))
3280
3281(define-public xdg-desktop-portal
3282 (package
3283 (name "xdg-desktop-portal")
3284 (version "1.22.1")
3285 (source
3286 (origin
3287 (method url-fetch)
3288 (uri (string-append
3289 "https://github.com/flatpak/xdg-desktop-portal/releases/download/"
3290 version "/xdg-desktop-portal-" version ".tar.xz"))
3291 (sha256
3292 (base32
3293 "1lskawsvw60ja1fllh5cpikx5i9xy7k9fx0q367imzv57pdrv1yl"))))
3294 (build-system meson-build-system)
3295 (arguments
3296 (list
3297 #:configure-flags #~(list "-Dsystemd=disabled")
3298 #:phases
3299 #~(modify-phases %standard-phases
3300 (add-after 'unpack 'patch-libumockdev-preload.so-file-name
3301 (lambda* (#:key native-inputs inputs #:allow-other-keys)
3302 (substitute* "tests/conftest.py"
3303 (("libumockdev-preload.so")
3304 (search-input-file (or native-inputs inputs)
3305 "lib/libumockdev-preload.so")))))
3306 (add-after 'unpack 'set-home-directory
3307 (lambda _ (setenv "HOME" "/tmp")))
3308 (add-before 'check 'prepare-for-tests
3309 (lambda _
3310 ;; These environment variables must be set when running the
3311 ;; tests in an unprivileged container. It avoids using
3312 ;; bubblewrap to validate icon and sound files, which would fail
3313 ;; in such an environment.
3314 (setenv "XDP_VALIDATE_ICON_INSECURE" "1")
3315 (setenv "XDP_VALIDATE_SOUND_INSECURE" "1"))))))
3316 (native-inputs
3317 (list gettext-minimal
3318 `(,glib "bin")
3319 gst-plugins-good ;for wavparse plugin
3320 (librsvg-for-system) ;SVG loader needed for one test
3321 pkg-config
3322 python
3323 python-dbusmock
3324 python-pytest
3325 python-pytest-xdist
3326 umockdev))
3327 (inputs
3328 (list bubblewrap
3329 dbus
3330 flatpak
3331 fontconfig
3332 fuse
3333 gdk-pixbuf
3334 geoclue
3335 glib
3336 gst-plugins-base
3337 json-glib
3338 libportal
3339 pipewire
3340 umockdev))
3341 (native-search-paths (list $XDG_DATA_DIRS))
3342 (home-page "https://github.com/flatpak/xdg-desktop-portal")
3343 (synopsis "Desktop integration portal for sandboxed apps")
3344 (description
3345 "xdg-desktop-portal is a @dfn{portal front-end service} for Flatpak and
3346possibly other desktop containment frameworks. It works by exposing a series
3347of D-Bus interfaces known as portals under a well-known
3348name (@code{org.freedesktop.portal.Desktop}) and object
3349path (@code{/org/freedesktop/portal/desktop}).
3350
3351The portal interfaces include APIs for file access, opening URIs, printing
3352and others.")
3353 (license license:lgpl2.1+)))
3354
3355;; Deprecation added on 2026-03-01.
3356(define-deprecated-package xdg-desktop-portal-next
3357 xdg-desktop-portal)
3358
3359(define-public xdg-desktop-portal-gtk
3360 (package
3361 (name "xdg-desktop-portal-gtk")
3362 (version "1.15.3")
3363 (source (origin
3364 (method url-fetch)
3365 (uri (string-append
3366 "https://github.com/flatpak/xdg-desktop-portal-gtk/releases/download/"
3367 version "/xdg-desktop-portal-gtk-" version ".tar.xz"))
3368 (sha256
3369 (base32
3370 "0drvlanj4pydcmq1fhk8nbj5mb2zpf2pxcqxd4g61a0r4hyp98s7"))))
3371 (build-system meson-build-system)
3372 (arguments (list #:glib-or-gtk? #t))
3373 (native-inputs (list gettext-minimal `(,glib "bin") pkg-config))
3374 (inputs (list glib gtk fontconfig gnome-desktop gsettings-desktop-schemas))
3375 (propagated-inputs (list xdg-desktop-portal))
3376 (home-page "https://github.com/flatpak/xdg-desktop-portal-gtk")
3377 (synopsis "GTK implementation of xdg-desktop-portal")
3378 (description
3379 "This package provides a backend implementation for xdg-desktop-portal
3380which uses GTK+ and various pieces of GNOME infrastructure, such as the
3381@code{org.gnome.Shell.Screenshot} or @code{org.gnome.SessionManager} D-Bus
3382interfaces.")
3383 (license license:lgpl2.1+)))
3384
3385(define-public xdg-desktop-portal-hyprland
3386 (package
3387 (name "xdg-desktop-portal-hyprland")
3388 (version "1.3.12")
3389 (source
3390 (origin
3391 (method git-fetch)
3392 (uri (git-reference
3393 (url "https://github.com/hyprwm/xdg-desktop-portal-hyprland")
3394 (commit (string-append "v" version))))
3395 (file-name (git-file-name name version))
3396 (sha256
3397 (base32 "0w0c7i3b5x0n91nnwg8xm0dl3dq3dl1bnvgnsxla1l648dgz1f87"))))
3398 (build-system qt-build-system)
3399 (arguments
3400 (list #:tests? #f ;No tests.
3401 #:qtbase qtbase
3402 #:phases
3403 #~(modify-phases %standard-phases
3404 (add-after 'unpack 'fix-path
3405 (lambda* (#:key inputs #:allow-other-keys)
3406 (substitute* (find-files "." "\\.cp?*$")
3407 (("/bin/sh") "sh")
3408 (("\\<(sh|grim|hyprctl|slurp)\\>" _ cmd)
3409 (search-input-file inputs (string-append "bin/" cmd))))
3410 (substitute* "src/shared/ScreencopyShared.cpp"
3411 (("\\<(hyprland-share-picker)\\>" _ cmd)
3412 (string-append #$output "/bin/" cmd))))))))
3413 (native-inputs
3414 (list gcc-15 hyprwayland-scanner pkg-config))
3415 (inputs
3416 (list bash-minimal
3417 grim
3418 hyprland
3419 hyprland-protocols
3420 hyprlang
3421 hyprutils
3422 mesa
3423 pipewire
3424 qtwayland
3425 sdbus-c++
3426 slurp
3427 wayland
3428 wayland-protocols))
3429 (home-page "https://github.com/hyprwm/xdg-desktop-portal-hyprland")
3430 (synopsis "Hyprland implementation of @code{xdg-desktop-portal} backend")
3431 (description
3432 "This package provides an @code{xdg-desktop-portal} backend for Hyprland.")
3433 (license license:bsd-3)))
3434
3435(define-public xdg-desktop-portal-lxqt
3436 (package
3437 (name "xdg-desktop-portal-lxqt")
3438 (version "1.4.0")
3439 (source
3440 (origin
3441 (method git-fetch)
3442 (uri (git-reference
3443 (url "https://github.com/lxqt/xdg-desktop-portal-lxqt")
3444 (commit version)))
3445 (file-name (git-file-name name version))
3446 (sha256
3447 (base32 "09fphfn1z0q92nqfcx11kx5nvm3vc1i1s1fxlm2lrmssfh34xnhs"))))
3448 (build-system cmake-build-system)
3449 (inputs (list qtbase kwindowsystem libfm-qt))
3450 (propagated-inputs (list xdg-desktop-portal))
3451 (arguments (list #:tests? #f)) ;No tests.
3452 (home-page "https://github.com/lxqt/xdg-desktop-portal-lxqt")
3453 (synopsis "LXQt implementations of XDG Desktop Portal interfaces")
3454 (description "This package implments the following XDG Desktop Portal
3455interfaces using LXQt's @code{libpcmanfm-qt}:
3456@itemize
3457@item Access
3458@item FileChooser
3459@end itemize")
3460 (license license:lgpl2.1+)))
3461
3462(define-public xdg-desktop-portal-wlr
3463 (package
3464 (name "xdg-desktop-portal-wlr")
3465 (version "0.8.4")
3466 (source
3467 (origin
3468 (method git-fetch)
3469 (uri (git-reference
3470 (url "https://github.com/emersion/xdg-desktop-portal-wlr")
3471 (commit (string-append "v" version))))
3472 (file-name (git-file-name name version))
3473 (sha256
3474 (base32 "1yrzpph8f3nf01kkcl5k1zcl7wcjjyvq5qyqfnyc25bp7n9n1s7h"))
3475 (patches (search-patches "xdg-desktop-portal-wlr-harcoded-length.patch"))))
3476 (build-system meson-build-system)
3477 (arguments
3478 (list
3479 #:configure-flags
3480 #~(list "-Dsystemd=disabled"
3481 "-Dsd-bus-provider=libelogind")
3482 #:phases
3483 #~(modify-phases %standard-phases
3484 (add-after 'unpack 'hardcode-binaries
3485 (lambda* (#:key inputs #:allow-other-keys)
3486 (let ((sh (search-input-file inputs "/bin/sh"))
3487 (grim (search-input-file inputs "/bin/grim"))
3488 (slurp (search-input-file inputs "/bin/slurp")))
3489 (substitute* '("src/screencast/chooser.c"
3490 "src/screenshot/screenshot.c")
3491 (("grim") grim)
3492 (("slurp") slurp)
3493 (("/bin/sh") sh))
3494 (substitute* "src/screencast/screencast.c"
3495 (("execvp\\(\"sh")
3496 (format #f "execvp(\"~a" sh))))))
3497 (add-after 'install 'install-documentation
3498 (lambda _
3499 (install-file "../source/README.md"
3500 (string-append #$output "/share/doc/"
3501 #$name)))))))
3502 (native-inputs (list cmake-minimal pkg-config scdoc))
3503 (inputs (list bash-minimal
3504 elogind
3505 grim
3506 iniparser
3507 libinih
3508 mesa
3509 pipewire
3510 slurp
3511 wayland
3512 wayland-protocols))
3513 (home-page "https://github.com/emersion/xdg-desktop-portal-wlr")
3514 (synopsis "@code{xdg-desktop-portal} backend for wlroots")
3515 (description
3516 "This package provides @code{xdg-desktop-portal-wlr}. This project
3517seeks to add support for the screenshot, screencast, and possibly
3518remote-desktop @code{xdg-desktop-portal} interfaces for wlroots based
3519compositors.")
3520 (license license:expat)))
3521
3522(define-public xdg-desktop-portal-termfilechooser
3523 (package
3524 (name "xdg-desktop-portal-termfilechooser")
3525 (version "1.3.0")
3526 (source
3527 (origin
3528 (method git-fetch)
3529 (uri (git-reference
3530 (url "https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser")
3531 (commit (string-append "v" version))))
3532 (file-name (git-file-name name version))
3533 (sha256
3534 (base32 "1wvmwl678fr5pxz7x248pm5v4jd3bycz8nqa2q87akys5b9d1xpd"))))
3535 (build-system meson-build-system)
3536 (arguments
3537 (list #:phases
3538 #~(modify-phases %standard-phases
3539 (add-after 'install 'fix-paths
3540 (lambda* (#:key inputs #:allow-other-keys)
3541 (let ((sed (search-input-file inputs "/bin/sed")))
3542 (substitute* (find-files #$output "-wrapper\\.sh")
3543 ((" sed") (string-append " " sed)))))))))
3544 (native-inputs
3545 (list cmake-minimal
3546 pkg-config
3547 scdoc))
3548 (inputs
3549 (list basu
3550 libinih
3551 sed))
3552 (home-page "https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser")
3553 (synopsis "@code{xdg-desktop-portal} backend for choosing files with your
3554favorite terminal file chooser")
3555 (description
3556 "This package provides a backend implementation for xdg-desktop-portal that
3557allows using your preferred terminal file manager as file chooser in other
3558applications.")
3559 (license license:expat)))
3560
3561(define-public poweralertd
3562 (package
3563 (name "poweralertd")
3564 (version "0.3.0")
3565 (source
3566 (origin
3567 (method git-fetch)
3568 (uri (git-reference
3569 (url "https://git.sr.ht/~kennylevinsen/poweralertd")
3570 (commit version)))
3571 (file-name (git-file-name name version))
3572 (sha256
3573 (base32 "1k8bb1znxw63a0zzq2i1nzr3a6divr3z0rx0hdzc9fymzn396fjv"))))
3574 (build-system meson-build-system)
3575 (arguments
3576 '(#:configure-flags '("-Dman-pages=enabled")))
3577 (native-inputs
3578 (list scdoc pkg-config bash-minimal))
3579 (inputs
3580 (list elogind))
3581 (home-page "https://sr.ht/~kennylevinsen/poweralertd")
3582 (synopsis "Power alert daemon")
3583 (description "poweralertd is a daemon that watches for UPower events and
3584notifies the user using any notification daemon implementing
3585@code{org.freedesktop.Notifications}.")
3586 (license license:gpl3+)))
3587
3588(define-public waypipe
3589 (package
3590 (name "waypipe")
3591 (version "0.11.0")
3592 (source
3593 (origin
3594 (method git-fetch)
3595 (uri (git-reference
3596 (url "https://gitlab.freedesktop.org/mstoeckl/waypipe")
3597 (commit (string-append "v" version))))
3598 (file-name (git-file-name name version))
3599 (sha256
3600 (base32 "1vszh1mk71jvyicsnac944jdmldrsaym9n70zjzbvjbliz4pzdsd"))
3601 (snippet
3602 #~(begin (use-modules (guix build utils))
3603 ;; Fix the cargo flags:
3604 (substitute* '("compile_wrapper.sh"
3605 "meson.build")
3606 (("--frozen") "--offline"))))))
3607 (build-system meson-build-system)
3608 (native-inputs
3609 (list pkg-config
3610 scdoc
3611 rust
3612 (list rust "cargo")
3613 rust-bindgen-cli
3614 shaderc
3615 clang-13 ; bindgen does not work without it
3616 vulkan-headers
3617 ;; For tests
3618 python))
3619 (inputs
3620 (cons* ffmpeg
3621 lz4
3622 libdrm
3623 libva
3624 mesa
3625 vulkan-loader
3626 (list zstd "lib")
3627 (cargo-inputs 'waypipe)))
3628 (arguments
3629 (list
3630 #:imported-modules
3631 (append %cargo-build-system-modules
3632 %meson-build-system-modules)
3633 #:modules
3634 '(((guix build cargo-build-system) #:prefix cargo:)
3635 (guix build meson-build-system)
3636 (guix build utils))
3637 #:phases
3638 #~(modify-phases %standard-phases
3639 (add-after 'unpack 'prepare-cargo-build-system
3640 (lambda args
3641 (for-each
3642 (lambda (phase)
3643 (apply (assoc-ref cargo:%standard-phases phase)
3644 #:cargo-target #$(cargo-triplet) args))
3645 '(unpack-rust-crates
3646 configure
3647 check-for-pregenerated-files
3648 patch-cargo-checksums))))
3649 (add-after 'unpack 'patch-vulkan
3650 (lambda* (#:key inputs #:allow-other-keys)
3651 (substitute* "src/dmabuf.rs"
3652 (("Entry::load\\(\\)")
3653 (string-append "Entry::load_from(\""
3654 (search-input-file inputs "lib/libvulkan.so")
3655 "\")"))))))
3656 #:configure-flags
3657 #~(list "-Dwith_lz4=enabled"
3658 "-Dwith_vaapi=enabled"
3659 "-Dwith_dmabuf=enabled"
3660 "-Dwith_video=enabled")))
3661 (home-page "https://gitlab.freedesktop.org/mstoeckl/waypipe")
3662 (synopsis "Proxy for Wayland protocol applications")
3663 (description
3664 "Waypipe is a proxy for Wayland clients, with the aim of
3665supporting behavior like @samp{ssh -X}.")
3666 (license license:expat)))
3667
3668(define-public libdecor
3669 (package
3670 (name "libdecor")
3671 (version "0.2.2")
3672 (source
3673 (origin (method git-fetch)
3674 (uri (git-reference
3675 (url "https://gitlab.freedesktop.org/libdecor/libdecor")
3676 (commit version)))
3677 (file-name (git-file-name name version))
3678 (sha256
3679 (base32
3680 "05rxchwzhnkm91kcr30mavizkp25wgjlhb6lcraa456pw7vgb04q"))))
3681 (build-system meson-build-system)
3682 (native-inputs (list cmake-minimal pkg-config))
3683 (inputs (list cairo
3684 dbus
3685 egl-wayland
3686 gtk+
3687 libglvnd
3688 libxkbcommon
3689 pango
3690 wayland
3691 wayland-protocols))
3692 (home-page "https://gitlab.freedesktop.org/libdecor/libdecor")
3693 (synopsis "Client-side decorations library for Wayland clients")
3694 (description "libdecor is a library that can help Wayland clients draw
3695window decorations for them. It aims to provide multiple backends that
3696implements the decoration drawing.")
3697 (license license:expat)))
3698
3699(define-public iio-sensor-proxy
3700 (package
3701 (name "iio-sensor-proxy")
3702 (version "3.8")
3703 (source
3704 (origin
3705 (method git-fetch)
3706 (uri (git-reference
3707 (url "https://gitlab.freedesktop.org/hadess/iio-sensor-proxy")
3708 (commit "3.8")))
3709 (file-name (git-file-name name version))
3710 (sha256
3711 (base32 "0rk0si00g75068cqgwd8qfq935wymsjczvpxg3wmlspq13h9amk5"))))
3712 (build-system meson-build-system)
3713 (arguments
3714 (list
3715 #:configure-flags
3716 #~(list "-Dsystemdsystemunitdir=false"
3717 (string-append "-Dudevrulesdir="
3718 #$output "/lib/udev/rules.d")
3719 "-Dtests=true"
3720 "-Dgtk-tests=true")
3721 #:glib-or-gtk? #t
3722 #:phases
3723 #~(modify-phases %standard-phases
3724 (add-after 'unpack 'patch-polkit-dir
3725 (lambda _
3726 (substitute* "meson.build"
3727 (("polkit_gobject_dep\\..*")
3728 (string-append "'"
3729 #$output "/share/polkit-1/actions'"))))))))
3730 (inputs (list glib libgudev polkit))
3731 (native-inputs
3732 (list dbus
3733 (list glib "bin")
3734 gobject-introspection
3735 gtk+
3736 pkg-config
3737 python
3738 python-dbusmock
3739 python-psutil
3740 umockdev))
3741 (home-page "https://gitlab.freedesktop.org/hadess/iio-sensor-proxy")
3742 (synopsis "IIO sensors to D-Bus proxy")
3743 (description
3744 "@code{iio-sensor-proxy} is a daemon which passes IIO sensor data to D-Bus.")
3745 (license license:gpl3+)))
3746
3747(define-public rtkit
3748 (package
3749 (name "rtkit")
3750 (version "0.14")
3751 (source
3752 (origin
3753 (method git-fetch)
3754 (uri (git-reference
3755 (url "https://gitlab.freedesktop.org/pipewire/rtkit.git")
3756 (commit (string-append "v" version))))
3757 (file-name (git-file-name name version))
3758 (sha256
3759 (base32 "07swd78aglawfddc1zjx5v8scm85q1qpmahjskh8hn6lfr47dpnb"))))
3760 (build-system meson-build-system)
3761 (inputs (list dbus libcap polkit xxd))
3762 (native-inputs (list pkg-config))
3763 (arguments
3764 (list
3765 #:configure-flags
3766 #~(list (string-append "-Ddbus_interfacedir="
3767 #$output "/share/dbus-1/interfaces")
3768 (string-append "-Ddbus_systemservicedir="
3769 #$output "/share/dbus-1/system-services")
3770 (string-append "-Dpolkit_actiondir="
3771 #$output "/share/polkit-1/actions"))))
3772 (home-page "https://gitlab.freedesktop.org/pipewire/rtkit")
3773 (synopsis "Realtime Policy and Watchdog Daemon")
3774 (description
3775 "RealtimeKit is a D-Bus system service that changes the scheduling policy
3776of user processes and threads to SCHED_RR (i.e. realtime scheduling mode) on
3777request. It is intended to be used as a secure mechanism to allow real-time
3778scheduling to be used by normal user processes.")
3779 (license license:gpl3)))