projects/guix·blob java-team · refs

14173 lines · 531.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2015 Andreas Enge <[email protected]>
3;;; Copyright © 2014-2023, 2025 Ludovic Courtès <[email protected]>
4;;; Copyright © 2014 Ian Denhardt <[email protected]>
5;;; Copyright © 2014, 2016, 2020 Eric Bavier <[email protected]>
6;;; Copyright © 2014, 2015 Federico Beffa <[email protected]>
7;;; Copyright © 2015, 2016 Sou Bunnbu <[email protected]>
8;;; Copyright © 2015 Mathieu Lirzin <[email protected]>
9;;; Copyright © 2015, 2017 Andy Wingo <[email protected]>
10;;; Copyright © 2015 David Hashe <[email protected]>
11;;; Copyright © 2015-2020, 2023, 2024 Ricardo Wurmus <[email protected]>
12;;; Copyright © 2015, 2016, 2017, 2018, 2021 Mark H Weaver <[email protected]>
13;;; Copyright © 2015 David Thompson <[email protected]>
14;;; Copyright © 2015-2026 Efraim Flashner <[email protected]>
15;;; Copyright © 2016, 2017, 2018 Rene Saavedra <[email protected]>
16;;; Copyright © 2016 Jochem Raat <[email protected]>
17;;; Copyright © 2016, 2017, 2019 Kei Kebreau <[email protected]>
18;;; Copyright © 2016, 2024, 2025 Janneke Nieuwenhuizen <[email protected]>
19;;; Copyright © 2016 Roel Janssen <[email protected]>
20;;; Copyright © 2016, 2018 Leo Famulari <[email protected]>
21;;; Copyright © 2016 Alex Griffin <[email protected]>
22;;; Copyright © 2016, 2017 Nikita <[email protected]>
23;;; Copyright © 2016 David Craven <[email protected]>
24;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]>
25;;; Copyright © 2017 Thomas Danckaert <[email protected]>
26;;; Copyright © 2017 Hartmut Goebel <[email protected]>
27;;; Copyright © 2017, 2018 nee <[email protected]>
28;;; Copyright © 2017 Chris Marusich <[email protected]>
29;;; Copyright © 2017 Mohammed Sadiq <[email protected]>
30;;; Copyright © 2017, 2020, 2021 Brendan Tildesley <[email protected]>
31;;; Copyright © 2017, 2018 Rutger Helling <[email protected]>
32;;; Copyright © 2018 Jovany Leandro G.C <[email protected]>
33;;; Copyright © 2018, 2023 Vasile Dumitrascu <[email protected]>
34;;; Copyright © 2018 Björn Höfling <[email protected]>
35;;; Copyright © 2018, 2019 Timothy Sample <[email protected]>
36;;; Copyright © 2019 Danny Milosavljevic <[email protected]>
37;;; Copyright © 2019, 2020, 2022 Marius Bakke <[email protected]>
38;;; Copyright © 2019 Florian Pelz <[email protected]>
39;;; Copyright © 2019, 2024, 2025 Giacomo Leidi <[email protected]>
40;;; Copyright © 2019 Jelle Licht <[email protected]>
41;;; Copyright © 2019 Jonathan Frederickson <[email protected]>
42;;; Copyright © 2019-2026 Maxim Cournoyer <[email protected]>
43;;; Copyright © 2019, 2020 Martin Becze <[email protected]>
44;;; Copyright © 2019 David Wilson <[email protected]>
45;;; Copyright © 2019, 2020 Raghav Gururajan <[email protected]>
46;;; Copyright © 2019, 2020, 2024 Jonathan Brielmaier <[email protected]>
47;;; Copyright © 2019-2022 Liliana Marie Prikler <[email protected]>
48;;; Copyright © 2020 Oleg Pykhalov <[email protected]>
49;;; Copyright © 2020 Pierre Neidhardt <[email protected]>
50;;; Copyright © 2020 raingloom <[email protected]>
51;;; Copyright © 2020, 2021, 2025 Nicolas Goaziou <[email protected]>
52;;; Copyright © 2020 Naga Malleswari <[email protected]>
53;;; Copyright © 2020 Ryan Prior <[email protected]>
54;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <[email protected]>
55;;; Copyright © 2020, 2021 Brice Waegeneire <[email protected]>
56;;; Copyright © 2020 Arun Isaac <[email protected]>
57;;; Copyright © 2020, 2022 Michael Rohleder <[email protected]>
58;;; Copyright © 2020 Tim Gesthuizen <[email protected]>
59;;; Copyright © 2020, 2021 Andy Tai <[email protected]>
60;;; Copyright © 2020, 2021 Sébastien Lerique <[email protected]>
61;;; Copyright © 2021 Trevor Hass <[email protected]>
62;;; Copyright © 2021 Solene Rapenne <[email protected]>
63;;; Copyright © 2021, 2022 Guillaume Le Vaillant <[email protected]>
64;;; Copyright © 2021 Felix Gruber <[email protected]>
65;;; Copyright © 2021, 2022 Maxime Devos <[email protected]>
66;;; Copyright © 2021 Josselin Poiret <[email protected]>
67;;; Copyright © 2021 Mathieu Othacehe <[email protected]>
68;;; Copyright © 2022 Daniel Meißner <[email protected]>
69;;; Copyright © 2022 Pierre Langlois <[email protected]>
70;;; Copyright © 2022 John Kehayias <[email protected]>
71;;; Copyright © 2022 Denis 'GNUtoo' Carikli <[email protected]>
72;;; Copyright © 2022 Leo Nikkilä <[email protected]>
73;;; Copyright © 2022 Rene Saavedra <[email protected]>
74;;; Copyright © 2022 Alexandros Theodotou <[email protected]>
75;;; Copyright © 2022 Arjan Adriaanse <[email protected]>
76;;; Copyright © 2023 Kaelyn Takata <[email protected]>
77;;; Copyright © 2023 Juliana Sims <[email protected]>
78;;; Copyright © 2023 Dominik Delgado Steuter <[email protected]>
79;;; Copyright © 2023, 2025 Zhu Zihao <[email protected]>
80;;; Copyright © 2024 Dariqq <[email protected]>
81;;; Copyright © 2024 James Smith <[email protected]>
82;;; Copyright © 2024 Justin Veilleux <[email protected]>
83;;; Copyright © 2025 Noé Lopez <[email protected]>
84;;; Copyright © 2025 Ashvith Shetty <[email protected]>
85;;; Copyright © 2025, 2026 Artyom V. Poptsov <[email protected]>
86;;; Copyright © 2025 Abra K. <[email protected]>
87;;; Copyright © 2025 Ben Hansen <[email protected]>
88;;; Copyright © 2026 Roman Riabenko <[email protected]>
89;;;
90;;; This file is part of GNU Guix.
91;;;
92;;; GNU Guix is free software; you can redistribute it and/or modify it
93;;; under the terms of the GNU General Public License as published by
94;;; the Free Software Foundation; either version 3 of the License, or (at
95;;; your option) any later version.
96;;;
97;;; GNU Guix is distributed in the hope that it will be useful, but
98;;; WITHOUT ANY WARRANTY; without even the implied warranty of
99;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
100;;; GNU General Public License for more details.
101;;;
102;;; You should have received a copy of the GNU General Public License
103;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
104
105(define-module (gnu packages gnome)
106 #:use-module (gnu packages)
107 #:use-module (gnu packages accessibility)
108 #:use-module (gnu packages admin)
109 #:use-module (gnu packages aidc)
110 #:use-module (gnu packages aspell)
111 #:use-module (gnu packages autotools)
112 #:use-module (gnu packages backup)
113 #:use-module (gnu packages base)
114 #:use-module (gnu packages bash)
115 #:use-module (gnu packages bison)
116 #:use-module (gnu packages boost)
117 #:use-module (gnu packages build-tools)
118 #:use-module (gnu packages calendar)
119 #:use-module (gnu packages cdrom)
120 #:use-module (gnu packages check)
121 #:use-module (gnu packages cmake)
122 #:use-module (gnu packages compression)
123 #:use-module (gnu packages c)
124 #:use-module (gnu packages cpp)
125 #:use-module (gnu packages crypto)
126 #:use-module (gnu packages cups)
127 #:use-module (gnu packages curl)
128 #:use-module (gnu packages cyrus-sasl)
129 #:use-module (gnu packages databases)
130 #:use-module (gnu packages dbm)
131 #:use-module (gnu packages djvu)
132 #:use-module (gnu packages dns)
133 #:use-module (gnu packages docbook)
134 #:use-module (gnu packages docker)
135 #:use-module (gnu packages documentation)
136 #:use-module (gnu packages elf)
137 #:use-module (gnu packages enchant)
138 #:use-module (gnu packages compiler-tools)
139 #:use-module (gnu packages fonts)
140 #:use-module (gnu packages file-systems)
141 #:use-module (gnu packages firmware)
142 #:use-module (gnu packages fontutils)
143 #:use-module (gnu packages freedesktop)
144 #:use-module (gnu packages game-development)
145 #:use-module (gnu packages gcc)
146 #:use-module (gnu packages gettext)
147 #:use-module (gnu packages ghostscript)
148 #:use-module (gnu packages gimp)
149 #:use-module (gnu packages gl)
150 #:use-module (gnu packages glib)
151 #:use-module (gnu packages gnupg)
152 #:use-module (gnu packages gnuzilla)
153 #:use-module (gnu packages geo)
154 #:use-module (gnu packages gperf)
155 #:use-module (gnu packages graphviz)
156 #:use-module (gnu packages groff)
157 #:use-module (gnu packages gstreamer)
158 #:use-module (gnu packages gtk)
159 #:use-module (gnu packages guile)
160 #:use-module (gnu packages guile-xyz)
161 #:use-module (gnu packages hardware)
162 #:use-module (gnu packages haskell-xyz)
163 #:use-module (gnu packages ibus)
164 #:use-module (gnu packages icu4c)
165 #:use-module (gnu packages image)
166 #:use-module (gnu packages imagemagick)
167 #:use-module (gnu packages inkscape)
168 #:use-module (gnu packages iso-codes)
169 #:use-module (gnu packages kerberos)
170 #:use-module (gnu packages language)
171 #:use-module (gnu packages libcanberra)
172 #:use-module (gnu packages libffi)
173 #:use-module (gnu packages libunistring)
174 #:use-module (gnu packages libunwind)
175 #:use-module (gnu packages libusb)
176 #:use-module (gnu packages linux)
177 #:use-module (gnu packages lirc)
178 #:use-module (gnu packages llvm)
179 #:use-module (gnu packages lsof)
180 #:use-module (gnu packages lua)
181 #:use-module (gnu packages mail)
182 #:use-module (gnu packages man)
183 #:use-module (gnu packages markup)
184 #:use-module (gnu packages messaging)
185 #:use-module (gnu packages mp3)
186 #:use-module (gnu packages multiprecision)
187 #:use-module (gnu packages music)
188 #:use-module (gnu packages ncurses)
189 #:use-module (gnu packages nettle)
190 #:use-module (gnu packages networking)
191 #:use-module (gnu packages node-xyz)
192 #:use-module (gnu packages nss)
193 #:use-module (gnu packages ocr)
194 #:use-module (gnu packages openldap)
195 #:use-module (gnu packages package-management)
196 #:use-module (gnu packages password-utils)
197 #:use-module (gnu packages pcre)
198 #:use-module (gnu packages pdf)
199 #:use-module (gnu packages perl)
200 #:use-module (gnu packages photo)
201 #:use-module (gnu packages pkg-config)
202 #:use-module (gnu packages polkit)
203 #:use-module (gnu packages popt)
204 #:use-module (gnu packages pretty-print)
205 #:use-module (gnu packages protobuf)
206 #:use-module (gnu packages pulseaudio)
207 #:use-module (gnu packages python)
208 #:use-module (gnu packages python-build)
209 #:use-module (gnu packages python-compression)
210 #:use-module (gnu packages python-crypto)
211 #:use-module (gnu packages python-web)
212 #:use-module (gnu packages python-xyz)
213 #:use-module (gnu packages rdesktop)
214 #:use-module (gnu packages rdf)
215 #:use-module (gnu packages readline)
216 #:use-module (gnu packages ruby-xyz)
217 #:use-module (gnu packages rust)
218 #:use-module (gnu packages rust-apps)
219 #:use-module (gnu packages samba)
220 #:use-module (gnu packages scanner)
221 #:use-module (gnu packages sdl)
222 #:use-module (gnu packages search)
223 #:use-module (gnu packages selinux)
224 #:use-module (gnu packages serialization)
225 #:use-module (gnu packages slang)
226 #:use-module (gnu packages speech)
227 #:use-module (gnu packages spice)
228 #:use-module (gnu packages sqlite)
229 #:use-module (gnu packages ssh)
230 #:use-module (gnu packages swig)
231 #:use-module (gnu packages telephony)
232 #:use-module (gnu packages tex)
233 #:use-module (gnu packages texinfo)
234 #:use-module (gnu packages text-editors)
235 #:use-module (gnu packages time)
236 #:use-module (gnu packages tls)
237 #:use-module (gnu packages valgrind)
238 #:use-module (gnu packages version-control)
239 #:use-module (gnu packages video)
240 #:use-module (gnu packages virtualization)
241 #:use-module (gnu packages vpn)
242 #:use-module (gnu packages web)
243 #:use-module (gnu packages webkit)
244 #:use-module (gnu packages window-management)
245 #:use-module (gnu packages xdisorg)
246 #:use-module (gnu packages xiph)
247 #:use-module (gnu packages xml)
248 #:use-module (gnu packages xorg)
249 #:use-module (gnu artwork)
250 #:use-module (guix build-system cargo)
251 #:use-module (guix build-system cmake)
252 #:use-module (guix build-system copy)
253 #:use-module (guix build-system glib-or-gtk)
254 #:use-module (guix build-system gnu)
255 #:use-module (guix build-system meson)
256 #:use-module (guix build-system pyproject)
257 #:use-module (guix build-system trivial)
258 #:use-module ((guix config) #:select (%storedir))
259 #:use-module (guix deprecation)
260 #:use-module (guix download)
261 #:use-module (guix git-download)
262 #:use-module ((guix licenses) #:prefix license:)
263 #:use-module (guix packages)
264 #:use-module (guix platform)
265 #:use-module (guix utils)
266 #:use-module (guix gexp)
267 #:use-module (ice-9 match)
268 #:use-module (srfi srfi-1))
269
270(define-public gupnp-igd
271 (package
272 (name "gupnp-igd")
273 (version "1.6.0")
274 (source
275 (origin
276 (method url-fetch)
277 (uri
278 (string-append "mirror://gnome/sources/" name "/"
279 (version-major+minor version) "/"
280 name "-" version ".tar.xz"))
281 (sha256
282 (base32 "0x0vfw8jzz7ih43qd5w7qx2gr56hnqra7wk895ni48mb761rg6a0"))))
283 (build-system meson-build-system)
284 (outputs '("out" "doc"))
285 (arguments
286 (list
287 #:glib-or-gtk? #t ; To wrap binaries and compile schemas
288 #:configure-flags #~(list "-Dgtk_doc=true")
289 #:phases
290 #~(modify-phases %standard-phases
291 (add-before 'check 'set-home
292 (lambda _
293 ;; A test using GIO expects ~/.config/glib-2.0/settings to be
294 ;; writable.
295 (setenv "HOME" (getcwd))))
296 (add-after 'install 'move-doc
297 (lambda* (#:key outputs #:allow-other-keys)
298 (mkdir-p (string-append #$output:doc "/share"))
299 (rename-file
300 (string-append #$output "/share/gtk-doc")
301 (string-append #$output:doc "/share/gtk-doc")))))))
302 (native-inputs
303 (list docbook-xml-4.1.2
304 docbook-xsl
305 `(,glib "bin")
306 gobject-introspection
307 gsettings-desktop-schemas
308 gtk-doc/stable
309 pkg-config))
310 (propagated-inputs
311 ;; These libraries are required by the .pc file.
312 (list glib
313 glib-networking
314 gupnp))
315 (synopsis "UPnP IGD for GNOME")
316 (description "GUPnP-IGD is a library to handle UPnP IGD port mapping.")
317 (home-page "https://gitlab.gnome.org/GNOME/gupnp-igd")
318 (license license:lgpl2.1+)))
319
320(define-public brasero
321 (package
322 (name "brasero")
323 (version "3.12.3")
324 (source (origin
325 (method url-fetch)
326 (uri (string-append "mirror://gnome/sources/brasero/"
327 (version-major+minor version) "/"
328 "brasero-" version ".tar.xz"))
329 (sha256
330 (base32
331 "05gabybkl7xfinwx97i4scp9hic0dlxj7gh03dyj0hd16fp9wx47"))
332 (patches
333 (search-patches "brasero-fix-gcc-14-build-failure.patch"))))
334 (build-system glib-or-gtk-build-system)
335 (arguments
336 `(#:configure-flags (list
337 (string-append "--with-girdir="
338 (assoc-ref %outputs "out")
339 "/share/gir-1.0")
340 (string-append "--with-typelibdir="
341 (assoc-ref %outputs "out")
342 "/lib/girepository-1.0"))
343 #:phases
344 (modify-phases %standard-phases
345 (add-before 'configure 'embed-growisofs-reference
346 (lambda* (#:key inputs #:allow-other-keys)
347 (let ((dvd+rw-tools (assoc-ref inputs "dvd+rw-tools")))
348 (substitute* "plugins/growisofs/burn-growisofs.c"
349 (("(\")(growisofs)" _ prefix command)
350 (string-append prefix dvd+rw-tools "/bin/" command)))))))))
351 (propagated-inputs
352 (list hicolor-icon-theme))
353 (native-inputs
354 (list intltool
355 itstool
356 `(,glib "bin") ; glib-compile-schemas, etc.
357 gobject-introspection
358 pkg-config))
359 (inputs
360 (list dvd+rw-tools
361 glib
362 gstreamer
363 gst-plugins-base
364 gtk+
365 libcanberra
366 libice
367 libnotify
368 libsm
369 libxml2
370 totem-pl-parser))
371 (home-page "https://wiki.gnome.org/Apps/Brasero")
372 (synopsis "CD/DVD burning tool for Gnome")
373 (description "Brasero is an application to burn CD/DVD for the Gnome
374Desktop. It is designed to be as simple as possible and has some unique
375features to enable users to create their discs easily and quickly.")
376 (license license:gpl2+)))
377
378;;; Minimal variant, used to break a cycle with Inkscape.
379(define-public libcloudproviders-minimal
380 (package
381 (name "libcloudproviders-minimal")
382 (version "0.3.6")
383 (source
384 (origin
385 (method url-fetch)
386 (uri
387 (string-append "mirror://gnome/sources/libcloudproviders/"
388 (version-major+minor version)
389 "/libcloudproviders-" version ".tar.xz"))
390 (sha256
391 (base32 "1dvlbsh5pfrnj745dlb1w0m4s1gy063y8h54qp2z9pjg785i2x9v"))))
392 (build-system meson-build-system)
393 (arguments
394 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
395 #:configure-flags (list "-Dintrospection=false"
396 "-Denable-gtk-doc=false"
397 "-Dvapigen=false")))
398 (native-inputs
399 (list `(,glib "bin") pkg-config vala))
400 (inputs
401 (list glib glib-networking))
402 (synopsis "Cloudproviders Integration API")
403 (description "Libcloudproviders is a DBus API that allows cloud storage sync
404clients to expose their services. Clients such as file managers and desktop
405environments can then provide integrated access to the cloud providers
406services.")
407 (home-page "https://csorianognome.wordpress.com/2015/07/07/cloud-providers/")
408 (license license:lgpl3+)
409 (properties '((upstream-name . "libcloudproviders")))))
410
411(define-public libcloudproviders
412 (package/inherit libcloudproviders-minimal
413 (name "libcloudproviders")
414 (outputs (cons "doc" (package-outputs libcloudproviders-minimal)))
415 (arguments
416 (substitute-keyword-arguments arguments
417 ((#:configure-flags _)
418 '(list "-Denable-gtk-doc=true")) ;false by default
419 ((#:phases phases '%standard-phases)
420 `(modify-phases %standard-phases
421 (add-after 'install 'move-doc
422 (lambda* (#:key outputs #:allow-other-keys)
423 (let* ((out (assoc-ref outputs "out"))
424 (doc (assoc-ref outputs "doc")))
425 (mkdir-p (string-append doc "/share"))
426 (rename-file
427 (string-append out "/share/gtk-doc")
428 (string-append doc "/share/gtk-doc")))))))))
429 (native-inputs
430 (append
431 `(("gobject-introspection" ,gobject-introspection)
432 ("gtk-doc" ,gtk-doc/stable))
433 (package-native-inputs libcloudproviders-minimal)))))
434
435(define-public gnome-js-common
436 (package
437 (name "gnome-js-common")
438 (version "0.1.2")
439 (source
440 (origin
441 (method url-fetch)
442 (uri
443 (string-append "mirror://gnome/sources/" name "/"
444 (version-major+minor version) "/"
445 name "-" version ".tar.gz"))
446 (sha256
447 (base32 "1zv5b9bcbclzj64xd9kgql4ndmbwvvi6cl937ykw8fp21xgh8z7y"))))
448 (build-system glib-or-gtk-build-system)
449 (arguments
450 `(#:configure-flags
451 (list "--disable-static")
452 #:phases
453 (modify-phases %standard-phases
454 ,@(if (or (target-riscv64?)
455 (target-ppc64le?)
456 (target-aarch64?))
457 `((add-after 'unpack 'update-config-scripts
458 (lambda* (#:key native-inputs inputs #:allow-other-keys)
459 (for-each (lambda (file)
460 (install-file
461 (search-input-file
462 (or native-inputs inputs)
463 (string-append "/bin/" file)) "."))
464 '("config.guess" "config.sub")))))
465 '()))))
466 (native-inputs
467 `(,@(if (or (target-riscv64?)
468 (target-ppc64le?)
469 (target-aarch64?))
470 `(("config" ,config))
471 `())
472 ("gettext" ,gettext-minimal)
473 ("intltool" ,intltool)
474 ("pkg-config" ,pkg-config)))
475 (synopsis "Common JS Modules")
476 (description "GNOME-JS-Common provides common modules for GNOME JavaScript
477bindings.")
478 (home-page "https://wiki.gnome.org/Projects/Seed")
479 (license license:gpl3+)))
480
481(define-public libdmapsharing
482 (package
483 (name "libdmapsharing")
484 (version "3.9.14")
485 (source
486 (origin
487 (method url-fetch)
488 (uri
489 (string-append "https://www.flyn.org/projects/"
490 name "/" name "-" version ".tar.gz"))
491 (sha256
492 (base32 "0h0ss2pj5vyj3xfbp4b0lqp8b3k6fw20mqgdg9gwljs34fa0vmja"))))
493 (build-system glib-or-gtk-build-system)
494 (outputs '("out" "doc"))
495 (arguments
496 (list #:tests? #f ; Tests require networking.
497 #:configure-flags
498 #~(list "--disable-static"
499 (string-append "--with-html-dir=" #$output:doc
500 "/share/gtk-doc/html"))))
501 (native-inputs
502 (list check
503 docbook-xml-4.3
504 gobject-introspection
505 pedansee
506 pkg-config))
507 (inputs
508 (list avahi
509 (librsvg-for-system)
510 libgee
511 libsoup
512 gst-plugins-base
513 gtk+))
514 (propagated-inputs
515 (list glib glib-networking gstreamer libsoup))
516 (synopsis "Media management library")
517 (description "Libdmapsharing is a library which allows programs to access,
518share and control the playback of media content using DMAP (DAAP, DPAP & DACP).
519It is written in C using GObject and libsoup.")
520 (home-page "https://gitlab.gnome.org/GNOME/libdmapsharing/")
521 (license license:lgpl2.1+)))
522
523(define-public gtx
524 (package
525 (name "gtx")
526 (version "0.2.2")
527 (source
528 (origin
529 (method url-fetch)
530 (uri
531 (string-append "https://launchpad.net/gtx/trunk/"
532 version "/+download/gtx-" version ".tar.gz"))
533 (sha256
534 (base32 "0i4zvn5v4rf0cw3fxylk6j2pyy5lkrswdiw8jdxkys0ph0nan33n"))))
535 (build-system glib-or-gtk-build-system)
536 (outputs '("out" "doc"))
537 (arguments
538 `(#:configure-flags
539 (list
540 "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
541 "--disable-static"
542 "--enable-gtk-doc"
543 (string-append "--with-html-dir="
544 (assoc-ref %outputs "doc")
545 "/share/gtk-doc/html"))))
546 (native-inputs
547 (list gobject-introspection gtk-doc/stable pkg-config))
548 (propagated-inputs
549 (list glib))
550 (synopsis "GLib Testing Framework")
551 (description "GTX is a small collection of convenience functions intended to
552enhance the GLib testing framework. With specific emphasis on easing the pain
553of writing test cases for asynchronous interactions.")
554 (home-page "https://launchpad.net/gtx")
555 (license license:lgpl2.1+)))
556
557(define-public decibels
558 (package
559 (name "decibels")
560 (version "49.6.1")
561 (source
562 (origin
563 (method url-fetch)
564 (uri
565 (string-append "mirror://gnome/sources/" name "/"
566 (version-major version) "/"
567 name "-" version ".tar.xz"))
568 (sha256
569 (base32
570 "1m8sh2kv5slax4jv36aj0mciw91sqxjagpngky27ql93vwablrws"))
571 (patches
572 (search-patches "decibels-set-root-dir.patch"))))
573 (build-system meson-build-system)
574 (arguments
575 (list
576 #:glib-or-gtk? #t
577 #:phases
578 #~(modify-phases %standard-phases
579 (add-after 'unpack 'fix-gst-init
580 (lambda _
581 ;; `null' is no longer accepted as of gstreamer 2.28.1 (see:
582 ;; <https://gitlab.gnome.org/GNOME/decibels/-/merge_requests/178>).
583 (substitute* "src/stream.ts"
584 (("Gst.init\\(null)")
585 "Gst.init([])"))))
586 (add-after 'unpack 'skip-gnome-post-install
587 (lambda _
588 (substitute* "meson.build"
589 (("gtk_update_icon_cache: true")
590 "gtk_update_icon_cache: false")
591 (("update_desktop_database: true")
592 "update_desktop_database: false"))))
593 (add-after 'install 'wrap-program
594 (lambda _
595 (let ((typelib-path (getenv "GI_TYPELIB_PATH")))
596 (wrap-program (string-append #$output "/bin/org.gnome.Decibels")
597 `("GI_TYPELIB_PATH" ":" prefix (,typelib-path))))))
598 (add-after 'glib-or-gtk-wrap 'install-alias
599 (lambda _
600 (symlink (string-append #$output "/bin/org.gnome.Decibels")
601 (string-append #$output "/bin/decibels")))))))
602 (native-inputs
603 (list blueprint-compiler
604 gettext-minimal
605 `(,glib "bin")
606 pkg-config
607 node-typescript))
608 (inputs
609 (list bash-minimal
610 gjs
611 gst-plugins-bad ;for GstPlay
612 gstreamer
613 libadwaita))
614 (home-page "https://gitlab.gnome.org/GNOME/decibels")
615 (synopsis "GNOME audio file player")
616 (description "Decibels, also known as Audio Player, is an audio player
617focused on simplicity. It offers few advanced features such as:
618@itemize
619@item{An elegant waveform of the track.}
620@item{Adjustable playback speed.}
621@item{Easy seek controls.}
622@item{Playing multiple files at the same time.}
623@end itemize")
624 (license license:gpl3+)))
625
626(define-public dee
627 (package
628 (name "dee")
629 (version "1.2.7")
630 (source
631 (origin
632 (method url-fetch)
633 (uri
634 (string-append "https://launchpad.net/dee/1.0/"
635 version "/+download/dee-" version ".tar.gz"))
636 (sha256
637 (base32 "12mzffk0lyd566y46x57jlvb9af152b4dqpasr40zal4wrn37w0v"))
638 (patches
639 (search-patches "dee-vapi.patch"))))
640 (build-system glib-or-gtk-build-system)
641 (outputs '("out" "doc"))
642 (arguments
643 (list #:configure-flags
644 #~(list "--disable-maintainer-flags"
645 (string-append "--with-pygi-overrides-dir="
646 #$output "/lib/python"
647 #$(version-major+minor
648 (package-version python))
649 "/site-packages/gi/overrides")
650 (string-append "--with-html-dir="
651 #$output "/share/gtk-doc/html"))
652 #:phases
653 #~(modify-phases %standard-phases
654 (add-after 'unpack 'disable-failing-tests
655 (lambda _
656 (substitute* "tests/test-icu.c"
657 (("g_test_add \\(DOMAIN\"/Default/AsciiFolder\",\
658 Fixture, 0,")
659 "")
660 (("setup, test_ascii_folder, teardown\\);")
661 ""))))
662 (add-before 'check 'pre-check
663 (lambda _
664 ;; Tests require a running dbus-daemon.
665 (system "dbus-daemon &")
666 ;; For missing '/etc/machine-id'.
667 (setenv "DBUS_FATAL_WARNINGS" "0"))))))
668 (native-inputs
669 (list dbus
670 dbus-test-runner
671 docbook-xml-4.3
672 gobject-introspection
673 gtk-doc/stable
674 ;; Would only be required by configure flag "--enable-extended-tests".
675 ;;gtx
676 pkg-config
677 python-pygobject
678 python-wrapper
679 vala))
680 (inputs (list icu4c))
681 (propagated-inputs (list glib))
682 (synopsis "Model to synchronize multiple instances over DBus")
683 (description "Dee is a library that uses DBus to provide objects allowing
684you to create Model-View-Controller type programs across DBus. It also consists
685of utility objects which extend DBus allowing for peer-to-peer discoverability
686of known objects without needing a central registrar.")
687 (home-page "https://launchpad.net/dee")
688 (license
689 ;; Dual-licensed
690 (list
691 license:lgpl3+
692 license:gpl3+))))
693
694(define-public foundry
695 (package
696 (name "foundry")
697 (version "1.0.1")
698 (source
699 (origin
700 (method git-fetch)
701 (uri (git-reference
702 (url "https://gitlab.gnome.org/GNOME/foundry")
703 (commit version)))
704 (file-name (git-file-name name version))
705 (sha256
706 (base32 "17f7r6x396g0s5d2w0f2mz5xxmmvjzh8v8w9ivarmgf5xrr3vb1f"))))
707 (build-system meson-build-system)
708 (arguments
709 (list
710 #:phases
711 #~(modify-phases %standard-phases
712 (add-before 'check 'set-HOME
713 (lambda _
714 (setenv "HOME" "/tmp"))))))
715 (native-inputs
716 (list gettext-minimal
717 `(,glib "bin")
718 pkg-config))
719 (inputs
720 (list cmark
721 editorconfig-core-c
722 flatpak
723 glib
724 gom
725 gtksourceview
726 json-glib
727 libdex
728 libgit2
729 libpeas-2
730 libspelling
731 libyaml
732 sysprof
733 template-glib
734 vte
735 webkitgtk))
736 (home-page "https://gitlab.gnome.org/GNOME/foundry")
737 (synopsis "Platform for developer tools in GNOME")
738 (description
739 "This tool aims to extract much of what makes GNOME Builder
740an IDE into a library and companion command-line tool. It features support
741for language servers, build systems, container systems, and more.")
742 (license license:lgpl2.1+)))
743
744(define-public zeitgeist
745 (package
746 (name "zeitgeist")
747 (version "1.0.4")
748 (source
749 (origin
750 (method git-fetch)
751 (uri
752 (git-reference
753 (url "https://gitlab.freedesktop.org/zeitgeist/zeitgeist.git")
754 (commit
755 (string-append "v" version))))
756 (file-name
757 (git-file-name name version))
758 (sha256
759 (base32 "07b1ahj3vd3m8srwkrh7dl3ymr7d55xiiszny44q13g06pq4svch"))))
760 (build-system glib-or-gtk-build-system)
761 (arguments
762 (list #:configure-flags #~(list "--enable-explain-queries"
763 "--enable-fts"
764 "--enable-docs")
765 #:phases
766 #~(modify-phases %standard-phases
767 (add-after 'unpack 'disable-failing-tests
768 (lambda _
769 (substitute* "test/direct/Makefile.am"
770 ((" log-test ")
771 ""))
772 (substitute* "test/c/Makefile.am"
773 ((" test-log ")
774 ""))))
775 (add-before 'bootstrap 'remove-autogen-script
776 (lambda _
777 ;; To honor `autoreconf -vif` by build-system.
778 (delete-file "autogen.sh"))))))
779 (native-inputs
780 (list autoconf
781 automake
782 docbook-xml-4.3
783 gettext-minimal
784 gobject-introspection
785 gtk-doc/stable
786 libtool
787 pkg-config
788 vala
789 xorg-server-for-tests))
790 (inputs
791 (list dee
792 gtk+
793 json-glib
794 sqlite
795 telepathy-glib
796 python-wrapper
797 python-rdflib
798 xapian-1.4))
799 (propagated-inputs (list glib))
800 (synopsis "Desktop Activity Logging")
801 (description "Zeitgeist is a service which logs the users’s activities and
802events, anywhere from files opened to websites visited and conversations. It
803makes this information readily available for other applications to use. It is
804able to establish relationships between items based on similarity and usage
805patterns.")
806 (home-page "https://zeitgeist.freedesktop.org/")
807 (license
808 ;; Dual-licensed
809 (list
810 license:lgpl2.1+
811 license:gpl2+))))
812
813(define-public gnome-recipes
814 (package
815 (name "gnome-recipes")
816 (version "2.0.4")
817 (source (origin
818 (method git-fetch)
819 (uri (git-reference
820 (url "https://gitlab.gnome.org/GNOME/recipes")
821 (commit version)))
822 (file-name (git-file-name name version))
823 (sha256
824 (base32
825 "1h049mzqnlcfqwrhmzbq3pzzdglvy2bn9fj1p8wql7a60pn8sr32"))
826 (patches (search-patches "gnome-recipes-rest-in-soup.patch"))))
827 (build-system meson-build-system)
828 (arguments
829 (list
830 #:glib-or-gtk? #t
831 #:phases
832 #~(modify-phases %standard-phases
833 (add-after 'unpack 'skip-gtk-update-icon-cache
834 (lambda _
835 (substitute* "meson_post_install.py"
836 (("gtk-update-icon-cache") (which "true")))))
837 (add-after 'unpack 'unpack-libgd
838 (lambda _
839 (copy-recursively
840 #$(this-package-native-input "libgd-checkout")
841 "subprojects/libgd")))
842 (add-before 'configure 'relax-gcc-14-strictness
843 (lambda _
844 (setenv "CFLAGS"
845 (string-append
846 "-g -O2"
847 " -Wno-error=incompatible-pointer-types")))))))
848 (inputs (list glib
849 gnome-autoar
850 gnome-online-accounts
851 gspell
852 gtk+
853 json-glib
854 libcanberra
855 librest
856 libsoup))
857 (native-inputs (list desktop-file-utils ;for update-desktop-database
858 gettext-minimal
859 `(,glib "bin")
860 (origin
861 (method git-fetch)
862 (uri (git-reference
863 (url "https://gitlab.gnome.org/GNOME/libgd")
864 (commit "c7c7ff4e05d3fe82854219091cf116cce6b19de0")))
865 (file-name "libgd-checkout")
866 (sha256
867 (base32
868 "16yld0ap7qj1n96h4f2sqkjmibg7xx5xwkqxdfzam2nmyfdlrrrs")))
869 itstool
870 pkg-config
871 python))
872 (home-page "https://wiki.gnome.org/Apps/Recipes")
873 (synopsis "Discover recipes for preparing food")
874 (description "GNOME Recipes helps you discover what to cook today,
875tomorrow, the rest of the week and for special occasions.")
876 (license license:gpl3+)))
877
878(define-public gnome-music
879 (package
880 (name "gnome-music")
881 (version "50.0")
882 (source
883 (origin
884 (method url-fetch)
885 (uri
886 (string-append "mirror://gnome/sources/" name "/"
887 (version-major version) "/"
888 name "-" version ".tar.xz"))
889 (sha256
890 (base32
891 "1andyg0898h1adsdbs95bimi95xiz2ci3c3np3zcw2aqgv590a67"))))
892 (build-system meson-build-system)
893 (arguments
894 (list
895 #:glib-or-gtk? #t
896 #:phases
897 #~(modify-phases %standard-phases
898 (add-after 'unpack 'skip-gtk-update-icon-cache
899 ;; Don't create 'icon-theme.cache'.
900 (lambda _
901 (substitute* "meson.build"
902 (("gtk_update_icon_cache: true")
903 "gtk_update_icon_cache: false"))))
904 (add-after 'install 'wrap-gnome-music
905 (lambda* (#:key inputs outputs #:allow-other-keys)
906 (let* ((out (assoc-ref outputs "out"))
907 (pylib (string-append out "/lib/python"
908 #$(version-major+minor
909 (package-version
910 (this-package-input "python")))
911 "/site-packages")))
912 (wrap-program (string-append out "/bin/gnome-music")
913 `("GI_TYPELIB_PATH" =
914 (,(getenv "GI_TYPELIB_PATH")))
915 `("GST_PLUGIN_SYSTEM_PATH" suffix
916 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
917 `("GRL_PLUGIN_PATH" =
918 (,(getenv "GRL_PLUGIN_PATH")))
919 `("GUIX_PYTHONPATH" =
920 (,(getenv "GUIX_PYTHONPATH") ,pylib)))))))))
921 (native-inputs
922 (list desktop-file-utils
923 gettext-minimal
924 `(,glib "bin")
925 gobject-introspection
926 itstool
927 pkg-config))
928 (inputs
929 (list bash-minimal
930 gnome-online-accounts
931 grilo
932 grilo-plugins
933 gst-plugins-base
934 gst-plugins-good
935 gstreamer
936 gtk
937 gvfs
938 json-glib
939 localsearch
940 libadwaita
941 libdazzle
942 libmediaart
943 libsoup
944 python-pycairo
945 python-pygobject
946 python
947 tinysparql))
948 (synopsis "Simple music player for GNOME desktop")
949 (description "GNOME Music is the new GNOME music playing application that
950aims to combine an elegant and immersive browsing experience with simple
951and straightforward controls.")
952 (home-page "https://gitlab.gnome.org/GNOME/gnome-music")
953 (license license:gpl2+)))
954
955(define-public portablexdr
956 (package
957 (name "portablexdr")
958 (version "4.9.1")
959 (source
960 (origin
961 (method url-fetch)
962 (uri
963 (string-append "https://people.redhat.com/~rjones/" name "/files/"
964 name "-" version ".tar.gz"))
965 (sha256
966 (base32
967 "0b77ipvvi520nv7rr6jb1c3xryhc3m2mywhby7m48kfgag8vvx2w"))))
968 (build-system gnu-build-system)
969 (native-inputs (list bison flex))
970 (arguments
971 (list #:phases #~(modify-phases %standard-phases
972 (add-after 'unpack 'patch-rpcgen-parse
973 (lambda _
974 (substitute* "rpcgen_parse.y"
975 (("#include \"rpcgen_int.h\"")
976 (string-append
977 "#include \"rpcgen_int.h\"\n"
978 "int yylex();\n"))))))))
979 (synopsis "External Data Representation Library")
980 (description "PortableXDR is an implementation of External Data
981Representation (XDR) Library. It is a standard data serialization format, for
982uses such as computer network protocols. It allows data to be transferred
983between different kinds of computer systems.")
984 (home-page "https://people.redhat.com/~rjones/portablexdr/")
985 (license
986 (list
987 license:gpl2+
988 license:lgpl2.1+))))
989
990(define-public tepl
991 (package
992 (name "tepl")
993 (version "6.4.0")
994 (source
995 (origin
996 (method url-fetch)
997 (uri
998 (string-append "mirror://gnome/sources/" name "/"
999 (version-major+minor version) "/"
1000 name "-" version ".tar.xz"))
1001 (sha256
1002 (base32
1003 "08bkp3wrvmcks0082lfw4a0ian9c6j68rdb43px0bkyhd43b4mjy"))))
1004 (build-system meson-build-system)
1005 (arguments
1006 `(#:glib-or-gtk? #t
1007 #:phases (modify-phases %standard-phases
1008 (add-after 'unpack 'disable-problematic-tests
1009 (lambda _
1010 ;; Only keep unit tests, as the interactive tests have
1011 ;; other dependencies.
1012 (substitute* "tests/meson.build"
1013 ((".*'interactive-tests'.*") ""))))
1014 (add-before 'check 'start-xserver
1015 (lambda _
1016 (system "Xvfb :1 &")
1017 (setenv "DISPLAY" ":1"))))))
1018 (native-inputs
1019 (list `(,glib "bin")
1020 gobject-introspection
1021 gtk-doc
1022 libxml2
1023 pkg-config
1024 xorg-server-for-tests))
1025 (inputs
1026 (list uchardet))
1027 (propagated-inputs
1028 ;; These are all required by tepl6.pc.
1029 (list amtk
1030 glib
1031 gsettings-desktop-schemas
1032 gtk+
1033 gtksourceview-4))
1034 (synopsis "Text editor product line")
1035 (description "Tepl is a library that eases the development of
1036GtkSourceView-based text editors and IDEs.")
1037 (home-page "https://wiki.gnome.org/Projects/Tepl")
1038 (license license:lgpl2.1+)))
1039
1040(define-public notification-daemon
1041 (package
1042 (name "notification-daemon")
1043 (version "3.20.0")
1044 (source
1045 (origin
1046 (method url-fetch)
1047 (uri
1048 (string-append "mirror://gnome/sources/" name "/"
1049 (version-major+minor version) "/"
1050 name "-" version ".tar.xz"))
1051 (sha256
1052 (base32
1053 "1rgchqi4j2ll7d6a7lgy7id0w9rrkwkgic1096fbm2zx6n7pc4yx"))))
1054 (build-system glib-or-gtk-build-system)
1055 (native-inputs
1056 (list intltool pkg-config))
1057 (inputs
1058 (list glib gtk+ libx11))
1059 (synopsis "Notification Daemon for GNOME Desktop")
1060 (description "Notification-Daemon is the server implementation of the
1061freedesktop.org desktop notification specification.")
1062 (home-page "https://wiki.gnome.org/Projects/NotificationDaemon")
1063 (license license:gpl2+)))
1064
1065(define-public metacity
1066 (package
1067 (name "metacity")
1068 (version "3.46.1")
1069 (source (origin
1070 (method url-fetch)
1071 (uri (string-append "mirror://gnome/sources/metacity/"
1072 (version-major+minor version) "/"
1073 "metacity-" version ".tar.xz"))
1074 (sha256
1075 (base32
1076 "1ifnbpiflaw72m0flysa5qy44c1axd2rr9zcparz5210c7vlkfh0"))))
1077 (build-system glib-or-gtk-build-system)
1078 (native-inputs
1079 (list gettext-minimal
1080 libtool
1081 autoconf
1082 automake
1083 pkg-config
1084 (list glib "bin")
1085 grep))
1086 (inputs
1087 (list libcanberra
1088 zenity
1089 libsm
1090 libice
1091 gtk+
1092 pango
1093 gsettings-desktop-schemas
1094 gobject-introspection
1095 libgtop
1096 libxcomposite
1097 libxcursor
1098 libxfixes
1099 libxdamage
1100 libxext
1101 libxpresent
1102 libxres
1103 libxrender
1104 libxinerama
1105 libx11
1106 libxrandr))
1107 (home-page "https://gitlab.gnome.org/GNOME/metacity")
1108 (synopsis "Simple compositing window manager")
1109 (description "Metacity is a window manager with a focus on simplicity and
1110usability rather than novelties or gimmicks. Its author has characterized it
1111as a \"boring window manager for the adult in you.\"")
1112 (license license:gpl2+)))
1113
1114(define-public mm-common
1115 (package
1116 (name "mm-common")
1117 (version "1.0.7")
1118 (source (origin
1119 (method url-fetch)
1120 (uri (string-append "mirror://gnome/sources/mm-common/"
1121 (version-major+minor version) "/"
1122 "mm-common-" version ".tar.xz"))
1123 (sha256
1124 (base32
1125 "0fbs587sm2xakdfwfv737dplpppl7b3qi24x3sdja60lg37byjj9"))))
1126 (build-system meson-build-system)
1127 (arguments
1128 (list
1129 #:phases
1130 #~(modify-phases %standard-phases
1131 (add-after 'unpack 'patch
1132 (lambda* (#:key inputs #:allow-other-keys)
1133 (substitute* "util/mm-common-prepare.in"
1134 (("ln") (search-input-file inputs "/bin/ln"))
1135 (("cp") (search-input-file inputs "/bin/cp"))
1136 (("sed") (search-input-file inputs "/bin/sed"))
1137 (("cat") (search-input-file inputs "/bin/cat"))))))))
1138 (native-inputs
1139 (list coreutils gettext-minimal pkg-config sed))
1140 (inputs
1141 (list python))
1142 (synopsis "Module of GNOME C++ bindings")
1143 (description "The mm-common module provides the build infrastructure
1144and utilities shared among the GNOME C++ binding libraries. Release
1145archives of mm-common include the Doxygen tag file for the GNU C++
1146Library reference documentation.")
1147 (home-page "https://gitlab.gnome.org/GNOME/mm-common")
1148 (license license:gpl2+)))
1149
1150(define-public phodav
1151 (package
1152 (name "phodav")
1153 (version "3.0")
1154 (source (origin
1155 (method url-fetch)
1156 (uri (string-append "mirror://gnome/sources/" name "/"
1157 (version-major+minor version) "/"
1158 name "-" version ".tar.xz"))
1159 (sha256
1160 (base32
1161 "1l9qs70yvwi9r8ph081mrsdy412kk0m9l9pgy77hsc2hdp8c4bir"))))
1162 (build-system meson-build-system)
1163 (arguments
1164 `(#:phases
1165 (modify-phases %standard-phases
1166 (add-after 'unpack 'fix-udev-rules-directory
1167 (lambda* (#:key outputs #:allow-other-keys)
1168 (let* ((out (assoc-ref outputs "out"))
1169 (rules (string-append out "/lib/udev/rules.d")))
1170 (substitute* "data/meson.build"
1171 (("udev\\.get_pkgconfig_variable\\('udevdir'\\)")
1172 (format #f "'~a'" rules))))))
1173 (add-before 'check 'set-temporary-home
1174 ;; Tests want to write into HOME.
1175 (lambda _
1176 (setenv "HOME" "/tmp"))))))
1177 (native-inputs
1178 (list docbook-xml-4.3
1179 gettext-minimal
1180 `(,glib "bin")
1181 gsettings-desktop-schemas
1182 gtk-doc/stable
1183 pkg-config))
1184 (inputs
1185 (list avahi
1186 libgudev))
1187 (propagated-inputs
1188 ;; These inputs are required by the pkg-config file.
1189 (list glib
1190 libsoup
1191 libxml2))
1192 (synopsis "WebDav server implementation using libsoup")
1193 (description "PhoDav was initially developed as a file-sharing mechanism for Spice,
1194but it is generic enough to be reused in other projects,
1195in particular in the GNOME desktop.")
1196 (home-page "https://wiki.gnome.org/phodav")
1197 (license license:lgpl2.1+)))
1198
1199(define-public gnome-color-manager
1200 (package
1201 (name "gnome-color-manager")
1202 (version "3.36.2")
1203 (source (origin
1204 (method url-fetch)
1205 (uri (string-append "mirror://gnome/sources/" name "/"
1206 (version-major+minor version) "/"
1207 name "-" version ".tar.xz"))
1208 (sha256
1209 (base32
1210 "0zw87bipnk4s8qcb659gd5n3i1lz1fzq43l81ggnd9afpcmd811r"))))
1211 (build-system meson-build-system)
1212 (arguments
1213 (list
1214 #:glib-or-gtk? #t
1215 #:phases
1216 #~(modify-phases %standard-phases
1217 (add-before 'check 'pre-check
1218 (lambda _
1219 ;; Tests require a running X server.
1220 (system "Xvfb :1 &")
1221 (setenv "DISPLAY" ":1"))))))
1222 (native-inputs
1223 (list desktop-file-utils
1224 gettext-minimal
1225 `(,glib "bin")
1226 `(,gtk+ "bin")
1227 itstool
1228 pkg-config
1229 xorg-server-for-tests))
1230 (inputs
1231 (list adwaita-icon-theme
1232 appstream-glib
1233 colord-gtk
1234 exiv2
1235 gnome-desktop
1236 libexif
1237 libtiff
1238 libxrandr
1239 libxtst
1240 libxxf86vm
1241 vte/gtk+-3
1242 xorgproto))
1243 (synopsis "Color profile manager for the GNOME desktop")
1244 (description "GNOME Color Manager is a session framework that makes
1245it easy to manage, install and generate color profiles
1246in the GNOME desktop.")
1247 (home-page "https://gitlab.gnome.org/GNOME/gnome-color-manager")
1248 (license license:gpl2+)))
1249
1250(define-public gssdp
1251 (package
1252 (name "gssdp")
1253 (version "1.6.4")
1254 (source (origin
1255 (method url-fetch)
1256 (uri (string-append "mirror://gnome/sources/" name "/"
1257 (version-major+minor version) "/"
1258 name "-" version ".tar.xz"))
1259 (sha256
1260 (base32
1261 "0ck04svd0cfh7wzydh1wykpw5rsra8aa5xml2dl3w7angzxzv5zz"))))
1262 (build-system meson-build-system)
1263 (arguments
1264 (list #:configure-flags
1265 #~(list "-Dgtk_doc=true"
1266 ;; Manpages are built using pandoc.
1267 #$@(if (this-package-native-input "pandoc")
1268 #~("-Dmanpages=true")
1269 #~("-Dmanpages=false")))))
1270 (native-inputs
1271 (append
1272 (if (supported-package? pandoc)
1273 (list pandoc)
1274 '())
1275 (list gettext-minimal
1276 `(,glib "bin")
1277 gi-docgen
1278 gobject-introspection
1279 pkg-config
1280 vala)))
1281 (inputs
1282 (list gtk))
1283 (propagated-inputs
1284 ;; The .pc file "Requires" libsoup.
1285 (list libsoup))
1286 (synopsis "GNOME GObject-based API over @acronym{SSDP, Simple Service Discovery Protocol}")
1287 (description "This package provides a library to handle resource discovery
1288and announcement over @acronym{SSDP, Simple Service Discovery Protocol} and
1289a debugging tool, @command{gssdp-device-sniffer}.")
1290 (home-page "https://gitlab.gnome.org/GNOME/gssdp")
1291 (license license:lgpl2.0+)))
1292
1293(define-public gupnp
1294 (package
1295 (name "gupnp")
1296 (version "1.6.9")
1297 (source (origin
1298 (method url-fetch)
1299 (uri (string-append "mirror://gnome/sources/" name "/"
1300 (version-major+minor version) "/"
1301 name "-" version ".tar.xz"))
1302 (sha256
1303 (base32
1304 "16w606l3v0q62v2y5qnl15z1n597xs53cdc7acpycn1mc7inxnrf"))))
1305 (build-system meson-build-system)
1306 (arguments
1307 (list
1308 #:configure-flags #~'("-Dgtk_doc=true")
1309 #:phases
1310 #~(modify-phases %standard-phases
1311 (add-before 'check 'pre-check
1312 (lambda _
1313 ;; Tests require a writable HOME.
1314 (setenv "HOME" (getcwd)))))))
1315 (native-inputs
1316 (list gettext-minimal
1317 gi-docgen
1318 `(,glib "bin")
1319 gobject-introspection
1320 gtk-doc/stable
1321 pkg-config
1322 vala))
1323 (propagated-inputs
1324 ;; These libraries are required by the .pc file.
1325 (list glib
1326 gsettings-desktop-schemas ;for ‘org.gnome.system.proxy’.
1327 gssdp
1328 libsoup
1329 libxml2))
1330 (synopsis "PnP API for GNOME")
1331 (description "This package provides GUPnP, an object-oriented framework
1332for creating UPnP devices and control points, written in C using
1333@code{GObject} and @code{libsoup}.")
1334 (home-page "https://gitlab.gnome.org/GNOME/gupnp")
1335 (license license:lgpl2.0+)))
1336
1337(define-public gupnp-dlna
1338 (package
1339 (name "gupnp-dlna")
1340 (version "0.12.0")
1341 (source (origin
1342 (method url-fetch)
1343 (uri (string-append "mirror://gnome/sources/" name "/"
1344 (version-major+minor version) "/"
1345 name "-" version ".tar.xz"))
1346 (sha256
1347 (base32
1348 "1rj8j2nz835slqs09bfp6hmyyf6v5azwjzin7v9jhmmwhmpvjlrx"))))
1349 (build-system meson-build-system)
1350 (native-inputs
1351 (list gettext-minimal
1352 `(,glib "bin")
1353 gobject-introspection
1354 gtk-doc/stable
1355 libxml2
1356 pkg-config
1357 vala))
1358 (inputs
1359 (list gstreamer gupnp))
1360 (propagated-inputs
1361 (list gst-plugins-base gst-plugins-good))
1362 (synopsis "GUPnP DLNA for GNOME")
1363 (description "This package provides a small utility library to
1364support DLNA-related tasks such as media profile guessing, transcoding to a
1365given profile, etc. DLNA is a subset of UPnP A/V.")
1366 (home-page "https://gitlab.gnome.org/GNOME/gupnp-dlna")
1367 (license license:lgpl2.0+)))
1368
1369(define-public gupnp-av
1370 (package
1371 (name "gupnp-av")
1372 (version "0.14.4")
1373 (source (origin
1374 (method url-fetch)
1375 (uri (string-append "mirror://gnome/sources/" name "/"
1376 (version-major+minor version) "/"
1377 name "-" version ".tar.xz"))
1378 (sha256
1379 (base32
1380 "1izq71qphyac02ynypwk0skxqzhfr0zrl7dap3sxrdaw4yrp9n91"))))
1381 (build-system meson-build-system)
1382 (native-inputs
1383 (list gettext-minimal
1384 `(,glib "bin")
1385 gobject-introspection
1386 gtk-doc/stable
1387 libxml2
1388 pkg-config
1389 vala))
1390 (inputs
1391 (list gtk+ gupnp))
1392 (synopsis "GUPnP A/V for GNOME")
1393 (description "This package provides a small library for handling
1394and implementation of UPnP A/V profiles.")
1395 (home-page "https://gitlab.gnome.org/GNOME/gupnp-av")
1396 (license license:lgpl2.0+)))
1397
1398(define-public libmediaart
1399 (package
1400 (name "libmediaart")
1401 (version "1.9.7")
1402 (source (origin
1403 (method url-fetch)
1404 (uri (string-append "mirror://gnome/sources/" name "/"
1405 (version-major+minor version) "/"
1406 name "-" version ".tar.xz"))
1407 (sha256
1408 (base32
1409 "0sqgasfaz11m702fgcmiijwxf1mb84rvip9akswd1n7hajgxshrb"))))
1410 (build-system meson-build-system)
1411 (native-inputs
1412 (list `(,glib "bin")
1413 gettext-minimal
1414 gobject-introspection
1415 pkg-config
1416 vala))
1417 (inputs
1418 (list gdk-pixbuf))
1419 (synopsis "Media art library for the GNOME desktop")
1420 (description
1421 "The libmediaart library is the foundation for media art caching,
1422extraction, and lookup for applications on the desktop.")
1423 (home-page "https://gitlab.gnome.org/GNOME/libmediaart")
1424 (license license:lgpl2.1+)))
1425
1426(define-public gnome-initial-setup
1427 (package
1428 (name "gnome-initial-setup")
1429 (version "48.1")
1430 (source (origin
1431 (method url-fetch)
1432 (uri (string-append "mirror://gnome/sources/gnome-initial-setup/"
1433 (version-major version)
1434 "/gnome-initial-setup-" version ".tar.xz"))
1435 (sha256
1436 (base32
1437 "0piij9snaj4gmy39jx94ca43slc9aihvmg8z4h9gyrdng5zbznmk"))))
1438 (build-system meson-build-system)
1439 (arguments
1440 (list
1441 #:configure-flags #~(list "-Dsystemd=false")
1442 #:glib-or-gtk? #t
1443 #:phases
1444 #~(modify-phases %standard-phases
1445 (add-after 'unpack 'set-gkbd-file-name
1446 (lambda* (#:key inputs #:allow-other-keys)
1447 ;; Allow the "Preview" button in the keyboard layout
1448 ;; selection dialog to display the layout.
1449 (substitute* "gnome-initial-setup/pages/keyboard/cc-input-chooser.c"
1450 (("\"tecla")
1451 (string-append "\"" (search-input-file
1452 inputs
1453 "bin/tecla")))))))))
1454 (native-inputs
1455 (list gettext-minimal
1456 `(,glib "bin")
1457 gobject-introspection
1458 pkg-config))
1459 (inputs
1460 (list accountsservice
1461 dconf
1462 elogind
1463 gdm
1464 geoclue
1465 gnome-desktop
1466 gnome-online-accounts
1467 gstreamer
1468 ibus
1469 json-glib
1470 mit-krb5
1471 libadwaita
1472 libgweather
1473 libnma
1474 libpwquality
1475 librest
1476 libsecret
1477 network-manager
1478 polkit
1479 tecla
1480 upower
1481 webkitgtk))
1482 (synopsis "Initial setup wizard for GNOME desktop")
1483 (description "This package provides a set-up wizard when a
1484user logs into GNOME for the first time. It typically provides a
1485tour of all gnome components and allows the user to set them up.")
1486 (home-page "https://gitlab.gnome.org/GNOME/gnome-initial-setup")
1487 (license license:gpl2)))
1488
1489(define-public gnome-user-share
1490 (package
1491 (name "gnome-user-share")
1492 (version "48.2")
1493 (source (origin
1494 (method url-fetch)
1495 (uri (string-append "mirror://gnome/sources/" name "/"
1496 (version-major version) "/"
1497 name "-" version ".tar.xz"))
1498 (sha256
1499 (base32
1500 "01mzc9gpj1f8hbq4k2a3gvn67rn08smmvfhq9sx80l7q1ba6ha03"))))
1501 (build-system meson-build-system)
1502 (arguments
1503 (list #:glib-or-gtk? #t
1504 #:imported-modules
1505 `((guix build cargo-build-system)
1506 ,@%meson-build-system-modules)
1507 #:modules '((guix build meson-build-system)
1508 ((guix build cargo-build-system) #:prefix cargo:)
1509 (guix build utils))
1510 #:configure-flags
1511 #~(list "-Dsystemduserunitdir=/tmp/empty")
1512 #:phases
1513 (with-extensions (list (cargo-guile-json))
1514 #~(modify-phases %standard-phases
1515 (add-after 'unpack 'unpack-rust-crates
1516 (assoc-ref cargo:%standard-phases 'unpack-rust-crates))
1517 (add-before 'configure 'cargo:configure
1518 (assoc-ref cargo:%standard-phases 'configure))
1519 (add-before 'configure 'cargo:patch-checksums
1520 (assoc-ref cargo:%standard-phases 'patch-cargo-checksums))))))
1521 (native-inputs
1522 (list gettext-minimal
1523 `(,glib "bin")
1524 gobject-introspection
1525 `(,gtk "bin")
1526 pkg-config
1527 rust-1.80
1528 `(,rust-1.80 "cargo")
1529 yelp-tools))
1530 (inputs (cargo-inputs 'gnome-user-share))
1531 (synopsis "File sharing for GNOME desktop")
1532 (description "GNOME User Share is a small package that binds together
1533various free software projects to bring easy to use user-level file
1534sharing to the masses.")
1535 (home-page "https://gitlab.gnome.org/GNOME/gnome-user-share")
1536 (license license:gpl2+)))
1537
1538(define-public sushi
1539 (package
1540 (name "sushi")
1541 (version "46.0")
1542 (source (origin
1543 (method url-fetch)
1544 (uri (string-append "mirror://gnome/sources/" name "/"
1545 (version-major version) "/"
1546 name "-" version ".tar.xz"))
1547 (sha256
1548 (base32
1549 "1ipjl1c9mib5gq9m58vhxg9jzfrggv2bbah6qr123arhljm5n24n"))))
1550 (build-system meson-build-system)
1551 (arguments
1552 (list
1553 #:glib-or-gtk? #t
1554 #:phases
1555 #~(modify-phases %standard-phases
1556 (add-after 'glib-or-gtk-wrap 'wrap-typelib
1557 (lambda* (#:key outputs #:allow-other-keys)
1558 (let ((prog (string-append (assoc-ref outputs "out")
1559 "/bin/sushi")))
1560 ;; Put existing typelibs before sushi's deps, so as to
1561 ;; correctly infer gdk-pixbuf.
1562 (wrap-program prog
1563 `("GI_TYPELIB_PATH" suffix
1564 (,(getenv "GI_TYPELIB_PATH"))))))))))
1565 (native-inputs
1566 (list `(,glib "bin")
1567 gettext-minimal
1568 gobject-introspection
1569 pkg-config))
1570 (inputs
1571 (list bash-minimal
1572 clutter
1573 clutter-gst
1574 clutter-gtk
1575 evince ; For file previewing.
1576 freetype
1577 gdk-pixbuf
1578 gjs
1579 gst-plugins-base
1580 gstreamer
1581 gtksourceview-4
1582 harfbuzz
1583 libepoxy
1584 libmusicbrainz
1585 libxml2
1586 neon
1587 webkitgtk-for-gtk3))
1588 (synopsis "File previewer for the GNOME desktop")
1589 (description "Sushi is a DBus-activated service that allows applications
1590to preview files on the GNOME desktop.")
1591 (home-page "https://gitlab.gnome.org/GNOME/sushi")
1592 (license license:gpl2+)))
1593
1594(define-public rygel
1595 (package
1596 (name "rygel")
1597 (version "45.1")
1598 (source (origin
1599 (method url-fetch)
1600 (uri (string-append "mirror://gnome/sources/" name "/"
1601 (version-major version) "/"
1602 name "-" version ".tar.xz"))
1603 (sha256
1604 (base32
1605 "1j0pasaaazyq3k2mhp2dal4jmiw4hjkqpx52fxk9pbwf1ll6wf6g"))))
1606 (build-system meson-build-system)
1607 (native-inputs
1608 (list gettext-minimal
1609 `(,glib "bin") ; for glib-compile-schemas, etc.
1610 gobject-introspection
1611 gtk-doc/stable
1612 pkg-config
1613 python
1614 vala
1615 docbook-xml
1616 docbook-xsl
1617 libxslt))
1618 (inputs
1619 (list gdk-pixbuf
1620 gssdp
1621 gstreamer
1622 gst-plugins-base
1623 gst-editing-services
1624 gtk
1625 gupnp
1626 gupnp-av
1627 gupnp-dlna
1628 json-glib
1629 libgee
1630 libmediaart
1631 libsoup
1632 libxslt
1633 libunistring
1634 tinysparql))
1635 (propagated-inputs
1636 ;; The .pc files require.private gmodule-2.0
1637 (list glib))
1638 (synopsis "Share audio, video, and pictures with other devices")
1639 (description
1640 "Rygel is a home media solution (@dfn{UPnP AV MediaServer and
1641MediaRenderer}) for GNOME that allows you to easily share audio, video, and
1642pictures, and to control a media player on your home network.
1643
1644Rygel achieves interoperability with other devices by trying to conform to the
1645strict requirements of DLNA and by converting media on-the-fly to formats that
1646client devices can handle.")
1647 (home-page "https://wiki.gnome.org/Projects/Rygel")
1648 (license (list
1649 ;; For logo (data/icons/*).
1650 license:cc-by-sa3.0
1651 ;; For all others.
1652 license:lgpl2.1+))))
1653
1654(define-public libnma
1655 (package
1656 (name "libnma")
1657 (version "1.10.6")
1658 (source (origin
1659 (method url-fetch)
1660 (uri (string-append "mirror://gnome/sources/" name "/"
1661 (version-major+minor version) "/"
1662 name "-" version ".tar.xz"))
1663 (sha256
1664 (base32
1665 "1avdsw1l61gwr29lzvlr4dh3qz6ypsc3xvfahrcprlqa34mzp9jk"))))
1666 (build-system meson-build-system)
1667 (arguments
1668 ;; GTK 4.x depends on Rust (indirectly) so pull it only on platforms
1669 ;; where it is supported.
1670 (list
1671 #:configure-flags
1672 (if (supported-package? gtk)
1673 #~(list "-Dlibnma_gtk4=true")
1674 #~(list "-Dlibnma_gtk4=false"))
1675 #:phases
1676 #~(modify-phases %standard-phases
1677 ;; We follow upstream's recommendation at
1678 ;; https://gitlab.gnome.org/GNOME/libnma/-/commit/9166164387b0367becbe3400af696f925fef0ab1
1679 (add-after 'install 'delete-org.gnome.nm-applet.gschema
1680 (lambda _
1681 (delete-file
1682 (string-append
1683 #$output
1684 "/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml")))))))
1685 (native-inputs
1686 (list docbook-xml-4.3
1687 gettext-minimal
1688 `(,glib "bin")
1689 gtk-doc/stable
1690 gobject-introspection
1691 pkg-config
1692 vala))
1693 (inputs
1694 (list gcr-3
1695 (if (supported-package? gtk) gtk gtk+)
1696 iso-codes/pinned
1697 mobile-broadband-provider-info
1698 network-manager))
1699 (synopsis "Network Manager's applet library")
1700 (description "Libnma is an applet library for Network Manager. It was
1701initially part of network-manager-applet and has now become a separate
1702project.")
1703 (home-page "https://gitlab.gnome.org/GNOME/libnma")
1704 ;; Some files carry the "GPL-2.0+" SPDX identifier while others say
1705 ;; "LGPL-2.1+".
1706 (license license:gpl2+)))
1707
1708(define-public gnome-menus
1709 (package
1710 (name "gnome-menus")
1711 (version "3.38.1")
1712 (source (origin
1713 (method url-fetch)
1714 (uri (string-append "mirror://gnome/sources/gnome-menus/"
1715 (version-major+minor version) "/"
1716 name "-" version ".tar.xz"))
1717 (sha256
1718 (base32
1719 "06418hf95c63c3wf6yrjkq12czb14xafywafz4nj7yywvcfak60i"))))
1720 (build-system gnu-build-system)
1721 (arguments
1722 (list
1723 #:phases
1724 #~(modify-phases %standard-phases
1725 (add-after 'unpack 'fix-introspection-install-dir
1726 (lambda _
1727 (substitute* "libmenu/Makefile.in"
1728 (("@INTROSPECTION_GIRDIR@")
1729 (string-append #$output "/share/gir-1.0/"))
1730 (("@INTROSPECTION_TYPELIBDIR@")
1731 (string-append #$output "/lib/girepository-1.0/"))))))))
1732 (native-inputs
1733 (list gettext-minimal glib gobject-introspection pkg-config))
1734 (synopsis "Menu support for GNOME desktop")
1735 (description "GNOME Menus contains the libgnome-menu library, the layout
1736configuration files for the GNOME menu, as well as a simple menu editor.")
1737 (home-page "https://gitlab.gnome.org/GNOME/gnome-menus")
1738 (license license:lgpl2.0+)))
1739
1740(define-public gnome-commander
1741 (package
1742 (name "gnome-commander")
1743 (version "1.18.2")
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (string-append "mirror://gnome/sources/" name "/"
1748 (version-major+minor version) "/"
1749 "gnome-commander-" version ".tar.xz"))
1750 (sha256
1751 (base32 "0wqnm87skbsc7p89ynn64s3154w0j1d0d1gjkbxd5mmpg90i0ysa"))))
1752 (build-system meson-build-system)
1753 (arguments
1754 `(#:glib-or-gtk? #t
1755 #:phases
1756 (modify-phases %standard-phases
1757 (add-before 'build 'prepare-x-for-test
1758 (lambda _
1759 (system "Xvfb &")
1760 (setenv "DISPLAY" ":0"))))))
1761 (native-inputs
1762 (list desktop-file-utils
1763 flex
1764 gettext-minimal
1765 `(,glib "bin")
1766 googletest-1.12
1767 `(,gtk+ "bin")
1768 itstool
1769 pkg-config
1770 xorg-server-for-tests))
1771 (inputs
1772 (list glib gtk+))
1773 (home-page "https://gcmd.github.io/")
1774 (synopsis "Two-pane graphical file manager for the GNOME desktop")
1775 (description
1776 "GNOME Commander is a two-pane graphical file manager using GNOME
1777libraries. It aims to fulfill the demands of more advanced users who
1778like to focus on file management, their work through special applications
1779and running smart commands.")
1780 (license license:gpl2+)))
1781
1782(define-public gnome-user-docs
1783 (package
1784 (name "gnome-user-docs")
1785 (version "49.4")
1786 (source
1787 (origin
1788 (method url-fetch)
1789 (uri (string-append "mirror://gnome/sources/gnome-user-docs/"
1790 (version-major version)
1791 "/gnome-user-docs-" version ".tar.xz"))
1792 (sha256
1793 (base32 "104amr45zp101b81b3fw2pw4w4a7cf542l7biyy1a7swvpm4hi06"))))
1794 (build-system gnu-build-system)
1795 (native-inputs
1796 (list gettext-minimal itstool pkg-config libxml2))
1797 (synopsis "User documentation for the GNOME desktop")
1798 (description
1799 "The GNOME User Documentation explains how to use the GNOME desktop and its
1800components. It covers usage and setup of the core GNOME programs by end-users
1801and system administrators.")
1802 (home-page "https://wiki.gnome.org/DocumentationProject")
1803 (license license:cc-by3.0)))
1804
1805(define-public dia
1806 ;; There are no recent releases; use the latest commit from the master
1807 ;; branch.
1808 (let ((commit "c99c6e2c85ce28e82a89384a83800d6efb91dfb1")
1809 (revision "6"))
1810 (package
1811 (name "dia")
1812 (version (git-version "0.97.3" revision commit))
1813 (source
1814 (origin
1815 (method git-fetch)
1816 (uri (git-reference
1817 (url "https://gitlab.gnome.org/GNOME/dia.git/")
1818 (commit commit)))
1819 (file-name (git-file-name name version))
1820 (sha256
1821 (base32 "11ak07pw1d9bgrkmpzlk287aphqscdnh4l36vc821v0srkas9335"))))
1822 (build-system meson-build-system)
1823 (arguments
1824 (list
1825 #:phases
1826 #~(modify-phases %standard-phases
1827 (add-after 'unpack 'disable-gtk-update-icon-cache
1828 (lambda _
1829 (substitute* "meson.build"
1830 (("gtk_update_icon_cache: true")
1831 "gtk_update_icon_cache: false")
1832 (("update_desktop_database: true")
1833 "update_desktop_database: false")))))))
1834 (native-inputs
1835 (list appstream
1836 docbook-xml-4.5
1837 docbook-xsl
1838 `(,glib "bin")
1839 gettext-minimal
1840 pkg-config))
1841 (inputs
1842 (list graphene
1843 gtk+
1844 libxml2
1845 libxslt
1846 poppler
1847 python-minimal
1848 xpm-pixbuf))
1849 (home-page "https://wiki.gnome.org/Apps/Dia")
1850 (synopsis "Diagram creation for GNOME")
1851 (description
1852 "Dia can be used to draw different types of diagrams, and
1853includes support for UML static structure diagrams (class diagrams), entity
1854relationship modeling, and network diagrams. The program supports various file
1855formats like PNG, SVG, PDF and EPS.")
1856 (license license:gpl2+))))
1857
1858(define-public libgdata
1859 (package
1860 (name "libgdata")
1861 (version "0.18.1")
1862 (source (origin
1863 (method url-fetch)
1864 (uri (string-append "mirror://gnome/sources/" name "/"
1865 (version-major+minor version) "/"
1866 name "-" version ".tar.xz"))
1867 (patches (search-patches "libgdata-fix-tests.patch"))
1868 (sha256
1869 (base32
1870 "1iq4d1qy0vkmy29xvr13dgz4pxvn5v3yi2swryld0ajinvp951fx"))))
1871 (build-system meson-build-system)
1872 (arguments
1873 '(#:phases
1874 (modify-phases %standard-phases
1875 (add-before 'check 'set-home-for-tests
1876 (lambda _
1877 (setenv "HOME" "/tmp"))))))
1878 (native-inputs
1879 `(("glib:bin" ,glib "bin")
1880 ("gobject-introspection" ,gobject-introspection)
1881 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1882 ("intltool" ,intltool)
1883 ("pkg-config" ,pkg-config)
1884 ("uhttpmock" ,uhttpmock-with-libsoup2)))
1885 (inputs
1886 (list cyrus-sasl glib-networking vala))
1887 (propagated-inputs
1888 `(("gcr" ,gcr-3)
1889 ("glib" ,glib)
1890 ("gnome-online-accounts" ,gnome-online-accounts)
1891 ("json-glib" ,json-glib)
1892 ("liboauth" ,liboauth)
1893 ("libsoup" ,libsoup-minimal-2)
1894 ("libxml2" ,libxml2)))
1895 (home-page "https://gitlab.gnome.org/Archive/libgdata")
1896 (synopsis "Library for accessing online service APIs")
1897 (description
1898 "libgdata is a GLib-based library for accessing online service APIs using
1899the GData protocol — most notably, Google's services. It provides APIs to
1900access the common Google services, and has full asynchronous support.")
1901 (license license:lgpl2.1+)))
1902
1903(define-public libgxps
1904 (package
1905 (name "libgxps")
1906 (version "0.3.2")
1907 (source (origin
1908 (method url-fetch)
1909 (uri (string-append "mirror://gnome/sources/" name "/"
1910 (version-major+minor version) "/"
1911 name "-" version ".tar.xz"))
1912 (sha256
1913 (base32
1914 "07156nj7yrp3h9zyzx6mjwxwmfijialb4gi5d6dwyp53arr8c9vd"))))
1915 (build-system meson-build-system)
1916 (native-inputs
1917 (list gobject-introspection pkg-config))
1918 (inputs
1919 (list gtk+ libjpeg-turbo lcms libtiff))
1920 (propagated-inputs
1921 ;; In Requires of libgxps.pc.
1922 (list cairo glib libarchive))
1923 (home-page "https://wiki.gnome.org/Projects/libgxps")
1924 (synopsis "GObject-based library for handling and rendering XPS documents")
1925 (description
1926 "libgxps is a GObject-based library for handling and rendering XPS
1927documents. This package also contains binaries that can convert XPS documents
1928to other formats.")
1929 (license license:lgpl2.1+)))
1930
1931(define-public gnome-characters
1932 (package
1933 (name "gnome-characters")
1934 (version "49.1")
1935 (source
1936 (origin
1937 (method url-fetch)
1938 (uri (string-append "mirror://gnome/sources/"
1939 "gnome-characters/" (version-major version)
1940 "/gnome-characters-" version ".tar.xz"))
1941 (sha256
1942 (base32
1943 "0p0l1bsgdqj0n47j2xya0pmf3n67vcq5iywi6dwdq0p66kj0yp3r"))))
1944 (build-system meson-build-system)
1945 (arguments
1946 (list
1947 #:glib-or-gtk? #t
1948 #:phases #~(modify-phases %standard-phases
1949 (delete 'check) ;moved after install
1950 (add-after 'install 'check
1951 ;; This is done because our typelib reference the
1952 ;; installed libraries in Guix.
1953 (assoc-ref %standard-phases 'check))
1954 (add-after 'unpack 'disable-gtk-update-icon-cache
1955 (lambda _
1956 (substitute* "meson.build"
1957 (("gtk_update_icon_cache: true")
1958 "gtk_update_icon_cache: false")
1959 (("update_desktop_database: true")
1960 "update_desktop_database: false"))))
1961 (add-after 'unpack 'fix-test-setup
1962 (lambda _
1963 (substitute* "tests/meson.build"
1964 (("'GI_TYPELIB_PATH': (.*)," all path)
1965 (string-append "'GI_TYPELIB_PATH':"
1966 " ["
1967 path
1968 ", '"
1969 (getenv "GI_TYPELIB_PATH")
1970 "'],")))))
1971 (add-after 'install 'wrap
1972 (lambda* (#:key outputs #:allow-other-keys)
1973 ;; GNOME Characters needs Typelib files from GTK and
1974 ;; gnome-desktop.
1975 (wrap-program (search-input-file outputs
1976 "bin/gnome-characters")
1977 `("GI_TYPELIB_PATH" ":" prefix
1978 (,(getenv "GI_TYPELIB_PATH")))))))))
1979 (native-inputs
1980 (list gettext-minimal
1981 `(,glib "bin")
1982 gobject-introspection
1983 pkg-config
1984 xorg-server-for-tests
1985 xvfb-run))
1986 (inputs
1987 (list bash-minimal ;for wrap-program
1988 gjs
1989 gnome-desktop
1990 gtk
1991 libadwaita
1992 libunistring))
1993 (home-page "https://wiki.gnome.org/Apps/Characters")
1994 (synopsis "Find and insert unusual characters")
1995 (description "Characters is a simple utility application to find
1996and insert unusual characters. It allows you to quickly find the
1997character you are looking for by searching for keywords.")
1998 (license license:bsd-3)))
1999
2000(define-public gnome-common
2001 (package
2002 (name "gnome-common")
2003 (version "3.18.0")
2004 (source
2005 (origin
2006 (method url-fetch)
2007 (uri (string-append "mirror://gnome/sources/" name "/"
2008 (version-major+minor version) "/"
2009 name "-" version ".tar.xz"))
2010 (sha256
2011 (base32
2012 "1kzqi8qvh5p1zncj8msazlmvcwsczjz2hqxp4x2y0mg718vrwmi2"))))
2013 (build-system gnu-build-system)
2014 (home-page "https://www.gnome.org/")
2015 (synopsis "Bootstrap GNOME modules built from Git")
2016 (description "gnome-common contains various files needed to bootstrap
2017GNOME modules built from Git. It contains a common \"autogen.sh\" script that
2018can be used to configure a source directory checked out from Git and some
2019commonly used macros.")
2020 (license license:gpl2+)))
2021
2022(define-public gnome-contacts
2023 (package
2024 (name "gnome-contacts")
2025 (version "49.0")
2026 (source (origin
2027 (method url-fetch)
2028 (uri (string-append "mirror://gnome/sources/gnome-contacts/"
2029 (version-major version) "/"
2030 name "-" version ".tar.xz"))
2031 (sha256
2032 (base32
2033 "1bz4hns4vd9ifw0s4j7jgys143a650ny5lww5pppvmr9pikirwi5"))
2034 (patches
2035 ;; TODO: Remove when bumping to version 50.alpha or newer.
2036 (search-patches "gnome-contacts-evolution-compat.patch"))))
2037 (build-system meson-build-system)
2038 (arguments
2039 (list
2040 #:glib-or-gtk? #t
2041 ;; FIXME: Cannot build the Valadoc, because both gtk+ and gtk are in the
2042 ;; same profile (evolution-data-server propagates both).
2043 #:configure-flags #~'("-Ddocs=false")
2044 #:phases
2045 #~(modify-phases %standard-phases
2046 (add-after 'unpack 'skip-gtk-update-icon-cache
2047 (lambda _
2048 (substitute* "meson.build"
2049 (("gtk_update_icon_cache: true")
2050 "gtk_update_icon_cache: false")))))))
2051 (native-inputs
2052 (list blueprint-compiler
2053 desktop-file-utils
2054 docbook-xml
2055 docbook-xml-4.2
2056 docbook-xsl
2057 gettext-minimal
2058 `(,glib "bin")
2059 gobject-introspection
2060 libxslt
2061 pkg-config))
2062 (inputs
2063 (list evolution-data-server
2064 gnome-desktop
2065 gnome-online-accounts
2066 gst-plugins-base
2067 gtk
2068 libadwaita
2069 libgee
2070 libportal
2071 qrencode
2072 telepathy-glib
2073 vala))
2074 (propagated-inputs
2075 (list folks
2076 telepathy-mission-control))
2077 (synopsis "GNOME's integrated address book")
2078 (description
2079 "GNOME Contacts organizes your contact information from online and
2080offline sources, providing a centralized place for managing your contacts.")
2081 (home-page "https://wiki.gnome.org/Apps/Contacts")
2082 (license license:gpl2+)))
2083
2084(define-public gnome-desktop
2085 (package
2086 (name "gnome-desktop")
2087 (version "44.5")
2088 (source
2089 (origin
2090 (method url-fetch)
2091 (uri (string-append "mirror://gnome/sources/" name "/"
2092 (version-major version) "/"
2093 name "-" version ".tar.xz"))
2094 (sha256
2095 (base32
2096 "0br33ma7l45nr8yp9bcjqgy9zrj57yy2fnkc0b0yh0rsdrd9kq10"))))
2097 (build-system meson-build-system)
2098 (arguments
2099 '(#:phases
2100 (modify-phases %standard-phases
2101 (add-after 'unpack 'disable-problematic-tests
2102 (lambda _
2103 ;; The languages test fails due to Guix defaulting to C.UTF-8.
2104 (substitute* "tests/meson.build"
2105 ((".*'languages':.*") ""))))
2106 (add-before 'configure 'patch-path
2107 (lambda* (#:key inputs #:allow-other-keys)
2108 (substitute* "libgnome-desktop/gnome-languages.c"
2109 (("\"locale\"")
2110 (format #f "~s" (search-input-file inputs "bin/locale"))))))
2111 (add-before 'configure 'patch-bubblewrap
2112 (lambda* (#:key inputs #:allow-other-keys)
2113 (substitute* "libgnome-desktop/gnome-desktop-thumbnail-script.c"
2114 (("\"bwrap\",")
2115 (string-append "\"" (which "bwrap") "\","))
2116 (("\"--ro-bind\", \"/usr\", \"/usr\",")
2117 (string-append "\"--ro-bind\", \""
2118 (%store-directory)
2119 "\", \""
2120 (%store-directory)
2121 "\","))
2122 (("\"--ro-bind\", \"/etc/ld.so.cache\", \"/etc/ld.so.cache\",")
2123 ""))))
2124 (add-before 'check 'pre-check
2125 (lambda* (#:key inputs #:allow-other-keys)
2126 ;; Tests require a running X server and locales.
2127 (system "Xvfb :1 &")
2128 (setenv "DISPLAY" ":1")
2129 (setenv "XDG_CACHE_HOME" "/tmp/xdg-cache")
2130 (setenv "XDG_CONFIG_HOME" "/tmp")
2131 (setenv "GUIX_LOCPATH"
2132 (search-input-directory inputs
2133 "lib/locale")))))))
2134 (native-inputs
2135 (list `(,glib "bin") ;for gdbus-codegen
2136 (libc-utf8-locales-for-target (%current-system)) ;for tests
2137 gobject-introspection
2138 itstool
2139 intltool
2140 pkg-config
2141 libxml2
2142 xorg-server-for-tests))
2143 (propagated-inputs
2144 ;; Required by gnome-desktop-3.0.pc.
2145 (list gsettings-desktop-schemas
2146 gtk
2147 gtk+
2148 iso-codes/pinned
2149 libseccomp
2150 libx11
2151 xkeyboard-config))
2152 (inputs
2153 (list bubblewrap
2154 gdk-pixbuf
2155 glib
2156 libxext
2157 libxkbfile
2158 libxrandr))
2159 (home-page "https://www.gnome.org/")
2160 (synopsis
2161 "Libgnome-desktop, gnome-about, and desktop-wide documents")
2162 (description
2163 "The libgnome-desktop library provides API shared by several applications
2164on the desktop, but that cannot live in the platform for various reasons.
2165There is no API or ABI guarantee, although we are doing our best to provide
2166stability. Documentation for the API is available with gtk-doc.
2167
2168The gnome-about program helps find which version of GNOME is installed.")
2169 ; Some bits under the LGPL.
2170 (license license:gpl2+)))
2171
2172(define-public gnome-desktop-testing
2173 ;; Use the most recent commit as the last release tag is from 2021.
2174 (let ((commit "036b7357f1892b3bdf19aba8d0be7d7b75bda291")
2175 (revision "0"))
2176 (package
2177 (name "gnome-desktop-testing")
2178 (version (git-version "2021.1" revision commit))
2179 (source (origin
2180 (method git-fetch)
2181 (uri (git-reference
2182 (url "https://gitlab.gnome.org/GNOME/gnome-desktop-testing")
2183 (commit commit)))
2184 (file-name (git-file-name name version))
2185 (sha256
2186 (base32
2187 "0qk3j6rkl0l531gxwy8ss8ybrl96k5rrqqq896pjh0fin5k25lrx"))))
2188 (build-system meson-build-system)
2189 (native-inputs (list pkg-config))
2190 (inputs (list glib))
2191 (home-page "https://gitlab.gnome.org/GNOME/gnome-desktop-testing")
2192 (synopsis "Basic test runner from GNOME installed tests.")
2193 (description "This package provides a basic runner for GNOME installed
2194tests, as used by gjs for example.")
2195 (license license:gpl2+))))
2196
2197(define-public gnome-disk-utility
2198 (package
2199 (name "gnome-disk-utility")
2200 (version "46.1")
2201 (source (origin
2202 (method url-fetch)
2203 (uri (string-append "mirror://gnome/sources/" name "/"
2204 (version-major version) "/"
2205 name "-" version ".tar.xz"))
2206 (sha256
2207 (base32
2208 "1zmzkfwg1gvqz16i2lplnvi5yhq5f1617jj9wgxbqw2dl0wr8kn2"))))
2209 (build-system meson-build-system)
2210 (arguments
2211 `(#:configure-flags '("-Dlogind=libelogind")
2212 #:phases
2213 (modify-phases %standard-phases
2214 (add-after 'unpack 'skip-gtk-update-icon-cache
2215 ;; Don't create 'icon-theme.cache'.
2216 (lambda _
2217 (substitute* "meson.build"
2218 (("gtk_update_icon_cache: true")
2219 "gtk_update_icon_cache: false")
2220 (("glib_compile_schemas: true")
2221 "glib_compile_schemas: false")
2222 (("update_desktop_database: true")
2223 "update_desktop_database: false")))))))
2224 (native-inputs
2225 (list docbook-xml
2226 docbook-xsl
2227 `(,glib "bin")
2228 gettext-minimal
2229 pkg-config
2230 libxml2
2231 libxslt))
2232 (inputs
2233 (list elogind
2234 glib
2235 appstream-glib
2236 gnome-settings-daemon
2237 gtk+
2238 libcanberra
2239 libdvdread
2240 libhandy
2241 libnotify
2242 libpwquality
2243 libsecret
2244 udisks))
2245 (home-page "https://gitlab.gnome.org/GNOME/gnome-disk-utility")
2246 (synopsis "Disk management utility for GNOME")
2247 (description "Disk management utility for GNOME.")
2248 (license license:gpl2+)))
2249
2250(define-public gnome-font-viewer
2251 (package
2252 (name "gnome-font-viewer")
2253 (version "49.0")
2254 (source (origin
2255 (method url-fetch)
2256 (uri (string-append "mirror://gnome/sources/gnome-font-viewer/"
2257 (version-major version)
2258 "/gnome-font-viewer-" version ".tar.xz"))
2259 (sha256
2260 (base32
2261 "0114ar42akyl40g8gn8f8pbr7hf025bz39nisxainxw5q8jqj0bw"))))
2262 (build-system meson-build-system)
2263 (arguments
2264 (list
2265 #:phases
2266 #~(modify-phases %standard-phases
2267 (add-after 'unpack 'patch-post-install-script
2268 (lambda _
2269 (substitute* "meson-postinstall.sh"
2270 (("update-desktop-database") (which "true")))))
2271 (add-before 'configure 'relax-gcc-14-strictness
2272 (lambda _
2273 (setenv "CFLAGS"
2274 (string-append "-g -O2"
2275 " -Wno-error=incompatible-pointer-types"))))
2276 (add-after 'install 'patch-thumbnailer
2277 (lambda* (#:key outputs #:allow-other-keys)
2278 (substitute*
2279 (search-input-file
2280 outputs "share/thumbnailers/gnome-font-viewer.thumbnailer")
2281 (("gnome-thumbnail-font")
2282 (search-input-file outputs "bin/gnome-thumbnail-font"))))))))
2283 (native-inputs
2284 (list gettext-minimal
2285 `(,glib "bin")
2286 pkg-config))
2287 (inputs
2288 (list glib
2289 gnome-desktop
2290 gtk
2291 libadwaita
2292 libxml2))
2293 (home-page "https://gitlab.gnome.org/GNOME/gnome-font-viewer")
2294 (synopsis "GNOME Fonts")
2295 (description "Application to show you the fonts installed on your computer
2296for your use as thumbnails. Selecting any thumbnails shows the full view of how
2297the font would look under various sizes.")
2298 (license license:gpl2+)))
2299
2300(define-public gcr
2301 (package
2302 (name "gcr")
2303 (version "4.2.1")
2304 (source (origin
2305 (method url-fetch)
2306 (uri (string-append "mirror://gnome/sources/" name "/"
2307 (version-major+minor version) "/"
2308 name "-" version ".tar.xz"))
2309 (sha256
2310 (base32
2311 "1rbxjrwy88l1b6yml2hrracqamaflvif7a9fq1cd0g1ph1f3ny7d"))))
2312 (build-system meson-build-system)
2313 (arguments
2314 (list
2315 #:phases
2316 #~(modify-phases %standard-phases
2317 (add-after 'unpack 'remove-fatal-warnings-option
2318 ;; Otherwise, the gi-docgen tool would fail because of the
2319 ;; "Fontconfig error: No writable cache directories" warnings.
2320 (lambda _
2321 (substitute* (find-files "." "^meson\\.build$")
2322 ((".*'--fatal-warnings',.*") ""))))
2323 (add-after 'unpack 'skip-gtk-update-icon-cache
2324 (lambda _
2325 (substitute* "meson.build"
2326 (("gtk_update_icon_cache: true")
2327 "gtk_update_icon_cache: false"))))
2328 (add-before 'check 'pre-check
2329 (lambda _
2330 ;; Some tests expect to write to $HOME.
2331 (setenv "HOME" "/tmp")))
2332 (replace 'check
2333 (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
2334 (when tests?
2335 (setenv "MESON_TESTTHREADS"
2336 (if parallel-tests?
2337 (number->string (parallel-job-count))
2338 "1"))
2339 ;; Work around the "mock prompter couldn't get session bus
2340 ;; address: Cannot spawn a message bus without a machine-id"
2341 ;; error by manually creating the session bus via
2342 ;; 'dbus-run-session'.
2343 (invoke "dbus-run-session" "--"
2344 "meson" "test" "-t" "0")))))))
2345 (inputs
2346 (list dbus
2347 gnupg
2348 libgcrypt
2349 libsecret))
2350 (native-inputs
2351 (list gettext-minimal
2352 gi-docgen
2353 `(,glib "bin")
2354 gobject-introspection
2355 gtk-doc/stable
2356 libxml2
2357 libxslt
2358 openssh
2359 pkg-config
2360 python-wrapper
2361 vala))
2362 ;; GLib and p11-kit are mentioned in gck.pc and gcr.pc
2363 ;; GTK is kept for symmetry with gcr-3, which propagates gtk+.
2364 (propagated-inputs (list glib gtk p11-kit))
2365 (home-page "https://www.gnome.org")
2366 (synopsis "Libraries for displaying certificates and accessing key stores")
2367 (description
2368 "The GCR package contains libraries used for displaying certificates and
2369accessing key stores. It also provides the viewer for crypto files on the
2370GNOME Desktop.")
2371 (license license:lgpl2.1+)))
2372
2373(define-public gcr-3
2374 (package
2375 (inherit gcr)
2376 (name "gcr")
2377 (version "3.41.2")
2378 (source (origin
2379 (method url-fetch)
2380 (uri (string-append "mirror://gnome/sources/" name "/"
2381 (version-major+minor version) "/"
2382 name "-" version ".tar.xz"))
2383 (sha256
2384 (base32
2385 "1dqsgrb62fgmy4w63bjl3b525nil4idrrdcscia1h3isaly0zlds"))
2386 (patches (search-patches "gcr-3-suppress-debug-messages.patch"))))
2387 (arguments
2388 (substitute-keyword-arguments arguments
2389 ((#:phases phases)
2390 #~(modify-phases #$phases
2391 (replace 'skip-gtk-update-icon-cache
2392 ;; Don't create 'icon-theme.cache'.
2393 (lambda _
2394 (substitute* "meson_post_install.py"
2395 (("gtk-update-icon-cache") "true"))))))))
2396 ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
2397 (propagated-inputs (list glib gtk+ p11-kit))))
2398
2399(define-public gdl
2400 (package
2401 (name "gdl")
2402 (version "3.40.0")
2403 (source (origin
2404 (method git-fetch)
2405 (uri (git-reference
2406 (url "https://gitlab.gnome.org/GNOME/gdl.git")
2407 (commit (string-append "GDL_" (string-map (match-lambda
2408 (#\. #\_)
2409 (c c))
2410 version)))))
2411 (file-name (git-file-name name version))
2412 (sha256
2413 (base32
2414 "11hp93gqk7m64h84q5hndzlwj4w6hl0cbmzrk2pkdn04ikm2zj4v"))))
2415 (build-system gnu-build-system)
2416 (arguments
2417 (list #:configure-flags
2418 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")))
2419 (native-inputs
2420 (list autoconf
2421 automake
2422 `(,glib "bin") ; for glib-genmarshal, etc.
2423 gnome-common
2424 gtk-doc/stable
2425 intltool
2426 pkg-config
2427 libtool
2428 which))
2429 (inputs
2430 (list libxml2))
2431 (propagated-inputs
2432 ;; The gdl-3.0.pc file 'Requires' GTK+.
2433 (list gtk+))
2434 (home-page "https://gitlab.gnome.org/GNOME/gdl/")
2435 (synopsis "GNOME docking library")
2436 (description "This library provides docking features for gtk+.")
2437 (license license:lgpl2.1+)))
2438
2439;;; A minimal variant used to break a cycle with Inkscape.
2440(define-public gdl-minimal
2441 (package/inherit gdl
2442 (name "gdl-minimal")
2443 (arguments
2444 (substitute-keyword-arguments arguments
2445 ((#:phases phases #~%standard-phases)
2446 #~(modify-phases #$phases
2447 (add-after 'unpack 'disable-doc-generation
2448 ;; XXX: There is no easy way to disable generating the
2449 ;; documentation.
2450 (lambda _
2451 (substitute* "configure.in"
2452 (("GTK_DOC_CHECK.*") "")
2453 (("docs/.*") ""))
2454 (substitute* "Makefile.am"
2455 (("gdl docs po") "gdl po"))))))))
2456 (native-inputs (alist-delete "gtk-doc" (package-native-inputs gdl)))))
2457
2458(define-public libgnome-keyring
2459 (package
2460 (name "libgnome-keyring")
2461 (version "3.12.0")
2462 (source (origin
2463 (method url-fetch)
2464 (uri (string-append "mirror://gnome/sources/" name "/"
2465 (version-major+minor version) "/"
2466 name "-" version ".tar.xz"))
2467 (sha256
2468 (base32
2469 "10vpjhgbjm7z2djy04qakd02qlzpd02xnbfjhk2aqwjzn3xpihf4"))))
2470 (build-system gnu-build-system)
2471 (inputs
2472 (list libgcrypt dbus))
2473 (native-inputs
2474 (list pkg-config
2475 `(,glib "bin") intltool))
2476 (propagated-inputs
2477 ;; Referred to in .h files and .pc.
2478 (list glib))
2479 (home-page "https://www.gnome.org")
2480 (synopsis "Accessing passwords from the GNOME keyring")
2481 (description
2482 "Client library to access passwords from the GNOME keyring.")
2483
2484 ;; Though a couple of files are LGPLv2.1+.
2485 (license license:lgpl2.0+)))
2486
2487(define-public gnome-keyring
2488 (package
2489 (name "gnome-keyring")
2490 (version "48.0")
2491 (source (origin
2492 (method url-fetch)
2493 (uri (string-append "mirror://gnome/sources/" name "/"
2494 (version-major version) "/"
2495 name "-" version ".tar.xz"))
2496 (sha256
2497 (base32
2498 "17gbzfj2rgbp1yb28mnxs3ngxmyqa26bwi4bkff3zsp9434ih1gj"))))
2499 (build-system meson-build-system)
2500 (arguments
2501 (list
2502 #:configure-flags
2503 #~(list
2504 (string-append "-Dpkcs11-config="
2505 #$output "/share/p11-kit/modules/")
2506 (string-append "-Dpkcs11-modules="
2507 #$output "/share/p11-kit/modules/")
2508 "-Dsystemd=disabled")
2509 #:parallel-tests? #f ; XXX: concurrency in dbus tests
2510 #:phases
2511 #~(modify-phases %standard-phases
2512 (delete 'check)
2513 (add-after 'install 'check
2514 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
2515 (when tests?
2516 (setenv "HOME" "/tmp") ;some tests require a writable HOME
2517 (setenv "XDG_DATA_DIRS" (string-append (getenv "XDG_DATA_DIRS")
2518 ":" #$output "/share"))
2519 (invoke "dbus-run-session" "meson" "test" "-j"
2520 (if parallel-tests?
2521 (number->string (parallel-job-count))
2522 "1"))))))))
2523 (inputs
2524 (list dbus
2525 gcr-3
2526 libgcrypt
2527 linux-pam
2528 openssh))
2529 (native-inputs
2530 (list dbus ;for tests
2531 docbook-xml-4.3
2532 docbook-xml
2533 docbook-xsl
2534 gettext-minimal
2535 `(,glib "bin")
2536 glib ;for m4 macros
2537 libselinux
2538 libxslt ;for documentation
2539 pkg-config
2540 python-wrapper)) ;for tests
2541 (propagated-inputs
2542 (list gcr-3))
2543
2544 ;; XXX: There are concerning test failures on i686-linux and other 32-bit
2545 ;; platforms: <https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/124>.
2546 (supported-systems %64bit-supported-systems)
2547
2548 (home-page "https://www.gnome.org")
2549 (synopsis "Daemon to store passwords and encryption keys")
2550 (description
2551 "@command{gnome-keyring} is a program that keeps passwords and other
2552secrets for users. It is run as a daemon in the session, similar to
2553@command{ssh-agent}, and other applications locate it via an environment
2554variable or D-Bus.
2555
2556The program can manage several keyrings, each with its own master password,
2557and there is also a session keyring which is never stored to disk, but
2558forgotten when the session ends.")
2559 (license license:lgpl2.1+)))
2560
2561(define-public evince
2562 (package
2563 (name "evince")
2564 (version "48.4")
2565 (source
2566 (origin
2567 (method url-fetch)
2568 (uri (string-append "mirror://gnome/sources/evince/"
2569 (version-major version) "/"
2570 "evince-" version ".tar.xz"))
2571 (sha256
2572 (base32 "0s46prlb55ghnz136ra8whmrirydmz08lzjrrpa3arl8cb3cb5pj"))))
2573 (build-system meson-build-system)
2574 (arguments
2575 `(#:glib-or-gtk? #t
2576 #:build-type "release"
2577 #:configure-flags '("-Dnautilus=false"
2578 "-Dps=enabled")
2579 #:phases
2580 (modify-phases %standard-phases
2581 (add-after 'unpack 'skip-gtk-update-icon-cache
2582 ;; Don't create 'icon-theme.cache'.
2583 (lambda _
2584 (substitute* "meson.build"
2585 (("(glib_compile_schemas|gtk_update_icon_cache|\
2586update_desktop_database): true" _ tool)
2587 (string-append tool ": false"))))))))
2588 (inputs
2589 (list libarchive
2590 libgxps
2591 libspectre
2592 djvulibre
2593 ghostscript
2594 poppler
2595 libtiff
2596 texlive-libkpathsea ; for DVI support
2597 gnome-desktop
2598 gsettings-desktop-schemas
2599 gspell
2600 libgnome-keyring
2601 adwaita-icon-theme
2602 gdk-pixbuf
2603 at-spi2-core
2604 pango
2605 gtk+
2606 glib
2607 libxml2
2608 libsm
2609 libice
2610 shared-mime-info
2611 dconf
2612 libcanberra
2613 libsecret
2614 libhandy))
2615 (native-inputs
2616 (list itstool
2617 gettext-minimal
2618 gi-docgen
2619 `(,glib "bin")
2620 gobject-introspection
2621 pkg-config
2622 libxml2))
2623 (home-page "https://wiki.gnome.org/Apps/Evince")
2624 (synopsis "GNOME's document viewer")
2625 (description
2626 "Evince is a document viewer for multiple document formats. It
2627currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal
2628of Evince is to replace the multiple document viewers that exist
2629on the GNOME Desktop with a single simple application.")
2630 (license license:gpl2+)))
2631
2632(define-public papers
2633 (package
2634 (name "papers")
2635 (version "50.0")
2636 (source (origin
2637 (method url-fetch)
2638 (uri (string-append "mirror://gnome/sources/papers/"
2639 (version-major version) "/"
2640 "papers-" version ".tar.xz"))
2641 (sha256
2642 (base32 "01dws72fb19i9jwp3r0khr7ym2ns51fifdzafb5dcr5w8vmj06rh"))))
2643 (build-system meson-build-system)
2644 (arguments
2645 (list
2646 #:glib-or-gtk? #t
2647 #:configure-flags
2648 #~(list (string-append "-Dc_link_args=-Wl,-rpath=" #$output "/lib"))
2649 #:imported-modules `(,@%meson-build-system-modules
2650 ,@%cargo-build-system-modules)
2651 #:modules `(((guix build cargo-build-system) #:prefix cargo:)
2652 (guix build meson-build-system)
2653 (guix build utils))
2654 #:phases
2655 #~(modify-phases %standard-phases
2656 (add-after 'unpack 'prepare-for-build
2657 (lambda _
2658 (substitute* "meson.build"
2659 (("gtk_update_icon_cache: true")
2660 "gtk_update_icon_cache: false")
2661 (("update_desktop_database: true")
2662 "update_desktop_database: false"))
2663 (substitute* "meson.build"
2664 (("'Cargo.lock',")
2665 ""))
2666 (delete-file "Cargo.lock")))
2667 (add-after 'configure 'prepare-cargo-build-system
2668 (lambda args
2669 (for-each
2670 (lambda (phase)
2671 (format #t "Running cargo phase: ~a~%" phase)
2672 (apply (assoc-ref cargo:%standard-phases phase)
2673 #:vendor-dir "vendor"
2674 #:cargo-target #$(cargo-triplet)
2675 args))
2676 '(unpack-rust-crates
2677 configure
2678 check-for-pregenerated-files
2679 patch-cargo-checksums))
2680
2681 (setenv "RUSTFLAGS"
2682 (string-append (or (getenv "RUSTFLAGS") "")
2683 " -C link-arg=-Wl,-rpath,"
2684 #$output "/lib")))))))
2685 (native-inputs
2686 (cons* blueprint-compiler
2687 gettext-minimal
2688 `(,glib "bin")
2689 gobject-introspection
2690 gi-docgen
2691 itstool
2692 pkg-config
2693 rust
2694 `(,rust "cargo")
2695 (or (and=> (%current-target-system)
2696 (compose list make-rust-sysroot))
2697 '())))
2698 (inputs
2699 (cons* appstream
2700 djvulibre
2701 exempi
2702 gtk
2703 libadwaita
2704 libarchive
2705 libspelling
2706 libtiff
2707 nautilus ; for nautilus extension
2708 poppler
2709 zlib
2710 (cargo-inputs 'papers)))
2711 (home-page "https://apps.gnome.org/Papers")
2712 ;; TODO: drop “new” when updating to GNOME 49 or newer.
2713 (synopsis "GNOME's new document viewer")
2714 (description "Papers is a document viewer capable of displaying multiple
2715and single page document formats like PDF and DejaVu.")
2716 (license license:gpl2+)))
2717
2718(define-public gsettings-desktop-schemas
2719 (package
2720 (name "gsettings-desktop-schemas")
2721 (version "49.1")
2722 (source
2723 (origin
2724 (method url-fetch)
2725 (uri (string-append "mirror://gnome/sources/" name "/"
2726 (version-major version) "/"
2727 name "-" version ".tar.xz"))
2728 (sha256
2729 (base32
2730 "0qqfxml3kqg87ly5w8rhqalin6qv20jcn2gqkdmhga75sn1pyykp"))))
2731 (build-system meson-build-system)
2732 (arguments
2733 `(#:phases (modify-phases %standard-phases
2734 (add-after 'unpack 'patch-schemas
2735 (lambda* (#:key inputs #:allow-other-keys)
2736 (substitute* (find-files "schemas"
2737 "\\.gschema\\.xml\\.in$")
2738 ;; Provide the correct file name of the default
2739 ;; GNOME background, 'adwaita-timed.xml'.
2740 (("@datadir@/backgrounds/gnome")
2741 (search-input-directory inputs
2742 "/share/backgrounds/gnome"))
2743 ;; Do not reference fonts, that may not exist.
2744 (("'Source Code Pro 10'") "'Monospace 11'")))))))
2745 (inputs (list glib gnome-backgrounds gobject-introspection))
2746 (native-inputs (list gettext-minimal
2747 `(,glib "bin") ;glib-compile-schemas, etc.
2748 gobject-introspection
2749 pkg-config
2750 python)) ;for build-aux/meson/post-install.py
2751 (home-page "https://launchpad.net/gsettings-desktop-schemas")
2752 (synopsis "GNOME settings for various desktop components")
2753 (description "Gsettings-desktop-schemas contains a collection of GSettings
2754schemas for settings shared by various components of the GNOME desktop.")
2755 (license license:lgpl2.1+)))
2756
2757(define-public python-liblarch
2758 ;; The merge request replacing nose with pytest has not been released yet.
2759 ;; Temporarily use a git snapshot.
2760 (let ((commit "fe06860ea6f1cd339b5b38485879ec5d9512698c")
2761 (revision "0"))
2762 (package
2763 (name "python-liblarch")
2764 (version (git-version "3.2.0" revision commit))
2765 (source
2766 (origin
2767 (method git-fetch)
2768 (uri (git-reference
2769 (url "https://github.com/getting-things-gnome/liblarch")
2770 (commit commit)))
2771 (file-name (git-file-name name version))
2772 (sha256
2773 (base32 "1hvwhqhanwkmavnqxbl276nncvnrhgz92pa8z417d8bk3cirmj0b"))))
2774 (build-system pyproject-build-system)
2775 (arguments
2776 (list
2777 #:phases
2778 #~(modify-phases %standard-phases
2779 (add-before 'check 'start-xserver
2780 (lambda* (#:key inputs #:allow-other-keys)
2781 (let ((xorg-display ":1"))
2782 (system (string-join
2783 (list (search-input-file inputs "/bin/Xvfb")
2784 xorg-display "&")
2785 " "))
2786 (setenv "DISPLAY" xorg-display))))
2787 (replace 'check
2788 (lambda* (#:key tests? test-flags #:allow-other-keys)
2789 (when tests?
2790 (invoke "./run-tests")))))))
2791 (native-inputs (list python-pytest python-setuptools xorg-server-for-tests))
2792 (inputs (list gtk+))
2793 (propagated-inputs (list python-pygobject-3.50))
2794 (home-page "https://getting-things-gnome.github.io/liblarch")
2795 (synopsis "Library to easily handle complex data structures")
2796 (description
2797 "Liblarch is a Python library built to easily handle data structures such
2798as lists, trees and acyclic graphs. There's also a GTK binding that will
2799allow you to use your data structure in a @code{Gtk.Treeview}.
2800
2801Liblarch support multiple views of one data structure and complex filtering.
2802That way, you have a clear separation between your data themselves (Model)
2803and how they are displayed (View).")
2804 (license license:lgpl3+))))
2805
2806(define-public gtg
2807 (package
2808 (name "gtg")
2809 (version "0.6")
2810 (source
2811 (origin
2812 (method git-fetch)
2813 (uri (git-reference
2814 (url "https://github.com/getting-things-gnome/gtg")
2815 (commit (string-append "v" version))))
2816 (file-name (git-file-name name version))
2817 (sha256
2818 (base32 "1wcivqp4z3a2jdr2wdrldzwy9v6hlfp5sk0pmh80znlgvl7q3jiv"))))
2819 (build-system meson-build-system)
2820 (arguments
2821 (list
2822 #:glib-or-gtk? #t
2823 #:imported-modules (append %meson-build-system-modules
2824 %pyproject-build-system-modules)
2825 #:modules '((guix build meson-build-system)
2826 ((guix build pyproject-build-system) #:prefix py:)
2827 (guix build utils))
2828 #:phases
2829 #~(modify-phases %standard-phases
2830 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
2831 (lambda* (#:key inputs outputs #:allow-other-keys)
2832 (wrap-program (search-input-file outputs "bin/gtg")
2833 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
2834 ,(py:site-packages inputs outputs)))
2835 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
2836 (native-inputs
2837 (list desktop-file-utils
2838 gettext-minimal
2839 `(,glib "bin")
2840 gobject-introspection
2841 itstool
2842 pkg-config
2843 python))
2844 (inputs
2845 (list bash-minimal
2846 (librsvg-for-system)
2847 gsettings-desktop-schemas
2848 gtk+
2849 gtksourceview-4
2850 pango
2851 python
2852 python-dbus
2853 python-liblarch
2854 python-lxml
2855 python-pycairo
2856 python-pygobject
2857 python-pyxdg))
2858 (home-page "https://wiki.gnome.org/Apps/GTG")
2859 (synopsis "Personal organizer for the GNOME desktop")
2860 (description
2861 "Getting Things GNOME! (GTG) is a personal tasks and TODO list items
2862organizer for the GNOME desktop environment inspired by the Getting Things
2863Done (GTD) methodology. GTG is designed with flexibility, adaptability,
2864and ease of use in mind so it can be used as more than just GTD software.
2865GTG is intended to help you track everything you need to do and need to
2866know, from small tasks to large projects.")
2867 (license license:gpl3+)))
2868
2869(define-public icon-naming-utils
2870 (package
2871 (name "icon-naming-utils")
2872 (version "0.8.90")
2873 (source
2874 (origin
2875 (method url-fetch)
2876 (uri (string-append "https://tango.freedesktop.org/releases/icon-naming-utils-"
2877 version ".tar.bz2"))
2878 (sha256
2879 (base32
2880 "1mc3v28fdfqanx3lqx233vcr4glb4c2376k0kx2v91a4vxwqcdxi"))))
2881 (build-system gnu-build-system)
2882 (inputs
2883 (list perl perl-xml-simple))
2884 (arguments
2885 '(#:phases
2886 (modify-phases %standard-phases
2887 (add-after 'install 'set-load-paths
2888 ;; Tell 'icon-name-mapping' where XML::Simple is.
2889 (lambda* (#:key outputs #:allow-other-keys)
2890 (let* ((out (assoc-ref outputs "out"))
2891 (prog (string-append out "/libexec/icon-name-mapping")))
2892 (wrap-program
2893 prog
2894 `("PERL5LIB" = ,(list (getenv "PERL5LIB")))))
2895 #t)))))
2896 (home-page "http://tango.freedesktop.org/Standard_Icon_Naming_Specification")
2897 (synopsis
2898 "Utility to implement the Freedesktop Icon Naming Specification")
2899 (description
2900 "To help with the transition to the Freedesktop Icon Naming
2901Specification, the icon naming utility maps the icon names used by the
2902GNOME and KDE desktops to the icon names proposed in the specification.")
2903 (license license:lgpl2.1+)))
2904
2905(define-public adwaita-icon-theme-legacy
2906 ;; Copied from [email protected]. The adwaita-icon-theme package
2907 ;; ships (introduced in 46.2) an index.theme that inherits from
2908 ;; AdwaitaLegacy, with the expectation that distributions may choose to make
2909 ;; it a dependency of Adwaita for compatibility purposes.
2910 (package
2911 (name "adwaita-icon-theme-legacy")
2912 (version "46.2")
2913 (source (origin
2914 (method url-fetch)
2915 (uri (string-append "mirror://gnome/sources/" name "/"
2916 (version-major version) "/"
2917 name "-" version ".tar.xz"))
2918 (sha256
2919 (base32 "1d1gyacqy7rf9vbljwhqwdkxbyszn5avfcw8s5r4p9c9hpsq112l"))))
2920 (build-system meson-build-system)
2921 (arguments
2922 (list #:phases
2923 #~(modify-phases %standard-phases
2924 (add-after 'unpack 'patch-meson
2925 ;; Don't create 'icon-theme.cache'.
2926 (lambda _ (substitute* "meson.build"
2927 (("gtk4?-update-icon-cache") "true")))))))
2928 (home-page "https://gitlab.gnome.org/GNOME/adwaita-icon-theme")
2929 (synopsis "Legacy GNOME icon theme")
2930 (description
2931 "Legacy Adwaita icon theme. This provides GNOME's \"old-style\" fullcolor
2932icons, for compatibility with applications that request icons following the
2933Freedesktop Icon Naming Specification.")
2934 (license (list license:lgpl3 license:cc-by-sa3.0))))
2935
2936(define-public adwaita-icon-theme
2937 (package
2938 (name "adwaita-icon-theme")
2939 (version "49.0")
2940 (source (origin
2941 (method url-fetch)
2942 (uri (string-append "mirror://gnome/sources/" name "/"
2943 (version-major version) "/"
2944 name "-" version ".tar.xz"))
2945 (sha256
2946 (base32
2947 "0p3mj6bl8wp1cri2qdszqrqqs47irh7qvajr5yaaly5js5hn85k5"))))
2948 (build-system meson-build-system)
2949 (arguments
2950 (list #:phases
2951 #~(modify-phases %standard-phases
2952 (add-after 'unpack 'patch-meson
2953 ;; Don't create 'icon-theme.cache'.
2954 (lambda _
2955 (substitute* "meson.build"
2956 (("gtk4?-update-icon-cache") "true")))))))
2957 ;; The Adwaita icon theme inherits from both AdwaitaLegacy and hicolor,
2958 ;; per its index.theme file ("Inherits=AdwaitaLegacy,hicolor"); propagate
2959 ;; them so the theme is always fully defined.
2960 (propagated-inputs (list adwaita-icon-theme-legacy hicolor-icon-theme))
2961 (home-page "https://gitlab.gnome.org/GNOME/adwaita-icon-theme")
2962 (synopsis "GNOME icon theme")
2963 (description "Icons for the GNOME desktop.")
2964 (license (list license:lgpl3 license:cc-by-sa3.0)))) ;dual-licensed
2965
2966(define-public tango-icon-theme
2967 (package
2968 (name "tango-icon-theme")
2969 (version "0.8.90")
2970 (source (origin
2971 (method url-fetch)
2972 (uri (string-append "http://tango.freedesktop.org/releases/"
2973 "tango-icon-theme-" version ".tar.bz2"))
2974 (sha256
2975 (base32
2976 "034r9s944b4yikyfgn602yv7s54wdzlq0qfvqh52b9x6kbx08h79"))))
2977 (build-system gnu-build-system)
2978 (native-inputs
2979 (list icon-naming-utils intltool imagemagick pkg-config))
2980 (home-page "http://tango-project.org/")
2981 (synopsis "Tango icon theme")
2982 (description "This is an icon theme that follows the Tango visual
2983guidelines.")
2984 (license license:public-domain)))
2985
2986(define-public system-config-printer
2987 (package
2988 (name "system-config-printer")
2989 (version "1.5.16")
2990 (source
2991 (origin
2992 (method url-fetch)
2993 (uri (string-append
2994 "https://github.com/OpenPrinting/system-config-printer/releases/"
2995 "download/v" version
2996 "/system-config-printer-" version ".tar.xz"))
2997 (sha256
2998 (base32 "1z9pvgifj5c87csnqz10qybbcayh3ak9m606f63ifkvyjh4q9jnb"))))
2999 (build-system glib-or-gtk-build-system)
3000 (arguments
3001 (list
3002 #:imported-modules (append %glib-or-gtk-build-system-modules
3003 %pyproject-build-system-modules)
3004 #:modules '((guix build glib-or-gtk-build-system)
3005 ((guix build pyproject-build-system) #:prefix py:)
3006 (guix build utils))
3007 #:phases
3008 #~(modify-phases %standard-phases
3009 (add-after 'unpack 'patch-build-files
3010 (lambda _
3011 (substitute* "configure.ac"
3012 (("AC_INIT.*" all)
3013 (string-append all "\nAC_CONFIG_MACRO_DIR([m4])\n"))
3014 ;; XXX: AX macros appear unavailable
3015 (("AX_REQUIRE_DEFINED.*") ""))
3016 ;; The Makefile generates some scripts, so set a valid shebang
3017 (substitute* "Makefile.am"
3018 (("/bin/bash") (which "bash")))
3019 (delete-file "configure")))
3020 #$@(if (this-package-native-input "config")
3021 #~((add-after 'unpack 'update-config-scripts
3022 (lambda* (#:key native-inputs inputs #:allow-other-keys)
3023 (for-each (lambda (file)
3024 (install-file
3025 (search-input-file
3026 (or native-inputs inputs)
3027 (string-append "/bin/" file)) "."))
3028 '("config.guess" "config.sub")))))
3029 #~())
3030 (add-after 'install 'add-install-to-pythonpath
3031 (assoc-ref py:%standard-phases 'add-install-to-pythonpath))
3032 (add-after 'add-install-to-pythonpath 'wrap-for-python
3033 (assoc-ref py:%standard-phases 'wrap))
3034 (add-after 'install 'wrap
3035 (lambda _
3036 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
3037 (for-each
3038 (lambda (program)
3039 (wrap-program program
3040 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
3041 (map (lambda (name)
3042 (string-append #$output "/bin/" name))
3043 '("system-config-printer"
3044 "system-config-printer-applet"
3045 "install-printerdriver"
3046 "scp-dbus-service")))))))))
3047 (inputs
3048 (list gsettings-desktop-schemas
3049 gobject-introspection
3050 python
3051 cups
3052 gtk+
3053 python-dbus
3054 python-pygobject
3055 python-pycups
3056 python-requests
3057 python-pycairo
3058 libnotify
3059 packagekit))
3060 (native-inputs
3061 (append
3062 (if (target-riscv64?)
3063 (list config)
3064 '())
3065 (list pkg-config
3066 desktop-file-utils
3067 glib
3068 autoconf
3069 automake
3070 gettext-minimal
3071 xmlto
3072 docbook-xml-4.1.2
3073 docbook-xsl
3074 libxml2)))
3075 (home-page "https://github.com/zdohnal/system-config-printer")
3076 (synopsis "CUPS administration tool")
3077 (description
3078 "system-config-printer is a CUPS administration tool. It's written in
3079Python using GTK+, and uses the @acronym{IPP, Internet Printing Protocol} when
3080configuring CUPS.")
3081 (license license:gpl2+)))
3082
3083(define-public hicolor-icon-theme
3084 (package
3085 (name "hicolor-icon-theme")
3086 (version "0.18")
3087 (source
3088 (origin
3089 (method url-fetch)
3090 (uri (string-append "https://icon-theme.freedesktop.org/releases/"
3091 "hicolor-icon-theme-" version ".tar.xz"))
3092 (sha256
3093 (base32
3094 "1mw1rz1khlj30ywr1iiarx497zayyzwmrjnb8nxn9gx31al503nv"))))
3095 (build-system meson-build-system)
3096 (arguments
3097 `(#:tests? #f)) ; no check target
3098 (home-page "https://icon-theme.freedesktop.org/releases/")
3099 (synopsis
3100 "Freedesktop icon theme")
3101 (description
3102 "The default fallback theme used by XDG icon-theme implementations.")
3103 (license license:gpl2)))
3104
3105(define-public libnotify
3106 (package
3107 (name "libnotify")
3108 (version "0.8.8")
3109 (source
3110 (origin
3111 (method url-fetch)
3112 (uri (string-append "mirror://gnome/sources/" name "/"
3113 (version-major+minor version) "/"
3114 name "-" version ".tar.xz"))
3115 (sha256
3116 (base32
3117 "1pgxbfrw8vhgshl5dl51wl3ir91g7a1g84ynpapbab6w37v0whi3"))))
3118 (outputs '("out" "doc"))
3119 (build-system meson-build-system)
3120 (arguments
3121 (list
3122 ;; The recently added tests would require a notification daemon, which
3123 ;; introduce a circular dependency with libnotify.
3124 #:tests? #f
3125 ;; Also disable tests via configure-flags, as building them requires
3126 ;; gtk, which would introduce yet another circle…
3127 #:configure-flags #~(list "-Dtests=false")
3128 #:phases
3129 #~(modify-phases %standard-phases
3130 (add-after 'install 'move-doc
3131 (lambda _
3132 (let* ((old (string-append #$output "/share/doc"))
3133 (new (string-append #$output:doc "/share/doc")))
3134 (mkdir-p (dirname new))
3135 (rename-file old new)))))))
3136 (propagated-inputs (list gdk-pixbuf glib)) ;in Requires of libnotify.pc.
3137 (inputs (list libpng))
3138 (native-inputs
3139 (list pkg-config
3140 `(,glib "bin")
3141 gobject-introspection
3142
3143 ;; For the documentation.
3144 gi-docgen
3145 gtk-doc/stable
3146 libxslt
3147 docbook-xsl))
3148 (home-page "https://gitlab.gnome.org/GNOME/libnotify/")
3149 (synopsis "GNOME desktop notification library")
3150 (description
3151 "Libnotify is a library that sends desktop notifications to a
3152notification daemon, as defined in the Desktop Notifications spec. These
3153notifications can be used to inform the user about an event or display
3154some form of information without getting in the user's way.")
3155 (license license:lgpl2.1+)))
3156
3157(define-public libpeas
3158 (package
3159 (name "libpeas")
3160 (version "1.36.0")
3161 (source
3162 (origin
3163 (method url-fetch)
3164 (uri (string-append "mirror://gnome/sources/" name "/"
3165 (version-major+minor version) "/"
3166 name "-" version ".tar.xz"))
3167 (sha256
3168 (base32
3169 "0k3v4c9xs7pxpckkagl9ba70nlxl2n23w6ixc8bqd3ndrk1bjz19"))))
3170 (build-system meson-build-system)
3171 (arguments
3172 (list
3173 #:configure-flags #~'("-Dvapi=true" "-Dgtk_doc=true")
3174 #:phases
3175 #~(modify-phases %standard-phases
3176 (add-before 'check 'start-xserver
3177 (lambda* (#:key inputs #:allow-other-keys)
3178 (let ((disp ":1"))
3179 (setenv "DISPLAY" disp)
3180 (setenv "XDG_CACHE_HOME" "/tmp/xdg-cache")
3181 (setenv "XDG_CONFIG_HOME" "/tmp")
3182 ;; Tests require a running X server.
3183 (system (format #f "~a ~a &"
3184 (search-input-file inputs "bin/Xvfb")
3185 disp))))))))
3186 (inputs
3187 (list glade3
3188 python
3189 python-pygobject-3.50))
3190 (native-inputs
3191 (list pkg-config
3192 gettext-minimal
3193 gi-docgen
3194 `(,glib "bin")
3195 gobject-introspection
3196 xorg-server-for-tests
3197 vala))
3198 (propagated-inputs
3199 ;; In "Requires" of the .pc files.
3200 (list glib gtk+ gobject-introspection))
3201 (home-page "https://wiki.gnome.org/Projects/Libpeas")
3202 (synopsis "GObject plugin system")
3203 (description
3204 "Libpeas is a gobject-based plugin engine, targeted at giving every
3205application the chance to assume its own extensibility. It also has a set of
3206features including, but not limited to: multiple extension points; on-demand
3207(lazy) programming language support for C, Python and JS; simplicity of the
3208API.")
3209 (license license:lgpl2.0+)))
3210
3211(define-public libpeas-2
3212 (package
3213 (inherit libpeas)
3214 (name "libpeas")
3215 (version "2.2.1")
3216 (source
3217 (origin
3218 (method url-fetch)
3219 (uri (string-append "mirror://gnome/sources/" name "/"
3220 (version-major+minor version) "/"
3221 name "-" version ".tar.xz"))
3222 (sha256
3223 (base32
3224 "1214is15w2fnp8nj0pgs9jla4h676zq8sism6zgnw01pnj4wm7jq"))))
3225 (arguments
3226 (substitute-keyword-arguments arguments
3227 ((#:configure-flags flags #~(list))
3228 #~(cons* "-Dlua51=false" #$flags))
3229 ((#:phases phases '%standard-phases)
3230 #~(modify-phases #$phases
3231 (add-after 'unpack 'skip-problematic-tests
3232 (lambda _
3233 ;; XXX: Even with the workaround used in the check phase, it
3234 ;; looks like the libraries are doubly loaded because of the
3235 ;; LD_LIBRARY_PATH set up by 'meson test', which breaks the
3236 ;; loading of the extensions ('cannot register existing type
3237 ;; 'PeasExtensionBase', then it hangs).
3238 (substitute* "tests/libpeas/meson.build"
3239 ((".*'extension-gjs', .*") "")
3240 ((".*'extension-py', .*") ""))))
3241 (delete 'check)
3242 (add-after 'install 'check
3243 (lambda args
3244 ;; This workaround is made necessary by a custom patch to our
3245 ;; gobject-introspection package that causes it to always use
3246 ;; absolute paths for the shared objects referenced by the
3247 ;; typelibs.
3248 (let ((src "tests/libpeas/introspection/libintrospection-2.so"))
3249 (install-file src (string-append #$output "/lib/"))
3250 (apply (assoc-ref %standard-phases 'check) args)
3251 (delete-file (string-append #$output "/lib/"
3252 (basename src))))))))))
3253 (inputs
3254 (list gjs
3255 ;; lua-5.1
3256 ;; lua5.1-lgi
3257 mozjs
3258 python
3259 python-pygobject))))
3260
3261(define-public gtkglext
3262 (package
3263 (name "gtkglext")
3264 (version "1.2.0")
3265 (source (origin
3266 (method url-fetch)
3267 (uri (string-append "mirror://sourceforge/gtkglext/gtkglext/"
3268 version "/gtkglext-" version ".tar.gz"))
3269 (sha256
3270 (base32 "1ya4d2j2aacr9ii5zj4ac95fjpdvlm2rg79mgnk7yvl1dcy3y1z5"))
3271 (patches (search-patches
3272 "gtkglext-disable-disable-deprecated.patch"))))
3273 (build-system gnu-build-system)
3274 (arguments
3275 `(#:phases
3276 (modify-phases %standard-phases
3277 ;; Fix a collision between a local variable and a definition from
3278 ;; glibc's string.h.
3279 (add-after 'unpack 'fix-collision
3280 (lambda _
3281 (substitute* "gdk/gdkglshapes.c"
3282 ((" index") " triangle_index"))
3283 #t)))))
3284 (inputs (list gtk+-2 mesa glu libx11 libxt))
3285 (native-inputs (list pkg-config
3286 `(,glib "bin")))
3287 (propagated-inputs (list pangox-compat))
3288 (home-page "https://projects.gnome.org/gtkglext")
3289 (synopsis "OpenGL extension to GTK+")
3290 (description "GtkGLExt is an OpenGL extension to GTK+. It provides
3291additional GDK objects which support OpenGL rendering in GTK+ and GtkWidget
3292API add-ons to make GTK+ widgets OpenGL-capable.")
3293 (license license:lgpl2.1+)))
3294
3295(define-public glade3
3296 (package
3297 (name "glade")
3298 (version "3.40.0")
3299 (source (origin
3300 (method url-fetch)
3301 (uri (string-append "mirror://gnome/sources/" name "/"
3302 (version-major+minor version) "/"
3303 name "-" version ".tar.xz"))
3304 (sha256
3305 (base32
3306 "171x7vshhw0nqgnhkcaqfylpr5qrmhclwmkva6wjm5s9m2pavj9i"))))
3307 (build-system meson-build-system)
3308 (arguments
3309 (list
3310 #:glib-or-gtk? #t
3311 #:phases
3312 #~(modify-phases %standard-phases
3313 (add-after 'unpack 'skip-gtk-update-icon-cache
3314 ;; Don't create 'icon-theme.cache'.
3315 (lambda _
3316 (substitute* "meson_post_install.py"
3317 (("gtk-update-icon-cache") "true"))))
3318 (add-after 'unpack 'skip-modules-test
3319 ;; This test fails with 'GLib-GObject-FATAL-CRITICAL: cannot
3320 ;; register existing type 'GIRepository' since the GNOME 49
3321 ;; upgrades.
3322 (lambda _
3323 (substitute* "tests/meson.build"
3324 ((".*'modules', .*") ""))))
3325 (add-before 'check 'pre-check
3326 (lambda _
3327 (setenv "HOME" "/tmp")
3328 ;; Tests require a running X server.
3329 (system "Xvfb :1 &")
3330 (setenv "DISPLAY" ":1"))))))
3331 (inputs
3332 (append
3333 ;; GJS depends on Rust so remove the GJS dependency on other platforms.
3334 (if (supported-package? gjs)
3335 (list gjs)
3336 '())
3337 (list gtk+ libxml2)))
3338 (native-inputs
3339 (list at-spi2-core ;for tests
3340 docbook-xml-4.2
3341 docbook-xsl
3342 gettext-minimal
3343 `(,glib "bin")
3344 gobject-introspection
3345 hicolor-icon-theme
3346 itstool
3347 libxslt ;for xsltproc
3348 python
3349 python-pygobject-3.50
3350 pkg-config
3351 xorg-server-for-tests))
3352 (home-page "https://glade.gnome.org")
3353 (synopsis "GTK+ rapid application development tool")
3354 (description "Glade is a rapid application development (RAD) tool to
3355enable quick & easy development of user interfaces for the GTK+ toolkit and
3356the GNOME desktop environment.")
3357 (license license:lgpl2.0+)
3358 (native-search-paths (list (search-path-specification
3359 (variable "GLADE_CATALOG_SEARCH_PATH")
3360 (files '("share/glade/catalogs")))
3361 (search-path-specification
3362 (variable "GLADE_MODULE_SEARCH_PATH")
3363 (files '("lib/glade/modules")))))))
3364
3365(define-public blueprint-compiler
3366 (package
3367 (name "blueprint-compiler")
3368 (version "0.20.4")
3369 (source (origin
3370 (method git-fetch)
3371 (uri (git-reference
3372 (url
3373 "https://gitlab.gnome.org/jwestman/blueprint-compiler")
3374 (commit (string-append "v" version))))
3375 (file-name (string-append name "-" version "-checkout"))
3376 (sha256
3377 (base32
3378 "1kdvmy644dvm2wpmrv96n5vmk3ax0agn9s4ljymkwkv66i0qa3vl"))))
3379 (build-system meson-build-system)
3380 (arguments
3381 (list
3382 #:imported-modules
3383 (append %meson-build-system-modules
3384 %pyproject-build-system-modules)
3385 #:modules
3386 `((guix build meson-build-system)
3387 ((guix build pyproject-build-system) #:prefix py:)
3388 (guix build utils))
3389 #:phases
3390 #~(modify-phases %standard-phases
3391 (add-before 'check 'pre-check
3392 (lambda _
3393 (system "Xvfb :1 &")
3394 (setenv "DISPLAY" ":1")))
3395 (add-after 'install 'wrap-python
3396 (assoc-ref py:%standard-phases 'wrap))
3397 (add-after 'wrap-python 'gi-wrap
3398 (lambda _
3399 (let ((prog (string-append #$output "/bin/blueprint-compiler")))
3400 (wrap-program prog
3401 `("GI_TYPELIB_PATH"
3402 suffix
3403 (,(getenv "GI_TYPELIB_PATH"))))))))))
3404 (native-inputs (list gtk
3405 libadwaita
3406 python
3407 python-pygobject-3.50
3408 xorg-server-for-tests))
3409 (inputs (list python))
3410 (synopsis "Template markup language")
3411 (description
3412 "Blueprint is a markup language for GTK user interfaces. Internally, it
3413compiles to GTKBuilder XML.")
3414 (home-page "https://gitlab.gnome.org/jwestman/blueprint-compiler")
3415 (license license:lgpl3+)))
3416
3417(define-public blueprint-compiler-0.4
3418 (package
3419 (inherit blueprint-compiler)
3420 (name "blueprint-compiler")
3421 (version "0.4.0")
3422 (source (origin
3423 (method git-fetch)
3424 (uri (git-reference
3425 (url
3426 "https://gitlab.gnome.org/jwestman/blueprint-compiler")
3427 (commit (string-append "v" version))))
3428 (file-name (string-append name "-" version "-checkout"))
3429 (sha256
3430 (base32
3431 "0hj7f4xhwjc4x32r3lswwclbw37fw3spy806g4plkmym25hz4ydy"))))
3432 (arguments
3433 (substitute-keyword-arguments arguments
3434 ((#:phases phases)
3435 #~(modify-phases #$phases
3436 (delete 'fix-tests)))))))
3437
3438;;; TODO: Remove when 2027/03 comes.
3439(define-deprecated/public-alias cambalache
3440 (@ (gnu packages gnome-xyz) cambalache))
3441
3442(define-public libcroco
3443 (package
3444 (name "libcroco")
3445 (version "0.6.13")
3446 (source (origin
3447 (method url-fetch)
3448 (uri (string-append "mirror://gnome/sources/" name "/"
3449 (version-major+minor version) "/"
3450 name "-" version ".tar.xz"))
3451 (patches (search-patches "libcroco-CVE-2020-12825.patch"))
3452 (sha256
3453 (base32
3454 "1m110rbj5d2raxcdp4iz0qp172284945awrsbdlq99ksmqsc4zkn"))))
3455 (build-system gnu-build-system)
3456 (native-inputs
3457 (list pkg-config))
3458 (inputs
3459 (list glib libxml2 zlib))
3460 (home-page "https://github.com/GNOME/libcroco")
3461 (synopsis "CSS2 parsing and manipulation library")
3462 (description
3463 "Libcroco is a standalone CSS2 parsing and manipulation library.
3464The parser provides a low level event driven SAC-like API and a CSS object
3465model like API. Libcroco provides a CSS2 selection engine and an experimental
3466XML/CSS rendering engine.")
3467
3468 ;; LGPLv2.1-only.
3469 (license license:lgpl2.1)))
3470
3471(define-public libgsf
3472 (package
3473 (name "libgsf")
3474 (version "1.14.55")
3475 (source (origin
3476 (method url-fetch)
3477 (uri (string-append "mirror://gnome/sources/" name "/"
3478 (version-major+minor version) "/"
3479 name "-" version ".tar.xz"))
3480 (sha256
3481 (base32
3482 "0c91l0l3camxpanpgp634nd68vz3v0jbk9bxs5dfmlsvl6xhmmkl"))))
3483 (build-system glib-or-gtk-build-system)
3484 (outputs '("out" "bin" "doc"))
3485 (arguments
3486 (list #:configure-flags
3487 #~(list
3488 "--disable-static"
3489 "--enable-introspection"
3490 (string-append "--with-gir-dir=" #$output
3491 "/share/gir-"
3492 #$(version-major
3493 (package-version gobject-introspection))
3494 ".0")
3495 (string-append "--with-typelib-dir=" #$output
3496 "/lib/girepository-"
3497 #$(version-major
3498 (package-version gobject-introspection))
3499 ".0")
3500 (string-append "--with-html-dir=" #$output
3501 "/share/gtk-doc/html")
3502 "--with-zlib"
3503 "--with-bz2")))
3504 (native-inputs
3505 (list docbook-xml
3506 gettext-minimal
3507 gobject-introspection
3508 perl
3509 perl-xml-parser
3510 pkg-config
3511 python-wrapper))
3512 (inputs
3513 (list bzip2
3514 gdk-pixbuf
3515 zlib))
3516 (propagated-inputs
3517 (list glib
3518 libxml2))
3519 (synopsis "G Structured File Library")
3520 (description "Libgsf aims to provide an efficient extensible I/O abstraction
3521for dealing with different structured file formats.")
3522 (home-page "https://gitlab.gnome.org/GNOME/libgsf")
3523 (license
3524 (list license:lgpl2.1+ ;library
3525 license:lgpl2.0+)))) ;others
3526
3527(define-public librsvg
3528 (package
3529 (name "librsvg")
3530 (version "2.61.4")
3531 (source (origin
3532 (method url-fetch)
3533 (uri (string-append "mirror://gnome/sources/librsvg/"
3534 (version-major+minor version) "/"
3535 "librsvg-" version ".tar.xz"))
3536 (sha256
3537 (base32
3538 "036afbhd2h4brbd491kmgig0ib1df3s7j9bx8349b3zjs4lfm87w"))))
3539 (build-system meson-build-system)
3540 (outputs '("out" "doc" "debug"))
3541 (arguments
3542 (list
3543 #:configure-flags
3544 #~(list #$@(if (%current-target-system)
3545 #~( ;; g-ir-scanner can't import its modules
3546 ;; and vala currently can't be cross-compiled.
3547 "-Dintrospection=false"
3548 "-Dvala=false"
3549 ;; This is needed when cross-compiling for some
3550 ;; architectures as autoconf and rust disagree about
3551 ;; the target triplet.
3552 (string-append "-Dtriplet="
3553 #$(platform-rust-target
3554 (lookup-platform-by-target
3555 (%current-target-system)))))
3556 #~())
3557 "-Dpixbuf-loader=enabled") ;disabled since 2.61.2
3558 #:imported-modules (append %cargo-build-system-modules
3559 %meson-build-system-modules)
3560 #:modules
3561 '(((guix build cargo-build-system) #:prefix cargo:)
3562 (guix build meson-build-system)
3563 (guix build utils))
3564 #:phases
3565 #~(modify-phases %standard-phases
3566 (add-after 'unpack 'patch-gdk-pixbuf-thumbnailer
3567 (lambda* (#:key inputs #:allow-other-keys)
3568 ;; The gdk-pixbuf-thumbnailer location is assumed to be relative
3569 ;; to librsvg's own installation prefix (see:
3570 ;; https://gitlab.gnome.org/GNOME/librsvg/-/issues/955).
3571 (substitute* "gdk-pixbuf-loader/librsvg.thumbnailer.in"
3572 (("@bindir@/gdk-pixbuf-thumbnailer")
3573 (string-append #$(this-package-input "gdk-pixbuf")
3574 "/bin/gdk-pixbuf-thumbnailer")))))
3575 (add-after 'unpack 'prepare-for-build
3576 (lambda _
3577 ;; Something about the build environment resists building
3578 ;; successfully with the '--locked' flag.
3579 (substitute* "meson/cargo_wrapper.py"
3580 (("\"--locked\",?") ""))
3581 ;; This is needed so Cargo embeds the correct RUNPATH
3582 ;; information to the binaries it produces,
3583 ;; e.g. libpixbufloader_svg.so.
3584 (setenv "RUSTFLAGS"
3585 (string-append "-C link-arg=-Wl,-rpath,"
3586 #$output "/lib"))))
3587 (add-after 'unpack 'prepare-for-tests
3588 (lambda _
3589 (setenv "HOME" "/tmp") ;placate fontconfig errors
3590 ;; Increase reftest tolerance a bit to account for different
3591 ;; libraries like pango, etc.
3592 (setenv "RSVG_TEST_TOLERANCE" "20")
3593 ;; These tests fail even after loosening the tolerance.
3594 (substitute* "rsvg/tests/reference.rs"
3595 ((".*svg1_1_filters_conv_0[24]_f_svg.*") "")
3596 ((".*rtl_tspan_svg.*") ""))))
3597 (add-before 'configure 'pre-configure
3598 (lambda* (#:key outputs #:allow-other-keys)
3599 (substitute* "gdk-pixbuf-loader/meson.build"
3600 ;; By default the gdk-pixbuf loader is installed under
3601 ;; gdk-pixbuf's prefix. Work around that.
3602 (("pixbuf_dep.get_variable.*'gdk_pixbuf_moduledir'.*),")
3603 (format #f "get_option('prefix') / '~a',"
3604 #$%gdk-pixbuf-loaders-directory))
3605 (("pixbuf_dep.get_variable.*'gdk_pixbuf_query_loaders'.*),")
3606 (format #f "'~a'," (which "gdk-pixbuf-query-loaders")))
3607 (("pixbuf_dep.get_variable.*'gdk_pixbuf_cache_file'.*)")
3608 (format #f "prefix / '~a'" #$%gdk-pixbuf-loaders-cache-file)))))
3609 (add-after 'unpack 'prepare-cargo-build-system
3610 (lambda args
3611 (for-each
3612 (lambda (phase)
3613 (format #t "Running cargo phase: ~a~%" phase)
3614 (apply (assoc-ref cargo:%standard-phases phase)
3615 #:cargo-target #$(cargo-triplet)
3616 args))
3617 '(unpack-rust-crates
3618 configure
3619 check-for-pregenerated-files
3620 patch-cargo-checksums))))
3621 (add-after 'install 'sanitize-pkg-config-files
3622 (lambda _
3623 (substitute* (find-files #$output "\\.pc$")
3624 (("^Requires.private:.*") "")))))))
3625 (native-inputs
3626 (append
3627 (list gdk-pixbuf
3628 gi-docgen
3629 `(,glib "bin")
3630 gobject-introspection
3631 pkg-config
3632 python
3633 python-docutils ;for rst2man
3634 rust
3635 rust-cargo-c
3636 vala)
3637 (or (and=> (%current-target-system)
3638 (compose list make-rust-sysroot))
3639 '())))
3640 (inputs
3641 (cons* dav1d
3642 freetype
3643 gobject-introspection
3644 libxml2
3645 pango
3646 (cargo-inputs 'librsvg)))
3647 (propagated-inputs (list cairo gdk-pixbuf glib))
3648 (synopsis "SVG rendering library")
3649 (description "Librsvg is a library to render SVG images to Cairo surfaces.
3650GNOME uses this to render SVG icons. Outside of GNOME, other desktop
3651environments use it for similar purposes. Wikimedia uses it for Wikipedia's SVG
3652diagrams.")
3653 (home-page "https://wiki.gnome.org/LibRsvg")
3654 (license license:lgpl2.1+)))
3655
3656(define-public librsvg-2.40
3657 ;; This is the last version implemented in C.
3658 (package
3659 (inherit librsvg)
3660 (version "2.40.21")
3661 (source (origin
3662 (method url-fetch)
3663 (uri (string-append "mirror://gnome/sources/librsvg/"
3664 (version-major+minor version)
3665 "/librsvg-" version ".tar.xz"))
3666 (sha256
3667 (base32
3668 "1fljkag2gr7c4k5mn798lgf9903xslz8h51bgvl89nnay42qjqpp"))))
3669 (build-system gnu-build-system)
3670 (arguments
3671 (list
3672 #:configure-flags '(list "--disable-static")
3673 #:phases
3674 #~(modify-phases %standard-phases
3675 (add-before 'configure 'pre-configure
3676 (lambda* (#:key inputs #:allow-other-keys)
3677 (substitute* "gdk-pixbuf-loader/Makefile.in"
3678 ;; By default the gdk-pixbuf loader is installed under
3679 ;; gdk-pixbuf's prefix. Work around that.
3680 (("gdk_pixbuf_moduledir = .*$")
3681 (string-append "gdk_pixbuf_moduledir = "
3682 "$(prefix)/lib/gdk-pixbuf-2.0/2.10.0/"
3683 "loaders\n"))
3684 ;; Drop the 'loaders.cache' file, it's in gdk-pixbuf+svg.
3685 (("gdk_pixbuf_cache_file = .*$")
3686 "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))))
3687 (add-before 'check 'fix-test-with-pango-1.50
3688 (lambda _
3689 ;; Changes between pango 1.48 and 1.50 caused the text to be one
3690 ;; pixel lower in the output image compared to the reference.
3691 (substitute* "tests/fixtures/reftests/bugs/587721-text-transform.svg"
3692 (("660\\.9") "659.9"))))
3693 (add-before 'check 'remove-failing-tests
3694 (lambda _
3695 (with-directory-excursion "tests/fixtures/reftests"
3696 (for-each delete-file
3697 '( ;; This test fails on i686:
3698 "svg1.1/masking-path-04-b.svg"
3699 ;; This test fails on armhf:
3700 "svg1.1/masking-mask-01-b.svg"
3701 ;; This test fails on aarch64:
3702 "bugs/777834-empty-text-children.svg"
3703 ;; These two tests fail due to slightly different
3704 ;; text rendering (different kerning or similar),
3705 ;; nothing alarming.
3706 "bugs/340047.svg"
3707 "bugs/749415.svg"
3708 ;; These two tests fail with the update to cairo
3709 ;; version 1.18.0.
3710 "bugs/587721-text-transform.svg"
3711 "svg1.1/masking-path-03-b.svg"))))))))
3712 (native-inputs
3713 (list pkg-config
3714 `(,glib "bin") ; glib-mkenums, etc.
3715 gobject-introspection)) ; g-ir-compiler, etc.
3716 (inputs
3717 (list pango libcroco libxml2-2.11))
3718 (propagated-inputs
3719 ;; librsvg-2.0.pc refers to all of that.
3720 (list cairo gdk-pixbuf glib))
3721 (synopsis "Render SVG files using Cairo (ancient C version)")
3722 (properties '((hidden? . #t)))))
3723
3724(define* (librsvg-for-system #:optional
3725 (system (or (%current-target-system)
3726 (%current-system))))
3727 ;; Since librsvg 2.50 depends on Rust, and Rust is only correctly supported
3728 ;; on x86_64, aarch64 and riscv64 so far, use the ancient C version on other
3729 ;; platforms (FIXME).
3730 (if (supported-package? librsvg)
3731 librsvg
3732 librsvg-2.40))
3733
3734(export librsvg-for-system)
3735
3736(define-public libidl
3737 (package
3738 (name "libidl")
3739 (version "0.8.14")
3740 (source (origin
3741 (method url-fetch)
3742 (uri (string-append "mirror://gnome/sources/libIDL/"
3743 (version-major+minor version) "/"
3744 "libIDL-" version ".tar.bz2"))
3745 (sha256
3746 (base32
3747 "08129my8s9fbrk0vqvnmx6ph4nid744g5vbwphzkaik51664vln5"))))
3748 (build-system gnu-build-system)
3749 (inputs (list glib))
3750 (native-inputs
3751 (list pkg-config flex bison))
3752 (home-page "http://freecode.com/projects/libidl")
3753 (synopsis "Create trees of CORBA Interface Definition Language files")
3754 (description "Libidl is a library for creating trees of CORBA Interface
3755Definition Language (idl) files, which is a specification for defining
3756portable interfaces. libidl was initially written for orbit (the orb from the
3757GNOME project, and the primary means of libidl distribution). However, the
3758functionality was designed to be as reusable and portable as possible.")
3759 (properties `((upstream-name . "libIDL")))
3760 (license license:lgpl2.0+)))
3761
3762(define-public orbit2
3763 (package
3764 (name "orbit2")
3765 (version "2.14.19")
3766 (source (origin
3767 (method url-fetch)
3768 (uri (let ((upstream-name "ORBit2"))
3769 (string-append "mirror://gnome/sources/" upstream-name "/"
3770 (version-major+minor version) "/"
3771 upstream-name "-" version ".tar.bz2")))
3772 (sha256
3773 (base32
3774 "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"))
3775 (patches
3776 (search-patches "orbit2-fix-array-allocation-32bit.patch"))))
3777 (build-system gnu-build-system)
3778 (arguments
3779 (list
3780 ;; The "timeout-server" test hangs when run in parallel.
3781 #:parallel-tests? #f
3782 #:configure-flags
3783 #~'(#$(string-append "CFLAGS=-g -O2"
3784 " -Wno-error=implicit-int"
3785 " -Wno-error=incompatible-pointer-types")
3786 ;; We don't need static libraries, plus they don't build reproducibly
3787 ;; (non-deterministic ordering of .o files in the archive.)
3788 "--disable-static"
3789
3790 ;; The programmer kindly gives us a hook to turn off deprecation
3791 ;; warnings ...
3792 "DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
3793 ;; ... which they then completly ignore !!
3794 #:phases
3795 #~(modify-phases %standard-phases
3796 (add-after 'unpack 'fix-parallel-build
3797 ;; Parallel build fails because of a failed dependency,
3798 ;; https://bugzilla.gnome.org/show_bug.cgi?id=732274
3799 (lambda _
3800 (substitute* "src/services/name/Makefile.am"
3801 (("orbit_name_server_2_DEPENDENCIES = \\$(DEPS) CosNaming.h")
3802 "orbit_name_server_2_DEPENDENCIES = \
3803$(DEPS) CosNaming.h libname-server-2.a"))))
3804 (add-before 'configure 'ignore-deprecations
3805 (lambda _
3806 (substitute* "linc2/src/Makefile.in"
3807 (("-DG_DISABLE_DEPRECATED")
3808 "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))))))
3809 ;; These are required in the installed pkg-config files.
3810 (propagated-inputs (list glib libidl))
3811 (native-inputs (list pkg-config))
3812 (home-page "https://projects.gnome.org/orbit2/")
3813 (synopsis "CORBA 2.4-compliant Object Request Broker")
3814 (description "ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb)
3815featuring mature C, C++ and Python bindings.")
3816 ;; Licence notice is unclear. The Web page simply say "GPL" without giving
3817 ;; a version. SOME of the code files have licence notices for GPLv2+.
3818 ;; The tarball contains files of the text of GPLv2 and LGPLv2.
3819 (license license:gpl2+)
3820 (properties `((upstream-name . "ORBit2")))))
3821
3822(define-public libbonobo
3823 (package
3824 (name "libbonobo")
3825 (version "2.32.1")
3826 (source (origin
3827 (method url-fetch)
3828 (uri (string-append "mirror://gnome/sources/" name "/"
3829 (version-major+minor version)
3830 "/" name "-" version ".tar.bz2"))
3831 (sha256
3832 (base32 "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i"))
3833 (patches (search-patches
3834 "libbonobo-activation-test-race.patch"))))
3835 (build-system gnu-build-system)
3836 (arguments
3837 ;; The programmer kindly gives us a hook to turn off deprecation warnings ...
3838 `(#:configure-flags
3839 '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
3840 ;; ... which they then completly ignore !!
3841 #:phases
3842 (modify-phases %standard-phases
3843 (add-before 'configure 'ignore-deprecations
3844 (lambda _
3845 (substitute* "activation-server/Makefile.in"
3846 (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
3847 #t)))
3848
3849 ;; There's apparently a race condition between the server stub
3850 ;; generation and linking of the example under 'samples/echo' that can
3851 ;; lead do undefined references when building in parallel, as reported
3852 ;; at <https://forums.gentoo.org/viewtopic-t-223376-start-550.html>.
3853 ;; Thus, disable parallel builds.
3854 #:parallel-build? #f))
3855 (inputs (list popt libxml2))
3856 ;; The following are Required by the .pc file
3857 (propagated-inputs
3858 (list glib orbit2))
3859 (native-inputs
3860 (list intltool
3861 pkg-config
3862 `(,glib "bin") ; for glib-genmarshal, etc.
3863 flex
3864 bison))
3865 (home-page "https://developer.gnome.org/libbonobo/")
3866 (synopsis "Framework for creating reusable components for use in GNOME applications")
3867 (description "Bonobo is a framework for creating reusable components for
3868use in GNOME applications, built on top of CORBA.")
3869 ;; Licence not explicitly stated. Source files contain no licence notices.
3870 ;; Tarball contains text of both GPLv2 and LGPLv2
3871 ;; GPLv2 covers both conditions
3872 (license license:gpl2+)))
3873
3874(define-public gconf
3875 (package
3876 (name "gconf")
3877 (version "3.2.6")
3878 (source (origin
3879 (method url-fetch)
3880 (uri
3881 (let ((upstream-name "GConf"))
3882 (string-append "mirror://gnome/sources/" upstream-name "/"
3883 (version-major+minor version) "/"
3884 upstream-name "-" version ".tar.xz")))
3885 (sha256
3886 (base32 "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr"))))
3887 (build-system gnu-build-system)
3888 (inputs (list dbus-glib libxml2))
3889 (propagated-inputs (list glib ; referred to in the .pc file
3890 orbit2))
3891 (native-inputs
3892 (list intltool
3893 `(,glib "bin") ; for glib-genmarshal, etc.
3894 pkg-config))
3895 (home-page "https://projects.gnome.org/gconf/")
3896 (synopsis "Store application preferences")
3897 (description "Gconf is a system for storing application preferences. It
3898is intended for user preferences; not arbitrary data storage.")
3899 (license license:lgpl2.0+)
3900 (properties '((upstream-name . "GConf")))))
3901
3902(define-public gnome-mime-data
3903 (package
3904 (name "gnome-mime-data")
3905 (version "2.18.0")
3906 (source (origin
3907 (method url-fetch)
3908 (uri (string-append "mirror://gnome/sources/" name "/"
3909 (version-major+minor version) "/"
3910 name "-" version ".tar.bz2"))
3911 (sha256
3912 (base32
3913 "1mvg8glb2a40yilmyabmb7fkbzlqd3i3d31kbkabqnq86xdnn69p"))))
3914 (build-system gnu-build-system)
3915 (native-inputs
3916 (list perl intltool))
3917 (arguments
3918 '(#:phases (modify-phases %standard-phases
3919 (add-after 'configure 'use-our-intltool
3920 (lambda _
3921 ;; Do not use the bundled intltool commands, which lack
3922 ;; the "dotless @INC" fixes of our 'intltool' package.
3923 (substitute* (find-files "." "^Makefile$")
3924 (("^INTLTOOL_(EXTRACT|UPDATE|MERGE) = .*$" _ tool)
3925 (string-append "INTLTOOL_" tool " = intltool-"
3926 (string-downcase tool) "\n")))
3927 #t)))))
3928 (home-page "https://www.gnome.org")
3929 (synopsis "Base MIME and Application database for GNOME")
3930 (description "GNOME Mime Data is a module which contains the base MIME
3931and Application database for GNOME. The data stored by this module is
3932designed to be accessed through the MIME functions in GnomeVFS.")
3933 (license license:gpl2+)))
3934
3935(define-public gnome-vfs
3936 (package
3937 (name "gnome-vfs")
3938 (version "2.24.4")
3939 (source (origin
3940 (method url-fetch)
3941 (uri (string-append "mirror://gnome/sources/" name "/"
3942 (version-major+minor version) "/"
3943 name "-" version ".tar.bz2"))
3944 (sha256
3945 (base32
3946 "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2"))))
3947 (build-system gnu-build-system)
3948 (arguments
3949 `(#:configure-flags
3950 ;; Add CFLAGS to relax gcc-14's strictness.
3951 (list (string-append
3952 "CFLAGS=-g -O2"
3953 " -Wno-error=implicit-function-declaration"))
3954 #:phases
3955 (modify-phases %standard-phases
3956 (add-before 'configure 'ignore-deprecations
3957 (lambda _
3958 (substitute* '("libgnomevfs/Makefile.in"
3959 "daemon/Makefile.in")
3960 (("-DG_DISABLE_DEPRECATED")
3961 "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))))
3962 (add-before 'configure 'patch-test-async-cancel-to-never-fail
3963 (lambda _
3964 (substitute* "test/test-async-cancel.c"
3965 (("EXIT_FAILURE") "77")))))))
3966 (inputs (list libxml2 dbus-glib gconf gnome-mime-data zlib))
3967 (native-inputs
3968 (list `(,glib "bin") ; for glib-mkenums, etc.
3969 intltool pkg-config))
3970 (home-page "https://developer.gnome.org/gnome-vfs/")
3971 (synopsis "Access files and folders in GNOME applications")
3972 (description
3973 "GnomeVFS is the core library used to access files and folders in GNOME
3974applications. It provides a file system abstraction which allows applications
3975to access local and remote files with a single consistent API.")
3976 (license license:lgpl2.0+)))
3977
3978(define-public libgnome
3979 (package
3980 (name "libgnome")
3981 (version "2.32.1")
3982 (source (origin
3983 (method url-fetch)
3984 (uri (string-append "mirror://gnome/sources/" name "/"
3985 (version-major+minor version) "/"
3986 name "-" version ".tar.bz2"))
3987 (sha256
3988 (base32
3989 "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj"))
3990 (patches (search-patches "libgnome-encoding.patch"))))
3991 (build-system gnu-build-system)
3992 (arguments
3993 `(#:phases
3994 (modify-phases %standard-phases
3995 (add-before 'configure 'enable-deprecated
3996 (lambda _
3997 (substitute* "libgnome/Makefile.in"
3998 (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
3999 #t)))))
4000 (inputs (list libxml2))
4001 (native-inputs
4002 (list `(,glib "bin") ; for glib-mkenums, etc.
4003 intltool pkg-config))
4004 ;; The following are listed as Required in the .pc file
4005 ;; (except for libcanberra -- which seems to be oversight on the part
4006 ;; of the upstream developers -- anything that links against libgnome,
4007 ;; must also link against libcanberra
4008 (propagated-inputs
4009 (list libcanberra libbonobo gconf gnome-vfs popt)) ;gnome-program.h includes popt.h
4010 (home-page "https://developer.gnome.org/libgnome/")
4011 (synopsis "Useful routines for building applications")
4012 (description "The libgnome library provides a number of useful routines
4013for building modern applications, including session management, activation of
4014files and URIs, and displaying help.")
4015 (license license:lgpl2.0+)))
4016
4017
4018(define-public libart-lgpl
4019 (package
4020 (name "libart-lgpl")
4021 (version "2.3.21")
4022 (source (origin
4023 (method url-fetch)
4024 (uri (let ((upstream-name "libart_lgpl"))
4025 (string-append "mirror://gnome/sources/" upstream-name "/"
4026 (version-major+minor version) "/"
4027 upstream-name "-" version ".tar.bz2")))
4028 (sha256
4029 (base32
4030 "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx"))))
4031 (build-system gnu-build-system)
4032 (native-inputs
4033 (list pkg-config))
4034 (home-page "https://people.gnome.org/~mathieu/libart")
4035 (synopsis "2D drawing library")
4036 (description "Libart is a 2D drawing library intended as a
4037high-quality vector-based 2D library with antialiasing and alpha composition.")
4038 (license license:lgpl2.0+)))
4039
4040(define-public libgnomecanvas
4041 (package
4042 (name "libgnomecanvas")
4043 (version "2.30.3")
4044 (source (origin
4045 (method url-fetch)
4046 (uri (string-append "mirror://gnome/sources/" name "/"
4047 (version-major+minor version) "/"
4048 name "-" version ".tar.gz"))
4049 (sha256
4050 (base32
4051 "1nhnq4lfkk8ljkdafscwaggx0h95mq0rxnd7zgqyq0xb6kkqbjm8"))))
4052 (build-system gnu-build-system)
4053 ;; Mentioned as Required in the .pc file
4054 (propagated-inputs (list libart-lgpl gtk+-2))
4055 (native-inputs
4056 (list intltool
4057 `(,glib "bin") ; for glib-genmarshal, etc.
4058 pkg-config))
4059 (home-page "https://developer.gnome.org/libgnomecanvas/")
4060 (synopsis "Flexible widget for creating interactive structured graphics")
4061 (description "The GnomeCanvas widget provides a flexible widget for
4062creating interactive structured graphics.")
4063 (license license:lgpl2.0+)))
4064
4065(define-public libgnomecanvasmm
4066 (package
4067 (name "libgnomecanvasmm")
4068 (version "2.26.0")
4069 (source (origin
4070 (method url-fetch)
4071 (uri (string-append "mirror://gnome/sources/" name "/"
4072 (version-major+minor version) "/"
4073 name "-" version ".tar.bz2"))
4074 (sha256
4075 (base32
4076 "0679hcnpam2gkag2i63sm0wdm35gwvzafnz1354mg6j5gzwpfrcr"))))
4077 (build-system gnu-build-system)
4078 (propagated-inputs (list libgnomecanvas))
4079 (native-inputs
4080 (list gtkmm-2 pkg-config))
4081 (home-page "https://gtkmm.org")
4082 (synopsis "C++ bindings to the GNOME Canvas library")
4083 (description "C++ bindings to the GNOME Canvas library.")
4084 (license license:lgpl2.0+)))
4085
4086(define-public libgnomeui
4087 (package
4088 (name "libgnomeui")
4089 (version "2.24.5")
4090 (source (origin
4091 (method url-fetch)
4092 (uri (string-append "mirror://gnome/sources/" name "/"
4093 (version-major+minor version) "/"
4094 name "-" version ".tar.bz2"))
4095 (patches (search-patches "libgnomeui-utf8.patch"))
4096 (sha256
4097 (base32
4098 "03rwbli76crkjl6gp422wrc9lqpl174k56cp9i96b7l8jlj2yddf"))))
4099 (build-system gnu-build-system)
4100 ;; Mentioned as Required in the .pc file
4101 (propagated-inputs (list libbonoboui libgnome libgnomecanvas
4102 libgnome-keyring))
4103 (inputs (list libjpeg-turbo popt libbonobo libxml2 libglade))
4104 (native-inputs
4105 (list `(,glib "bin") ; for glib-mkenums, etc.
4106 intltool pkg-config))
4107 (home-page "https://developer.gnome.org/libgnomeui/")
4108 (synopsis "Additional widgets for applications")
4109 (description "The libgnomeui library provides additional widgets for
4110applications. Many of the widgets from libgnomeui have already been
4111ported to GTK+.")
4112 (license license:lgpl2.0+)))
4113
4114(define-public libglade
4115 (package
4116 (name "libglade")
4117 (version "2.6.4")
4118 (source (origin
4119 (method url-fetch)
4120 (uri (string-append "mirror://gnome/sources/" name "/"
4121 (version-major+minor version) "/"
4122 name "-" version ".tar.bz2"))
4123 (sha256
4124 (base32
4125 "1v2x2s04jry4gpabws92i0wq2ghd47yr5n9nhgnkd7c38xv1wdk4"))))
4126 (build-system gnu-build-system)
4127 (inputs
4128 (list python)) ;; needed for the optional libglade-convert program
4129 (propagated-inputs
4130 (list gtk+-2 libxml2)) ; required by libglade-2.0.pc
4131 (native-inputs
4132 (list pkg-config))
4133 (home-page "https://developer.gnome.org/libglade")
4134 (synopsis "Load glade interfaces and access the glade built widgets")
4135 (description "Libglade is a library that provides interfaces for loading
4136graphical interfaces described in glade files and for accessing the
4137widgets built in the loading process.")
4138 (license license:gpl2+))) ; This is correct. GPL not LGPL
4139
4140(define-public libbonoboui
4141 (package
4142 (name "libbonoboui")
4143 (version "2.24.5")
4144 (source (origin
4145 (method url-fetch)
4146 (uri (string-append "mirror://gnome/sources/" name "/"
4147 (version-major+minor version) "/"
4148 name "-" version ".tar.bz2"))
4149 (sha256
4150 (base32
4151 "1kbgqh7bw0fdx4f1a1aqwpff7gp5mwhbaz60c6c98bc4djng5dgs"))))
4152 (build-system gnu-build-system)
4153 (arguments
4154 `(#:configure-flags
4155 '("CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")
4156 #:phases
4157 (modify-phases %standard-phases
4158 (add-before 'check 'start-xserver
4159 (lambda* (#:key inputs #:allow-other-keys)
4160 (let ((xorg-server (assoc-ref inputs "xorg-server"))
4161 (disp ":1"))
4162
4163 (setenv "HOME" (getcwd))
4164 (setenv "DISPLAY" disp)
4165 ;; There must be a running X server and make check doesn't start one.
4166 ;; Therefore we must do it.
4167 (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))))))
4168 ;; Mentioned as Required by the .pc file
4169 (propagated-inputs (list libxml2))
4170 (inputs
4171 (list popt pangox-compat libgnome libgnomecanvas libglade))
4172 (native-inputs
4173 (list `(,glib "bin") ; for glib-genmarshal, etc.
4174 intltool
4175 xorg-server-for-tests ; For running the tests
4176 pkg-config))
4177 (home-page "https://developer.gnome.org/libbonoboui/")
4178 (synopsis "Some user interface controls using Bonobo")
4179 (description "The Bonobo UI library provides a number of user interface
4180controls using the Bonobo component framework.")
4181 (license license:lgpl2.0+)))
4182
4183(define-public libwnck
4184 (package
4185 (name "libwnck")
4186 (version "40.1")
4187 (source (origin
4188 (method url-fetch)
4189 (uri (string-append "mirror://gnome/sources/" name "/"
4190 (version-major version) "/"
4191 name "-" version ".tar.xz"))
4192 (sha256
4193 (base32
4194 "04b63mh2i7kpq0iymx6fkyzdx8laymw3da2s0wsbwgzg2jhly4q3"))))
4195 (build-system meson-build-system)
4196 (native-inputs
4197 (list gettext-minimal
4198 `(,glib "bin") ;for glib-mkenums
4199 gobject-introspection ;for g-ir-scanner
4200 pkg-config))
4201 (propagated-inputs
4202 (list gtk+
4203 libxres
4204 startup-notification))
4205 (home-page "https://gitlab.gnome.org/GNOME/libwnck/")
4206 (synopsis "Window Navigator Construction Kit")
4207 (description
4208 "Libwnck is the Window Navigator Construction Kit, a library for use in
4209writing pagers, tasklists, and more generally applications that are dealing
4210with window management. It tries hard to respect the Extended Window Manager
4211Hints specification (EWMH).")
4212 (license license:lgpl2.0+)))
4213
4214(define-public goffice
4215 (package
4216 (name "goffice")
4217 (version "0.10.53")
4218 (source
4219 (origin
4220 (method url-fetch)
4221 (uri (string-append "mirror://gnome/sources/goffice/"
4222 (version-major+minor version) "/"
4223 "goffice-" version ".tar.xz"))
4224 (sha256
4225 (base32 "0mrzi8bcykn1jdkvqm8zqwg8k80mafl4xhr0076d875adxwmiz97"))))
4226 (build-system gnu-build-system)
4227 (outputs '("out"
4228 "doc")) ; 4.0 MiB of gtk-doc
4229 (arguments
4230 '(#:configure-flags (list (string-append "--with-html-dir="
4231 (assoc-ref %outputs "doc")
4232 "/share/gtk-doc/html"))))
4233 (inputs
4234 (list gtk+ libgsf (librsvg-for-system) libxslt libxml2))
4235 (native-inputs
4236 (list intltool `(,glib "bin") pkg-config))
4237 (home-page "https://developer.gnome.org/goffice/")
4238 (synopsis "Document-centric objects and utilities")
4239 (description "A GLib/GTK+ set of document-centric objects and utilities.")
4240 (license
4241 ;; Dual licensed under GPLv2 or GPLv3 (both without "or later")
4242 ;; Note: NOT LGPL
4243 (list license:gpl2 license:gpl3))))
4244
4245(define-public gnumeric
4246 (package
4247 (name "gnumeric")
4248 (version "1.12.52")
4249 (source (origin
4250 (method url-fetch)
4251 (uri (string-append "mirror://gnome/sources/gnumeric/"
4252 (version-major+minor version) "/"
4253 "gnumeric-" version ".tar.xz"))
4254 (sha256
4255 (base32
4256 "0fw201j0sks95wgvns3vydgprhwf6z4v4xb2a0ldi892k8277kvk"))))
4257 (build-system glib-or-gtk-build-system)
4258 (arguments
4259 `(;; The gnumeric developers don't worry much about failing tests.
4260 ;; See https://bugzilla.gnome.org/show_bug.cgi?id=732387
4261 #:tests? #f
4262 #:phases
4263 (modify-phases %standard-phases
4264 (add-before
4265 'configure 'pre-conf
4266 (lambda* (#:key outputs #:allow-other-keys)
4267 ;; Make install tries to write into the directory of goffice
4268 ;; I am informed that this only affects the possibility to embed a
4269 ;; spreadsheet inside an Abiword document. So presumably when we
4270 ;; package Abiword we'll have to refer it to this directory.
4271 (substitute* "configure"
4272 (("^GOFFICE_PLUGINS_DIR=.*")
4273 (string-append "GOFFICE_PLUGINS_DIR="
4274 (assoc-ref outputs "out")
4275 "/goffice/plugins"))))))))
4276 (inputs
4277 (list glib
4278 gtk+
4279 goffice
4280 libgsf
4281 (librsvg-for-system)
4282 libxml2
4283 libxslt
4284 python
4285 python-pygobject
4286 zlib))
4287 (native-inputs
4288 (list bison
4289 docbook-xml
4290 `(,glib "bin")
4291 intltool
4292 itstool
4293 pkg-config))
4294 (home-page "http://www.gnumeric.org")
4295 (synopsis "Spreadsheet application")
4296 (description
4297 "GNUmeric is a GNU spreadsheet application, running under GNOME. It is
4298interoperable with other spreadsheet applications. It has a vast array of
4299features beyond typical spreadsheet functionality, such as support for linear
4300and non-linear solvers, statistical analysis, and telecommunication
4301engineering.")
4302 (license
4303 ;; Dual licensed under GPLv2 or GPLv3 (both without "or later")
4304 (list license:gpl2 license:gpl3))))
4305
4306(define-public drawing
4307 (package
4308 (name "drawing")
4309 (version "1.0.2")
4310 (source
4311 (origin
4312 (method git-fetch)
4313 (uri (git-reference
4314 (url "https://github.com/maoschanz/drawing")
4315 (commit version)))
4316 (file-name (git-file-name name version))
4317 (sha256
4318 (base32 "1yazs3jj8i8n64ki54rvh11q0yn46da105hdsjb7b80dpxspvlch"))))
4319 (build-system meson-build-system)
4320 (arguments
4321 (list
4322 #:glib-or-gtk? #t
4323 #:imported-modules (append %meson-build-system-modules
4324 %pyproject-build-system-modules)
4325 #:modules '((guix build meson-build-system)
4326 ((guix build pyproject-build-system) #:prefix py:)
4327 (guix build utils))
4328 #:phases
4329 #~(modify-phases %standard-phases
4330 (add-after 'unpack 'disable-postinstall-script
4331 (lambda _
4332 (setenv "DESTDIR" "/")))
4333 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
4334 (lambda* (#:key inputs outputs #:allow-other-keys)
4335 (wrap-program (search-input-file outputs "bin/drawing")
4336 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
4337 ,(py:site-packages inputs outputs)))
4338 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
4339 (native-inputs
4340 (list desktop-file-utils
4341 gettext-minimal
4342 `(,glib "bin")
4343 gobject-introspection
4344 itstool
4345 pkg-config
4346 python))
4347 (inputs
4348 (list bash-minimal
4349 (librsvg-for-system)
4350 gsettings-desktop-schemas
4351 gtk+
4352 pango
4353 python
4354 python-pycairo
4355 python-pygobject))
4356 (home-page "https://maoschanz.github.io/drawing/")
4357 (synopsis "Basic image editor for GNOME")
4358 (description
4359 "Drawing is a basic image editor aiming at the GNOME desktop.")
4360 (license license:gpl3+)))
4361
4362(define-public seahorse
4363 (package
4364 (name "seahorse")
4365 (version "47.0.1")
4366 (source
4367 (origin
4368 (method url-fetch)
4369 (uri (string-append "mirror://gnome/sources/" name "/"
4370 (version-major version) "/" name "-"
4371 version ".tar.xz"))
4372 (sha256
4373 (base32 "1k6avgd58v853nchp226qc3fgz0pwxnf7744hyvynzqzlvj1f6cw"))))
4374 (build-system meson-build-system)
4375 (arguments
4376 '(#:glib-or-gtk? #t
4377 #:phases
4378 (modify-phases %standard-phases
4379 (add-after 'unpack 'skip-gtk-update-icon-cache
4380 ;; Don't create 'icon-theme.cache'.
4381 (lambda _
4382 (substitute* "meson.build"
4383 (("gtk_update_icon_cache: true")
4384 "gtk_update_icon_cache: false")
4385 (("update_desktop_database: true")
4386 "update_desktop_database: false"))))
4387 (add-before 'check 'pre-check
4388 (lambda _
4389 ;; Tests require a writable HOME.
4390 (setenv "HOME" (getcwd)))))))
4391 (inputs
4392 (list gtk+
4393 gcr-3
4394 gnupg
4395 gpgme
4396 openldap
4397 openssh
4398 avahi
4399 libhandy
4400 libpwquality
4401 libsecret
4402 libsoup-minimal))
4403 (native-inputs
4404 (list gettext-minimal
4405 `(,glib "bin")
4406 itstool
4407 pkg-config
4408 python
4409 vala
4410 libxml2))
4411 (home-page "https://wiki.gnome.org/Apps/Seahorse")
4412 (synopsis "Manage encryption keys and passwords in the GNOME keyring")
4413 (description
4414 "Seahorse is a GNOME application for managing encryption keys and
4415passwords in the GNOME keyring.")
4416 (license license:gpl2+)))
4417
4418(define-public vala
4419 (package
4420 (name "vala")
4421 (version "0.56.18")
4422 (source (origin
4423 (method url-fetch)
4424 (uri (string-append "mirror://gnome/sources/vala/"
4425 (version-major+minor version) "/"
4426 "vala-" version ".tar.xz"))
4427 (sha256
4428 (base32
4429 "10m34vljyj2zg4nzz12c2giwfbwwvimkzk4ygf7dnqxb81yzxbzj"))))
4430 (build-system glib-or-gtk-build-system)
4431 (arguments
4432 (list
4433 #:configure-flags #~(list "CC=gcc" "--enable-coverage")
4434 #:make-flags
4435 #~'(#$@(if (target-hurd?)
4436 '("XFAIL_TESTS=dbus/filedescriptor-errors.test")
4437 '())
4438 ;; Disable icon theme cache generation as per glib-or-gtk-build-system.
4439 "gtk_update_icon_cache=true")
4440 #:phases
4441 #~(modify-phases %standard-phases
4442 (add-after 'unpack 'use-gcc-by-default
4443 (lambda _
4444 (substitute* "codegen/valaccodecompiler.c"
4445 (("cc_command = \"cc\"")
4446 "cc_command = \"gcc\""))))
4447 (add-before 'check 'pre-check
4448 (lambda _
4449 (substitute* "valadoc/tests/libvaladoc/tests-extra-environment.sh"
4450 (("export PKG_CONFIG_PATH=" m)
4451 (string-append m "$PKG_CONFIG_PATH:")))))
4452 ;; Wrapping the binaries breaks vala's behavior adaptations based on
4453 ;; the file name of the program executed (vala: compile and execute,
4454 ;; valac: compile into a binary).
4455 (delete 'glib-or-gtk-wrap))))
4456 (native-inputs
4457 (list bison
4458 dbus ; for dbus tests
4459 docbook-xml-4.4
4460 docbook-xsl
4461 flex
4462 gobject-introspection ; for gir tests
4463 help2man
4464 perl
4465 pkg-config
4466 libxslt))
4467 (propagated-inputs
4468 (list glib ; required by libvala-0.40.pc
4469 graphviz))
4470 (home-page "https://wiki.gnome.org/Projects/Vala/")
4471 (synopsis "Compiler using the GObject type system")
4472 (description "Vala is a programming language using modern high level
4473abstractions without imposing additional runtime requirements and without using
4474a different ABI compared to applications and libraries written in C. Vala uses
4475the GObject type system and has additional code generation routines that make
4476targeting the GNOME stack simple.")
4477 (license license:lgpl2.1+)))
4478
4479;;; An older variant kept to build libsoup-minimal-2.
4480(define-public vala-0.52
4481 (package/inherit vala
4482 (version "0.52.11")
4483 (source (origin
4484 (method url-fetch)
4485 (uri (string-append "mirror://gnome/sources/vala/"
4486 (version-major+minor version) "/"
4487 "vala-" version ".tar.xz"))
4488 (sha256
4489 (base32
4490 "0xvhg32sxnfyvxn86hh9mn65mh1g189vhsjcahccj0zbwnrkqz3w"))
4491 (patches (search-patches "vala-0.52-fix-valagirparser.patch"))))
4492 (arguments
4493 (substitute-keyword-arguments arguments
4494 ((#:configure-flags flags #~'())
4495 #~(cons*
4496 (string-append "CFLAGS=-g -O2"
4497 " -Wno-error=address"
4498 " -Wno-error=incompatible-pointer-types")
4499 #$flags))))))
4500
4501(define-public vte
4502 (package
4503 (name "vte")
4504 (version "0.82.3")
4505 (source (origin
4506 (method url-fetch)
4507 (uri (string-append "mirror://gnome/sources/vte/"
4508 (version-major+minor version) "/"
4509 "vte-" version ".tar.xz"))
4510 (sha256
4511 (base32
4512 "118ajdfi2hqrhsfvbkjn566lxsmi6lrvmqh339yx0c7fdy7jgikd"))))
4513 (build-system meson-build-system)
4514 (arguments
4515 (list #:configure-flags #~(list "-Dgtk3=false"
4516 "-Dvapi=true"
4517 "-D_systemd=false")))
4518 (native-inputs
4519 (list pkg-config
4520 gettext-minimal
4521 vala
4522 gobject-introspection
4523 `(,glib "bin") ; for glib-genmarshal, etc.
4524 gperf
4525 python
4526 libxml2))
4527 (inputs (list fast-float lz4 simdutf))
4528 (propagated-inputs
4529 (list gtk ; required by vte-2.91.pc
4530 gnutls ; ditto
4531 pcre2)) ; ditto
4532 (home-page "https://www.gnome.org/")
4533 (synopsis "Virtual Terminal Emulator")
4534 (description
4535 "VTE is a library (libvte) implementing a terminal emulator widget for
4536GTK+, and a minimal sample application (vte) using that. Vte is mainly used in
4537gnome-terminal, but can also be used to embed a console/terminal in games,
4538editors, IDEs, etc.")
4539 (license license:lgpl2.1+)))
4540
4541(define-public vte/gtk+-3
4542 (package/inherit vte
4543 (name "vte-with-gtk+3")
4544 (arguments (substitute-keyword-arguments arguments
4545 ((#:configure-flags flags #~'())
4546 #~(cons "-Dgtk4=false" (delete "-Dgtk3=false" #$flags)))))
4547 (propagated-inputs (modify-inputs propagated-inputs
4548 (replace "gtk" gtk+)))
4549 (properties
4550 `((upstream-name . "vte")))))
4551
4552(define-public vte-with-sixel
4553 (package/inherit vte
4554 (name "vte-with-sixel")
4555 ;; Choose a version that can render images generated by img2sixel.
4556 (version "0.73.92")
4557 (source (origin
4558 (method git-fetch)
4559 (uri (git-reference
4560 (url "https://gitlab.gnome.org/GNOME/vte")
4561 (commit version)))
4562 (file-name (git-file-name name version))
4563 (sha256 (base32
4564 "0fv6lx7kk1xrfsvc95jm23vxkmyfypriz4nvj0kjy4nshgccwlch"))))
4565 (arguments (substitute-keyword-arguments arguments
4566 ((#:configure-flags flags)
4567 #~(append (list "-Dsixel=true") #$flags))))
4568 (inputs (modify-inputs inputs
4569 (append libsixel)
4570 (append lz4)))))
4571
4572;;; TODO: Remove when 2027/03 comes.
4573(define-deprecated/public-alias vinagre
4574 gnome-connections)
4575
4576(define-public dconf
4577 (package
4578 (name "dconf")
4579 (version "0.49.0")
4580 (source (origin
4581 (method url-fetch)
4582 (uri (string-append
4583 "mirror://gnome/sources/" name "/"
4584 (version-major+minor version) "/"
4585 name "-" version ".tar.xz"))
4586 (sha256
4587 (base32
4588 "0dkc7nbd0byibf6i5gm9xqclr7i94n1p1qbqcnwxnml1lm4px90n"))))
4589 (build-system meson-build-system)
4590 (arguments
4591 (list
4592 #:glib-or-gtk? #t
4593 ;; Configure sysconfdir to /etc so that gconf profiles can be written
4594 ;; there and loaded without having to set GCONF_PROFILE, which cannot be
4595 ;; safely set globally (as a gconf profile is a per-user thing).
4596 #:configure-flags #~(list "--sysconfdir=/etc"
4597 "-Dgtk_doc=true"
4598 "--wrap-mode=nodownload") ;for gvdb
4599 #:phases #~(modify-phases %standard-phases
4600 (add-after 'unpack 'increase-test-timeout
4601 (lambda _
4602 ;; On big-memory systems, the engine test may take
4603 ;; much longer than the default of 30 seconds.
4604 (substitute* "tests/meson.build"
4605 (("test\\(unit_test\\[0\\], exe" all)
4606 (string-append all ", timeout: 300"))))))))
4607 (native-inputs
4608 (list bash-completion
4609 libxslt ;for xsltproc
4610 docbook-xml-4.2
4611 docbook-xsl
4612 `(,glib "bin")
4613 gtk-doc/stable
4614 pkg-config
4615 python
4616 vala))
4617 (inputs
4618 (list gtk+
4619 dbus))
4620 (propagated-inputs
4621 ;; In Requires of dconf.pc.
4622 (list glib))
4623 (home-page "https://wiki.gnome.org/action/show/Projects/dconf")
4624 (synopsis "Low-level GNOME configuration system")
4625 (description "Dconf is a low-level configuration system. Its main purpose
4626is to provide a backend to GSettings on platforms that don't already have
4627configuration storage systems.")
4628 (license license:lgpl2.1+)))
4629
4630(define-public json-glib-minimal
4631 (package
4632 (name "json-glib-minimal")
4633 (version "1.10.0")
4634 (source (origin
4635 (method url-fetch)
4636 (uri (string-append "mirror://gnome/sources/json-glib/"
4637 (version-major+minor version)
4638 "/json-glib-" version ".tar.xz"))
4639 (sha256
4640 (base32
4641 "0yxg215gpa61sxnx05bgzbqq9dsvbawk6cfz8z0yq1k1v5k8vjhv"))))
4642 (build-system meson-build-system)
4643 (arguments
4644 (list #:glib-or-gtk? #t ;to wrap binaries, compile schemas
4645 #:configure-flags #~(list "-Dman=false"
4646 "-Dgtk_doc=disabled")))
4647 (native-inputs
4648 (list
4649 gettext-minimal
4650 `(,glib "bin") ;for glib-mkenums and glib-genmarshal
4651 pkg-config))
4652 (inputs
4653 (list bash-minimal))
4654 (propagated-inputs
4655 (list glib)) ;according to json-glib-1.0.pc
4656 (home-page "https://wiki.gnome.org/Projects/JsonGlib")
4657 (synopsis "Glib and GObject implementation of JSON")
4658 (description "JSON-GLib is a library providing serialization and
4659described by RFC 4627. It implements a full JSON parser and generator using
4660GLib and GObject, and integrates JSON with GLib data types.")
4661 (license license:lgpl2.1+)
4662 (properties '((upstream-name . "json-glib")))))
4663
4664(define-public json-glib
4665 (package/inherit json-glib-minimal
4666 (name "json-glib")
4667 (outputs (cons "doc" (package-outputs json-glib-minimal)))
4668 (arguments
4669 (substitute-keyword-arguments arguments
4670 ((#:configure-flags _)
4671 #~(list "-Dman=true"
4672 #$@(if (%current-target-system)
4673 ;; If enabled, gtkdoc-scangobj will try to execute a
4674 ;; cross-compiled binary.
4675 #~("-Dgtk_doc=disabled"
4676 ;; Trying to build introspection data when cross-compiling
4677 ;; causes errors during linking.
4678 "-Dintrospection=disabled")
4679 #~("-Dgtk_doc=enabled"
4680 "-Dintrospection=enabled"))))
4681 ((#:phases phases '%standard-phases)
4682 #~(modify-phases #$phases
4683 ;; When cross-compiling, there are no docs to move.
4684 #$@(if (%current-target-system)
4685 #~((add-after 'install 'stub-docs
4686 (lambda _
4687 ;; The daemon doesn't like empty output paths.
4688 (mkdir #$output:doc))))
4689 #~((add-after 'install 'move-docs
4690 (lambda _
4691 (mkdir-p (string-append #$output:doc "/share"))
4692 (rename-file
4693 (string-append #$output "/share/doc")
4694 (string-append #$output:doc
4695 "/share/doc"))))))))))
4696 (native-inputs
4697 (if (%current-target-system)
4698 ;; No docs, but rst2man is used for man pages.
4699 (modify-inputs native-inputs
4700 (prepend python-docutils))
4701 (modify-inputs native-inputs
4702 (prepend gi-docgen gobject-introspection
4703 python-docutils))))))
4704
4705(define-public libxklavier
4706 (package
4707 (name "libxklavier")
4708 (version "5.4")
4709 (source (origin
4710 ;; Note: There's no tarball at ftp.gnome.org for this version.
4711 (method git-fetch)
4712 (uri (git-reference
4713 (url "https://anongit.freedesktop.org/git/libxklavier")
4714 (commit (string-append "libxklavier-" version))))
4715 (sha256
4716 (base32
4717 "1w1x5mrgly2ldiw3q2r6y620zgd89gk7n90ja46775lhaswxzv7a"))
4718 (file-name (git-file-name name version))))
4719 (build-system gnu-build-system)
4720 (arguments
4721 '(#:configure-flags
4722 (list (string-append "--with-xkb-base="
4723 (assoc-ref %build-inputs "xkeyboard-config")
4724 "/share/X11/xkb")
4725 "--disable-xmodmap-support")))
4726 (native-inputs
4727 `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
4728 ("gobject-introspection" ,gobject-introspection)
4729 ("pkg-config" ,pkg-config)
4730 ("gtk-doc" ,gtk-doc/stable)
4731 ("intltool" ,intltool)
4732 ("which" ,which)
4733 ("autoconf" ,autoconf)
4734 ("automake" ,automake)
4735 ("libtool" ,libtool)))
4736 (propagated-inputs
4737 ;; Required by libxklavier.pc.
4738 (list glib libxml2))
4739 (inputs
4740 (list iso-codes/pinned libxi libxkbfile xkbcomp xkeyboard-config))
4741 (home-page "https://www.freedesktop.org/wiki/Software/LibXklavier/")
4742 (synopsis "High-level API for X Keyboard Extension")
4743 (description
4744 "LibXklavier is a library providing high-level API for X Keyboard
4745Extension known as XKB. This library is intended to support XFree86 and other
4746commercial X servers. It is useful for creating XKB-related software (layout
4747indicators etc).")
4748 (license license:lgpl2.0+)))
4749
4750(define-public glib-networking
4751 (package
4752 (name "glib-networking")
4753 (version "2.80.1")
4754 (source (origin
4755 (method url-fetch)
4756 (uri (string-append "mirror://gnome/sources/glib-networking/"
4757 (version-major+minor version) "/"
4758 "glib-networking-" version ".tar.xz"))
4759 (sha256
4760 (base32
4761 "13igg1hywyww9hmfxa86w5fsrm8ip6h0ywdny5qm1mbw2ms2h3mq"))))
4762 (build-system meson-build-system)
4763 (arguments
4764 (list
4765 ;; Exclude flaky tests (see https://codeberg.org/guix/guix/issues/1377).
4766 ;; Meson cannot exclude individual tests so the test suite is added in the
4767 ;; phase below.
4768 #:test-options #~(list "--no-suite" "connection")
4769 #:phases
4770 #~(modify-phases %standard-phases
4771 (add-after 'unpack 'mark-tests-for-exclusion
4772 (lambda _
4773 ;; The test names are programmatically generated in the meson
4774 ;; build file. The two failing tests are "connection-gnutls" and
4775 ;; "connection-gnutls-tls1.2" and share program[0] == "common",
4776 ;; so use that as the suite name.
4777 (substitute* "tls/tests/meson.build"
4778 (("test\\(([^)]*)\\)" _ args)
4779 (string-append "test(" args ", suite: program[0])"))))))))
4780 (native-inputs
4781 (list `(,glib "bin") ; for gio-querymodules
4782 pkg-config gettext-minimal))
4783 (inputs
4784 (list glib gnutls gsettings-desktop-schemas libproxy))
4785 (home-page "https://wiki.gnome.org/Projects/GLib")
4786 (synopsis "Network extensions for GLib")
4787 (description
4788 "Glib-networking contains the implementations of certain GLib networking
4789features that cannot be implemented directly in GLib itself because of their
4790dependencies. Currently it contains GnuTLS and OpenSSL-based implementations of
4791GTlsBackend, a libproxy-based implementation of GProxyResolver,
4792GLibproxyResolver, and a GNOME GProxyResolver that uses the proxy information
4793from the GSettings schemas in gsettings-desktop-schemas.")
4794 (license license:lgpl2.1+)))
4795
4796(define-public librest
4797 (package
4798 (name "librest")
4799 (version "0.10.2")
4800 (source (origin
4801 (method url-fetch)
4802 (uri (string-append "mirror://gnome/sources/librest/"
4803 (version-major+minor version) "/"
4804 name "-" version ".tar.xz"))
4805 (sha256
4806 (base32
4807 "1f69hl8qbmp7hsa0j28cvcj31232rdfr41ghvjkwy8ispc9bjv3v"))))
4808 (outputs (list "out" "doc"))
4809 (build-system meson-build-system)
4810 (arguments
4811 (list #:tests? #f ; tests require internet connection
4812 #:configure-flags
4813 #~(list "-Dca_certificates_path=/etc/ssl/certs/ca-certificates.crt"
4814 "-Dexamples=false")))
4815 (native-inputs
4816 (list `(,glib "bin") gi-docgen gobject-introspection pkg-config))
4817 (propagated-inputs
4818 ;; rest-0.10.pc refers to all these.
4819 (list glib json-glib libsoup libxml2))
4820 (home-page "https://www.gtk.org/")
4821 (synopsis "RESTful web api query library")
4822 (description
4823 "This library was designed to make it easier to access web services that
4824claim to be \"RESTful\". It includes convenience wrappers for libsoup and
4825libxml to ease remote use of the RESTful API.")
4826 (license license:lgpl2.1+)))
4827
4828(define-public libshumate
4829 (package
4830 (name "libshumate")
4831 (version "1.6.0")
4832 (source (origin
4833 (method url-fetch)
4834 (uri (string-append "mirror://gnome/sources/" name "/"
4835 (version-major+minor version) "/"
4836 name "-" version ".tar.xz"))
4837 (sha256
4838 (base32
4839 "0f994bwqfna7s11fdcpil9mmqpq8hnwckpr4q6yxzi1wbkh7w2b6"))))
4840 (build-system meson-build-system)
4841 (arguments
4842 (list #:phases
4843 #~(modify-phases %standard-phases
4844 (replace 'check
4845 (lambda* (#:key tests? test-options #:allow-other-keys)
4846 (when tests?
4847 ;; Some tests expect to write to $HOME.
4848 (setenv "HOME" "/tmp")
4849 (setenv "XDG_RUNTIME_DIR" "/tmp/run")
4850 (setenv "XDG_CACHE_HOME" "/tmp/cache")
4851
4852 ;; Tests require a running X server.
4853 (system "Xvfb :1 &")
4854 (setenv "DISPLAY" ":1")
4855
4856 (apply invoke "dbus-run-session" "--" "meson" "test"
4857 "--print-errorlogs" test-options)))))))
4858 (native-inputs
4859 (list gi-docgen
4860 `(,glib "bin")
4861 gobject-introspection
4862 gperf
4863 pkg-config
4864 ;; For tests:
4865 xorg-server-for-tests
4866 dbus
4867 at-spi2-core))
4868 (propagated-inputs
4869 ;; All the libraries are listed as "Requires' in the .pc file.
4870 (list cairo
4871 glib
4872 gtk
4873 json-glib
4874 libsoup
4875 protobuf-c
4876 sqlite))
4877 (home-page "https://wiki.gnome.org/Projects/libshumate")
4878 (synopsis "GtkWidget C library for displaying maps")
4879 (description "@code{libshumate} is a C library providing a
4880@code{GtkWidget} to display maps. It supports numerous free map sources such
4881as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
4882 (license license:lgpl2.1+)))
4883
4884;;; A minimal version of libsoup used to prevent a cycle with Inkscape.
4885(define-public libsoup-minimal
4886 (package
4887 (name "libsoup-minimal")
4888 (version "3.6.5")
4889 (source (origin
4890 (method url-fetch)
4891 (uri (string-append "mirror://gnome/sources/libsoup/"
4892 (version-major+minor version) "/"
4893 "libsoup-" version ".tar.xz"))
4894 (sha256
4895 (base32
4896 "0d52mnvvsvwpc3scjva5fbvns8f8ijyswgjwjhbr151ymid7d4b8"))
4897 (patches
4898 (search-patches
4899 "libsoup-auth-digest-fix-crash.patch"
4900 "libsoup-deadlock-in-add_listener_in_thread.patch"
4901 "libsoup-fix-merge-of-ranges.patch"
4902 "libsoup-memory-leak-in-soup_form_decode.patch"
4903 "libsoup-multipart-bounds-check.patch"
4904 "libsoup-use-libdl-instead-of-gmodule.patch"))))
4905 (build-system meson-build-system)
4906 (arguments
4907 (list
4908 #:configure-flags #~(list "-Ddocs=disabled")
4909 #:parallel-tests? #f ;hsts-db-test might hang otherwise.
4910 #:phases
4911 #~(modify-phases %standard-phases
4912 (add-after 'unpack 'adjust-tests
4913 (lambda _
4914 ;; This test fails due to missing /etc/nsswitch.conf
4915 ;; in the build environment.
4916 (substitute* "tests/unix-socket-test.c"
4917 ((".*/sockets/unconnected.*") ""))
4918
4919 ;; These fail because "subdomain.localhost" does not resolve in
4920 ;; the build environment. Moreover, the hsts-test suite fails on
4921 ;; i686-linux because of errors from `session_get_uri' like
4922 ;; "Unexpected status 200 OK (expected 301 Moved Permanently)"
4923 ;; (see: https://gitlab.gnome.org/GNOME/libsoup/-/issues/239).
4924 (substitute* "tests/meson.build"
4925 ((".*'name': 'hsts'.*") ""))
4926 (substitute* "tests/hsts-db-test.c"
4927 ((".*/hsts-db/subdomains.*") "")))))))
4928 (native-inputs
4929 (list `(,glib "bin") ;for glib-mkenums
4930 gobject-introspection
4931 pkg-config
4932 python-wrapper
4933 vala
4934 curl
4935 gnutls)) ;for 'certtool'
4936 (propagated-inputs
4937 ;; libsoup-3.0.pc refers to all of these (except where otherwise noted)
4938 (list brotli
4939 glib
4940 glib-networking ; for GIO runtime modules
4941 libpsl
4942 nghttp2 ;for pkg-config
4943 `(,nghttp2 "lib")
4944 libxml2
4945 mit-krb5
4946 sqlite
4947 zlib))
4948 (inputs
4949 (list samba/pinned)) ; For ntlm_auth support
4950 (home-page "https://libsoup.gnome.org")
4951 (synopsis "GLib-based HTTP Library")
4952 (description
4953 "LibSoup is an HTTP client/server library for GNOME. It uses GObjects
4954and the GLib main loop, to integrate well with GNOME applications.")
4955 (license license:lgpl2.0+)
4956 (properties '((upstream-name . "libsoup")))))
4957
4958;;; An older variant kept to build the 'rest' package.
4959(define-public libsoup-minimal-2
4960 (package
4961 (inherit libsoup-minimal)
4962 (version "2.74.3")
4963 (source (origin
4964 (method url-fetch)
4965 (uri (string-append "mirror://gnome/sources/libsoup/"
4966 (version-major+minor version) "/"
4967 "libsoup-" version ".tar.xz"))
4968 (sha256
4969 (base32
4970 "04rgv6hkyhgi7lak9865yxgbgky6gc635p7w6nhcbj64rx0prdz4"))))
4971 (arguments
4972 (substitute-keyword-arguments arguments
4973 ((#:configure-flags configure-flags)
4974 ;; The option name changed between libsoup 2 and libsoup 3.
4975 #~(cons "-Dgtk_doc=false"
4976 (delete "-Ddocs=disabled" #$configure-flags)))
4977 ((#:phases phases)
4978 #~(modify-phases #$phases
4979 (replace 'adjust-tests
4980 (lambda _
4981 ;; Disable the SSL test, failing since 2.68 and resolved in
4982 ;; libsoup 3.
4983 (substitute* "tests/meson.build"
4984 (("[ \t]*\\['ssl', true, \\[\\]\\],") ""))))))))
4985 (native-inputs
4986 (modify-inputs native-inputs
4987 (replace "vala" vala-0.52)))))
4988
4989(define-public libsoup
4990 (package/inherit libsoup-minimal
4991 (name "libsoup")
4992 (outputs (cons "doc" (package-outputs libsoup-minimal)))
4993 (arguments
4994 (substitute-keyword-arguments arguments
4995 ((#:configure-flags configure-flags)
4996 #~(cons "-Ddocs=enabled"
4997 ;; The default value is 'auto', meaning it could be skipped.
4998 (delete "-Ddocs=disabled" #$configure-flags)))
4999 ((#:phases phases)
5000 #~(modify-phases #$phases
5001 (replace 'adjust-tests
5002 (lambda _
5003 ;; This test fails due to missing /etc/nsswitch.conf
5004 ;; in the build environment.
5005 (substitute* "tests/unix-socket-test.c"
5006 ((".*/sockets/unconnected.*") ""))
5007
5008 ;; These fail because "subdomain.localhost" does not resolve in
5009 ;; the build environment. Moreover, the hsts-test suite fails on
5010 ;; i686-linux because of errors from `session_get_uri' like
5011 ;; "Unexpected status 200 OK (expected 301 Moved Permanently)"
5012 ;; (see: https://gitlab.gnome.org/GNOME/libsoup/-/issues/239).
5013 (substitute* "tests/meson.build"
5014 ((".*'name': 'hsts'.*") ""))
5015 (substitute* "tests/hsts-db-test.c"
5016 ((".*/hsts-db/subdomains.*") ""))))
5017 (add-after 'install 'move-doc
5018 (lambda _
5019 (mkdir-p (string-append #$output:doc "/share"))
5020 (rename-file (string-append #$output "/share/doc")
5021 (string-append #$output:doc "/share/doc"))))))))
5022 (native-inputs (modify-inputs native-inputs
5023 (prepend gettext-minimal gi-docgen)))))
5024
5025(define-public libsecret
5026 (package
5027 (name "libsecret")
5028 (version "0.21.7")
5029 (source (origin
5030 (method url-fetch)
5031 (uri (string-append
5032 "mirror://gnome/sources/libsecret/"
5033 (version-major+minor version) "/"
5034 "libsecret-" version ".tar.xz"))
5035 (sha256
5036 (base32
5037 "0pnmivbbyh0w3l72bw8mvq1ljbwdy8k01i5d2xb2n2jra13jwibb"))))
5038 (build-system meson-build-system)
5039 (arguments
5040 (list
5041 #:configure-flags
5042 #~(list "-Dgtk_doc=false") ;requires gi-docgen
5043 #:phases
5044 #~(modify-phases %standard-phases
5045 (delete 'check)
5046 (add-after 'install 'check
5047 (lambda* (#:key tests? test-options #:allow-other-keys)
5048 (when tests?
5049 (setenv "HOME" "/tmp")
5050 (setenv "XDG_DATA_DIRS" ;for /org/freedesktop/secrets/collection
5051 (string-append #$output "/share:"
5052 (getenv "XDG_DATA_DIRS")))
5053 (apply invoke "dbus-run-session" "--"
5054 "meson" "test" "--print-errorlogs" "-t" "0"
5055 test-options)))))))
5056 (native-inputs
5057 (list dbus
5058 docbook-xml-4.2
5059 docbook-xsl
5060 gettext-minimal
5061 `(,glib "bin") ;for gdbus-codegen, etc.
5062 gobject-introspection
5063 libxslt
5064 pkg-config
5065 python
5066 python-dbus
5067 python-pygobject-3.50
5068 vala))
5069 (propagated-inputs
5070 (list glib libgcrypt)) ;required by libsecret-1.pc
5071 (home-page "https://wiki.gnome.org/Projects/Libsecret/")
5072 (synopsis "GObject bindings for \"Secret Service\" API")
5073 (description
5074 "Libsecret is a GObject based library for storing and retrieving passwords
5075and other secrets. It communicates with the \"Secret Service\" using DBus.")
5076 (license license:lgpl2.1+)))
5077
5078(define-public five-or-more
5079 (package
5080 (name "five-or-more")
5081 (version "3.32.3")
5082 (source
5083 (origin
5084 (method url-fetch)
5085 (uri (string-append "mirror://gnome/sources/five-or-more/"
5086 (version-major+minor version) "/"
5087 "five-or-more-" version ".tar.xz"))
5088 (sha256
5089 (base32 "1x4ys18rn37hsavivh532py2avj9686aycnn8ys29cyyxwpdf41d"))))
5090 (build-system meson-build-system)
5091 (arguments
5092 '(#:glib-or-gtk? #t
5093 #:phases
5094 (modify-phases %standard-phases
5095 (add-after 'unpack 'skip-gtk-update-icon-cache
5096 (lambda _
5097 (substitute* "meson_post_install.py"
5098 (("gtk-update-icon-cache") (which "true"))))))))
5099 (native-inputs
5100 (list appstream-glib
5101 desktop-file-utils
5102 `(,glib "bin") ; for glib-compile-resources
5103 intltool
5104 itstool
5105 pkg-config
5106 vala))
5107 (inputs
5108 (list gtk+ libgnome-games-support-1 librsvg libxml2))
5109 (home-page "https://wiki.gnome.org/Apps/Five%20or%20more")
5110 (synopsis "Logic puzzle game")
5111 (description "Five or More is a game where you try to align
5112 five or more objects of the same color and shape causing them to disappear.
5113 On every turn more objects will appear, until the board is full.
5114 Try to last as long as possible.")
5115 (license license:gpl2+)))
5116
5117(define-public gi-docgen
5118 (package
5119 (name "gi-docgen")
5120 (version "2026.1")
5121 (source (origin
5122 (method url-fetch)
5123 (uri (pypi-uri "gi_docgen" version))
5124 (sha256
5125 (base32
5126 "1df7yb6d5zsr4wks4p2lf40a2v4v2dasx3pv2v3d2ma25d7krb35"))))
5127 (build-system pyproject-build-system)
5128 (arguments
5129 (list
5130 #:phases #~(modify-phases %standard-phases
5131 (add-after 'unpack 'patch-commands
5132 (lambda* (#:key inputs #:allow-other-keys)
5133 (substitute* '("gidocgen/config.py"
5134 "gidocgen/utils.py")
5135 (("find_program\\(['\"]dot['\"])")
5136 (format #f "find_program(~s)"
5137 (search-input-file inputs "bin/dot")))))))))
5138 (native-inputs (list python-pytest-bootstrap python-setuptools))
5139 (inputs (list graphviz-14))
5140 (propagated-inputs (list python-jinja2
5141 python-markdown
5142 python-markupsafe
5143 python-packaging
5144 python-pygments
5145 python-typogrify))
5146 (home-page "https://gitlab.gnome.org/GNOME/gi-docgen")
5147 (synopsis "Documentation tool for GObject-based libraries")
5148 (description "GI-DocGen is a document generator for GObject-based
5149libraries. GObject is the base type system of the GNOME project. GI-Docgen
5150reuses the introspection data generated by GObject-based libraries to generate
5151the API reference of these libraries, as well as other ancillary
5152documentation.")
5153 (license license:gpl3+)))
5154
5155(define-public gnome-mines
5156 (package
5157 (name "gnome-mines")
5158 (version "40.1")
5159 (source
5160 (origin
5161 (method url-fetch)
5162 (uri (string-append "mirror://gnome/sources/" name "/"
5163 (version-major version) "/"
5164 name "-" version ".tar.xz"))
5165 (sha256
5166 (base32 "0whjwdxhyw5bvibd9qvpm2yc5g7yhy8h3rn027kv5cqwyyryj0im"))))
5167 (build-system meson-build-system)
5168 (arguments
5169 `(#:glib-or-gtk? #t
5170 #:phases
5171 (modify-phases %standard-phases
5172 (add-after 'unpack 'skip-gtk-update-icon-cache
5173 (lambda _
5174 (substitute* "build-aux/meson_post_install.py"
5175 (("gtk-update-icon-cache") (which "true"))))))))
5176 (native-inputs
5177 (list appstream-glib
5178 desktop-file-utils
5179 gettext-minimal
5180 `(,glib "bin") ; for glib-compile-resources
5181 itstool
5182 pkg-config
5183 python-wrapper ; for meson_post_install.py
5184 vala))
5185 (inputs
5186 (list gtk+
5187 libgnome-games-support-1
5188 librsvg
5189 yelp))
5190 (home-page "https://wiki.gnome.org/Apps/Mines")
5191 (synopsis "Minesweeper game")
5192 (description
5193 "Mines (previously gnomine) is a puzzle game where you locate mines
5194floating in an ocean using only your brain and a little bit of luck.")
5195 (license license:gpl2+)))
5196
5197(define-public gnome-multi-writer
5198 (package
5199 (name "gnome-multi-writer")
5200 (version "3.35.90")
5201 (source
5202 (origin
5203 (method url-fetch)
5204 (uri (string-append "mirror://gnome/sources/gnome-multi-writer/"
5205 (version-major+minor version) "/"
5206 "gnome-multi-writer-" version ".tar.xz"))
5207 (sha256
5208 (base32
5209 "07vgzjjdrxcp7h73z13h9agafxb4vmqx5i81bcfyw0ilw9kkdzmp"))))
5210 (build-system meson-build-system)
5211 (arguments
5212 '(#:glib-or-gtk? #t
5213 #:phases
5214 (modify-phases %standard-phases
5215 (add-after 'unpack 'skip-post-install
5216 (lambda _
5217 (substitute* "meson.build"
5218 (("meson.add_install_script" &) (string-append "# " &)))
5219 #t)))))
5220 (native-inputs
5221 (list gettext-minimal
5222 `(,glib "bin")
5223 pkg-config))
5224 (inputs
5225 (list gtk+
5226 glib ; for gio
5227 gusb
5228 udisks
5229 libgudev
5230 libcanberra
5231 polkit))
5232 (home-page "https://wiki.gnome.org/Apps/MultiWriter")
5233 (synopsis "Write to multiple USB devices at once")
5234 (description
5235 "MultiWriter can be used to write an ISO file to multiple USB devices at
5236once.")
5237 (license license:gpl2+)))
5238
5239(define-public gnome-sudoku
5240 (package
5241 (name "gnome-sudoku")
5242 (version "51.0.1")
5243 (source
5244 (origin
5245 (method url-fetch)
5246 (uri (string-append "mirror://gnome/sources/" name "/"
5247 (version-major version) "/"
5248 name "-" version ".tar.xz"))
5249 (sha256
5250 (base32
5251 "1j6h8bz2s61pw0d02mhs167hr8llj3271bniqzy55ip4sgymwpv0"))))
5252 (build-system meson-build-system)
5253 (arguments
5254 `(#:glib-or-gtk? #t
5255 #:phases
5256 (modify-phases %standard-phases
5257 (add-after 'unpack 'skip-gtk-update-icon-cache
5258 (lambda _
5259 (substitute* "meson.build"
5260 (("gtk_update_icon_cache: true")
5261 "gtk_update_icon_cache: false")
5262 (("update_desktop_database: true")
5263 "update_desktop_database: false")))))))
5264 (native-inputs
5265 (list blueprint-compiler
5266 desktop-file-utils
5267 gettext-minimal
5268 `(,glib "bin") ;for glib-compile-resources
5269 itstool
5270 libxml2
5271 pkg-config
5272 vala))
5273 (inputs
5274 (list gtk
5275 json-glib
5276 libadwaita
5277 libgee
5278 (librsvg-for-system)
5279 qqwing))
5280 (home-page "https://wiki.gnome.org/Apps/Sudoku")
5281 (synopsis "Japanese logic game")
5282 (description
5283 "Sudoku is a Japanese logic game that exploded in popularity in 2005.
5284GNOME Sudoku is meant to have an interface as simple and unobstrusive as
5285possible while still providing features that make playing difficult Sudoku
5286more fun.")
5287 (license license:gpl2+)))
5288
5289(define-public gnome-console
5290 (package
5291 (name "gnome-console")
5292 (version "50.0")
5293 (source (origin
5294 (method url-fetch)
5295 (uri (string-append "mirror://gnome/sources/gnome-console/"
5296 (version-major version) "/"
5297 "gnome-console-" version ".tar.xz"))
5298 (sha256
5299 (base32
5300 "0vmcqx210asimq5awbqgmcg4c40sdv7vzvhq1xn6lzjly03h55g4"))))
5301 (build-system meson-build-system)
5302 (arguments
5303 (list #:glib-or-gtk? #t
5304 #:configure-flags #~(list "-Dtests=true")
5305 #:phases
5306 #~(modify-phases %standard-phases
5307 (add-after 'unpack 'fix-test-path-lookup
5308 (lambda* (#:key inputs #:allow-other-keys)
5309 (substitute* "tests/test-utils.c"
5310 (("/usr/bin/true")
5311 (format #f "~a" (search-input-file
5312 inputs "bin/true"))))))
5313 (replace 'check
5314 (lambda* (#:key tests? test-options parallel-tests?
5315 #:allow-other-keys)
5316 (when tests?
5317 (setenv "HOME" (getcwd))
5318 (system "Xvfb &")
5319 (setenv "DISPLAY" ":0")
5320 (setenv "MESON_TESTTHREADS"
5321 (if parallel-tests?
5322 (number->string (parallel-job-count))
5323 "1"))
5324 (apply invoke "dbus-run-session" "--" "meson" "test"
5325 "--print-errorlogs" "-t" "0" test-options)))))))
5326 (native-inputs (list dbus
5327 `(,glib "bin")
5328 gettext-minimal
5329 sassc
5330 pkg-config
5331 `(,gtk+ "bin")
5332 desktop-file-utils
5333 xorg-server-for-tests))
5334 (inputs (list gtk
5335 libadwaita
5336 vte
5337 libgtop
5338 gsettings-desktop-schemas))
5339 (home-page "https://gitlab.gnome.org/GNOME/console")
5340 (synopsis "GNOME terminal emulator")
5341 (description
5342 "Console is a simple terminal emulator for GNOME desktop")
5343 (license license:gpl3+)))
5344
5345(define-public gnome-terminal
5346 (package
5347 (name "gnome-terminal")
5348 (version "3.48.3")
5349 ;; download.gnome.org does not have any version for gnome-terminal more
5350 ;; recent than 3.44.1, but the repository has several tags newer than
5351 ;; that.
5352 (source (origin
5353 (method git-fetch)
5354 (uri (git-reference
5355 (url "https://gitlab.gnome.org/GNOME/gnome-terminal")
5356 (commit version)))
5357 (file-name (git-file-name name version))
5358 (sha256
5359 (base32
5360 "1cqh35j57a5ni4xlfjzl46kim6nbhqvxx3jql3gjk414z359i0j6"))))
5361 (build-system meson-build-system)
5362 (arguments
5363 (list
5364 #:glib-or-gtk? #t
5365 #:phases
5366 #~(modify-phases %standard-phases
5367 (add-after 'unpack 'patch-build-system
5368 ;; The build system looks for a dbus file from gnome-shell in the
5369 ;; installation tree of teh package it is configuring...
5370 (lambda* (#:key inputs #:allow-other-keys)
5371 (substitute* "src/meson.build"
5372 (("gt_prefix.*'org.gnome.ShellSearchProvider2.xml'")
5373 (format #f "'~a'" (search-input-file
5374 inputs "share/dbus-1/interfaces/\
5375org.gnome.ShellSearchProvider2.xml"))))))
5376 (add-before 'install 'disable-gtk-update-icon-cache
5377 (lambda _
5378 (setenv "DESTDIR" "/"))))))
5379 (native-inputs
5380 (list desktop-file-utils
5381 docbook-xsl
5382 gettext-minimal
5383 `(,glib "bin")
5384 itstool
5385 libxml2
5386 libxslt
5387 pkg-config
5388 python))
5389 (propagated-inputs
5390 (list dconf))
5391 (inputs
5392 (list gnome-shell
5393 gnutls
5394 gsettings-desktop-schemas
5395 gtk+
5396 nautilus ;for extension
5397 `(,util-linux "lib")
5398 vala
5399 vte/gtk+-3))
5400 (home-page "https://wiki.gnome.org/Apps/Terminal")
5401 (synopsis "Terminal emulator")
5402 (description
5403 "GNOME Terminal is a terminal emulator application for accessing a
5404UNIX shell environment which can be used to run programs available on
5405your system.
5406
5407It supports several profiles, multiple tabs and implements several
5408keyboard shortcuts.")
5409 (license license:gpl3+)))
5410
5411(define-public gnome-text-editor
5412 (package
5413 (name "gnome-text-editor")
5414 (version "49.1")
5415 (source (origin
5416 (method url-fetch)
5417 (uri (string-append "mirror://gnome/sources/gnome-text-editor/"
5418 (version-major version) "/"
5419 "gnome-text-editor-" version ".tar.xz"))
5420 (sha256
5421 (base32
5422 "1cfvaip29ljybrv9am72fka0m20i8m6c88h2qr89m5xmgcj8yi7h"))))
5423 (build-system meson-build-system)
5424 (arguments
5425 (list #:glib-or-gtk? #t))
5426 (native-inputs (list pkg-config
5427 cmake-minimal
5428 gettext-minimal
5429 desktop-file-utils
5430 appstream-glib
5431 `(,glib "bin")
5432 `(,gtk "bin")
5433 itstool))
5434 (inputs (list enchant
5435 gtk
5436 gtksourceview
5437 libadwaita
5438 libspelling
5439 pcre2
5440 ;; cyclic module dependency
5441 (module-ref
5442 (resolve-interface
5443 '(gnu packages text-editors))
5444 'editorconfig-core-c)))
5445 (home-page "https://gitlab.gnome.org/GNOME/gnome-text-editor")
5446 (synopsis "GNOME text editor")
5447 (description
5448 "GNOME Text Editor is a simple text editor that focuses on session
5449management. It keeps track of changes and state even if you quit the
5450application. You can come back to your work even if you've never saved it to a
5451file.")
5452 (license license:gpl3+)))
5453
5454(define-public colord-minimal
5455 (package
5456 (name "colord-minimal")
5457 (version "1.4.6")
5458 (source
5459 (origin
5460 (method url-fetch)
5461 (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
5462 "colord-" version ".tar.xz"))
5463 (sha256
5464 (base32 "0vwfx06k1in8hci3kdxpc3c0bh81f1vl5bp7favd3rdz4wd661vl"))))
5465 (build-system meson-build-system)
5466 (arguments
5467 (list
5468 #:glib-or-gtk? #t
5469 #:configure-flags #~(list "-Dargyllcms_sensor=false" ;requires spotread
5470 "-Dbash_completion=false"
5471 "-Ddaemon_user=colord"
5472 "-Ddocs=false"
5473 "-Dlocalstatedir=/var"
5474 "-Dman=false"
5475 "-Dsystemd=false") ;no systemd
5476 ;; Apparently the tests are known to fail on big-endian systems.
5477 #:tests? (not (or (%current-target-system)
5478 (not (target-little-endian?))))
5479 #:phases
5480 #~(modify-phases %standard-phases
5481 (add-before 'configure 'relax-gcc-14-strictness
5482 (lambda _
5483 (setenv "CFLAGS"
5484 "-g -O2 -Wno-error=incompatible-pointer-types")))
5485 (add-after 'unpack 'disable-problematic-tests
5486 (lambda _
5487 ;; Skip the colord-test-private, which requires a *system* D-Bus
5488 ;; session, which wants to run as root, among other requirements
5489 ;; (see: https://github.com/hughsie/colord/issues/97).
5490 (substitute* "lib/colord/meson.build"
5491 ((".*test\\('colord-test-private'.*") ""))))
5492 (add-before 'configure 'patch-build-system
5493 (lambda _
5494 (substitute* "rules/meson.build"
5495 (("udev.get_pkgconfig_variable\\('udevdir'\\)")
5496 (string-append "'" #$output "/lib/udev'")))))
5497 (add-before 'configure 'set-sqlite3-file-name
5498 (lambda* (#:key inputs #:allow-other-keys)
5499 ;; "colormgr dump" works by invoking the "sqlite3" command.
5500 ;; Record its absolute file name.
5501 (substitute* "client/cd-util.c"
5502 (("\"sqlite3\"")
5503 (format #f "~s" (search-input-file inputs
5504 "bin/sqlite3")))))))))
5505 (native-inputs
5506 (list `(,glib "bin") ; for glib-compile-resources, etc.
5507 gettext-minimal
5508 pkg-config
5509 vala))
5510 (propagated-inputs
5511 ;; colord.pc refers to all these.
5512 (list glib
5513 lcms
5514 eudev))
5515 (inputs
5516 (list dbus-glib
5517 gobject-introspection
5518 gusb-minimal
5519 libgudev
5520 libusb
5521 polkit
5522 python-wrapper
5523 sqlite))
5524 (home-page "https://www.freedesktop.org/software/colord/")
5525 (synopsis "Color management service")
5526 (description "Colord is a system service that makes it easy to manage,
5527install and generate color profiles to accurately color manage input and
5528output devices.")
5529 (license license:gpl2+)))
5530
5531(define-public colord
5532 (package/inherit colord-minimal
5533 (name "colord")
5534 (version "1.4.6")
5535 (source
5536 (origin
5537 (method url-fetch)
5538 (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
5539 "colord-" version ".tar.xz"))
5540 (sha256
5541 (base32 "0vwfx06k1in8hci3kdxpc3c0bh81f1vl5bp7favd3rdz4wd661vl"))))
5542 (arguments
5543 (substitute-keyword-arguments arguments
5544 ((#:configure-flags flags)
5545 #~(begin
5546 (use-modules (srfi srfi-1))
5547 (append '("-Dbash_completion=true"
5548 "-Ddocs=true"
5549 "-Dman=true"
5550 "-Dsane=true"
5551 "-Dvapi=true")
5552 (fold delete #$flags '("-Dbash_completion=false"
5553 "-Ddocs=false"
5554 "-Dman=false")))))
5555 ((#:phases phases)
5556 #~(modify-phases #$phases
5557 (add-after 'unpack 'fix-bash-completion-dir
5558 (lambda _
5559 (substitute* "data/meson.build"
5560 (("bash_completion.get_pkgconfig_variable\
5561\\('completionsdir'\\)")
5562 (string-append "'" #$output
5563 "/etc/bash_completion.d'")))))))))
5564 (native-inputs
5565 (modify-inputs native-inputs
5566 (append bash-completion
5567 docbook-xsl
5568 gtk-doc/stable
5569 libxslt
5570 sane
5571 vala))))) ;for VAPI, needed by simple-scan
5572
5573(define-public geoclue
5574 (package
5575 (name "geoclue")
5576 (version "2.7.2")
5577 (source
5578 (origin
5579 (method git-fetch)
5580 (uri (git-reference
5581 (url "https://gitlab.freedesktop.org/geoclue/geoclue")
5582 (commit version)))
5583 (file-name (git-file-name name version))
5584 (sha256
5585 (base32
5586 "1fq5pmypbm6v9ychh9v1k71801jbr3igrxzsq36vy7cxs1dga0ig"))
5587 (patches (search-patches "geoclue-config.patch"))))
5588 (build-system meson-build-system)
5589 (arguments
5590 '(#:configure-flags (list "-Ddbus-srv-user=geoclue")))
5591 (native-inputs
5592 (list pkg-config
5593 gobject-introspection
5594 modem-manager
5595 libnotify
5596 gtk-doc/stable
5597 gettext-minimal
5598 vala))
5599 (inputs
5600 (list avahi
5601 `(,glib "bin")
5602 glib-networking
5603 json-glib
5604 libsoup-minimal))
5605 (home-page "https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home")
5606 (synopsis "Geolocation service")
5607 (description "Geoclue is a D-Bus service that provides location
5608information. The primary goal of the Geoclue project is to make creating
5609location-aware applications as simple as possible, while the secondary goal is
5610to ensure that no application can access location information without explicit
5611permission from user.")
5612 (license license:gpl2+)))
5613
5614(define-public geocode-glib
5615 (package
5616 (name "geocode-glib")
5617 (version "3.26.4")
5618 (source (origin
5619 (method url-fetch)
5620 (uri (string-append "mirror://gnome/sources/geocode-glib/"
5621 (version-major+minor version) "/"
5622 "geocode-glib-" version ".tar.xz"))
5623 (sha256
5624 (base32
5625 "1aipd82qk404qy88pyfgplzgi83db4hi51vkl54h8isqs4k6i6id"))))
5626 (build-system meson-build-system)
5627 (arguments
5628 (list
5629 #:configure-flags #~(list "-Dsoup2=false")))
5630 (native-inputs
5631 (list `(,glib "bin") ;for glib-mkenums
5632 (libc-locales-for-target (%current-system)) ;for tests
5633 gettext-minimal
5634 gobject-introspection
5635 gtk-doc/stable
5636 pkg-config
5637 json-glib))
5638 (propagated-inputs
5639 ;; geocode-glib-2.0.pc refers to GIO.
5640 (list glib))
5641 (inputs
5642 (list libsoup))
5643 (home-page "https://github.com/GNOME/geocode-glib/")
5644 (synopsis "Geocoding and reverse-geocoding library")
5645 (description
5646 "geocode-glib is a convenience library for geocoding (finding longitude,
5647and latitude from an address) and reverse geocoding (finding an address from
5648coordinates) using the Nominatim service. geocode-glib caches requests for
5649faster results and to avoid unnecessary server load.")
5650 (license license:lgpl2.0+)))
5651
5652(define-public upower
5653 (package
5654 (name "upower")
5655 (version "1.90.10")
5656 (source
5657 (origin
5658 (method git-fetch)
5659 (uri (git-reference
5660 (url "https://gitlab.freedesktop.org/upower/upower")
5661 (commit (string-append "v" version))))
5662 (file-name (git-file-name name version))
5663 (sha256
5664 (base32 "0vscs2n1qdbylnz37janvk0241g3ww3xcsk9402zn9sivnvl1jfk"))
5665 (modules '((guix build utils)))
5666 (snippet
5667 ;; Upstream commit <https://cgit.freedesktop.org/upower/commit/
5668 ;; ?id=18457c99b68786cd729b315723d680e6860d9cfa> moved
5669 ;; 'dbus-1/system.d' from etc/ to share/. However,
5670 ;; 'dbus-configuration-directory' in (gnu services dbus) expects it in
5671 ;; etc/. Thus, move it back to its previous location.
5672 #~(substitute* "src/meson.build"
5673 (("dbusdir / 'system.d'")
5674 "get_option('sysconfdir') / 'dbus-1/system.d'")
5675 ;; Avoid writing to /var during the build, this is
5676 ;; not possible in Guix!
5677 (("^install_subdir\\('does-not-exist'.*$") "")
5678 (("install_emptydir\\(historydir\\)") "")))))
5679 (build-system meson-build-system)
5680 (arguments
5681 (list
5682 #:glib-or-gtk? #t
5683 #:configure-flags
5684 #~(list "-Dsystemdsystemunitdir=no"
5685 ;; If not specified, udev will try putting history information and
5686 ;; state files in /gnu/store.
5687 "-Dlocalstatedir=/var"
5688 (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d")
5689 (string-append "-Dudevhwdbdir=" #$output "/lib/udev/hwdb.d"))
5690 #:phases
5691 #~(modify-phases %standard-phases
5692 (add-after 'unpack 'adjust-test-suite
5693 (lambda _
5694 ;; This test calls an unimplemented bluez dbus method.
5695 (substitute* "src/linux/integration-test.py"
5696 (("test_bluetooth_hidpp_mouse")
5697 "disabled_test_bluetooth_hidpp_mouse")
5698 (("test_daemon_restart")
5699 "disabled_test_daemon_restart")
5700 ;; TODO: This needs to be fixed on python-dbusmock side by
5701 ;; adding python-setuptools-scm to native inptus, due to a
5702 ;; large rebuild count, mostly not Python related packages, it
5703 ;; left for the next refresh iteration for python-team or
5704 ;; gnome-team, see:
5705 ;; <https://codeberg.org/guix/guix/issues/6028>.
5706 ;;
5707 ;; Pretend current python-dbusmock version explicitly.
5708 (("dbusmock.__version__")
5709 "'0.37.2'")
5710 ;; XXX: File "<...>/integration-test.py", line 2174, in
5711 ;; test_bluetooth_le_device
5712 ;; self.assertEqual(self.get_dbus_dev_property(mouse_bat0_up,
5713 ;; 'Type'), UP_DEVICE_KIND_BLUETOOTH_GENERIC)
5714 ;; AssertionError: 8 != 28
5715 (("test_bluetooth_le_device")
5716 "__off_test_bluetooth_le_device")
5717 (("test_battery_.*_polkit_not.*" all)
5718 (string-append "disabled_" all)))
5719 #$@(if (target-x86-32?)
5720 ;; Address test failure caused by excess precision
5721 ;; on i686:
5722 ;; <https://gitlab.freedesktop.org/upower/upower/-/issues/214>.
5723 '((substitute* "src/linux/integration-test.py"
5724 (("assertEqual(.*)40\\.0" _ middle)
5725 (string-append
5726 "assertAlmostEqual" middle "40.0"))))
5727 '())))
5728 (delete 'check) ;moved after install
5729 (add-after 'install 'set-gi-typelib-path
5730 (lambda* (#:key outputs #:allow-other-keys)
5731 (setenv "GI_TYPELIB_PATH"
5732 (string-append
5733 (search-input-directory outputs "lib/girepository-1.0")
5734 ":" (getenv "GI_TYPELIB_PATH")))))
5735 (add-after 'set-gi-typelib-path 'check
5736 (assoc-ref %standard-phases 'check)))))
5737 (native-inputs
5738 (list `(,glib "bin") ; for gdbus-codegen
5739 gobject-introspection
5740 gtk-doc/stable
5741 intltool
5742 pkg-config
5743 python
5744 ;; For tests.
5745 python-dbus
5746 python-dbusmock-for-tests
5747 python-packaging
5748 python-pygobject
5749 umockdev
5750 dbus
5751 ;; For man pages.
5752 docbook-xsl
5753 libxslt)) ; for 'xsltproc'
5754 (inputs
5755 (list libgudev libusb))
5756 (propagated-inputs
5757 ;; In Requires of upower-glib.pc.
5758 (list glib))
5759 (home-page "https://upower.freedesktop.org/")
5760 (synopsis "System daemon for managing power devices")
5761 (description
5762 "UPower is an abstraction for enumerating power devices,
5763listening to device events and querying history and statistics. Any
5764application or service on the system can access the org.freedesktop.UPower
5765service via the system message bus.")
5766 (license license:gpl2+)
5767 ;; Old versions of upower are tagged as UPOWER_0_99_13, which confuses
5768 ;; the 'generic-git' updater. Give it a little help.
5769 (properties '((release-tag-prefix . "v")
5770 (release-tag-version-delimiter . ".")))))
5771
5772(define-public libgweather
5773 (package
5774 (name "libgweather")
5775 (version "4.4.4")
5776 (source (origin
5777 (method url-fetch)
5778 (uri (string-append "mirror://gnome/sources/" name "/"
5779 (version-major+minor version) "/"
5780 name "-" version ".tar.xz"))
5781 (sha256
5782 (base32
5783 "10s2pyf96yj287929px8jfbkda7bn76vzr2mqgyx3xydadvnf5vh"))))
5784 (build-system meson-build-system)
5785 (arguments
5786 (list
5787 #:tests? #f ;one of two tests requires network access
5788 #:configure-flags
5789 #~(list (string-append "-Dzoneinfo_dir="
5790 (search-input-directory %build-inputs
5791 "share/zoneinfo")))
5792 #:phases
5793 #~(modify-phases %standard-phases
5794 (add-before 'build 'set-home
5795 (lambda _
5796 ;; Build writes to $HOME via fontconfig.
5797 (setenv "HOME" (getcwd)))))))
5798 (native-inputs
5799 (list gettext-minimal
5800 `(,glib "bin") ;for glib-mkenums
5801 gobject-introspection
5802 gi-docgen
5803 pkg-config
5804 python
5805 vala
5806 python-pygobject))
5807 (propagated-inputs
5808 ;; gweather-3.0.pc refers to GTK+, GDK-Pixbuf, GLib/GObject, libxml, and
5809 ;; libsoup.
5810 (list gtk+
5811 gdk-pixbuf
5812 json-glib
5813 libxml2
5814 libsoup
5815 geocode-glib))
5816 (inputs
5817 (list tzdata))
5818 (home-page "https://gnome.pages.gitlab.gnome.org/libgweather/")
5819 (synopsis "Location, time zone, and weather library for GNOME")
5820 (description
5821 "libgweather is a library to access weather information from online
5822services for numerous locations.")
5823 (license license:gpl2+)))
5824
5825(define-public gnome-settings-daemon
5826 (package
5827 (name "gnome-settings-daemon")
5828 (version "49.1")
5829 (source
5830 (origin
5831 (method url-fetch)
5832 (uri (string-append "mirror://gnome/sources/" name "/"
5833 (version-major version) "/"
5834 name "-" version ".tar.xz"))
5835 (sha256
5836 (base32
5837 "1hf1dip78sjfsi28w80wkh6i51glprwl2j29gc9bkhwi9zy5g69a"))
5838 (patches (search-patches "gnome-settings-daemon-gc.patch"
5839 "gnome-settings-daemon-restore-desktop-files.patch"))))
5840 (build-system meson-build-system)
5841 (arguments
5842 (list
5843 #:glib-or-gtk? #t
5844 #:configure-flags
5845 #~(list (string-append "-Dudev_dir=" #$output "/lib/udev")
5846 "-Dsystemd=false"
5847 ;; Otherwise, the RUNPATH will lack the final path component.
5848 (string-append "-Dc_link_args=-Wl,-rpath=" #$output
5849 "/lib/gnome-settings-daemon-3.0:"
5850 ;; Also add NSS because for some reason Meson
5851 ;; > 0.60 does not add it automatically (XXX).
5852 (search-input-directory %build-inputs "lib/nss")))
5853 #:phases
5854 #~(modify-phases %standard-phases
5855 (add-before 'configure 'set-baobab-file-name
5856 (lambda* (#:key inputs #:allow-other-keys)
5857 ;; Hard-code the file name of Baobab instead of looking
5858 ;; it up in $PATH. This ensures users get the "Examine"
5859 ;; button in the low disk space notification of GDM even
5860 ;; if they don't have GNOME in their main profile.
5861 (substitute* "plugins/housekeeping/gsd-disk-space.c"
5862 (("g_find_program_in_path \\(DISK_SPACE_ANALYZER\\)")
5863 (format #f "g_strdup (~s)"
5864 (search-input-file inputs "bin/baobab")))))))
5865 ;; Color management test can't reach the colord system service.
5866 #:tests? #f))
5867 (native-inputs
5868 (list docbook-xml-4.2
5869 docbook-xsl
5870 gettext-minimal
5871 `(,glib "bin") ;for glib-mkenums
5872 libxslt
5873 perl
5874 pkg-config))
5875 (inputs
5876 (list alsa-lib
5877 baobab
5878 colord
5879 cups
5880 gcr
5881 geoclue
5882 geocode-glib
5883 gnome-desktop
5884 gsettings-desktop-schemas
5885 lcms
5886 libcanberra
5887 libgudev
5888 libgweather
5889 libnotify
5890 (librsvg-for-system)
5891 libwacom
5892 libx11
5893 libxtst
5894 modem-manager
5895 network-manager
5896 nss
5897 polkit
5898 pulseaudio
5899 upower
5900 wayland
5901 xf86-input-wacom))
5902 (home-page "https://www.gnome.org")
5903 (synopsis "GNOME settings daemon")
5904 (description
5905 "This package contains the daemon responsible for setting the various
5906parameters of a GNOME session and the applications that run under it. It
5907handles settings such keyboard layout, shortcuts, and accessibility, clipboard
5908settings, themes, mouse settings, and startup of other daemons.")
5909 (license license:gpl2+)))
5910
5911(define-public totem-pl-parser
5912 (package
5913 (name "totem-pl-parser")
5914 (version "3.26.6")
5915 (source (origin
5916 (method url-fetch)
5917 (uri (string-append "mirror://gnome/sources/totem-pl-parser/"
5918 (version-major+minor version) "/"
5919 "totem-pl-parser-" version ".tar.xz"))
5920 (sha256
5921 (base32
5922 "075csd5x0frgf93jvhlqiwv5i0qm24zz3iw17jj7v7fgsml0zpy0"))))
5923 (build-system meson-build-system)
5924 (arguments
5925 ;; FIXME: Tests require gvfs.
5926 `(#:tests? #f))
5927 (native-inputs
5928 (list intltool
5929 `(,glib "bin") gobject-introspection pkg-config))
5930 (propagated-inputs
5931 (list glib gmime libarchive libgcrypt libxml2))
5932 (inputs
5933 (list libsoup))
5934 (home-page "https://projects.gnome.org/totem")
5935 (synopsis "Library to parse and save media playlists for GNOME")
5936 (description "Totem-pl-parser is a GObjects-based library to parse and save
5937playlists in a variety of formats.")
5938 (license license:lgpl2.0+)))
5939
5940(define-public aisleriot
5941 (package
5942 (name "aisleriot")
5943 (version "3.22.9")
5944 (source (origin
5945 (method url-fetch)
5946 (uri (string-append "mirror://gnome/sources/aisleriot/"
5947 (version-major+minor version) "/"
5948 "aisleriot-" version ".tar.xz"))
5949 (sha256
5950 (base32
5951 "0yzdh9cw5cjjgvfh75bihl968czlgfmpmn1z0fdk88sgvpjgzwji"))))
5952 (build-system glib-or-gtk-build-system)
5953 (arguments
5954 '(#:configure-flags
5955 '("--with-platform=gtk-only"
5956 "--with-card-theme-formats=svg")))
5957 (native-inputs
5958 `(("desktop-file-utils" ,desktop-file-utils)
5959 ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
5960 ("intltool" ,intltool)
5961 ("itstool" ,itstool)
5962 ("pkg-config" ,pkg-config)
5963 ("xmllint" ,libxml2)))
5964 (inputs
5965 (list gtk+ guile-2.2 libcanberra (librsvg-for-system)))
5966 (home-page "https://wiki.gnome.org/Apps/Aisleriot")
5967 (synopsis "Solitaire card games")
5968 (description
5969 "Aisleriot (also known as Solitaire or sol) is a collection of card games
5970which are easy to play with the aid of a mouse.")
5971 (license license:gpl3+)))
5972
5973(define-public amtk
5974 (package
5975 (name "amtk")
5976 (version "5.6.1")
5977 (source (origin
5978 (method url-fetch)
5979 (uri (string-append "mirror://gnome/sources/amtk/"
5980 (version-major+minor version) "/"
5981 "amtk-" version ".tar.xz"))
5982 (sha256
5983 (base32
5984 "0a1j2ynsa2nx1rzd55mdyp35d89zd9rfxd9ld4lsqal7bjw1a0fm"))))
5985 (build-system meson-build-system)
5986 (native-inputs
5987 (list gobject-introspection
5988 `(,glib "bin") ; for glib-mkenums
5989 gtk-doc/stable pkg-config))
5990 (inputs
5991 (list glib gtk+))
5992 (home-page "https://wiki.gnome.org/Projects/Amtk")
5993 (synopsis "Actions, Menus and Toolbars Kit for GTK+ applications")
5994 (description
5995 "Amtk is the acronym for @acronym{Amtk, Actions Menus and Toolbars Kit}.
5996It is a basic GtkUIManager replacement based on GAction. It is suitable for
5997both a traditional UI or a modern UI with a GtkHeaderBar.")
5998 (license license:lgpl2.1+)))
5999
6000(define-public cogl
6001 (package
6002 (name "cogl")
6003 (version "1.22.8")
6004 (source
6005 (origin
6006 (method url-fetch)
6007 (uri (string-append "mirror://gnome/sources/cogl/"
6008 (version-major+minor version) "/"
6009 "cogl-" version ".tar.xz"))
6010 (sha256
6011 (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8"))
6012 (patches
6013 (search-patches "cogl-fix-double-free.patch"))))
6014 ;; NOTE: mutter exports a bundled fork of cogl, so when making changes to
6015 ;; cogl, corresponding changes may be appropriate in mutter as well.
6016 (build-system gnu-build-system)
6017 (native-inputs
6018 `(("glib:bin" ,glib "bin") ; for glib-mkenums
6019 ("gobject-introspection" ,gobject-introspection)
6020 ("xorg-server" ,xorg-server-for-tests)
6021 ("pkg-config" ,pkg-config)))
6022 (propagated-inputs
6023 (list glib
6024 gdk-pixbuf
6025 libx11
6026 libxext
6027 libxfixes
6028 libxdamage
6029 libxcomposite
6030 libxrandr))
6031 (inputs
6032 (list mesa
6033 cairo
6034 pango
6035 wayland))
6036 (arguments
6037 `(#:disallowed-references ,(list (this-package-native-input "xorg-server"))
6038 #:configure-flags (list ,(string-append
6039 "CFLAGS=-g -O2"
6040 " -Wno-error=implicit-function-declaration")
6041 "--enable-cogl-gst=no" ;broken and unmaintained
6042 "--enable-wayland-egl-platform"
6043 "--enable-wayland-egl-server"
6044
6045 ;; Arrange to pass an absolute file name to
6046 ;; dlopen for libGL.so.
6047 (string-append "--with-gl-libname="
6048 (assoc-ref %build-inputs "mesa")
6049 "/lib/libGL.so"))
6050 #:phases
6051 (modify-phases %standard-phases
6052 (add-after 'unpack 'fix-build-with-mesa-20
6053 (lambda _
6054 ;; Work around a problem with Mesa 20 where some macros used by
6055 ;; Cogl went missing from eglext.h. This can likely be removed
6056 ;; for newer versions of Cogl or Mesa.
6057 ;; https://gitlab.gnome.org/GNOME/cogl/-/merge_requests/19
6058 (substitute* '("configure"
6059 "cogl/winsys/cogl-winsys-egl-kms.c")
6060 (("#include <EGL/eglext.h>" all)
6061 (string-append all "\n#include <EGL/eglmesaext.h>\n")))
6062 #t))
6063 (add-before 'check 'start-xorg-server
6064 (lambda* (#:key tests? inputs #:allow-other-keys)
6065 (if tests?
6066 (begin
6067 ;; The test suite requires a running X server.
6068 (system (format #f "~a/bin/Xvfb :1 +extension GLX &"
6069 (assoc-ref inputs "xorg-server")))
6070 (setenv "DISPLAY" ":1")
6071 #t)
6072 (format #t "test suite not run~%"))
6073 #t)))))
6074 (home-page "https://blogs.gnome.org/clutter/")
6075 (synopsis "Object oriented GL/GLES Abstraction/Utility Layer")
6076 (description
6077 "Cogl is a small library for using 3D graphics hardware to draw pretty
6078pictures. The API departs from the flat state machine style of OpenGL and is
6079designed to make it easy to write orthogonal components that can render
6080without stepping on each others toes.")
6081 (license (list license:expat ; most of the code
6082 license:bsd-3 ; cogl/cogl-point-in-poly.c
6083 license:sgifreeb2.0 ; cogl-path/tesselator/
6084 license:asl2.0)))) ; examples/android/
6085
6086(define-public clutter
6087 (package
6088 (name "clutter")
6089 (version "1.26.4")
6090 (source
6091 (origin
6092 (method url-fetch)
6093 (uri (string-append "mirror://gnome/sources/" name "/"
6094 (version-major+minor version) "/"
6095 name "-" version ".tar.xz"))
6096 (sha256
6097 (base32
6098 "1rn4cd1an6a9dfda884aqpcwcgq8dgydpqvb19nmagw4b70zlj4b"))))
6099 (build-system gnu-build-system)
6100 (outputs '("out"
6101 "doc")) ;9 MiB of gtk-doc HTML pages
6102 (native-inputs
6103 (list `(,glib "bin") ; for glib-genmarshal
6104 gobject-introspection
6105 libxslt
6106 pkg-config))
6107 (propagated-inputs
6108 (list at-spi2-core
6109 cairo
6110 cogl
6111 glib
6112 gtk+
6113 json-glib
6114 libxcomposite
6115 libxdamage
6116 libxext
6117 xinput))
6118 (inputs
6119 (list eudev
6120 libxkbcommon))
6121 (arguments
6122 `(#:configure-flags (list "--enable-x11-backend=yes"
6123
6124 ;; This produces share/doc/{clutter,cally}.
6125 (string-append "--with-html-dir="
6126 (assoc-ref %outputs "doc")
6127 "/share/doc"))
6128 ;; XXX FIXME: Get test suite working. It would probably fail in the
6129 ;; same way the cogl tests fail, since clutter is based on cogl.
6130 #:tests? #f))
6131 (home-page "https://blogs.gnome.org/clutter/")
6132 (synopsis "OpenGL-based interactive canvas library")
6133 (description
6134 "Clutter is an OpenGL-based interactive canvas library, designed for
6135creating fast, mainly 2D single window applications such as media box UIs,
6136presentations, kiosk style applications and so on.")
6137 (license license:lgpl2.0+)))
6138
6139(define-public clutter-gtk
6140 (package
6141 (name "clutter-gtk")
6142 (version "1.8.4")
6143 (source
6144 (origin
6145 (method url-fetch)
6146 (uri (string-append "mirror://gnome/sources/" name "/"
6147 (version-major+minor version) "/"
6148 name "-" version ".tar.xz"))
6149 (sha256
6150 (base32
6151 "01ibniy4ich0fgpam53q252idm7f4fn5xg5qvizcfww90gn9652j"))))
6152 (build-system gnu-build-system)
6153 (native-inputs
6154 (list pkg-config gobject-introspection))
6155 (propagated-inputs
6156 ;; clutter-gtk.pc refers to all these.
6157 (list clutter gtk+))
6158 (home-page "https://blogs.gnome.org/clutter/")
6159 (synopsis "OpenGL-based interactive canvas library GTK+ widget")
6160 (description
6161 "Clutter is an OpenGL-based interactive canvas library, designed for
6162creating fast, mainly 2D single window applications such as media box UIs,
6163presentations, kiosk style applications and so on.")
6164 (license license:lgpl2.0+)))
6165
6166(define-public clutter-gst
6167 (package
6168 (name "clutter-gst")
6169 (version "3.0.27")
6170 (source
6171 (origin
6172 (method url-fetch)
6173 (uri (string-append "mirror://gnome/sources/clutter-gst/"
6174 (version-major+minor version) "/"
6175 "clutter-gst-" version ".tar.xz"))
6176 (sha256
6177 (base32 "17czmpl92dzi4h3rn5rishk015yi3jwiw29zv8qan94xcmnbssgy"))))
6178 (build-system gnu-build-system)
6179 (native-inputs
6180 (list `(,glib "bin") ; for glib-mkenums
6181 pkg-config gobject-introspection))
6182 (inputs
6183 (list clutter gstreamer gst-plugins-base))
6184 (home-page "https://blogs.gnome.org/clutter/")
6185 (synopsis "Integration library for using GStreamer with Clutter")
6186 (description
6187 "Clutter-Gst is an integration library for using GStreamer with Clutter.
6188It provides a GStreamer sink to upload frames to GL and an actor that
6189implements the ClutterGstPlayer interface using playbin. Clutter is an
6190OpenGL-based interactive canvas library.")
6191 (license license:lgpl2.0+)))
6192
6193(define-public libchamplain
6194 (package
6195 (name "libchamplain")
6196 (version "0.12.20")
6197 (source (origin
6198 (method url-fetch)
6199 (uri (string-append
6200 "mirror://gnome/sources/libchamplain/0.12/libchamplain-"
6201 version ".tar.xz"))
6202 (sha256
6203 (base32
6204 "0rihpb0npqpihqcdz4w03rq6xl7jdckfqskvv9diq2hkrnzv8ch2"))))
6205 (build-system meson-build-system)
6206 (native-inputs
6207 (list gobject-introspection pkg-config vala))
6208 (propagated-inputs
6209 (list libsoup-minimal-2
6210 sqlite
6211 clutter
6212 clutter-gtk
6213 `(,glib "bin") ;glib-mkenums, etc.
6214 cairo
6215 gtk+
6216 glib))
6217 (home-page "https://projects.gnome.org/libchamplain/")
6218 (synopsis "C library providing a ClutterActor to display maps")
6219 (description
6220 "libchamplain is a C library providing a ClutterActor to display maps.
6221It also provides a Gtk+ widget to display maps in Gtk+ applications. Python
6222and Perl bindings are also available. It supports numerous free map sources
6223such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free.")
6224 (license license:lgpl2.1+)))
6225
6226(define-public gom
6227 (package
6228 (name "gom")
6229 (version "0.5.5")
6230 (source
6231 (origin
6232 (method url-fetch)
6233 (uri (string-append "mirror://gnome/sources/gom/"
6234 (version-major+minor version) "/"
6235 "gom-" version ".tar.xz"))
6236 (sha256
6237 (base32
6238 "0d5m15gz97nyvssy1ljpi6qs7fwzk0baikqzfyqplyiiy9dg0qdd"))))
6239 (build-system meson-build-system)
6240 (arguments
6241 (list
6242 #:imported-modules (append %meson-build-system-modules
6243 %pyproject-build-system-modules)
6244 #:modules '((guix build meson-build-system)
6245 ((guix build pyproject-build-system) #:prefix py:)
6246 (guix build utils))
6247 #:configure-flags
6248 #~(list (string-append "-Dpygobject-override-dir="
6249 (py:site-packages %build-inputs %outputs)
6250 "/gi/overrides"))))
6251 (native-inputs
6252 (list gettext-minimal
6253 gobject-introspection
6254 pkg-config
6255 python
6256 python-pygobject))
6257 (inputs
6258 (list glib
6259 gdk-pixbuf
6260 sqlite))
6261 (home-page "https://wiki.gnome.org/Projects/Gom")
6262 (synopsis "Object mapper from GObjects to SQLite")
6263 (description
6264 "Gom provides an object mapper from GObjects to SQLite. It helps you
6265write applications that need to store structured data as well as make complex
6266queries upon that data.")
6267 (license license:lgpl2.1+)))
6268
6269(define-public libgnome-games-support
6270 (package
6271 (name "libgnome-games-support")
6272 (version "2.0.0")
6273 (source
6274 (origin
6275 (method url-fetch)
6276 (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
6277 (version-major+minor version) "/"
6278 "libgnome-games-support-" version ".tar.xz"))
6279 (sha256
6280 (base32
6281 "196jaga70r16bzypv4z07mnwr0xcm93gc91kxygcpp9fwdpiz0jk"))))
6282 (build-system meson-build-system)
6283 (arguments
6284 '(#:glib-or-gtk? #t
6285 #:phases
6286 (modify-phases %standard-phases
6287 (add-before 'check 'pre-check
6288 (lambda _
6289 ;; Tests require a writable HOME.
6290 (setenv "HOME" (getcwd)))))))
6291 (native-inputs
6292 (list intltool pkg-config vala))
6293 (propagated-inputs
6294 ;; Required by libgnome-games-support-1.0.pc
6295 (list gtk libgee))
6296 (home-page "https://www.gnome.org/")
6297 (synopsis "Useful functionality shared among GNOME games")
6298 (description
6299 "libgnome-games-support is a small library intended for internal use by
6300GNOME Games, but it may be used by others.")
6301 (license license:lgpl3+)))
6302
6303(define-public libgnome-games-support-1
6304 (package
6305 (inherit libgnome-games-support)
6306 (version "1.8.2")
6307 (source
6308 (origin
6309 (method url-fetch)
6310 (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
6311 (version-major+minor version) "/"
6312 "libgnome-games-support-" version ".tar.xz"))
6313 (sha256
6314 (base32
6315 "0zggsg7h9nlcwwjcqc13pdjza17iiww325r3q0d76f5hlw24chr8"))))
6316 (propagated-inputs (modify-inputs (package-propagated-inputs
6317 libgnome-games-support)
6318 (replace "gtk" gtk+)))))
6319
6320(define-public gnome-klotski
6321 (package
6322 (name "gnome-klotski")
6323 (version "3.38.2")
6324 (source (origin
6325 (method url-fetch)
6326 (uri (string-append "mirror://gnome/sources/" name "/"
6327 (version-major+minor version) "/"
6328 name "-" version ".tar.xz"))
6329 (sha256
6330 (base32
6331 "1qm01hdd5yp8chig62bj10912vclbdvywwczs84sfg4zci2phqwi"))))
6332 (build-system meson-build-system)
6333 (arguments
6334 '(#:glib-or-gtk? #t
6335 #:phases
6336 (modify-phases %standard-phases
6337 (add-after 'unpack 'skip-gtk-update-icon-cache
6338 ;; Don't create 'icon-theme.cache'.
6339 (lambda _
6340 (substitute* "build-aux/meson_post_install.py"
6341 (("gtk-update-icon-cache") (which "true"))))))))
6342 (native-inputs
6343 (list desktop-file-utils
6344 `(,glib "bin") ; for glib-compile-resources
6345 intltool
6346 itstool
6347 pkg-config
6348 vala
6349 libxml2))
6350 (inputs
6351 (list gtk+
6352 libgnome-games-support-1
6353 librsvg))
6354 (home-page "https://wiki.gnome.org/Apps/Klotski")
6355 (synopsis "Sliding block puzzles")
6356 (description
6357 "GNOME Klotski is a set of block sliding puzzles. The objective is to move
6358the patterned block to the area bordered by green markers. To do so, you will
6359need to slide other blocks out of the way. Complete each puzzle in as few moves
6360as possible!")
6361 (license license:gpl2+)))
6362
6363(define-public grilo
6364 (package
6365 (name "grilo")
6366 (version "0.3.19")
6367 (source
6368 (origin
6369 (method url-fetch)
6370 (uri (string-append "mirror://gnome/sources/grilo/"
6371 (version-major+minor version) "/"
6372 "grilo-" version ".tar.xz"))
6373 (sha256
6374 (base32 "01k7aclyp1z2mm6d0201zk5vav6bvla7qmkrgmk9q4xb34fwhs88"))))
6375 (build-system meson-build-system)
6376 (arguments
6377 (list #:phases #~(modify-phases %standard-phases
6378 (add-before 'unpack 'set-HOME
6379 (lambda _
6380 ;; Tests require write access to HOME.
6381 (setenv "HOME" "/tmp"))))))
6382 (native-inputs
6383 (list `(,glib "bin") ; for glib-mkenums and glib-genmarshal
6384 gettext-minimal
6385 gsettings-desktop-schemas
6386 pkg-config
6387 gobject-introspection
6388 gtk-doc/stable
6389 python
6390 vala))
6391 (inputs
6392 (list cyrus-sasl
6393 glib
6394 gtk+
6395 liboauth
6396 libsoup
6397 libxml2
6398 totem-pl-parser))
6399 (native-search-paths
6400 (list (search-path-specification
6401 (variable "GRL_PLUGIN_PATH")
6402 (files (list (string-append "lib/grilo-"
6403 (version-major+minor version)))))))
6404 (home-page "https://wiki.gnome.org/Projects/Grilo")
6405 (synopsis "Framework for discovering and browsing media")
6406 (description
6407 "Grilo is a framework focused on making media discovery and browsing easy
6408for application developers.")
6409 (license license:lgpl2.1+)))
6410
6411(define-public grilo-plugins
6412 (package
6413 (name "grilo-plugins")
6414 (version "0.3.18")
6415 (source
6416 (origin
6417 (method url-fetch)
6418 (uri (string-append "mirror://gnome/sources/" name "/"
6419 (version-major+minor version) "/"
6420 name "-" version ".tar.xz"))
6421 (sha256
6422 (base32 "0pkclk4rrd7zan0f45nhlll414dhdgr8s3ybs0ic7hqpwx7ffg4f"))))
6423 (build-system meson-build-system)
6424 (native-inputs
6425 (list gettext-minimal
6426 ;; Gstreamer plugins are required for tests.
6427 gst-plugins-good
6428 gst-plugins-bad
6429 `(,glib "bin")
6430 itstool
6431 pkg-config))
6432 (inputs
6433 (list avahi
6434 grilo
6435 gnome-online-accounts
6436 gom
6437 gstreamer
6438 json-glib
6439 avahi
6440 libdmapsharing
6441 libmediaart
6442 libsoup
6443 localsearch
6444 python-pygobject
6445 tinysparql
6446 totem-pl-parser))
6447 (arguments
6448 (list
6449 #:glib-or-gtk? #t
6450 ;;Disable lua-factory as it needs missing dependencies
6451 #:configure-flags #~'("-Denable-lua-factory=no")
6452 #:phases
6453 #~(modify-phases %standard-phases
6454 (add-before 'configure 'set-shell
6455 (lambda _
6456 (setenv "SHELL" (which "bash"))))
6457 ;; Disable the tracker test that requires the UPower daemon.
6458 (add-before 'configure 'fix-tests
6459 (lambda* (#:key inputs #:allow-other-keys)
6460 (substitute* "tests/tracker3/meson.build"
6461 (("'test_tracker3',?") "")))))))
6462 (home-page "https://wiki.gnome.org/Projects/Grilo")
6463 (synopsis "Plugins for the Grilo media discovery library")
6464 (description
6465 "Grilo is a framework focused on making media discovery and browsing easy
6466for application developers. This package provides plugins for common media
6467discovery protocols.")
6468 (license license:lgpl2.1+)))
6469
6470(define-public showtime
6471 (package
6472 (name "showtime")
6473 (version "50.0")
6474 (source (origin
6475 (method git-fetch)
6476 (uri (git-reference
6477 (url "https://gitlab.gnome.org/GNOME/showtime")
6478 (commit version)))
6479 (file-name (git-file-name name version))
6480 (sha256
6481 (base32
6482 "190xsv4csdj8xfh1rv3yvls5m63k6aca4sh5pmqk6r18bz03jj40"))
6483 (patches (search-patches "showtime-python-3.11-compat.patch"))))
6484 (build-system meson-build-system)
6485 (arguments
6486 (list
6487 #:imported-modules (append %meson-build-system-modules
6488 %pyproject-build-system-modules)
6489 #:modules `((guix build meson-build-system)
6490 ((guix build pyproject-build-system) #:prefix py:)
6491 (guix build utils))
6492 #:glib-or-gtk? #t
6493 #:phases
6494 #~(modify-phases %standard-phases
6495 (add-after 'unpack 'skip-gtk-update-icon-cache
6496 (lambda _
6497 (substitute* "meson.build"
6498 (("gtk_update_icon_cache: true")
6499 "gtk_update_icon_cache: false")
6500 (("glib_compile_schemas: true")
6501 "glib_compile_schemas: false")
6502 (("update_desktop_database: true")
6503 "update_desktop_database: false"))))
6504 (add-after 'install 'add-install-to-pythonpath
6505 (assoc-ref py:%standard-phases 'add-install-to-pythonpath))
6506 (add-after 'add-install-to-pythonpath 'wrap-python
6507 (assoc-ref py:%standard-phases 'wrap))
6508 (add-after 'wrap-python 'gi-wrap
6509 (lambda* (#:key inputs #:allow-other-keys)
6510 (wrap-program (string-append #$output "/bin/showtime")
6511 `("GI_TYPELIB_PATH" prefix
6512 (,(getenv "GI_TYPELIB_PATH")))
6513 `("GST_PLUGIN_SYSTEM_PATH" prefix
6514 ,(map (lambda (x)
6515 (dirname (search-input-file
6516 inputs
6517 (string-append "lib/gstreamer-1.0/" x))))
6518 ;; libgstgtk4.so appears to be sensitive to ordering;
6519 ;; ensure it comes first in the plugin path.
6520 (list "libgstgtk4.so" ;gst-plugins-rs:video
6521 "libgstopengl.so" ;gst-plugins-base
6522 "libgstmatroska.so" ;gst-plugins-good
6523 "libgstmpegpsdemux.so"))))))))) ;gst-plugins-bad
6524
6525 (native-inputs
6526 (list blueprint-compiler
6527 desktop-file-utils
6528 gettext-minimal
6529 `(,glib "bin")
6530 `(,gtk "bin")
6531 pkg-config))
6532 (inputs
6533 (list bash-minimal
6534 gstreamer
6535 gst-plugins-base
6536 gst-plugins-bad ;for GstPlay
6537 gst-plugins-good
6538 `(,gst-plugins-rs "video")
6539 gobject-introspection ;for cairo-1.0.typelib
6540 gtk
6541 libadwaita
6542 python
6543 python-pygobject))
6544 (home-page "https://gitlab.gnome.org/GNOME/showtime")
6545 (synopsis "Video player")
6546 (description "Showtime, also known as Video Player in GNOME, is a modern
6547video player that aims to be simple to use, avoiding distractions. Showtime
6548features simple playback controls that fade out of the way when watching,
6549fullscreen, adjustable playback speed, multiple language and subtitle tracks
6550as well as the ability to take screenshots.")
6551 (license license:gpl3+)))
6552
6553(define-public totem
6554 (package
6555 (name "totem")
6556 (version "43.2")
6557 (source
6558 (origin
6559 (method url-fetch)
6560 (uri (string-append "mirror://gnome/sources/totem/"
6561 (version-major version) "/"
6562 "totem-" version ".tar.xz"))
6563 (sha256
6564 (base32
6565 "197606ffjwlr4j566bjwlwrw6zzmjyj4hj7i0jk9afxrzcq7s00b"))))
6566 (build-system meson-build-system)
6567 (native-inputs
6568 (list `(,glib "bin") ;for 'glib-mkenums'
6569 desktop-file-utils
6570 gettext-minimal
6571 gobject-introspection
6572 intltool
6573 itstool
6574 libxml2
6575 perl ;for pod2man
6576 pkg-config
6577 xorg-server-for-tests))
6578 (propagated-inputs
6579 (list dconf))
6580 (inputs
6581 (list (librsvg-for-system)
6582 adwaita-icon-theme
6583 at-spi2-core
6584 bash-minimal
6585 cairo
6586 dbus-glib
6587 gdk-pixbuf
6588 gnome-desktop
6589 grilo
6590 grilo-plugins
6591 gsettings-desktop-schemas
6592 gst-libav
6593 gst-plugins-base
6594 gst-plugins-good
6595 gstreamer
6596 gtk+
6597 libhandy
6598 libpeas
6599 libportal
6600 libsoup
6601 libxml2
6602 libxrandr
6603 libxtst
6604 libxxf86vm
6605 python
6606 python-pygobject-3.50
6607 totem-pl-parser
6608 vala
6609 xorgproto))
6610 (arguments
6611 (list
6612 #:glib-or-gtk? #t
6613 ;; Disable automatic GStreamer plugin installation via PackageKit and
6614 ;; all that.
6615 #:configure-flags
6616 ;; Do not build .a files for the plugins, it's completely useless.
6617 ;; This saves 2 MiB.
6618 #~(list "--default-library" "shared")
6619 #:phases
6620 #~(modify-phases %standard-phases
6621 (add-after 'unpack 'skip-gtk-update-icon-cache
6622 ;; Don't create 'icon-theme.cache'.
6623 (lambda _
6624 (substitute* "meson.build"
6625 (("gtk_update_icon_cache: true")
6626 "gtk_update_icon_cache: false"))))
6627 (add-before 'install 'disable-cache-generation
6628 (lambda _
6629 (setenv "DESTDIR" "/")))
6630 (add-before 'check 'pre-check
6631 (lambda _
6632 ;; Tests require a running X server.
6633 (system "Xvfb :1 &")
6634 (setenv "DISPLAY" ":1")))
6635 (add-after 'install 'wrap-totem
6636 (lambda* (#:key inputs outputs #:allow-other-keys)
6637 (let ((out (assoc-ref outputs "out"))
6638 (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
6639 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
6640 (grl-plugin-path (getenv "GRL_PLUGIN_PATH")))
6641 (wrap-program (string-append out "/bin/totem")
6642 `("GI_TYPELIB_PATH" ":" suffix (,gi-typelib-path))
6643 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
6644 `("GRL_PLUGIN_PATH" ":" prefix (,grl-plugin-path)))
6645 (wrap-program (string-append out "/bin/totem-video-thumbnailer")
6646 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))))))))
6647 (home-page "https://wiki.gnome.org/Apps/Videos")
6648 (synopsis "Simple media player for GNOME based on GStreamer")
6649 (description "Totem is a simple yet featureful media player for GNOME
6650which can read a large number of file formats.")
6651 ;; GPL2+ with an exception clause for non-GPL compatible GStreamer plugins
6652 ;; to be used and distributed together with GStreamer and Totem. See
6653 ;; file://COPYING in the source distribution for details.
6654 (license license:gpl2+)))
6655
6656(define-public rhythmbox
6657 (package
6658 (name "rhythmbox")
6659 (version "3.5.1")
6660 (source (origin
6661 (method url-fetch)
6662 (uri (string-append "mirror://gnome/sources/rhythmbox/"
6663 (version-major+minor version) "/"
6664 "rhythmbox-" version ".tar.xz"))
6665 (sha256
6666 (base32
6667 "14s0jbdghkr5lsrwbcbjnka1f0nm1fz4w9k4nhin15c18iqx3rwf"))))
6668 (build-system meson-build-system)
6669 (arguments
6670 (list
6671 #:glib-or-gtk? #t
6672 #:phases
6673 #~(modify-phases %standard-phases
6674 (add-after 'unpack 'skip-gtk-update-icon-cache
6675 (lambda _
6676 (substitute* "meson.build"
6677 (("gtk_update_icon_cache: true")
6678 "gtk_update_icon_cache: false"))))
6679 (add-after 'install 'wrap-rhythmbox
6680 (lambda* (#:key outputs #:allow-other-keys)
6681 (wrap-program (search-input-file outputs "bin/rhythmbox")
6682 `("GI_TYPELIB_PATH" ":" prefix
6683 (,(getenv "GI_TYPELIB_PATH")))
6684 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
6685 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
6686 `("GRL_PLUGIN_PATH" ":" prefix
6687 (,(getenv "GRL_PLUGIN_PATH")))
6688 `("GUIX_PYTHONPATH" ":" prefix
6689 (,(getenv "GUIX_PYTHONPATH")))))))))
6690 (propagated-inputs
6691 (list dconf))
6692 (native-inputs
6693 (list desktop-file-utils
6694 gettext-minimal
6695 gobject-introspection
6696 `(,glib "bin")
6697 itstool
6698 pkg-config
6699 vala))
6700 (inputs
6701 (list adwaita-icon-theme
6702 at-spi2-core
6703 bash-minimal
6704 brasero
6705 json-glib
6706 gmime
6707 gnome-desktop
6708 grilo
6709 grilo-plugins
6710 gsettings-desktop-schemas
6711 gst-plugins-base
6712 gst-plugins-good
6713 gstreamer
6714 gtk+
6715 libgpod
6716 libgudev
6717 libnotify
6718 libpeas
6719 libsecret
6720 libmtp
6721 libsoup-minimal
6722 libxml2
6723 lirc
6724 pango
6725 python
6726 python-pygobject-3.50
6727 tdb
6728 totem-pl-parser))
6729 (home-page "https://gitlab.gnome.org/GNOME/rhythmbox")
6730 (synopsis "Music player for GNOME")
6731 (description "Rhythmbox is a music playing application for GNOME. It
6732supports playlists, song ratings, and any codecs installed through gstreamer.")
6733 (license license:gpl2+)))
6734
6735(define-public eog
6736 (package
6737 (name "eog")
6738 (version "47.0")
6739 (source (origin
6740 (method url-fetch)
6741 (uri (string-append "mirror://gnome/sources/" name "/"
6742 (version-major version) "/"
6743 name "-" version ".tar.xz"))
6744 (sha256
6745 (base32
6746 "0rnyrgh0qg1zdnpmn79kaflk0bra4zly93kxgdm14xad4bsxnpnv"))))
6747 (build-system meson-build-system)
6748 (arguments
6749 (list
6750 #:glib-or-gtk? #t
6751 #:configure-flags
6752 ;; Otherwise, the RUNPATH will lack the final 'eog' path component.
6753 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
6754 #$output "/lib/eog"))
6755 #:phases
6756 #~(modify-phases %standard-phases
6757 (add-after 'unpack 'skip-gtk-update-icon-cache
6758 ;; Don't create 'icon-theme.cache'.
6759 (lambda _
6760 (substitute* "meson.build"
6761 (("gtk_update_icon_cache: true")
6762 "gtk_update_icon_cache: false"))))
6763 (add-after 'install 'wrap-eog
6764 (lambda* (#:key outputs #:allow-other-keys)
6765 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
6766 (wrap-program (search-input-file outputs "bin/eog")
6767 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
6768 (propagated-inputs
6769 (list dconf
6770 libhandy)) ;libhandy is required by eog.pc
6771 (native-inputs
6772 (list gettext-minimal
6773 `(,glib "bin")
6774 gobject-introspection
6775 itstool
6776 libxml2
6777 pkg-config))
6778 (inputs
6779 (list adwaita-icon-theme
6780 bash-minimal
6781 exempi
6782 gnome-desktop
6783 gtk
6784 lcms
6785 libexif
6786 libjpeg-turbo
6787 libpeas
6788 libportal
6789 librsvg
6790 shared-mime-info))
6791 (home-page "https://wiki.gnome.org/Apps/EyeOfGnome")
6792 (synopsis "GNOME image viewer")
6793 (description "Eye of GNOME is the GNOME image viewer. It
6794supports image conversion, rotation, and slideshows.")
6795 (license license:gpl2+)))
6796
6797;; Also update (@ (gnu packages rust-sources) rust-glycin-3) when updating this.
6798(define-public libglycin
6799 (package
6800 (name "libglycin")
6801 (version "2.1.1")
6802 (source
6803 (origin
6804 (method git-fetch)
6805 (uri (git-reference
6806 (url "https://gitlab.gnome.org/GNOME/glycin.git")
6807 (commit version)))
6808 (file-name (git-file-name name version))
6809 (sha256
6810 (base32
6811 "1mrv733xhbxydww4szskv7jc0hif908aavh8h4kjcxp0zgy13blf"))
6812 (patches (search-patches "glycin-sandbox-Adapt-bwrap-invocation.patch"))))
6813 (outputs '("out" "debug"))
6814 (build-system meson-build-system)
6815 (arguments
6816 (list
6817 #:configure-flags #~(list "-Dglycin-loaders=false"
6818 "-Dglycin-thumbnailer=true"
6819 "-Dlibglycin=true"
6820 "-Dlibglycin-gtk4=true")
6821 #:imported-modules `(,@%meson-build-system-modules
6822 ,@%cargo-build-system-modules)
6823 #:modules `(((guix build cargo-build-system) #:prefix cargo:)
6824 (guix build meson-build-system)
6825 (guix build utils))
6826 #:phases
6827 (with-extensions (list (cargo-guile-json))
6828 #~(modify-phases %standard-phases
6829 (add-after 'unpack 'unpack-test-images
6830 (lambda _
6831 (copy-recursively
6832 #$(this-package-native-input "glycin-test-images")
6833 "tests/test-images")
6834 (delete-file "tests/test-images/images/color/color-link.svg")))
6835 (add-after 'unpack 'prepare-for-build
6836 (lambda _
6837 ;; Avoid checking the lock checksums.
6838 (delete-file "Cargo.lock")
6839 ;; libglycin-gtk4-2.so does not have libglycin-2.so.0 in its
6840 ;; runpath.
6841 (setenv
6842 "RUSTFLAGS"
6843 (string-append "-C link-arg=-Wl,-rpath," #$output "/lib"))))
6844 (add-after 'unpack 'set-bin-paths
6845 (lambda* (#:key inputs #:allow-other-keys)
6846 (substitute* "glycin/src/sandbox.rs"
6847 (("@bwrap@")
6848 (search-input-file inputs "bin/bwrap"))
6849 (("@storedir@")
6850 #$%storedir)
6851 (("/usr/bin/true")
6852 (search-input-file inputs "bin/true")))))
6853 ;; Ensure that bubblewrap is working in the build environment.
6854 (add-after 'set-bin-paths 'preliminary-bwrap-test
6855 (lambda* (#:key inputs #:allow-other-keys)
6856 (invoke
6857 (search-input-file inputs "bin/bwrap")
6858 "--unshare-all"
6859 "--die-with-parent"
6860 "--chdir" "/"
6861 "--ro-bind-try" "/usr" "/usr"
6862 "--dev" "/dev"
6863 "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache"
6864 "--ro-bind-try" "/nix/store" "/nix/store"
6865 "--ro-bind-try" #$%storedir #$%storedir
6866 "--ro-bind-try" #$%storedir #$%storedir
6867 "--tmpfs" "/tmp-home"
6868 "--tmpfs" "/tmp-run"
6869 "--clearenv"
6870 "--setenv" "HOME" "/tmp-home"
6871 "--setenv" "XDG_RUNTIME_DIR" "/tmp/run"
6872 "--setenv" "RUST_LOG" "warn"
6873 (search-input-file inputs "bin/true"))))
6874 ;; The meson 'configure phase changes to a different directory and
6875 ;; we need it created before unpacking the crates.
6876 (add-after 'configure 'prepare-cargo-build-system
6877 (lambda args
6878 (for-each
6879 (lambda (phase)
6880 (format #t "Running cargo phase: ~a~%" phase)
6881 (apply (assoc-ref cargo:%standard-phases phase)
6882 #:vendor-dir "vendor"
6883 #:cargo-target #$(cargo-triplet)
6884 args))
6885 '(unpack-rust-crates
6886 configure
6887 check-for-pregenerated-files
6888 patch-cargo-checksums))))
6889 (add-before 'check 'prepare-for-tests
6890 (lambda _
6891 ;; Fontconfig needs a writable cache
6892 (setenv "HOME" "/tmp")))))))
6893 (native-inputs (list gettext-minimal
6894 gobject-introspection
6895 pkg-config
6896 python-minimal
6897 rust
6898 `(,rust "cargo")
6899 vala ;for vapigen
6900 ;; Dependencies for tests.
6901 bubblewrap
6902 (origin
6903 (method git-fetch)
6904 (uri (git-reference
6905 (url "https://gitlab.gnome.org/sophie-h/test-images.git")
6906 (commit "b3a107267cc4f1d136b7007938556250ce06fc4f")))
6907 (file-name "glycin-test-images")
6908 (sha256
6909 (base32
6910 "1jvra75kjqkndxzzpmi5lb8d3q4fi3yc4hha0r1g9brdsnbhsp6f")))))
6911 (inputs (cons* bubblewrap
6912 (cargo-inputs 'glycin)))
6913 ;; The following inputs are 'Required' in the pkg-config files.
6914 (propagated-inputs (list fontconfig glib gtk lcms libseccomp))
6915 (home-page "https://gitlab.gnome.org/GNOME/glycin")
6916 (synopsis "Rust library for sandboxed image decoding")
6917 (description "Glycin is a sandbox image decoder for image viewers and
6918thumbnails to display untrusted content safely. This package provides the
6919runtime image loader executables that are used inside the sandbox.")
6920 (license (list license:mpl2.0 license:lgpl2.1+))))
6921
6922(define-public glycin-loaders
6923 (package/inherit libglycin
6924 (name "glycin-loaders")
6925 (arguments
6926 (substitute-keyword-arguments arguments
6927 ((#:configure-flags original-flags #~(list))
6928 #~(list "-Dglycin-loaders=true"
6929 "-Dglycin-thumbnailer=false"
6930 "-Dlibglycin=false"
6931 "-Dlibglycin-gtk4=false"))))
6932 (inputs
6933 (modify-inputs inputs
6934 (prepend libheif
6935 libjxl
6936 librsvg)))))
6937
6938(define-public loupe
6939 (package
6940 (name "loupe")
6941 (version "50.0")
6942 (source (origin
6943 (method url-fetch)
6944 (uri (string-append "mirror://gnome/sources/loupe/"
6945 (version-major version) "/"
6946 "loupe-" version ".tar.xz"))
6947 (sha256
6948 (base32
6949 "15592gcbln4sw83gzw6q5nk4h53rbbf80vy582k6lc8rbspgpr3s"))))
6950 (build-system meson-build-system)
6951 (arguments
6952 (list
6953 #:glib-or-gtk? #t
6954 #:imported-modules `(,@%meson-build-system-modules
6955 ,@%cargo-build-system-modules)
6956 #:modules `(((guix build cargo-build-system) #:prefix cargo:)
6957 (guix build meson-build-system)
6958 (guix build utils))
6959 #:phases
6960 (with-extensions (list (cargo-guile-json))
6961 #~(modify-phases %standard-phases
6962 (add-after 'unpack 'prepare-for-build
6963 (lambda _
6964 (substitute* "meson.build"
6965 (("gtk_update_icon_cache: true")
6966 "gtk_update_icon_cache: false")
6967 (("update_desktop_database: true")
6968 "update_desktop_database: false"))
6969 ;; Avoid checking the lock checksums.
6970 (delete-file "Cargo.lock")))
6971 ;; The meson 'configure phase changes to a different directory and
6972 ;; we need it created before unpacking the crates.
6973 (add-after 'configure 'prepare-cargo-build-system
6974 (lambda args
6975 (for-each
6976 (lambda (phase)
6977 (format #t "Running cargo phase: ~a~%" phase)
6978 (apply (assoc-ref cargo:%standard-phases phase)
6979 #:vendor-dir "vendor"
6980 #:cargo-target #$(cargo-triplet)
6981 args))
6982 '(prepare-rust-crates
6983 unpack-rust-crates
6984 configure
6985 check-for-pregenerated-files
6986 patch-cargo-checksums))))
6987 (add-after 'install 'wrap-program
6988 (lambda _
6989 (wrap-program (string-append #$output "/bin/loupe")
6990 `("GSETTINGS_SCHEMA_DIR" =
6991 (,(string-append #$output "/share/glib-2.0/schemas")))
6992 `("XDG_DATA_DIRS" suffix
6993 (,(string-append #$(this-package-input "glycin-loaders")
6994 "/share"))))))))))
6995 (native-inputs
6996 (list gettext-minimal
6997 `(,glib "bin")
6998 pkg-config
6999 itstool
7000 rust
7001 `(,rust "cargo")))
7002 (inputs
7003 (cons* bash-minimal
7004 glycin-loaders
7005 gtk
7006 lcms
7007 libadwaita
7008 libglycin
7009 libgweather
7010 libseccomp
7011 (cargo-inputs 'loupe)))
7012 (home-page "https://apps.gnome.org/Loupe/")
7013 (synopsis "Image viewer for GNOME")
7014 (description "Image browser and viewer for GNOME, made to replace Eye of
7015GNOME as a more modern default image viewer.")
7016 (license license:gpl3+)))
7017
7018(define-public libgudev
7019 (package
7020 (name "libgudev")
7021 (version "238")
7022 (source (origin
7023 (method url-fetch)
7024 (uri (string-append "mirror://gnome/sources/" name "/"
7025 version "/" name "-" version ".tar.xz"))
7026 (sha256
7027 (base32
7028 "1laxgdkgmr30aw44sm4rgpsdybwxx5rszcm8c2y3vmy9myqnl9k1"))))
7029 (build-system meson-build-system)
7030 (native-inputs
7031 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
7032 ("gobject-introspection" ,gobject-introspection)
7033 ("pkg-config" ,pkg-config)))
7034 (propagated-inputs
7035 (list glib ; in Requires of gudev-1.0.pc
7036 eudev)) ; in Requires.private of gudev-1.0.pc
7037 (inputs
7038 `(("udev" ,eudev)))
7039 (home-page "https://wiki.gnome.org/Projects/libgudev")
7040 (synopsis "GObject bindings for libudev")
7041 (description
7042 "This library provides GObject bindings for libudev. It was originally
7043part of udev-extras, then udev, then systemd. It's now a project on its own.")
7044 (license license:lgpl2.1+)))
7045
7046(define-public msgraph
7047 (package
7048 (name "msgraph")
7049 (version "0.3.4")
7050 (source (origin
7051 (method url-fetch)
7052 (uri (string-append "mirror://gnome/sources/msgraph/"
7053 (version-major+minor version) "/"
7054 "msgraph-" version ".tar.xz"))
7055 (sha256
7056 (base32 "1iyn0jdqgw238cxaxvji0v9ds0xwfzffz65xpgzywcibn3kfqc87"))))
7057 (build-system meson-build-system)
7058 (native-inputs (list gi-docgen gobject-introspection pkg-config uhttpmock))
7059 (inputs (list gnome-online-accounts json-glib libsoup librest))
7060 (home-page "https://gnome.pages.gitlab.gnome.org/msgraph/")
7061 (synopsis "GLib library for accessing MS Graph APIs")
7062 (description "This package provides a GLib-based library for accessing
7063MS Graph APIs.")
7064 (license license:lgpl3+)))
7065
7066(define-public gvfs
7067 (package
7068 (name "gvfs")
7069 (version "1.58.1")
7070 (replacement gvfs/fixed)
7071 (source (origin
7072 (method url-fetch)
7073 (uri (string-append "mirror://gnome/sources/gvfs/"
7074 (version-major+minor version) "/"
7075 "gvfs-" version ".tar.xz"))
7076 (sha256
7077 (base32
7078 "0fywnla2xwyi44jfipyixcczxh5h34c4lzfzf9lsgzxip9mpslzw"))))
7079 (build-system meson-build-system)
7080 (arguments
7081 (list
7082 #:glib-or-gtk? #t
7083 #:configure-flags
7084 #~(list "-Dsystemduserunitdir=no"
7085 "-Dtmpfilesdir=no"
7086 "-Dman=true"
7087 ;; Otherwise, the RUNPATH will lack the final path component.
7088 (string-append "-Dc_link_args=-Wl,-rpath="
7089 #$output "/lib/gvfs"))
7090 #:phases
7091 #~(modify-phases %standard-phases
7092 (add-after 'unpack 'patch-commands
7093 (lambda* (#:key inputs #:allow-other-keys)
7094 (substitute* "monitor/udisks2/gvfsudisks2mount.c"
7095 (("\"lsof -t")
7096 (string-append "\"" (search-input-file inputs "bin/lsof")
7097 " -t"))
7098 (("\"umount %s")
7099 (string-append "\"" (search-input-file inputs "bin/umount")
7100 " %s")))
7101 (substitute* "monitor/udisks2/gvfsudisks2volume.c"
7102 (("\"mount \\\\\"%s")
7103 (string-append "\"" (search-input-file inputs "bin/mount")
7104 " \\\"%s"))))))))
7105 (native-inputs
7106 (list `(,glib "bin") ;for glib-genmarshal, etc.
7107 gettext-minimal
7108 gtk-doc/stable
7109 pkg-config
7110 libxslt))
7111 (inputs
7112 (list avahi
7113 docbook-xml-4.2
7114 docbook-xsl
7115 dbus
7116 elogind
7117 fuse
7118 gcr
7119 glib
7120 gnome-online-accounts
7121 gsettings-desktop-schemas
7122 libarchive
7123 libbluray
7124 libcap
7125 libcdio-paranoia
7126 libgcrypt
7127 libgdata
7128 libgphoto2
7129 libgudev
7130 libimobiledevice
7131 libmtp
7132 libnfs
7133 libsecret
7134 lsof
7135 msgraph
7136 samba
7137 libsoup
7138 libxml2
7139 openssh
7140 polkit
7141 udisks
7142 util-linux))
7143 (home-page "https://wiki.gnome.org/Projects/gvfs")
7144 (synopsis "Userspace virtual file system for GIO")
7145 (description
7146 "GVFS is a userspace virtual file system designed to work with the I/O
7147abstraction of GIO. It contains a GIO module that seamlessly adds GVFS
7148support to all applications using the GIO API. It also supports exposing the
7149GVFS mounts to non-GIO applications using FUSE.
7150
7151GVFS comes with a set of backends, including trash support, SFTP, SMB, HTTP,
7152DAV, and others.")
7153 (license license:lgpl2.0+)))
7154
7155(define gvfs/fixed
7156 (package
7157 (inherit gvfs)
7158 (version "1.58.5")
7159 (source (origin
7160 (method url-fetch)
7161 (uri (string-append "mirror://gnome/sources/gvfs/"
7162 (version-major+minor version) "/"
7163 "gvfs-" version ".tar.xz"))
7164 (sha256
7165 (base32
7166 "1r1cj5mmdh9apgv1z6qiqznlslpp5bbpx378vkkqvm1ykkrms5xy"))))))
7167
7168(define-public gusb-minimal
7169 (package
7170 (name "gusb-minimal")
7171 (version "0.3.5")
7172 (source (origin
7173 (method git-fetch)
7174 (uri (git-reference
7175 (url "https://github.com/hughsie/libgusb")
7176 (commit version)))
7177 (file-name (git-file-name name version))
7178 (sha256
7179 (base32
7180 "0ifhdqhpyxwsg0z9s1anj7cf5pya5qsqyp5ksh9n7mqwa4lrjkl8"))))
7181 (build-system meson-build-system)
7182 (arguments
7183 `(#:tests? #f ;libusb fails to initialize. Wonder what that is.
7184 #:configure-flags
7185 (cons "-Ddocs=false"
7186 (if ,(%current-target-system)
7187 ;; Introspection data cannot currently be cross-compiled.
7188 '("-Dintrospection=false"
7189 ;; Requires introspection data.
7190 "-Dvapi=false")
7191 '()))))
7192 (native-inputs
7193 (list gobject-introspection pkg-config python vala))
7194 (propagated-inputs
7195 ;; Both of these are required by gusb.pc.
7196 (list glib libusb))
7197 (home-page "https://github.com/hughsie/libgusb")
7198 (synopsis "GLib binding for libusb1")
7199 (description
7200 "GUsb is a GObject wrapper for libusb1 that makes it easy to do
7201asynchronous control, bulk and interrupt transfers with proper cancellation
7202and integration into a mainloop. This makes it easy to integrate low level
7203USB transfers with your high-level application or system daemon.")
7204 (license license:lgpl2.1+)))
7205
7206(define-public gusb
7207 (package/inherit gusb-minimal
7208 (name "gusb")
7209 (arguments
7210 (substitute-keyword-arguments arguments
7211 ((#:configure-flags flags)
7212 `(cons "-Ddocs=true"
7213 (delete "-Ddocs=false" ,flags)))))
7214 (native-inputs
7215 (cons `("gtk-doc" ,gtk-doc/stable)
7216 (package-native-inputs gusb-minimal)))))
7217
7218(define-public simple-scan
7219 (package
7220 (name "simple-scan")
7221 (version "49.1")
7222 (source
7223 (origin
7224 (method url-fetch)
7225 (uri (string-append "mirror://gnome/sources/simple-scan/"
7226 (version-major version) "/"
7227 "simple-scan-" version ".tar.xz"))
7228 (sha256
7229 (base32 "0d733cjq0dy07fx3yxh2rzr3ij3rslvb96czxd2miyfa3qax9s4s"))))
7230 (build-system meson-build-system)
7231 (arguments
7232 (list #:glib-or-gtk? #t
7233 #:phases
7234 #~(modify-phases %standard-phases
7235 (add-after 'unpack 'skip-gtk-update-icon-cache
7236 ;; Don't create 'icon-theme.cache'.
7237 (lambda _
7238 (substitute* "meson.build"
7239 (("gtk_update_icon_cache: true")
7240 "gtk_update_icon_cache: false")
7241 (("glib_compile_schemas: true")
7242 "glib_compile_schemas: false")))))))
7243 (native-inputs
7244 (list gettext-minimal
7245 `(,gtk "bin")
7246 itstool
7247 `(,glib "bin") ; glib-compile-schemas, etc.
7248 pkg-config
7249 python
7250 vala
7251 libxml2))
7252 (inputs
7253 (list gtk
7254 zlib
7255 cairo
7256 colord
7257 gdk-pixbuf
7258 gusb
7259 libadwaita
7260 sane))
7261 (home-page "https://gitlab.gnome.org/GNOME/simple-scan")
7262 (synopsis "Document and image scanner")
7263 (description
7264 "Document Scanner is an easy-to-use application that lets you connect your
7265scanner and quickly capture images and documents in an appropriate format. It
7266supports any scanner for which a suitable SANE driver is available, which is
7267almost all of them.")
7268 (license license:gpl3+)))
7269
7270(define-public epiphany
7271 (package
7272 (name "epiphany")
7273 (version "49.2")
7274 (source (origin
7275 (method url-fetch)
7276 (uri (string-append "mirror://gnome/sources/epiphany/"
7277 (version-major version) "/"
7278 "epiphany-" version ".tar.xz"))
7279 (sha256
7280 (base32
7281 "13ibzgan6jcri7zf82chiy9vb0kvqc05bs1k2wgzi1ry45l3vfmk"))))
7282 (build-system meson-build-system)
7283 (arguments
7284 (list
7285 #:glib-or-gtk? #t
7286 #:modules '((guix build meson-build-system)
7287 (guix build utils)
7288 (guix build union))
7289 #:imported-modules `((guix build union)
7290 ,@%meson-build-system-modules)
7291 #:phases
7292 #~(modify-phases %standard-phases
7293 (add-after 'unpack 'skip-gtk-update-icon-cache
7294 ;; Don't create 'icon-theme.cache'.
7295 (lambda _
7296 (substitute* "meson.build"
7297 (("gtk_update_icon_cache: true")
7298 "gtk_update_icon_cache: false"))))
7299 (add-after 'unpack 'disable-failing-tests
7300 (lambda _
7301 (substitute* "tests/meson.build"
7302 ;; embed_shell fails, because webkitgtk apparently no longer
7303 ;; supports overriding the ftp schema web_app_utils fails due
7304 ;; to missing network access.
7305 (("(embed_shell|web_app_utils)_test,")
7306 "find_program('sh'), args: ['-c', 'exit 77'],")
7307 ;; web_view_test partially fails, because it can’t run bwrap.
7308 (("web_view_test,")
7309 (string-append
7310 "web_view_test, args: ["
7311 (string-join
7312 (map (lambda (test)
7313 (string-append "'-s', '/embed/ephy-web-view/" test "'"))
7314 '("load_url"
7315 "provisional_load_failure_updates_back_forward_list"
7316 "error-pages-not-stored-in-history"))
7317 ", ")
7318 "],")))))
7319 (replace 'check
7320 (lambda* (#:key inputs parallel-tests? tests? #:allow-other-keys)
7321 (when tests?
7322 ;(setenv "GALLIUM_DRIVER" "llvmpipe")
7323 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd)
7324 "/runtime-dir"))
7325 (mkdir (getenv "XDG_RUNTIME_DIR"))
7326 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
7327 (setenv "MESON_TESTTHREADS"
7328 (if parallel-tests?
7329 (number->string (parallel-job-count))
7330 "1"))
7331 (setenv "XDG_CACHE_HOME" (getcwd))
7332 ;; There are too many directories in XDG_DATA_DIRS, so
7333 ;; dbus-daemon fails to start. We work around this by
7334 ;; creating a single union directory of all these directories.
7335 (setenv "XDG_DATA_DIRS" "/tmp/share")
7336 (union-build "/tmp/share"
7337 (search-path-as-list '("share") (map cdr inputs))
7338 #:create-all-directories? #t)
7339 ;; Tests require a running X server.
7340 (system "Xvfb :1 &")
7341 (setenv "DISPLAY" ":1")
7342 (invoke "dbus-run-session" "--"
7343 "meson" "test" "--print-errorlogs" "-t" "0"))))
7344 (add-after 'install 'gst-wrap
7345 (lambda* (#:key inputs outputs #:allow-other-keys)
7346 (let ((out (assoc-ref outputs "out"))
7347 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
7348 (wrap-program (string-append out "/bin/epiphany")
7349 `("GST_PLUGIN_SYSTEM_PATH" ":" suffix (,gst-plugin-path)))))))
7350 #:configure-flags
7351 ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component.
7352 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
7353 #$output "/lib/epiphany"))))
7354 (propagated-inputs (list dconf))
7355 (native-inputs
7356 (list blueprint-compiler
7357 desktop-file-utils ; for update-desktop-database
7358 gettext-minimal
7359 `(,glib "bin") ; for glib-mkenums
7360 itstool
7361 pkg-config
7362 libxml2
7363 xorg-server-for-tests))
7364 (inputs
7365 (list avahi
7366 bash-minimal ; for wrap-program
7367 gcr
7368 glib-networking
7369 gnome-desktop
7370 gsettings-desktop-schemas
7371 gst-plugins-base
7372 gst-plugins-good
7373 gstreamer
7374 iso-codes/pinned
7375 json-glib
7376 libadwaita
7377 libarchive
7378 libnotify
7379 libportal
7380 (librsvg-for-system) ; for loading SVG files
7381 libsecret
7382 libsoup
7383 libxslt
7384 nettle ; for hogweed
7385 sqlite
7386 webkitgtk))
7387 (home-page "https://wiki.gnome.org/Apps/Web")
7388 (synopsis "GNOME web browser")
7389 (description
7390 "Epiphany is a GNOME web browser targeted at non-technical users. Its
7391principles are simplicity and standards compliance.")
7392 (license license:gpl2+)))
7393
7394(define-public d-spy
7395 (package
7396 (name "d-spy")
7397 (version "49.2")
7398 (source (origin
7399 (method git-fetch)
7400 (uri (git-reference
7401 (url "https://gitlab.gnome.org/GNOME/d-spy")
7402 (commit version)))
7403 (file-name (git-file-name name version))
7404 (sha256
7405 (base32
7406 "048bcckhj75b4lbcbpxgsgagd78a1ajahlqaidm1873b4vfahmfq"))))
7407 (build-system meson-build-system)
7408 (arguments
7409 (list
7410 #:glib-or-gtk? #t
7411 #:phases
7412 #~(modify-phases %standard-phases
7413 (add-after 'unpack 'skip-gtk-update-icon-cache
7414 ;; Don't create 'icon-theme.cache'.
7415 (lambda _
7416 (substitute* "meson.build"
7417 (("gtk_update_icon_cache: true")
7418 "gtk_update_icon_cache: false")))))))
7419 (native-inputs
7420 (list desktop-file-utils ; for update-desktop-database
7421 `(,glib "bin")
7422 gettext-minimal
7423 gobject-introspection
7424 pkg-config))
7425 (inputs
7426 (list gtk
7427 libadwaita
7428 libdex))
7429 (home-page "https://gitlab.gnome.org/GNOME/d-spy")
7430 (synopsis "D-Bus debugger")
7431 (description
7432 "D-Spy is a tool to explore and test end-points and interfaces of running
7433programs via D-Bus. It also ships a library for integration into development
7434environments.")
7435 (license license:gpl2+)))
7436
7437(define-public yelp-xsl
7438 (package
7439 (name "yelp-xsl")
7440 (version "49.0")
7441 (source
7442 (origin
7443 (method url-fetch)
7444 (uri
7445 (string-append "mirror://gnome/sources/" name "/"
7446 (version-major version) "/"
7447 name "-" version ".tar.xz"))
7448 (sha256
7449 (base32 "1v7va1xa80pyj0dyfraalvsag4m0lza4v87r2i7phyz6iy7kmm2r"))))
7450 (build-system meson-build-system)
7451 (native-inputs
7452 (list mallard-ducktype
7453 gettext-minimal
7454 itstool
7455 libxml2
7456 libxslt))
7457 (synopsis "XSL stylesheets for Yelp")
7458 (description "Yelp-XSL is a collection of programs and data files to help
7459you build, maintain, and distribute documentation. It provides XSLT stylesheets
7460that can be built upon for help viewers and publishing systems. These
7461stylesheets output JavaScript and CSS content, and reference images
7462provided by yelp-xsl. It also redistributes copies of the jQuery and
7463jQuery.Syntax JavaScript libraries.")
7464 (home-page "https://wiki.gnome.org/Apps/Yelp")
7465 (license
7466 (list
7467 ;; XSLT
7468 license:gpl2+
7469 ;; Images
7470 license:lgpl2.1+
7471 ;; JavaScript
7472 license:expat))))
7473
7474(define-public yelp
7475 (package
7476 (name "yelp")
7477 (version "49.0")
7478 (source (origin
7479 (method url-fetch)
7480 (uri (string-append "mirror://gnome/sources/" name "/"
7481 (version-major version) "/"
7482 name "-" version ".tar.xz"))
7483 (sha256
7484 (base32
7485 "0mrlqsbr2wb0k2p3dmywzdb0c0rzcx1dv6qlimxzx9ab3w5lwqg6"))))
7486 (build-system meson-build-system)
7487 (arguments
7488 (list #:phases
7489 #~(modify-phases %standard-phases
7490 (add-after 'unpack 'set-man-file-name
7491 (lambda* (#:key inputs #:allow-other-keys)
7492 ;; Invoke 'man' directly instead of searching $PATH.
7493 (substitute* '("libyelp/yelp-man-parser.c"
7494 "libyelp/yelp-uri.c")
7495 (("\"man\"")
7496 (string-append "\""
7497 (search-input-file inputs "bin/man")
7498 "\""))
7499 (("G_SPAWN_SEARCH_PATH")
7500 "0"))))
7501 (add-after 'install 'help-man-find-its-dependencies
7502 (lambda* (#:key inputs outputs #:allow-other-keys)
7503 ;; XXX: Currently 'man' looks for 'groff' in $PATH in one
7504 ;; case. This should be fixed in 'man-db' proper.
7505 (wrap-program (string-append (assoc-ref outputs "out")
7506 "/bin/yelp")
7507 `("PATH" ":" prefix
7508 (,(dirname (search-input-file inputs "bin/groff"))))))))))
7509 (native-inputs
7510 (list desktop-file-utils
7511 `(,glib "bin") ;for glib-genmarshal, etc.
7512 `(,gtk "bin")
7513 intltool
7514 itstool
7515 pkg-config))
7516 (propagated-inputs
7517 (list dconf))
7518 (inputs
7519 (list bash-minimal
7520 gsettings-desktop-schemas
7521 libadwaita
7522 libhandy
7523 libxslt
7524 man-db ;for URIs like "man:ls"
7525 groff-minimal ;ditto
7526 gtk
7527 sqlite
7528 webkitgtk
7529 yelp-xsl))
7530 (home-page "https://wiki.gnome.org/Apps/Yelp")
7531 (synopsis "GNOME help browser")
7532 (description
7533 "Yelp is the help viewer in Gnome. It natively views Mallard, DocBook,
7534man, info, and HTML documents. It can locate documents according to the
7535freedesktop.org help system specification.")
7536 (license license:gpl2+)))
7537
7538(define-public yelp-tools
7539 (package
7540 (name "yelp-tools")
7541 (version "42.1")
7542 (source
7543 (origin
7544 (method url-fetch)
7545 (uri
7546 (string-append "mirror://gnome/sources/" name "/"
7547 (version-major version) "/"
7548 name "-" version ".tar.xz"))
7549 (sha256
7550 (base32 "01gr255nlb77462040499qx50sik17x2b2jhzncmn56l4106lj9y"))))
7551 (build-system meson-build-system)
7552 (arguments
7553 (list #:configure-flags #~'("-Dhelp=true")))
7554 (native-inputs
7555 (list gettext-minimal pkg-config python python-lxml-for-texlive))
7556 (inputs
7557 (list yelp-xsl))
7558 (propagated-inputs
7559 ;; Needed by `yelp-build', `yelp-check' or 'yelp.m4'.
7560 (list itstool libxml2 libxslt))
7561 (synopsis "Yelp documentation tools")
7562 (description
7563 "Yelp-tools is a collection of scripts and build utilities to help create,
7564manage, and publish documentation for Yelp and the web. Most of the heavy
7565lifting is done by packages like yelp-xsl and itstool. This package just
7566wraps things up in a developer-friendly way.")
7567 (home-page "https://wiki.gnome.org/Apps/Yelp/Tools")
7568 (license license:gpl2+)))
7569
7570(define-public libgee
7571 (package
7572 (name "libgee")
7573 (version "0.20.8")
7574 (source (origin
7575 (method url-fetch)
7576 (uri (string-append "mirror://gnome/sources/libgee/"
7577 (version-major+minor version) "/"
7578 "libgee-" version ".tar.xz"))
7579 (sha256
7580 (base32
7581 "1vmhs3xavdm2vjsxc12zl44a2fhzqdyjpidhjdqqd29x2jn1b60q"))))
7582 (build-system gnu-build-system)
7583 (arguments
7584 (list
7585 #:configure-flags
7586 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")
7587 #:phases
7588 #~(modify-phases %standard-phases
7589 (add-after 'unpack 'fix-introspection-install-dir
7590 (lambda _
7591 (substitute* "gee/Makefile.in"
7592 (("@INTROSPECTION_GIRDIR@")
7593 (string-append #$output "/share/gir-1.0/"))
7594 (("@INTROSPECTION_TYPELIBDIR@")
7595 (string-append #$output "/lib/girepository-1.0/"))))))))
7596 (native-inputs
7597 (list `(,glib "bin") pkg-config))
7598 (inputs
7599 (list glib gobject-introspection))
7600 (home-page "https://wiki.gnome.org/Projects/Libgee")
7601 (synopsis "GObject collection library")
7602 (description
7603 "Libgee is a utility library providing GObject-based interfaces and
7604classes for commonly used data structures.")
7605 (license license:lgpl2.1+)))
7606
7607(define-public gexiv2
7608 (package
7609 (name "gexiv2")
7610 (version "0.16.0")
7611 (source (origin
7612 (method url-fetch)
7613 (uri (string-append "mirror://gnome/sources/" name "/"
7614 (version-major+minor version) "/"
7615 name "-" version ".tar.xz"))
7616 (sha256
7617 (base32
7618 "1fvvlxs7802a9q30r38ajwr84kz8k94b4avvaxprd7sk4igqjvyr"))))
7619 (build-system meson-build-system)
7620 (native-inputs
7621 (list gcr-3
7622 `(,glib "bin")
7623 gobject-introspection
7624 pkg-config
7625 python
7626 python-pygobject
7627 vala))
7628 (propagated-inputs
7629 ;; Listed in "Requires" section of gexiv2.pc
7630 (list exiv2))
7631 (inputs
7632 (list glib))
7633 (home-page "https://wiki.gnome.org/Projects/gexiv2")
7634 (synopsis "GObject wrapper around the Exiv2 photo metadata library")
7635 (description
7636 "Gexiv2 is a GObject wrapper around the Exiv2 photo metadata library. It
7637allows for GNOME applications to easily inspect and update EXIF, IPTC, and XMP
7638metadata in photo and video files of various formats.")
7639 (license license:gpl2+)))
7640
7641(define-public gexiv2-0.14
7642 (package
7643 (inherit gexiv2)
7644 (name "gexiv2")
7645 (version "0.14.6")
7646 (source (origin
7647 (method url-fetch)
7648 (uri (string-append "mirror://gnome/sources/" name "/"
7649 (version-major+minor version) "/"
7650 name "-" version ".tar.xz"))
7651 (sha256
7652 (base32
7653 "12rbly3y4zw4zdqpcnyjcv4a3ifpzxymxgpar3skw7vvmsm2hv30"))))))
7654
7655(define-public shotwell
7656 (package
7657 (name "shotwell")
7658 (version "0.32.15")
7659 (source (origin
7660 (method url-fetch)
7661 (uri (string-append "mirror://gnome/sources/shotwell/"
7662 (version-major+minor version) "/"
7663 "shotwell-" version ".tar.xz"))
7664 (sha256
7665 (base32
7666 "0figfjpr1qs2slrn39vgahswmwb364acinmhpf9k26if707jc45c"))))
7667 (build-system meson-build-system)
7668 (arguments
7669 (list
7670 #:glib-or-gtk? #t
7671 #:phases
7672 #~(modify-phases %standard-phases
7673 (add-after 'unpack 'skip-gtk-update-icon-cache
7674 (lambda _
7675 (substitute* "meson.build"
7676 (("gtk_update_icon_cache: true")
7677 "gtk_update_icon_cache: false")
7678 (("update_desktop_database: true")
7679 "update_desktop_database: false")))))))
7680 (propagated-inputs
7681 (list dconf))
7682 (native-inputs
7683 (list gettext-minimal
7684 `(,glib "bin")
7685 itstool
7686 pkg-config
7687 python
7688 vala))
7689 (inputs
7690 (list gcr-3
7691 gexiv2-0.14
7692 gst-plugins-base
7693 gstreamer
7694 json-glib
7695 libportal
7696 libgdata
7697 libgee
7698 libgphoto2
7699 libgudev
7700 libraw
7701 libsecret
7702 libwebp
7703 libxml2
7704 sqlite
7705 webkitgtk))
7706 (home-page "https://wiki.gnome.org/Apps/Shotwell")
7707 (synopsis "Photo manager for GNOME 3")
7708 (description
7709 "Shotwell is a digital photo manager designed for the GNOME desktop
7710environment. It allows you to import photos from disk or camera, organize
7711them by keywords and events, view them in full-window or fullscreen mode, and
7712share them with others via social networking and more.")
7713 (license license:lgpl2.1+)))
7714
7715(define-public file-roller
7716 (package
7717 (name "file-roller")
7718 (version "3.42.0")
7719 (source (origin
7720 (method url-fetch)
7721 (uri (string-append "mirror://gnome/sources/file-roller/"
7722 (version-major+minor version) "/"
7723 "file-roller-" version ".tar.xz"))
7724 (sha256
7725 (base32
7726 "1iq24g2z7kf1a6kn9asp96lc59r8pxxjvcmm5r7zy47cadnqwhqw"))))
7727 (build-system meson-build-system)
7728 (arguments
7729 (list #:glib-or-gtk? #t
7730 #:phases #~(modify-phases %standard-phases
7731 (add-before 'install 'disable-gtk-update-icon-cache
7732 (lambda _
7733 (setenv "DESTDIR" "/"))))))
7734 (native-inputs
7735 (list desktop-file-utils
7736 gettext-minimal
7737 `(,glib "bin")
7738 itstool
7739 pkg-config
7740 python))
7741 ;; TODO: Add libnautilus.
7742 (inputs
7743 (list gtk+
7744 json-glib
7745 libarchive
7746 libhandy
7747 libnotify
7748 nettle
7749 libxml2))
7750 (synopsis "Graphical archive manager for GNOME")
7751 (description "File Roller is an archive manager for the GNOME desktop
7752environment that allows users to view, unpack, and create compressed archives
7753such as gzip tarballs.")
7754 (home-page "https://fileroller.sourceforge.net")
7755 (license license:gpl2+)))
7756
7757(define-public gnome-session-shepherd
7758 (package
7759 (name "gnome-session-shepherd")
7760 (version "1.0")
7761 (source (origin
7762 (method git-fetch)
7763 (uri (git-reference
7764 (url "https://gitlab.gnome.org/noe/gnome-session-shepherd.git")
7765 (commit version)))
7766 (file-name (git-file-name name version))
7767 (sha256
7768 (base32
7769 "09kl7plq6qvy4pgr20sn670vk9abg3cmhvfbv4rbnibwkpsjasv7"))))
7770 (build-system meson-build-system)
7771 (arguments
7772 (list
7773 #:configure-flags
7774 #~(let ((inputs (map cdr %build-inputs)))
7775 (list
7776 "-Dsystem_tests=disabled" ;requires guix daemon
7777 "-Dunit_tests=disabled" ;requires guile-3.0.11
7778 "-Dleader=enabled"
7779 "-Dservices=enabled"
7780 "-Dstartup=enabled"
7781 "-Ddbus_service=enabled"
7782 (string-append "-Dgsettings_path="
7783 (search-input-file %build-inputs "/bin/gsettings"))
7784 (string-append "-Dguile_load_path="
7785 (string-join
7786 (search-path-as-list
7787 '("/share/guile/site/3.0")
7788 inputs)
7789 ":"))
7790 (string-append "-Dguile_load_compiled_path="
7791 (string-join
7792 (search-path-as-list
7793 '("/lib/guile/3.0/site-ccache")
7794 inputs)
7795 ":"))
7796 (string-append "-Dshepherd_path="
7797 #$(this-package-input "shepherd")
7798 "/bin/shepherd")))
7799 #:phases
7800 #~(begin
7801 (use-modules (ice-9 ftw))
7802 (modify-phases %standard-phases
7803 (add-after 'install 'wrap-scripts
7804 (lambda* (#:key inputs #:allow-other-keys)
7805 (let ((bin (string-append #$output "/bin")))
7806 (for-each
7807 (lambda (script)
7808 (format #t "Wrapping ~a~%" script)
7809 (wrap-program (string-append bin "/" script)
7810 `("GUILE_LOAD_PATH" ":" prefix
7811 ,(list (string-append #$output "/share/guile/site/3.0")))
7812 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
7813 ,(list (string-append #$output "/lib/guile/3.0/site-ccache")))
7814 `("GI_TYPELIB_PATH" ":" = ;FIXME “prefix” or “=”?
7815 (,(getenv "GI_TYPELIB_PATH")))
7816 ;; TODO: this is not good, because it means starting
7817 ;; unwanted services/apps in GDM.
7818 `("XDG_CONFIG_DIRS" suffix
7819 ("/run/current-system/profile/etc/xdg")))
7820 ;; Not needed since the wrapper points directly to
7821 ;; #$output/share/guile/site/3.0/…
7822 (delete-file (string-append bin "/." script "-real")))
7823 '("gnome-session" "gnome-session-leader" "gherd")))))
7824 ;; Fails on Guile object files, because DT_RUNPATH is unset. See
7825 ;; <https://codeberg.org/guix/guix/pulls/7535>.
7826 (delete 'shrink-runpath)))))
7827 (native-inputs
7828 (list guile-3.0
7829 guile-fibers
7830 guile-ini
7831 guile-gi
7832 pkg-config
7833 shepherd-1.0
7834 texinfo))
7835 (inputs
7836 (list gsettings-desktop-schemas
7837 `(,glib "bin")
7838 guile-fibers
7839 guile-ini
7840 guile-gi
7841 shepherd-1.0))
7842 (home-page "https://gitlab.gnome.org/noe/gnome-session-shepherd")
7843 (synopsis "Session manager for GNOME")
7844 (description "Implementation of gnome-session that manages services using
7845the GNU Shepherd.")
7846 (license license:gpl3+)))
7847
7848(define-deprecated-package gnome-session
7849 gnome-session-shepherd)
7850
7851(define-public gjs
7852 (package
7853 (name "gjs")
7854 (version "1.88.0")
7855 (source
7856 (origin
7857 (method url-fetch)
7858 (uri (string-append "mirror://gnome/sources/" name "/"
7859 (version-major+minor version) "/"
7860 name "-" version ".tar.xz"))
7861 (sha256
7862 (base32
7863 "0ly43lcpafl0an3k4g4mvwrwvc78f0y91ckdi6qn13ky67rvk81h"))
7864 (modules '((guix build utils)
7865 (ice-9 ftw)
7866 (srfi srfi-26)))
7867 (snippet
7868 #~(begin
7869 ;; XXX: 'delete-all-but' is copied from the turbovnc package.
7870 (define (delete-all-but directory . preserve)
7871 (with-directory-excursion directory
7872 (let* ((pred (negate (cut member <>
7873 (cons* "." ".." preserve))))
7874 (items (scandir "." pred)))
7875 (for-each (cut delete-file-recursively <>) items))))
7876 (delete-all-but "subprojects"
7877 "gobject-introspection-tests")))))
7878 (build-system meson-build-system)
7879 (outputs '("out" "debug"))
7880 (arguments
7881 (list
7882 #:modules '((guix build meson-build-system)
7883 (guix build utils)
7884 (ice-9 match))
7885 #:configure-flags #~(list "-Dinstalled_tests=false")
7886 #:phases
7887 #~(modify-phases %standard-phases
7888 (add-after 'install 'wrap-gi
7889 (lambda* (#:key inputs #:allow-other-keys)
7890 (wrap-program (string-append #$output "/bin/gjs")
7891 `("GI_TYPELIB_PATH" suffix
7892 (,(dirname
7893 (search-input-file
7894 inputs
7895 "lib/girepository-1.0/GObject-2.0.typelib"))
7896 ,(dirname
7897 (search-input-file
7898 inputs
7899 "lib/girepository-1.0/GIRepository-2.0.typelib")))))))
7900 (replace 'check
7901 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
7902 (when tests?
7903 ;; For the missing /etc/machine-id.
7904 (setenv "DBUS_FATAL_WARNINGS" "0")
7905 (setenv "HOME" (getcwd))
7906 ;; In Guix, gobject-introspection is patched to always embed
7907 ;; the absolute path of a typelib library; unfortunately it
7908 ;; does this also for test typelibs not meant to be installed;
7909 ;; work around it via temporary symlinks.
7910 (let* ((test-libraries (find-files (getcwd)
7911 "\\.so(\\.[0-9]*)?$"))
7912 (test-library-links (map (lambda (x)
7913 (cons x (string-append
7914 #$output "/lib/"
7915 (basename x))))
7916 test-libraries)))
7917 (for-each (match-lambda
7918 ((old . new)
7919 (symlink old new)))
7920 test-library-links)
7921 (invoke "xvfb-run" "--" "dbus-run-session"
7922 "meson" "test" "--print-errorlogs" "-t" "0"
7923 "-j" (if parallel-tests?
7924 (number->string (parallel-job-count))
7925 "1"))
7926 (for-each delete-file (map cdr test-library-links))))))
7927 (add-after 'install 'delete-installed-tests
7928 (lambda _
7929 ;; Installed tests libraries are installed despite
7930 ;; -Dinstalled_tests=false.
7931 (delete-file-recursively
7932 (string-append #$output "/libexec/installed-tests"))))
7933 (add-after 'install 'sanitize-pkg-config-files
7934 (lambda _
7935 (substitute* (find-files #$output "\\.pc$")
7936 (("^Requires.private:.*") "")))))))
7937 (native-inputs
7938 (list `(,glib "bin") ;for glib-compile-resources
7939 pkg-config
7940 libxml2
7941 ;; For testing
7942 dbus
7943 dconf ;required to properly store settings
7944 gtk+
7945 sysprof
7946 util-linux
7947 xvfb-run))
7948 (inputs (list mozjs readline))
7949 (propagated-inputs
7950 ;; These are all in the Requires field of gjs-1.0.pc.
7951 (list glib gobject-introspection))
7952 (synopsis "Javascript bindings for GNOME")
7953 (home-page "https://gitlab.gnome.org/GNOME/gjs")
7954 (description
7955 "Gjs is a javascript binding for GNOME. It's mainly based on spidermonkey
7956javascript engine and the GObject introspection framework.")
7957 (license license:gpl2+)))
7958
7959(define-public gedit
7960 (package
7961 (name "gedit")
7962 (version "44.3")
7963 (source (origin
7964 (method url-fetch)
7965 (uri (string-append "mirror://gnome/sources/" name "/"
7966 (version-major version) "/"
7967 name "-" version ".tar.xz"))
7968 (sha256
7969 (base32
7970 "0j8p7lnf05sbw194babasfhvpd3pp29f17kvzn16ffnh34psn3y9"))))
7971 (build-system meson-build-system)
7972 (arguments
7973 (list
7974 #:glib-or-gtk? #t
7975 #:configure-flags
7976 ;; Otherwise, the RUNPATH will lack the final path component.
7977 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
7978 #$output "/lib/gedit"))
7979 #:phases
7980 #~(modify-phases %standard-phases
7981 (add-after 'unpack 'skip-gtk-update-icon-cache
7982 ;; Don't create 'icon-theme.cache'.
7983 (lambda _
7984 (substitute* "build-aux/meson/post_install.py"
7985 (("gtk-update-icon-cache") (which "true")))))
7986 (add-after 'unpack 'do-not-invoke-git
7987 (lambda* (#:key inputs #:allow-other-keys)
7988 (substitute* "meson.build"
7989 ((".*git.*") ""))))
7990 (add-after 'install 'wrap-gedit
7991 (lambda* (#:key outputs #:allow-other-keys)
7992 (wrap-program (search-input-file outputs "bin/gedit")
7993 ;; For plugins.
7994 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
7995 `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
7996 ;; For language-specs.
7997 `("XDG_DATA_DIRS" ":" prefix
7998 (,(string-append #$(this-package-input "gtksourceview")
7999 "/share")))))))))
8000 (propagated-inputs
8001 (list dconf))
8002 (native-inputs
8003 (list desktop-file-utils ;for update-desktop-database
8004 `(,glib "bin") ;for glib-mkenums, etc.
8005 gobject-introspection
8006 gtk-doc
8007 intltool
8008 itstool
8009 libxml2
8010 pkg-config
8011 python
8012 vala))
8013 (inputs
8014 (list adwaita-icon-theme
8015 amtk
8016 bash-minimal
8017 glib
8018 gsettings-desktop-schemas
8019 gspell
8020 gtk+
8021 gtksourceview-4
8022 libpeas
8023 libsoup
8024 python
8025 python-pygobject-3.50
8026 tepl))
8027 (home-page "https://wiki.gnome.org/Apps/Gedit")
8028 (synopsis "GNOME text editor")
8029 (description "While aiming at simplicity and ease of use, gedit is a
8030powerful general purpose text editor.")
8031 (license license:gpl2+)))
8032
8033(define-public zenity
8034 (package
8035 (name "zenity")
8036 (version "4.2.2")
8037 (source (origin
8038 (method url-fetch)
8039 (uri (string-append "mirror://gnome/sources/zenity/"
8040 (version-major+minor version) "/"
8041 "zenity-" version ".tar.xz"))
8042 (sha256
8043 (base32
8044 "138130f3flxp13bf7j4slaivmxbkarxmf8bf6pyg8vh9jslqd481"))))
8045 (build-system meson-build-system)
8046 (arguments
8047 (list #:phases #~(modify-phases %standard-phases
8048 (add-after 'unpack 'disable-gtk-update-icon-cache
8049 ;; The gtk-update-icon-cache tool is only run when
8050 ;; DESTDIR is unset.
8051 (lambda _
8052 (setenv "DESTDIR" "/"))))))
8053 (native-inputs (list gettext-minimal `(,gtk "bin") help2man itstool
8054 pkg-config))
8055 (inputs (list libadwaita `(,glib "bin") gtk))
8056 (synopsis "Display graphical dialog boxes from shell scripts")
8057 (home-page "https://www.gnome.org")
8058 (description
8059 "Zenity is a rewrite of gdialog, the GNOME port of dialog which allows you
8060to display dialog boxes from the commandline and shell scripts.")
8061 (license license:lgpl2.0+)))
8062
8063(define-public mutter
8064 (package
8065 (name "mutter")
8066 (version "49.4")
8067 (source (origin
8068 (method url-fetch)
8069 (uri (string-append "mirror://gnome/sources/" name "/"
8070 (version-major version) "/"
8071 name "-" version ".tar.xz"))
8072 (sha256
8073 (base32
8074 "0mbq7pijx29bp0b8nfy6057z6anc5ff973dqbki0nlv10p2nwrn1"))
8075 (patches (search-patches "mutter-disable-flaky-tests.patch"))))
8076 ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
8077 ;; versions of cogl and clutter. As a result, many of the inputs,
8078 ;; propagated-inputs, and configure flags used in cogl and clutter are
8079 ;; needed here as well.
8080 (build-system meson-build-system)
8081 (arguments
8082 (list
8083 #:glib-or-gtk? #t
8084 #:configure-flags
8085 #~(list
8086 "-Dlogind=true"
8087 "-Dbash_completion=false"
8088 ;; Don't install tests.
8089 "-Dinstalled_tests=false"
8090 ;; The following flags are needed for the bundled clutter
8091 (string-append "-Dxwayland_path="
8092 (search-input-file %build-inputs "bin/Xwayland"))
8093 ;; the remaining flags are needed for the bundled cogl
8094 (string-append "-Dopengl_libname="
8095 (search-input-file %build-inputs "lib/libGL.so"))
8096 (string-append "-Dgles2_libname="
8097 (search-input-file %build-inputs "lib/libGLESv2.so"))
8098 "-Degl_device=true" ;false by default
8099 "-Dx11=true" ;false by default
8100 "-Dwayland_eglstream=true" ;false by default
8101 (string-append "-Dudev_dir=" #$output "/lib/udev"))
8102 #:test-options #~(list "--verbose")
8103 #:phases
8104 #~(modify-phases %standard-phases
8105 (add-after 'unpack 'set-SOURCE_DIR
8106 (lambda _
8107 ;; Just to make our life easier later.
8108 (setenv "SOURCE_DIR" (getcwd))))
8109 (add-after 'unpack 'use-RUNPATH-instead-of-RPATH
8110 (lambda _
8111 ;; The build system disables RUNPATH in favor of RPATH to work
8112 ;; around a peculiarity of their CI system. Ignore that.
8113 (substitute* "meson.build"
8114 (("disable-new-dtags")
8115 "enable-new-dtags"))))
8116 (add-after 'unpack 'patch-dlopen-calls
8117 (lambda* (#:key inputs #:allow-other-keys)
8118 (substitute* "src/wayland/meta-wayland-egl-stream.c"
8119 (("libnvidia-egl-wayland.so.1")
8120 (search-input-file inputs "lib/libnvidia-egl-wayland.so.1")))))
8121 (add-before 'configure 'set-udev-dir
8122 (lambda _
8123 (setenv "PKG_CONFIG_UDEV_UDEVDIR"
8124 (string-append #$output "/lib/udev"))))
8125 (add-after 'unpack 'disable-problematic-tests
8126 (lambda _
8127 (with-directory-excursion "src/tests"
8128 (substitute* "meson.build"
8129 ;; Many (all?) stacking tests are susceptible to fail
8130 ;; non-deterministically under high load (see:
8131 ;; <https://gitlab.gnome.org/GNOME/mutter/-/issues/4035>).
8132 (("foreach stacking_test: stacking_tests")
8133 "foreach stacking_test: []"))
8134 (substitute* "clutter/conform/meson.build"
8135 ;; The 'event-delivery' test fails non-deterministically
8136 ;; (see:
8137 ;; <https://gitlab.gnome.org/GNOME/mutter/-/issues/4035#note_2402672>).
8138 ((".*'event-delivery',.*") "")))))
8139 (replace 'check
8140 (lambda* (#:key tests? test-options parallel-tests?
8141 #:allow-other-keys)
8142 (when tests?
8143 ;; Setup (refer to the 'test-mutter' and its dependent targets
8144 ;; in the '.gitlab-ci.yml' file.
8145 (setenv "HOME" "/tmp")
8146 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd)
8147 "/runtime-dir"))
8148 (mkdir (getenv "XDG_RUNTIME_DIR"))
8149 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
8150
8151 (setenv "GSETTINGS_SCHEMA_DIR" "data")
8152 (setenv "MUTTER_DEBUG_DUMMY_MODE_SPECS" "[email protected]")
8153 (setenv "PIPEWIRE_DEBUG" "2")
8154 (setenv "PIPEWIRE_LOG" "meson-logs/pipewire.log")
8155 (setenv "XVFB_SERVER_ARGS" "+iglx -noreset")
8156 (setenv "G_SLICE" "always-malloc")
8157 (setenv "MALLOC_CHECK" "3")
8158 (setenv "NO_AT_BRIDGE" "1")
8159
8160 (invoke "glib-compile-schemas" (getenv "GSETTINGS_SCHEMA_DIR"))
8161 (invoke "pipewire" "--version") ;check for pipewire
8162
8163 (setenv "MESON_TESTTHREADS"
8164 (if parallel-tests?
8165 (number->string (parallel-job-count))
8166 "1"))
8167
8168 (apply invoke "xvfb-run" "-a" "-s" (getenv "XVFB_SERVER_ARGS")
8169 (string-append (getenv "SOURCE_DIR")
8170 "/src/tests/meta-dbus-runner.py")
8171 "--launch=wireplumber"
8172 "meson" "test" "-t" "0"
8173 "--no-suite=mutter/kvm"
8174 "--no-suite=gvdb"
8175 ;; XXX: monitor-unit and monitor-dbus fail/hang.
8176 "--no-suite=mutter/backend"
8177 "--no-suite=mutter/backends/native"
8178 "--no-rebuild"
8179 "--print-errorlogs"
8180 test-options))))
8181 (add-after 'install 'sanitize-pkg-config-files
8182 (lambda _
8183 (substitute* (find-files #$output "\\.pc$")
8184 (("^Requires.private:.*" all)
8185 (string-append "# " all))))))))
8186 (native-inputs
8187 (list adwaita-icon-theme
8188 desktop-file-utils ;for update-desktop-database
8189 gettext-minimal
8190 `(,glib "bin") ;for glib-compile-schemas, etc.
8191 gobject-introspection
8192 `(,gtk "bin")
8193 libei
8194 libxcursor ;for XCURSOR_PATH
8195 pipewire
8196 pkg-config
8197 python
8198 python-dbus
8199 python-dbusmock
8200 python-docutils
8201 umockdev
8202 wayland-protocols
8203 wireplumber-minimal
8204 xvfb-run
8205 zenity))
8206 (inputs
8207 (list colord
8208 egl-wayland ;for wayland-eglstream-protocols
8209 elogind
8210 eudev
8211 gdk-pixbuf
8212 glycin-loaders
8213 gnome-desktop
8214 gnome-settings-daemon
8215 json-glib
8216 libcanberra
8217 libdisplay-info
8218 libei
8219 libglycin
8220 libgudev
8221 libinput
8222 libwacom
8223 libxcomposite
8224 libxcvt
8225 libxdamage
8226 libxext
8227 libxkbfile
8228 libxml2
8229 libxrandr
8230 libxtst
8231 pango
8232 pipewire
8233 python ; for gdctl
8234 startup-notification
8235 sysprof
8236 upower
8237 xkeyboard-config))
8238 (propagated-inputs
8239 ;; The following inputs are in 'Requires' of pkg-config files.
8240 (list at-spi2-core ;for atk
8241 cairo
8242 glib
8243 graphene
8244 gsettings-desktop-schemas
8245 lcms
8246 libx11
8247 libxfixes
8248 libxkbcommon
8249 mesa
8250 pixman
8251 xinput ;for xi.pc
8252 xorg-server-xwayland))
8253 (synopsis "Window and compositing manager")
8254 (home-page "https://www.gnome.org")
8255 (description
8256 "Mutter is a window and compositing manager that displays and manages your
8257desktop via OpenGL. Mutter combines a sophisticated display engine using the
8258Clutter toolkit with solid window-management logic inherited from the Metacity
8259window manager.")
8260 (license license:gpl2+)))
8261
8262(define-public gnome-online-accounts
8263 (package
8264 (name "gnome-online-accounts")
8265 (version "3.56.4")
8266 (source (origin
8267 (method url-fetch)
8268 (uri (string-append "mirror://gnome/sources/" name "/"
8269 (version-major+minor version) "/"
8270 name "-" version ".tar.xz"))
8271 (sha256
8272 (base32
8273 "1cv1l757g4iac39l0ccwvqhibyjdjhy9q8p86fp8mqs5mfnix0ra"))))
8274 (build-system meson-build-system)
8275 (arguments
8276 (list
8277 #:glib-or-gtk? #t
8278 #:configure-flags #~(list "-Dc_args=-Wno-error=missing-include-dirs")
8279 #:phases
8280 #~(modify-phases %standard-phases
8281 (add-after 'unpack 'disable-gtk-update-icon-cache
8282 (lambda _
8283 (substitute* "meson.build"
8284 (("gtk_update_icon_cache: true")
8285 "gtk_update_icon_cache: false")))))))
8286 (native-inputs
8287 (list gettext-minimal
8288 `(,glib "bin") ; for glib-compile-schemas, etc.
8289 gobject-introspection
8290 gi-docgen
8291 libxslt
8292 pkg-config
8293 vala))
8294 (propagated-inputs
8295 (list glib ; required by goa-1.0.pc
8296 gtk libadwaita)) ; required by goa-backend-1.0.pc
8297 (inputs
8298 (list docbook-xsl
8299 dbus
8300 gcr
8301 json-glib
8302 keyutils
8303 libsecret
8304 librest
8305 mit-krb5
8306 webkitgtk))
8307 (synopsis "Single sign-on framework for GNOME")
8308 (home-page "https://wiki.gnome.org/Projects/GnomeOnlineAccounts")
8309 (description
8310 "GNOME Online Accounts provides interfaces so that applications and
8311libraries in GNOME can access the user's online accounts. It has providers
8312for Google, ownCloud, Facebook, Flickr, Windows Live, Pocket, Foursquare,
8313Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
8314 (license license:lgpl2.0+)))
8315
8316(define-public evolution-data-server
8317 (package
8318 (name "evolution-data-server")
8319 (version "3.60.0")
8320 (source
8321 (origin
8322 (method url-fetch)
8323 (uri (string-append "mirror://gnome/sources/" name "/"
8324 (version-major+minor version) "/"
8325 name "-" version ".tar.xz"))
8326 (sha256
8327 (base32 "063cvwx83irc86f9kis572x4cpbsp3zzcwyknf8lvci81qz3hkp0"))))
8328 (build-system cmake-build-system)
8329 (arguments
8330 (list
8331 #:parallel-tests? #f
8332 #:configure-flags
8333 #~(let* ((lib (string-append #$output "/lib"))
8334 (runpaths (map (lambda (s)
8335 (string-append lib "/evolution-data-server/" s))
8336 '("addressbook-backends" "calendar-backends"
8337 "camel-providers" "credential-modules"
8338 "registry-modules"))))
8339 (list "-DENABLE_GOOGLE=OFF" ;disable Google Contacts support
8340 "-DENABLE_VALA_BINDINGS=ON"
8341 (string-append "-DCMAKE_INSTALL_RPATH=" lib ";"
8342 (string-append lib "/evolution-data-server;")
8343 (string-join runpaths ";"))
8344 "-DENABLE_INTROSPECTION=ON" ;required for Vala bindings
8345 "-DWITH_PHONENUMBER=ON"))
8346 #:phases
8347 #~(modify-phases %standard-phases
8348 #$@(if (target-aarch64?)
8349 #~((add-after 'unpack 'disable-failing-aarch64-tests
8350 (lambda _
8351 ;; 26/90 Test #26: test-book-client-custom-summary
8352 ;; ...........SIGTRAP***Exception: 35.99 sec
8353 (substitute* "tests/libebook/client/CMakeLists.txt"
8354 (("test-book-client-custom-summary") "")))))
8355 '())
8356 (add-after 'unpack 'disable-failing-tests
8357 (lambda _
8358 ;; tests/book-migration/test-migration.c:160:test_fetch_contacts:
8359 ;; assertion failed (g_slist_length (contacts) == 20): (0 == 20)
8360 (delete-file-recursively "tests/book-migration")
8361 (substitute* "tests/CMakeLists.txt"
8362 (("add_subdirectory\\(book-migration\\)") ""))))
8363 (add-after 'unpack 'patch-locale-in-test
8364 (lambda _
8365 (substitute* "tests/libebook/client/test-book-client-custom-summary.c"
8366 (("en_US\\.UTF-8") "C.UTF-8"))))
8367 (add-after 'unpack 'patch-paths
8368 (lambda _
8369 (substitute* '("tests/test-server-utils/e-test-server-utils.c"
8370 "tests/libedata-book/data-test-utils.c"
8371 "tests/libedata-book/test-book-cache-utils.c"
8372 "tests/libedata-cal/test-cal-cache-utils.c")
8373 (("/bin/rm") (which "rm")))))
8374 (add-before 'configure 'dont-override-rpath
8375 (lambda _
8376 (substitute* "CMakeLists.txt"
8377 ;; CMakeLists.txt hard-codes runpath to just the libdir.
8378 ;; Remove it so the configure flag is respected.
8379 (("SET\\(CMAKE_INSTALL_RPATH .*") "")))))))
8380 (native-inputs
8381 (list `(,glib "bin") ; for glib-mkenums, etc.
8382 gobject-introspection
8383 gperf
8384 gsettings-desktop-schemas
8385 intltool
8386 pkg-config
8387 protobuf
8388 python-wrapper
8389 vala))
8390 (propagated-inputs
8391 ;; These are all in the Requires field of .pc files.
8392 (list glib
8393 gtk
8394 gtk+
8395 json-glib
8396 libical
8397 libsecret
8398 libsoup
8399 nss
8400 sqlite))
8401 (inputs
8402 (list bdb
8403 boost
8404 gcr-3
8405 gnome-online-accounts
8406 json-glib
8407 libcanberra
8408 libgweather
8409 libphonenumber
8410 mit-krb5
8411 openldap
8412 webkitgtk
8413 webkitgtk-for-gtk3))
8414 (synopsis "Store address books and calendars")
8415 (home-page "https://wiki.gnome.org/Apps/Evolution")
8416 (description
8417 "This package provides a unified backend for programs that work with
8418contacts, tasks, and calendar information. It was originally developed for
8419Evolution (hence the name), but is now used by other packages as well.")
8420 (license license:lgpl2.0)))
8421
8422(define-public network-manager
8423 (package
8424 (name "network-manager")
8425 ;; Note: NetworkManager still follows the odd/even major version number
8426 ;; for development/stable releases scheme; be sure to use a stable one.
8427 (version "1.54.3")
8428 (source (origin
8429 (method git-fetch)
8430 (uri (git-reference
8431 (url (string-append "https://gitlab.freedesktop.org/"
8432 "NetworkManager/NetworkManager"))
8433 (commit version)))
8434 (file-name (git-file-name name version))
8435 (patches (search-patches
8436 "network-manager-plugin-ownership.patch"
8437 "network-manager-plugin-path.patch"))
8438 (sha256
8439 (base32
8440 "0dph39qb6c9gjg7yzl6bbfkndcz2lvvcssfq570r1kmw4xw8mf60"))))
8441 (build-system meson-build-system)
8442 (outputs '("out"
8443 "doc")) ; 8 MiB of gtk-doc HTML
8444 (arguments
8445 (list
8446 #:configure-flags
8447 #~(list
8448 ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
8449 ;; component.
8450 (string-append "-Dc_link_args=-Wl,-rpath="
8451 #$output "/lib:"
8452 #$output "/lib/NetworkManager/" #$version)
8453 ;; This is needed since openresolv 3.17, which validates the file is
8454 ;; owned/managed by itself via a comment in /etc/resolv.conf.
8455 "-Dconfig_dns_rc_manager_default=resolvconf"
8456 "-Dsystemd_journal=false"
8457 "-Dsession_tracking=elogind"
8458 "-Dsuspend_resume=elogind"
8459 "-Dsystemdsystemunitdir=no"
8460 "-Dsession_tracking_consolekit=false"
8461 "-Dcrypto=gnutls"
8462 "-Diwd=true"
8463 "-Dnm_cloud_setup=false"
8464 "-Dlibaudit=yes"
8465 "-Dnbft=false"
8466 "-Dqt=false"
8467 "-Ddocs=true"
8468 "--sysconfdir=/etc"
8469 "--localstatedir=/var"
8470 (string-append "-Dudev_dir="
8471 #$output "/lib/udev")
8472 (string-append "-Ddbus_conf_dir="
8473 #$output "/etc/dbus-1/system.d")
8474 (string-append "-Dmodprobe=" (search-input-file %build-inputs
8475 "bin/modprobe")))
8476 #:phases
8477 #~(modify-phases %standard-phases
8478 (add-after 'unpack 'patch-dlopen-call-to-libjansson.so
8479 (lambda* (#:key inputs #:allow-other-keys)
8480 (substitute* "src/libnm-glib-aux/nm-json-aux.c"
8481 (("(handle = dlopen\\()soname" _ head)
8482 (string-append
8483 head "\"" (search-input-file inputs
8484 "lib/libjansson.so") "\"")))))
8485 (add-before 'configure 'pre-configure
8486 (lambda _
8487 ;; These tests try to test aspects of network-manager's
8488 ;; functionality within restricted containers, but they don't
8489 ;; cope with being already in the Guix build jail as that jail
8490 ;; lacks some features that they would like to proxy over (like
8491 ;; a /sys mount).
8492 (substitute* "src/core/tests/meson.build"
8493 ((".*test-l3cfg.*") ""))
8494 (substitute* "src/core/devices/tests/meson.build"
8495 ((".*test-acd.*") "")
8496 ((".*test-lldp.*") ""))
8497 (substitute* "src/core/platform/tests/meson.build"
8498 ((".*test-address-linux.*") "")
8499 ((".*test-cleanup-linux.*") "")
8500 ((".*test-link-linux.*") "")
8501 ((".*test-lldp.*") "")
8502 ((".*test-route-linux.*") "")
8503 ((".*test-tc-linux.*") ""))
8504 (substitute* "src/libnm-client-impl/meson.build"
8505 ;; Note: printenv results in bogus newline, that isn't stripped
8506 (("run_command\\('printenv', '([^']*)',[^\n]*" all var)
8507 (string-append "'" (or (getenv var) "") "'")))))
8508 (add-before 'check 'pre-check
8509 (lambda _
8510 ;; For the missing /etc/machine-id.
8511 (setenv "DBUS_FATAL_WARNINGS" "0")))
8512 (add-before 'install 'no-polkit-magic
8513 ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
8514 (lambda _
8515 (setenv "PKEXEC_UID" "something")))
8516 (add-after 'install 'move-doc
8517 (lambda _
8518 (mkdir-p (string-append #$output:doc "/share"))
8519 (for-each (lambda (directory)
8520 (copy-recursively (string-append #$output directory)
8521 (string-append #$output:doc
8522 directory))
8523 (delete-file-recursively
8524 (string-append #$output directory)))
8525 '("/share/doc" "/share/gtk-doc")))))))
8526 (propagated-inputs
8527 (list glib))
8528 (native-inputs
8529 (list docbook-xml
8530 docbook-xsl
8531 gettext-minimal
8532 `(,glib "bin") ;for gdbus-codegen
8533 gobject-introspection
8534 gtk-doc/stable
8535 libxml2
8536 libxslt
8537 perl
8538 pkg-config
8539 python-dbus
8540 python-pygobject-3.50
8541 python-wrapper
8542 vala))
8543 (inputs
8544 (list audit
8545 curl
8546 cyrus-sasl
8547 dbus-glib
8548 dhcpcd
8549 dnsmasq
8550 elogind
8551 eudev
8552 gnutls
8553 iptables
8554 iwd ;wpa_supplicant alternative
8555 jansson
8556 kmod
8557 libgcrypt
8558 libgudev
8559 libndp
8560 libnl
8561 libpsl
8562 libselinux
8563 mobile-broadband-provider-info
8564 modem-manager
8565 nftables
8566 newt ;for the 'nmtui' console interface
8567 openresolv ;alternative resolv.conf manager
8568 polkit
8569 ppp
8570 readline
8571 util-linux))
8572 (synopsis "Network connection manager")
8573 (home-page "https://wiki.gnome.org/Projects/NetworkManager")
8574 (description
8575 "NetworkManager is a system network service that manages your network
8576devices and connections, attempting to keep active network connectivity when
8577available. It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE
8578devices, and provides VPN integration with a variety of different VPN
8579services.")
8580 ;; “This NetworkManager project consists of the daemon, client tools, and
8581 ;; libnm. libnm is licensed LGPL-2.1+, while the rest is licensed under
8582 ;; GPL-2.0+.”
8583 (license (list license:gpl2+
8584 license:lgpl2.1+))
8585 (properties '((upstream-name . "NetworkManager")))))
8586
8587(define-public network-manager-openvpn
8588 (package
8589 (name "network-manager-openvpn")
8590 (version "1.12.5")
8591 (source (origin
8592 (method url-fetch)
8593 (uri (string-append
8594 "mirror://gnome/sources/NetworkManager-openvpn/"
8595 (version-major+minor version)
8596 "/NetworkManager-openvpn-" version ".tar.xz"))
8597 (sha256
8598 (base32
8599 "1zas9g0hjhlhp7vny7xrbv9w4zw1g5va2b07r0pxzv800n5y6cnf"))))
8600 (build-system gnu-build-system)
8601 (arguments
8602 (list
8603 #:configure-flags #~(list "--enable-absolute-paths"
8604 "--localstatedir=/var"
8605 "--with-gtk4=yes")
8606 #:phases
8607 #~(modify-phases %standard-phases
8608 (add-after 'configure 'patch-path
8609 (lambda* (#:key inputs #:allow-other-keys #:rest args)
8610 (let* ((ovpn (search-input-file inputs "/sbin/openvpn"))
8611 (modprobe (search-input-file inputs "/bin/modprobe"))
8612 (pretty-ovpn (string-append "\"" ovpn "\"")))
8613 (for-each
8614 (lambda (file)
8615 (substitute* file
8616 (("\"/usr/local/sbin/openvpn\"") pretty-ovpn)
8617 (("\"/usr/sbin/openvpn\"") pretty-ovpn)
8618 (("\"/sbin/openvpn\"") pretty-ovpn)
8619 (("/sbin/modprobe") modprobe)))
8620 '("src/nm-openvpn-service.c"
8621 "properties/nm-openvpn-editor.c"))))))))
8622 (native-inputs
8623 (list intltool
8624 `(,glib "bin")
8625 pkg-config))
8626 (inputs
8627 (list gtk+
8628 gtk
8629 kmod
8630 libnma
8631 libsecret
8632 network-manager
8633 openvpn))
8634 (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
8635 (synopsis "OpenVPN plug-in for NetworkManager")
8636 (description
8637 "This extension of NetworkManager allows it to take care of connections
8638to virtual private networks (VPNs) via OpenVPN.")
8639 (license license:gpl2+)
8640 (properties `((upstream-name . "NetworkManager-openvpn")))))
8641
8642(define-public network-manager-openconnect
8643 (package
8644 (name "network-manager-openconnect")
8645 (version "1.2.10")
8646 (source (origin
8647 (method url-fetch)
8648 (uri (string-append
8649 "mirror://gnome/sources/NetworkManager-openconnect/"
8650 (version-major+minor version)
8651 "/NetworkManager-openconnect-" version ".tar.xz"))
8652 (sha256
8653 (base32
8654 "0r342dinhh1808cb095xb5zfxrm5kaw6sxwclss9gnya9vv6njw4"))))
8655 (build-system gnu-build-system)
8656 (arguments
8657 `(#:configure-flags '("--enable-absolute-paths"
8658 "--localstatedir=/var"
8659 "--with-gtk4=yes")
8660 #:phases
8661 (modify-phases %standard-phases
8662 (add-after 'configure 'patch-path
8663 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
8664 (let* ((openconnect (search-input-file inputs
8665 "/sbin/openconnect"))
8666 (modprobe (search-input-file inputs "/bin/modprobe"))
8667 (pretty-ovpn (string-append "\"" openconnect "\"")))
8668 (substitute* "src/nm-openconnect-service.c"
8669 (("\"/usr(/local)?/s?bin/openconnect\"") pretty-ovpn)
8670 (("/sbin/modprobe") modprobe))))))))
8671 (native-inputs
8672 (list `(,glib "bin")
8673 intltool
8674 libnma
8675 pkg-config))
8676 (inputs
8677 (list gcr-3
8678 gtk
8679 gtk+
8680 kmod
8681 libsecret
8682 libxml2
8683 lz4
8684 network-manager
8685 openconnect
8686 webkitgtk-for-gtk3))
8687 (home-page "https://gitlab.gnome.org/GNOME/NetworkManager-openconnect")
8688 (synopsis "OpenConnect plug-in for NetworkManager")
8689 (description
8690 "This extension of NetworkManager allows it to take care of connections
8691to @acronym{VPNs, virtual private networks} via OpenConnect, an open client for
8692Cisco's AnyConnect SSL VPN.")
8693 (license license:gpl2+)
8694 (properties `((upstream-name . "NetworkManager-openconnect")
8695
8696 ;; The 'etc/dbus-1/system.d/nm-openconnect-service.conf'
8697 ;; file refers to account "nm-openconnect". Specify it here
8698 ;; so that 'network-manager-service-type' creates it.
8699 (user-accounts . ("nm-openconnect"))))))
8700
8701
8702(define-deprecated/public-alias network-manager-fortisslvpn
8703 network-manager-openconnect)
8704
8705(define-public network-manager-libreswan
8706 (package
8707 (name "network-manager-libreswan")
8708 (version "1.2.30")
8709 (source (origin
8710 (method url-fetch)
8711 (uri (string-append
8712 "mirror://gnome/sources/NetworkManager-libreswan/"
8713 (version-major+minor version)
8714 "/NetworkManager-libreswan-" version ".tar.xz"))
8715 (sha256
8716 (base32
8717 "1lqigbqx6y51ys6rvlmv9qg72hlyd2xvl0zq53jqfj5vscvayw36"))))
8718 (build-system gnu-build-system)
8719 (arguments
8720 (list
8721 #:configure-flags #~'("--enable-absolute-paths"
8722 "--localstatedir=/var"
8723 "--with-gtk4=yes")
8724 #:phases
8725 #~(modify-phases %standard-phases
8726 (add-after 'configure 'patch-path
8727 (lambda* (#:key inputs #:allow-other-keys #:rest args)
8728 (define (quoted-input-file inputs file)
8729 (string-append "\"" (search-input-file inputs file) "\""))
8730
8731 (substitute* "src/nm-libreswan-service.c"
8732 (("nm_libreswan_find_helper_bin\\(\"([^\"]*)\", error\\)"
8733 all bin)
8734 (quoted-input-file inputs (string-append "/sbin/" bin)))
8735 (("nm_libreswan_find_helper_libexec\\(\"([^\"]*)\", error\\)"
8736 all bin)
8737 (cond
8738 ;; Removed from libreswan 5.3 and forward.
8739 ((string=? bin "_stackmanager")
8740 (or (false-if-exception
8741 (quoted-input-file inputs
8742 "/libexec/ipsec/_stackmanager"))
8743 all))
8744 (else
8745 (quoted-input-file
8746 inputs
8747 (string-append "/libexec/ipsec/" bin)))))))))))
8748 (native-inputs
8749 (list `(,glib "bin")
8750 intltool
8751 libnma
8752 pkg-config))
8753 (inputs
8754 (list gcr-3
8755 gtk
8756 gtk+
8757 libreswan
8758 libsecret
8759 libnl
8760 network-manager
8761 webkitgtk-for-gtk3))
8762 (home-page "https://gitlab.gnome.org/GNOME/NetworkManager-libreswan")
8763 (synopsis "Libreswan plug-in for NetworkManager")
8764 (description
8765 "This extension of NetworkManager allows it to take care of connections
8766to @acronym{VPNs, virtual private networks} via Libreswan.")
8767 (license license:gpl2+)
8768 (properties `((upstream-name . "NetworkManager-libreswan")))))
8769
8770(define-deprecated/public-alias network-manager-vpnc
8771 network-manager-libreswan)
8772
8773(define-public network-manager-l2tp
8774 (package
8775 (name "network-manager-l2tp")
8776 (version "1.52.6")
8777 (source (origin
8778 (method git-fetch)
8779 (uri (git-reference
8780 (url "https://github.com/nm-l2tp/NetworkManager-l2tp")
8781 (commit version)))
8782 (file-name (git-file-name name version))
8783 (sha256
8784 (base32
8785 "0j6iil7hg2fs5kzs419n89gdjvib8vc70gw7gmal5qs086lfjkb5"))))
8786 (build-system gnu-build-system)
8787 (arguments
8788 (list
8789 #:configure-flags
8790 #~(list
8791 "--enable-absolute-paths"
8792 "--localstatedir=/var"
8793 "--with-gtk4=yes")
8794 #:phases
8795 #~(modify-phases %standard-phases
8796 (add-after 'configure 'patch-path
8797 (lambda* (#:key inputs #:allow-other-keys #:rest args)
8798 (let* ((xl2tpd (search-input-file inputs "/sbin/xl2tpd"))
8799 (ipsec
8800 (search-input-file inputs "/sbin/ipsec"))
8801 (modprobe
8802 (search-input-file inputs "/bin/modprobe")))
8803 (for-each
8804 (lambda (file)
8805 (substitute* file
8806 (("/usr/bin/xl2tpd") xl2tpd)
8807 (("/usr/bin/ipsec") ipsec)
8808 (("/sbin/modprobe") modprobe)))
8809 '("shared/utils.c"
8810 "src/nm-l2tp-service.c"))))))))
8811 (native-inputs
8812 (list gettext-minimal
8813 intltool
8814 autoconf
8815 automake
8816 libtool
8817 (list glib "bin")
8818 pkg-config))
8819 (inputs
8820 (list gtk+
8821 gtk
8822 (list gtk "bin")
8823 kmod
8824 ppp
8825 openssl
8826 nss
8827 libnma
8828 libsecret
8829 network-manager
8830 strongswan
8831 xl2tpd))
8832 (home-page "https://github.com/nm-l2tp/NetworkManager-l2tp")
8833 (synopsis "NetworkManager plugin for L2TP")
8834 (description "NetworkManager-l2tp is a VPN plugin for NetworkManager
8835and later which provides support for L2TP and L2TP/IPsec (i.e. L2TP over
8836IPsec) connections.")
8837 (license license:gpl2+)
8838 (properties `((upstream-name . "NetworkManager-l2tp")))))
8839
8840(define-public mobile-broadband-provider-info
8841 (package
8842 (name "mobile-broadband-provider-info")
8843 (version "20240407")
8844 (source (origin
8845 (method url-fetch)
8846 (uri (string-append
8847 "mirror://gnome/sources/"
8848 "mobile-broadband-provider-info/" version "/"
8849 "mobile-broadband-provider-info-" version ".tar.xz"))
8850 (sha256
8851 (base32
8852 "0jl13k02m63izk35kylv3v8q1c7xa19c4bpzqglzigzl2prfzgw9"))))
8853 (build-system meson-build-system)
8854 (native-inputs (list libxml2 libxslt))
8855 (home-page "https://wiki.gnome.org/Projects/NetworkManager")
8856 (synopsis "Database of broadband connection configuration")
8857 (description "Database of broadband connection configuration.")
8858 (license license:public-domain)))
8859
8860(define-public network-manager-applet
8861 (package
8862 (name "network-manager-applet")
8863 (version "1.36.0")
8864 (source (origin
8865 (method url-fetch)
8866 (uri (string-append "mirror://gnome/sources/network-manager-applet/"
8867 (version-major+minor version) "/"
8868 "network-manager-applet-" version ".tar.xz"))
8869 (sha256
8870 (base32
8871 "0lz2lxj5xy65l7qcn3df83spkxxqk2sjmys7bi4f3bx3gr408ix8"))))
8872 (build-system meson-build-system)
8873 (arguments
8874 `(#:glib-or-gtk? #t
8875 #:configure-flags
8876 '("-Dappindicator=yes")))
8877 (native-inputs
8878 (list gettext-minimal
8879 `(,glib "bin") ; for glib-compile-resources, etc.
8880 gobject-introspection
8881 gtk-doc/stable
8882 pkg-config))
8883 (propagated-inputs
8884 ;; libnm-gtk.pc refers to all these.
8885 (list dbus-glib gtk+ network-manager
8886 ;; nm-applet need by org.gnome.nm-applet.gschema.xml
8887 libnma))
8888 (inputs
8889 (list gcr-3
8890 libappindicator
8891 libgudev
8892 libsecret
8893 libselinux
8894 jansson ; for team support
8895 modem-manager))
8896 (synopsis "Applet for managing network connections")
8897 (home-page "https://wiki.gnome.org/Projects/NetworkManager")
8898 (description
8899 "This package contains a systray applet for NetworkManager. It displays
8900the available networks and allows users to easily switch between them.")
8901 (license license:gpl2+)))
8902
8903(define-public libxml++
8904 (package
8905 (name "libxml++")
8906 (version "5.6.0")
8907 (source
8908 (origin
8909 (method git-fetch)
8910 (uri (git-reference
8911 (url "https://github.com/libxmlplusplus/libxmlplusplus")
8912 (commit version)))
8913 (file-name (git-file-name name version))
8914 (sha256
8915 (base32 "1ckgllfgnfszri57ay41jykwblcilsyldkhiq0x5h50c5av118pj"))))
8916 (build-system gnu-build-system)
8917 (propagated-inputs
8918 (list libxml2)) ;required by .pc file
8919 (native-inputs
8920 (list autoconf
8921 automake
8922 doxygen
8923 docbook-xml
8924 docbook-xsl
8925 graphviz ;for dot
8926 libtool
8927 libxslt
8928 mm-common
8929 perl
8930 pkg-config))
8931 (home-page "https://github.com/libxmlplusplus/libxmlplusplus/")
8932 (synopsis "C++ bindings to the libxml2 XML parser library")
8933 (description
8934 "This package provides a C++ interface to the libxml2 XML parser
8935library.")
8936 (license license:lgpl2.1+)))
8937
8938;; This is the last release providing the 2.6 API, hence the name.
8939(define-public libxml++-2
8940 (package
8941 (inherit libxml++)
8942 (name "libxml++")
8943 (version "2.42.3")
8944 (source
8945 (origin
8946 (method git-fetch)
8947 (uri (git-reference
8948 (url "https://github.com/libxmlplusplus/libxmlplusplus")
8949 (commit version)))
8950 (file-name (git-file-name name version))
8951 (sha256
8952 (base32 "0a0q25q275ysfr2ly66nbizkkwxnylsydzy5a8ay0c9cdskd3sc9"))))
8953 (propagated-inputs (modify-inputs (package-propagated-inputs libxml++)
8954 (append glibmm-2.66)))))
8955
8956(define-public gdm
8957 (package
8958 (name "gdm")
8959 (version "49.2")
8960 (source (origin
8961 (method url-fetch)
8962 (uri (string-append "mirror://gnome/sources/" name "/"
8963 (version-major version) "/"
8964 name "-" version ".tar.xz"))
8965 (sha256
8966 (base32
8967 "01ksb7gf2pfccnvw7dr363nppz0fwrk7hhsal478c3szkwgn64wq"))
8968 (patches
8969 (search-patches
8970 "gdm-default-session.patch"
8971 "gdm-remove-hardcoded-xwayland-path.patch"
8972 "gdm-wayland-session-wrapper-from-env.patch"
8973 "gdm-pass-gdk-pixbuf-loader-env.patch"))))
8974 (build-system meson-build-system)
8975 (outputs '("out" "debug"))
8976 (arguments
8977 (list
8978 #:glib-or-gtk? #t
8979 #:configure-flags
8980 #~(list
8981 "-Dplymouth=disabled"
8982 "-Dsystemd-journal=false"
8983
8984 ;; Using --with-initial-vt=7 allows GDM to run alongside TTY 1,
8985 ;; instead of having to replace it (i.e., stopping the mingetty
8986 ;; service for TTY 1 before starting GDM).
8987 "-Dinitial-vt=7"
8988
8989 ;; Use elogind instead of systemd.
8990 "-Dlogind-provider=elogind"
8991 "-Dsystemdsystemunitdir=no"
8992 "-Dsystemduserunitdir=no"
8993
8994 ;; Use '/etc/environment' for locale settings instead of the
8995 ;; systemd-specific '/etc/locale.conf'.
8996 "-Dlang-file=/etc/environment"
8997
8998 (string-append "-Dudev-dir=" #$output "/lib/udev")
8999
9000 "--localstatedir=/var"
9001 (string-append "-Ddefault-path="
9002 (string-join '("/run/privileged/bin"
9003 "/run/current-system/profile/bin"
9004 "/run/current-system/profile/sbin")
9005 ":"))
9006 ;; Put GDM in bindir so that glib-or-gtk-build-system wraps the
9007 ;; XDG_DATA_DIRS so that it finds its schemas.
9008 "--sbindir" (string-append #$output "/bin"))
9009 #:phases
9010 #~(modify-phases %standard-phases
9011 (add-after 'unpack 'patch-paths
9012 (lambda* (#:key inputs #:allow-other-keys)
9013 (substitute* "daemon/gdm-session.c"
9014 (("dbus-run-session")
9015 (search-input-file inputs "bin/dbus-run-session")))))
9016 (add-before 'configure 'pre-configure
9017 (lambda* (#:key inputs #:allow-other-keys)
9018 ;; We don't want to write to other packages.
9019 (substitute* "meson.build"
9020 (("if dconf_dep\\.found\\(\\)" all)
9021 (string-append all " and false")))
9022 ;; We don't have <systemd/sd-daemon.h>.
9023 (substitute* '("common/gdm-log.c"
9024 "daemon/gdm-server.c"
9025 "daemon/gdm-session-worker.c"
9026 "daemon/gdm-session-worker-job.c")
9027 (("#include <systemd/sd-daemon\\.h>") ""))
9028 ;; Use elogind for sd-login.
9029 (substitute* '("common/gdm-common.c"
9030 "daemon/gdm-local-display-factory.c"
9031 "daemon/gdm-manager.c"
9032 "libgdm/gdm-user-switching.c")
9033 (("#include <systemd/sd-login\\.h>")
9034 "#include <elogind/sd-login.h>"))
9035 ;; Look for system-installed sessions in
9036 ;; /run/current-system/profile/share.
9037 (substitute* '("libgdm/gdm-sessions.c"
9038 "daemon/gdm-session.c"
9039 "daemon/gdm-display.c"
9040 "daemon/gdm-launch-environment.c")
9041 (("DATADIR \"/x")
9042 "\"/run/current-system/profile/share/x")
9043 (("DATADIR \"/wayland")
9044 "\"/run/current-system/profile/share/wayland")
9045 (("DATADIR \"/gnome")
9046 "\"/run/current-system/profile/share/gnome"))
9047 (let ((propagate '("GDM_CUSTOM_CONF"
9048 "GDM_DBUS_DAEMON"
9049 "GDM_X_SERVER"
9050 "GDM_X_SESSION"
9051 ;; XXX: Remove this once GNOME Shell is
9052 ;; a dependency of GDM.
9053 "XDG_DATA_DIRS")))
9054 (substitute* "daemon/gdm-session.c"
9055 (("set_up_session_environment \\(self\\);")
9056 (apply string-append
9057 "set_up_session_environment (self);\n"
9058 (map (lambda (name)
9059 (string-append
9060 "gdm_session_set_environment_variable "
9061 "(self, \"" name "\","
9062 "g_getenv (\"" name "\"));\n"))
9063 propagate)))
9064 ;; This is used by remote sessions, such as when using VNC.
9065 (("\\(GDMCONFDIR \"/Xsession \\\\\"%s\\\\\"\", command)")
9066 "(\"%s \\\"%s\\\"\", g_getenv (\"GDM_X_SESSION\"), command)")))
9067 ;; Find the configuration file using an environment variable.
9068 (substitute* '("common/gdm-settings.c")
9069 (("GDM_CUSTOM_CONF")
9070 (string-append "(g_getenv(\"GDM_CUSTOM_CONF\") != NULL"
9071 " ? g_getenv(\"GDM_CUSTOM_CONF\")"
9072 " : GDM_CUSTOM_CONF)")))
9073 ;; Use service-supplied path to X.
9074 (substitute* '("daemon/gdm-server.c")
9075 (("\\(X_SERVER X_SERVER_ARG_FORMAT")
9076 "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
9077 (substitute* '("daemon/gdm-wayland-session.c"
9078 "daemon/gdm-x-session.c")
9079 (("\"dbus-daemon\"")
9080 "g_getenv (\"GDM_DBUS_DAEMON\")")
9081 (("X_SERVER")
9082 "g_getenv (\"GDM_X_SERVER\")")
9083 (("GDMCONFDIR \"/Xsession\"")
9084 "g_getenv (\"GDM_X_SESSION\")"))
9085 ;; Use an absolute path for GNOME Session.
9086 (substitute* "daemon/gdm-launch-environment.c"
9087 (("\"gnome-session\"")
9088 (format #f "~s"
9089 (search-input-file inputs "bin/gnome-session"))))
9090 ;; Do not automatically select the placeholder session.
9091 (substitute* "daemon/gdm-session.c"
9092 (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]")
9093 (string-append "!g_str_has_suffix (base_name, \".desktop\") || "
9094 "(g_strcmp0(search_dirs[i], \""
9095 #$output "/share/gdm/BuiltInSessions/"
9096 "\") == 0 && "
9097 "g_strcmp0(base_name, \"fail.desktop\") == 0)"))
9098 (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];")
9099 "{ self->fallback_session_name = g_strdup(\"fail\"); goto out; }"))))
9100 (add-before 'install 'install-logo
9101 (lambda* (#:key inputs #:allow-other-keys)
9102 (let ((icon (search-input-file inputs "share/icons/hicolor/\
9103scalable/apps/guix-white-icon.svg"))
9104 (schema (string-append #$output "/share/glib-2.0/schemas/\
9105org.gnome.login-screen.gschema.override")))
9106 (mkdir-p (dirname schema))
9107 (with-output-to-file schema
9108 (lambda ()
9109 (format #t "\
9110[org.gnome.login-screen]
9111logo='~a'~%" icon))))))
9112 ;; GDM requires that there be at least one desktop entry
9113 ;; file. This phase installs a hidden one that simply
9114 ;; fails. This enables users to use GDM with a
9115 ;; '~/.xsession' script with no other desktop entry files.
9116 ;; See <https://bugs.gnu.org/35068>.
9117 (add-after 'install 'install-placeholder-desktop-entry
9118 (lambda _
9119 (let* ((sessions (string-append #$output
9120 "/share/gdm/BuiltInSessions"))
9121 (fail (string-append sessions "/fail.desktop")))
9122 (mkdir-p sessions)
9123 (with-output-to-file fail
9124 (lambda ()
9125 (for-each
9126 display
9127 '("[Desktop Entry]\n"
9128 "Encoding=UTF-8\n"
9129 "Type=Application\n"
9130 "Name=Fail\n"
9131 "Comment=This session fails immediately.\n"
9132 "NoDisplay=true\n"
9133 "Exec=false\n")))))))
9134 ;; GDM needs some additional programs available via XDG_DATA_DIRS,
9135 ;; to make accessibility settings and related services available.
9136 (add-after 'install 'wrap-accessibility-dependencies
9137 (lambda _
9138 (wrap-program (string-append #$output "/bin/gdm")
9139 `("XDG_DATA_DIRS" ":" prefix
9140 #$(map (lambda (input)
9141 (file-append (this-package-input input) "/share"))
9142 '("at-spi2-core"
9143 "dconf"
9144 "gnome-control-center")))))))))
9145 (native-inputs
9146 (list `(,glib "bin") ;for glib-compile-schemas, etc.
9147 dconf
9148 gobject-introspection
9149 guix-icons
9150 intltool
9151 itstool
9152 libxml2
9153 pkg-config))
9154 (inputs
9155 (list accountsservice
9156 at-spi2-core
9157 check ; for testing
9158 dconf ; for wrap-accessibility-dependencies
9159 egl-wayland
9160 elogind
9161 eudev
9162 gnome-session-shepherd
9163 gnome-control-center
9164 gnome-settings-daemon
9165 gtk+
9166 iso-codes/pinned
9167 json-glib
9168 libcanberra
9169 libgudev
9170 linux-pam))
9171 (synopsis "Display manager for GNOME")
9172 (home-page "https://wiki.gnome.org/Projects/GDM/")
9173 (description
9174 "GNOME Display Manager is a system service that is responsible for
9175providing graphical log-ins and managing local and remote displays.")
9176 (license license:gpl2+)))
9177
9178(define-public libgtop
9179 (package
9180 (name "libgtop")
9181 (version "2.41.3")
9182 (source (origin
9183 (method url-fetch)
9184 (uri (string-append "mirror://gnome/sources/libgtop/"
9185 (version-major+minor version) "/"
9186 "libgtop-" version ".tar.xz"))
9187 (sha256
9188 (base32
9189 "136snaww293n1dfdswr764yhd0d55s5z4s3m5x2s4blfjpgpcmkp"))))
9190 (build-system gnu-build-system)
9191 (native-inputs
9192 (list gobject-introspection intltool perl pkg-config))
9193 (propagated-inputs
9194 (list glib)) ; required by libgtop-2.0.pc
9195 (synopsis "Portable system access library")
9196 (home-page "https://www.gnome.org/")
9197 (description
9198 "LibGTop is a library to get system specific data such as CPU and memory
9199usage and information about running processes.")
9200 (license license:gpl2+)))
9201
9202(define-public gnome-bluetooth
9203 (package
9204 (name "gnome-bluetooth")
9205 (version "47.1")
9206 (source (origin
9207 (method url-fetch)
9208 (uri (string-append "mirror://gnome/sources/gnome-bluetooth/"
9209 (version-major version) "/"
9210 "gnome-bluetooth-" version ".tar.xz"))
9211 (sha256
9212 (base32
9213 "18xbblcr7x53qz67xh556hl1p5n2llfhl8cn2ky8y40m790fgqq3"))))
9214 (build-system meson-build-system)
9215 (native-inputs
9216 (list gettext-minimal
9217 gobject-introspection
9218 `(,glib "bin") ;for gdbus-codegen, etc.
9219 libxml2
9220 pkg-config
9221 python
9222 python-dbus-1.2))
9223 (propagated-inputs
9224 ;; These are all required by the gnome-bluetooth .pc file.
9225 (list glib
9226 gtk
9227 libadwaita))
9228 (inputs
9229 (list eudev
9230 gsound
9231 libnotify
9232 python-dbus-1.2
9233 upower))
9234 (synopsis "GNOME Bluetooth subsystem")
9235 (home-page "https://wiki.gnome.org/Projects/GnomeBluetooth")
9236 (description
9237 "This package contains tools for managing and manipulating Bluetooth
9238devices using the GNOME desktop.")
9239 (license license:lgpl2.1+)))
9240
9241(define-public tecla
9242 (package
9243 (name "tecla")
9244 (version "49.0")
9245 (source (origin
9246 (method url-fetch)
9247 (uri (string-append "mirror://gnome/sources/" name "/"
9248 (version-major version) "/"
9249 name "-" version ".tar.xz"))
9250 (sha256
9251 (base32
9252 "17r4a7v27n2426bjy3rxiypizfqyf0xp0xrpn7b0rxms0bj2991c"))))
9253 (build-system meson-build-system)
9254 (arguments (list #:glib-or-gtk? #t))
9255 (inputs (list gtk libadwaita))
9256 (native-inputs (list `(,glib "bin") gettext-minimal pkg-config))
9257 (home-page "https://gitlab.gnome.org/GNOME/tecla")
9258 (synopsis "Keyboard layout viewer")
9259 (description "Tecla is a keyboard layout viewer based on GTK 4 and
9260Libadwaita.")
9261 (license license:gpl2+)))
9262
9263(define-public gnome-control-center
9264 (package
9265 (name "gnome-control-center")
9266 (version "49.4")
9267 (source (origin
9268 (method url-fetch)
9269 (uri (string-append "mirror://gnome/sources/" name "/"
9270 (version-major version) "/"
9271 name "-" version ".tar.xz"))
9272 (sha256
9273 (base32
9274 "00jb40sa4hd6hp96ia49nqakzjzqcz3a2rpp60x8y86xzpjpa68k"))))
9275 (build-system meson-build-system)
9276 (arguments
9277 (list
9278 #:glib-or-gtk? #t
9279 #:phases
9280 #~(modify-phases %standard-phases
9281 (add-before 'configure 'patch-paths
9282 (lambda* (#:key inputs #:allow-other-keys)
9283 (substitute* "panels/system/datetime/tz.h"
9284 (("/usr/share/zoneinfo/zone.tab")
9285 (search-input-file inputs "share/zoneinfo/zone.tab")))
9286 (substitute* "tests/datetime/test-endianess.c"
9287 (("/usr/share/locale")
9288 (search-input-directory inputs "share/locale")))
9289 (substitute* '("panels/network/net-device-bluetooth.c"
9290 "panels/network/net-device-mobile.c"
9291 "panels/network/connection-editor/net-connection-editor.c")
9292 (("\"nm-connection-editor")
9293 (string-append "\"" (search-input-file
9294 inputs "bin/nm-connection-editor"))))))
9295 (add-after 'unpack 'skip-gtk-update-icon-cache
9296 ;; Don't create 'icon-theme.cache'.
9297 (lambda _
9298 (substitute* "meson.build"
9299 (("gtk_update_icon_cache: true")
9300 "gtk_update_icon_cache: false"))))
9301 (replace 'check
9302 (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
9303 (when tests?
9304 ;; Tests require a running X server.
9305 (system "Xvfb :1 &")
9306 (setenv "DISPLAY" ":1")
9307 ;; For the missing /var/lib/dbus/machine-id
9308 (setenv "DBUS_FATAL_WARNINGS" "0")
9309 (setenv "NO_AT_BRIDGE" "1")
9310 (setenv "HOME" "/tmp")
9311 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
9312 (mkdir (getenv "XDG_RUNTIME_DIR"))
9313 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
9314 (setenv "MESON_TESTTHREADS"
9315 (if parallel-tests?
9316 (number->string (parallel-job-count))
9317 "1"))
9318 (invoke "dbus-run-session" "--"
9319 "meson" "test" "-t" "0")))))))
9320 (native-inputs
9321 (list blueprint-compiler
9322 docbook-xsl
9323 gettext-minimal
9324 `(,glib "bin") ;for glib-mkenums, etc.
9325 libxslt
9326 pkg-config
9327 python
9328 python-dbusmock
9329 xorg-server-for-tests
9330 setxkbmap))
9331 (inputs
9332 (list accountsservice
9333 colord-gtk
9334 cups
9335 dconf
9336 gcr
9337 gnome-bluetooth
9338 gnome-desktop
9339 gnome-online-accounts
9340 gnome-session-shepherd
9341 gnome-settings-daemon
9342 gnutls
9343 grilo
9344 gsound
9345 ibus
9346 json-glib
9347 libadwaita
9348 libgudev
9349 libgtop
9350 `(,libjxl "pixbuf-loader") ;for the backgrounds
9351 libnma
9352 libpwquality
9353 (librsvg-for-system) ;for loading SVG files
9354 libsecret
9355 libsoup
9356 libxml2
9357 libwacom
9358 mesa
9359 mit-krb5
9360 modem-manager
9361 network-manager-applet
9362 polkit
9363 pulseaudio
9364 samba
9365 tecla
9366 tzdata
9367 udisks
9368 upower))
9369 (synopsis "Utilities to configure the GNOME desktop")
9370 (home-page "https://www.gnome.org/")
9371 (description
9372 "This package contains configuration applets for the GNOME desktop,
9373allowing to set accessibility configuration, desktop fonts, keyboard and mouse
9374properties, sound setup, desktop theme and background, user interface
9375properties, screen resolution, and other GNOME parameters.")
9376 (license license:gpl2+)))
9377
9378(define-public gnome-shell
9379 (package
9380 (name "gnome-shell")
9381 (version "49.4")
9382 (source (origin
9383 (method url-fetch)
9384 (uri (string-append "mirror://gnome/sources/" name "/"
9385 (version-major version) "/"
9386 name "-" version ".tar.xz"))
9387 (sha256
9388 (base32
9389 "022vb4y0ri7ws6l1ghx63vxi9xhi6r0hfrsg257i230ly2i0qvwx"))
9390 (patches
9391 (search-patches "gnome-shell-restore-desktop-file.patch"))))
9392 (outputs '("out" "debug"))
9393 (build-system meson-build-system)
9394 (arguments
9395 (let ((disallowed-references
9396 (list (gexp-input (this-package-native-input "glib") "bin")
9397 (this-package-native-input "libxslt")
9398 meson)))
9399 (list
9400 #:glib-or-gtk? #t
9401 #:disallowed-references disallowed-references
9402 #:configure-flags
9403 #~(list "-Dsystemd=false"
9404 ;; Otherwise, the RUNPATH will lack the final path component.
9405 (string-append "-Dc_link_args=-Wl,-rpath="
9406 #$output "/lib/gnome-shell")
9407 ;; TODO: Unbundle jasmine
9408 "--wrap-mode=nodownload")
9409 #:modules '((guix build meson-build-system)
9410 (guix build utils)
9411 (ice-9 match)
9412 (srfi srfi-1)
9413 (srfi srfi-26))
9414 #:phases
9415 #~(modify-phases %standard-phases
9416 (add-after 'unpack 'fix-keysdir
9417 (lambda _
9418 (substitute* "meson.build"
9419 (("keysdir =.*")
9420 (string-append
9421 "keysdir = "
9422 "prefix / 'share/gnome-control-center/keybindings'\n")))))
9423 (add-after 'unpack 'patch-jasmine
9424 (lambda _
9425 (substitute* (find-files "subprojects/jasmine-gjs/bin")
9426 (("/usr/bin/env") (which "env")))))
9427 (add-after 'unpack 'patch-shew
9428 (lambda _
9429 (substitute* "subprojects/libshew/src/meson.build"
9430 (("extra_args: \\[(.*)\\]" all args)
9431 (string-append "extra_args: ['--fallback-library-path="
9432 #$output "/lib/gnome-shell/'," args
9433 "]")))))
9434 (add-after 'unpack 'skip-gtk-update-icon-cache
9435 ;; Don't create 'icon-theme.cache'.
9436 (lambda _
9437 (substitute* "meson.build"
9438 (("gtk_update_icon_cache: true")
9439 "gtk_update_icon_cache: false"))))
9440 (add-after 'unpack 'unbreak-shell-tests
9441 (lambda _
9442 ;; Lest non-fatal dbus warnings be made fatal again…
9443 (substitute* "tests/meson.build"
9444 (("shell_testenv\\.set\\('G_DEBUG'" all)
9445 (string-append "# " all)))))
9446 (add-before 'configure 'record-absolute-file-names
9447 (lambda* (#:key inputs #:allow-other-keys)
9448 (let ((ibus-daemon (search-input-file inputs "bin/ibus-daemon"))
9449 (tecla (search-input-file inputs "bin/tecla")))
9450 (substitute* "js/misc/ibusManager.js"
9451 (("'ibus-daemon'")
9452 (string-append "'" ibus-daemon "'")))
9453 (substitute* "js/ui/status/keyboard.js"
9454 (("'tecla'")
9455 (string-append "'" tecla "'"))))))
9456 (add-after 'install 'wrap-programs
9457 (lambda* (#:key inputs #:allow-other-keys)
9458 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))
9459 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
9460 (python-path
9461 (string-join
9462 (filter (lambda (item)
9463 (not (any (cut string-prefix? <> item)
9464 '#$disallowed-references)))
9465 (string-split (getenv "GUIX_PYTHONPATH") #\:))
9466 ":")))
9467 (for-each
9468 (lambda (prog)
9469 (wrap-program (string-append #$output "/bin/" prog)
9470 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
9471 '("gnome-shell" "gnome-extensions" "gnome-extensions-app"))
9472 (substitute* (string-append #$output "/share/gnome-shell/"
9473 "org.gnome.Shell.Extensions")
9474 (("^import " all)
9475 (string-append "'" gi-typelib-path "'.split(':').forEach("
9476 "path => imports.gi.GIRepository.Repository."
9477 "dup_default().prepend_search_path(path));\n"
9478 all)))
9479 ;; Screencast requires a pipewire service running
9480 ;; (i.e. as provided by home-pipewire-service-type)
9481 (substitute* (string-append #$output "/share/gnome-shell/"
9482 "org.gnome.Shell.Screencast")
9483 (("^import " all)
9484 (string-append "'" gi-typelib-path "'.split(':').forEach("
9485 "path => imports.gi.GIRepository.Repository."
9486 "dup_default().prepend_search_path(path));\n"
9487 "imports.gi.GLib.setenv('GST_PLUGIN_SYSTEM_PATH',"
9488 "[imports.gi.GLib.getenv('GST_PLUGIN_SYSTEM_PATH'),"
9489 "'" gst-plugin-path "'].filter(v => v).join(':'),"
9490 "true);\n"
9491 all))))))
9492 (replace 'check
9493 (lambda* (#:key tests? inputs #:allow-other-keys #:rest args)
9494 (when tests?
9495 ;; For the missing /var/lib/dbus/machine-id
9496 ;; See explanation of the symlinks workaround in the gjs
9497 ;; package definition.
9498 (let* ((test-libraries (find-files (getcwd)
9499 "\\.so(\\.[0-9]*)?$"))
9500 (test-library-links
9501 (map (lambda (x)
9502 (cons x (string-append
9503 #$output "/lib/gnome-shell/"
9504 (basename x))))
9505 test-libraries)))
9506 (mkdir-p (string-append #$output "/lib/gnome-shell"))
9507 (for-each (match-lambda
9508 ((old . new)
9509 (symlink old new)))
9510 test-library-links)
9511 (apply (assoc-ref %standard-phases 'check) args)
9512 (for-each delete-file (map cdr test-library-links))))))
9513 (add-after 'install 'rewire
9514 (lambda* (#:key inputs #:allow-other-keys)
9515 (for-each
9516 (lambda (tool)
9517 (call-with-output-file (string-append #$output
9518 "/bin/" tool)
9519 (lambda (port)
9520 (format port "#!~a
9521printf '~a is deprecated. Use the \"gnome-extensions\" CLI or \
9522\"gnome-extensions-app\" instead.\\n'"
9523 (search-input-file inputs "bin/bash")
9524 tool))))
9525 '("gnome-shell-extension-tool" "gnome-shell-extension-prefs"))))
9526 (add-after 'install 'install-xdg-autostart-service
9527 (lambda _
9528 (install-file (string-append #$output "/share/applications/org.gnome.Shell.desktop")
9529 (string-append #$output "/etc/xdg/autostart"))))
9530 (add-after 'install 'wrap-glycin-loaders
9531 (lambda* (#:key inputs #:allow-other-keys)
9532 (wrap-program (string-append #$output "/bin/gnome-shell")
9533 `("XDG_DATA_DIRS" ":" prefix
9534 ,(list (dirname (search-input-directory inputs "/share/glycin-loaders")))))))
9535 (replace 'glib-or-gtk-wrap
9536 (let ((wrap (assoc-ref %standard-phases 'glib-or-gtk-wrap)))
9537 (lambda* (#:key inputs outputs #:allow-other-keys)
9538 ;; By default glib:bin et al. would end up in the XDG_DATA_DIRS
9539 ;; settings of the wrappers created by the 'glib-or-gtk-wrap'
9540 ;; phase. Fix that since we don't need these.
9541 (wrap #:inputs
9542 (filter (match-lambda
9543 ((label . output)
9544 (not (member output
9545 '#$disallowed-references))))
9546 inputs)
9547 #:outputs outputs))))))))
9548 (native-inputs
9549 (list adwaita-icon-theme ;for cursor theme
9550 asciidoc
9551 coreutils-minimal ;for env
9552 gettext-minimal
9553 `(,glib "bin") ;for glib-compile-schemas, etc.
9554 desktop-file-utils ;for update-desktop-database
9555 gobject-introspection
9556 libxslt
9557 perl
9558 pkg-config
9559 python
9560 python-dbus
9561 python-dbusmock
9562 python-docutils
9563 sassc
9564 umockdev))
9565 (inputs
9566 (list accountsservice
9567 bash-minimal
9568 docbook-xsl
9569 evolution-data-server
9570 gcr
9571 gdm
9572 geoclue
9573 gjs
9574 gtk
9575 glycin-loaders
9576 gnome-autoar
9577 gnome-bluetooth
9578 gnome-desktop
9579 gnome-settings-daemon
9580 graphene
9581 gst-plugins-base
9582 gst-plugins-good
9583 ibus
9584 libcanberra
9585 libcroco
9586 libgweather
9587 libnma
9588 librsvg
9589 libsoup
9590 mesa-headers
9591 mutter
9592 network-manager-applet
9593 pipewire
9594 polkit
9595 pulseaudio
9596 python-pygobject
9597 startup-notification
9598 tecla ;for keyboard previews
9599 telepathy-logger
9600 upower))
9601 (synopsis "Desktop shell for GNOME")
9602 (home-page "https://wiki.gnome.org/Projects/GnomeShell")
9603 (description
9604 "GNOME Shell provides core user interface functions for the GNOME desktop,
9605like switching to windows and launching applications.")
9606 (license license:gpl2+)))
9607
9608(define-public gtk-vnc
9609 (package
9610 (name "gtk-vnc")
9611 (version "1.5.0")
9612 (source
9613 (origin
9614 (method url-fetch)
9615 (uri
9616 (string-append "mirror://gnome/sources/" name "/"
9617 (version-major+minor version) "/"
9618 name "-" version ".tar.xz"))
9619 (sha256
9620 (base32 "08yx6hnf1v6cv4g5fra4cbygg401d9y5dk1slhfr7b98fmsb9gn0"))))
9621 (build-system meson-build-system)
9622 (arguments
9623 `(#:glib-or-gtk? #t)) ; To wrap binaries and/or compile schemas
9624 (native-inputs
9625 (append
9626 ;; GJS depends on Rust so remove the GJS dependency on other platforms.
9627 (if (supported-package? gjs)
9628 (list gjs)
9629 '())
9630 (list gettext-minimal
9631 `(,glib "bin")
9632 gobject-introspection
9633 perl
9634 pkg-config
9635 python-wrapper
9636 vala)))
9637 (inputs
9638 (list cairo
9639 (librsvg-for-system)))
9640 (propagated-inputs
9641 ;; These are all in Requires or Requires.private of the .pc files.
9642 (list cyrus-sasl
9643 gdk-pixbuf
9644 glib
9645 gnutls
9646 gtk+
9647 libgcrypt
9648 libx11
9649 pulseaudio
9650 zlib))
9651 (synopsis "VNC client viewer widget for GTK+")
9652 (description "GTK-VNC is a project providing client side APIs for the RFB
9653protocol / VNC remote desktop technology. It is built using coroutines allowing
9654it to be completely asynchronous while remaining single threaded. It provides a
9655core C library, and bindings for Python (PyGTK).")
9656 (home-page "https://wiki.gnome.org/Projects/gtk-vnc")
9657 (license license:lgpl2.1+)))
9658
9659(define-public gnome-autoar
9660 (package
9661 (name "gnome-autoar")
9662 (version "0.4.5")
9663 (source (origin
9664 (method url-fetch)
9665 (uri (string-append "mirror://gnome/sources/" name "/"
9666 (version-major+minor version) "/"
9667 name "-" version ".tar.xz"))
9668 (sha256
9669 (base32
9670 "1gns2nkcgfgmfk5mvyq36cg7f5dzyii45qmb4cpsmgrqzh357343"))))
9671 (build-system meson-build-system)
9672 (native-inputs
9673 (list gobject-introspection `(,glib "bin") pkg-config))
9674 (propagated-inputs
9675 (list libarchive)) ; Required by gnome-autoar-0.pc
9676 (inputs
9677 (list gtk+))
9678 (synopsis "Archives integration support for GNOME")
9679 (home-page "https://git.gnome.org/browse/gnome-autoar/")
9680 (description
9681 "GNOME Autoar is a library which makes creating and extracting archives
9682easy, safe, and automatic.")
9683 (license license:lgpl2.1+)))
9684
9685(define-public tinysparql
9686 (package
9687 (name "tinysparql")
9688 (version "3.10.1")
9689 (source (origin
9690 (method url-fetch)
9691 (uri (string-append "mirror://gnome/sources/tinysparql/"
9692 (version-major+minor version) "/"
9693 "tinysparql-" version ".tar.xz"))
9694 (sha256
9695 (base32
9696 "0r824dz8szfwd2z95nk8ffkvwq0ayva0wa6n1railrxnkmw3wzss"))))
9697 (build-system meson-build-system)
9698 (arguments
9699 (list
9700 #:glib-or-gtk? #t
9701 #:configure-flags
9702 #~(list "-Ddocs=false" "-Dsystemd_user_services=false")
9703 #:phases
9704 #~(modify-phases %standard-phases
9705 (add-after 'unpack 'disable-failing-tests
9706 (lambda _
9707 (substitute* "tests/functional-tests/test_cli.py"
9708 (("^([\t ]*)def test_help\\(self\\)" all indent)
9709 (string-append indent "@unittest.skip('apparently broken')\n"
9710 all)))
9711 #$@(if (not (target-64bit?))
9712 ;; On 32-bit systems, the far away dates are incorrect,
9713 ;; and the floats are not parsed exactly.
9714 '((substitute*
9715 "tests/libtinysparql/tracker-statement-test.c"
9716 (("g_assert_cmpfloat *\\((.*), ==, ([0-9.e-]+)\\);"
9717 total actual expected)
9718 (string-append "g_assert_cmpfloat_with_epsilon ("
9719 actual ", " expected ", 1e-12);")))
9720 (substitute* "tests/core/tracker-sparql-test.c"
9721 (("\\{ \"datetime/direct-1\", .* \\},")
9722 "/* datetime test disabled */")))
9723 '())
9724 *unspecified*))
9725 (add-before 'configure 'set-shell
9726 (lambda _
9727 (setenv "SHELL" (which "bash"))))
9728 (delete 'check) ;moved after install
9729 (add-after 'install 'set-gi-typelib-path
9730 (lambda* (#:key outputs #:allow-other-keys)
9731 (setenv "GI_TYPELIB_PATH"
9732 (search-input-directory outputs "lib/girepository-1.0"))))
9733 (add-after 'set-gi-typelib-path 'check
9734 (lambda* (#:key tests? test-options #:allow-other-keys)
9735 (when tests?
9736 ;; Some tests expect to write to $HOME.
9737 (setenv "HOME" "/tmp")
9738 (apply invoke "dbus-run-session" "--" "meson" "test"
9739 "--print-errorlogs" "-t0" test-options)))))))
9740 (native-inputs
9741 (list gettext-minimal
9742 `(,glib "bin")
9743 (libc-utf8-locales-for-target)
9744 gobject-introspection
9745 docbook-xsl
9746 docbook-xml
9747 gsettings-desktop-schemas
9748 asciidoc
9749 libxslt
9750 cmake-minimal
9751 python-pygobject
9752 gtk-doc/stable
9753 dbus
9754 pkg-config
9755 python
9756 vala))
9757 (inputs
9758 (list bash-minimal
9759 dbus
9760 libstemmer
9761 libsoup))
9762 (propagated-inputs
9763 ;; These are in Requires or Requires.private of tracker-sparql-3.0.pc.
9764 (list glib
9765 icu4c ;libunistring gets miner-miner-fs test to fail
9766 json-glib
9767 libxml2
9768 sqlite))
9769 (synopsis "Lightweight RDF triple store")
9770 (home-page "https://gitlab.gnome.org/GNOME/tinysparql")
9771 (description
9772 "TinySPARQL is a RDF triple store with a SPARQL 1.1 interface. It allows
9773creating local databases in memory or the filesystem, and accessing/creating
9774endpoints for federated queries.")
9775 ;; https://gitlab.gnome.org/GNOME/tinysparql/-/blob/master/COPYING (stale):
9776 ;; src/common/* and src/libtinysparql/* are covered by lgpl2.1+,
9777 ;; the rest is gpl2+.
9778 (license (list license:gpl2+ license:lgpl2.1+))))
9779
9780(define-public localsearch
9781 (package
9782 (name "localsearch")
9783 (version "3.10.2")
9784 (source (origin
9785 (method url-fetch)
9786 (uri (string-append "mirror://gnome/sources/localsearch/"
9787 (version-major+minor version)
9788 "/localsearch-" version ".tar.xz"))
9789 (sha256
9790 (base32
9791 "11d2g3l55kix8bmq161f0g2iwqwgcwrrmv6lp80p2qbnbp48kpdl"))))
9792 (build-system meson-build-system)
9793 (arguments
9794 (list
9795 #:glib-or-gtk? #t
9796 #:configure-flags
9797 #~(list ;; Ensure the RUNPATH contains all installed library locations.
9798 (string-append "-Dc_link_args=-Wl,-rpath="
9799 #$output "/lib/localsearch-3.0")
9800 ;; TODO: Check if this is only a build-time failure, or add
9801 ;; variants to explicitly enable this features, (see:
9802 ;; https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/300).
9803 "-Dlandlock=disabled"
9804 ;; TODO: Enable functional tests. Currently, the following error
9805 ;; appears:
9806 ;; Exception: The functional tests require DConf to be the default
9807 ;; GSettings backend. Got GKeyfileSettingsBackend instead.
9808 "-Dfunctional_tests=false"
9809 "-Dsystemd_user_services=false")
9810 #:phases
9811 #~(modify-phases %standard-phases
9812 (add-before 'configure 'fix-tests
9813 (lambda _
9814 ;; Disable those tests that require the functional_tests option
9815 ;; to be true and the UPower daemon to be started.
9816 (substitute* "examples/python/meson.build"
9817 (("foreach example_name:.*")
9818 "foreach example_name: []"))))
9819 (replace 'check
9820 (lambda* (#:key tests? #:allow-other-keys)
9821 (when tests?
9822 ;; Some tests expect to write to $HOME.
9823 (setenv "HOME" "/tmp")
9824 (setenv "LANG" "en_US.UTF-8")
9825 (invoke "dbus-run-session" "--" "meson" "test"
9826 "--print-errorlogs" "-t0"
9827 ;; Do not run the slow test, which fail (see:
9828 ;; https://gitlab.gnome.org/GNOME/tracker-miners
9829 ;; /-/issues/226).
9830 "--no-suite" "slow")))))))
9831 (native-inputs
9832 (list `(,glib "bin")
9833 asciidoc
9834 dbus
9835 docbook-xml
9836 docbook-xsl
9837 gettext-minimal
9838 gobject-introspection
9839 gsettings-desktop-schemas
9840 libxslt
9841 pkg-config
9842 python-pygobject))
9843 (inputs
9844 (list exempi
9845 ffmpeg
9846 flac
9847 giflib
9848 glib
9849 gstreamer
9850 gst-plugins-base
9851 icu4c
9852 json-glib
9853 libcue
9854 libexif
9855 libgsf
9856 libgxps
9857 libiptcdata
9858 libjpeg-turbo
9859 libosinfo
9860 libpng
9861 libseccomp
9862 libsoup
9863 libtiff
9864 libvorbis
9865 libxml2
9866 poppler
9867 shared-mime-info
9868 taglib
9869 totem-pl-parser
9870 tinysparql
9871 upower
9872 zlib))
9873 (synopsis "Desktop search framework")
9874 (home-page "https://gitlab.gnome.org/GNOME/localsearch")
9875 (description
9876 "LocalSearch is the file search framework of the GNOME desktop. It stores
9877data about user files structured by the Nepomuk definitions, features a
9878sandboxed metadata extractor, and provides facilities to alter file metadata.
9879The data is exposed through a SPARQL endpoint, which applications may access
9880through portals.")
9881 ;; src/common/*, src/cli/* (except src/cli/main.c) and src/extractor/* are
9882 ;; covered by lgpl2.1+, src/control/*, src/indexer/* and src/writeback/*
9883 ;; is gpl2+.
9884 (license (list license:gpl2+ license:lgpl2.1+))))
9885
9886(define-public tracker
9887 (deprecated-package "tracker" tinysparql))
9888
9889(define-public tracker-miners
9890 (deprecated-package "tracker-miners" localsearch))
9891
9892(define-public nautilus
9893 (package
9894 (name "nautilus")
9895 (version "50.0")
9896 (source (origin
9897 (method url-fetch)
9898 (uri (string-append "mirror://gnome/sources/" name "/"
9899 (version-major version) "/"
9900 name "-" version ".tar.xz"))
9901 (sha256
9902 (base32
9903 "1k1kcg8ran40b86554cds7pf2v3dhfrrp43ws2v8l4gy8jxnwnd9"))
9904 (patches
9905 (search-patches "nautilus-extension-search-path.patch"))))
9906 (build-system meson-build-system)
9907 (arguments
9908 (list
9909 #:glib-or-gtk? #t
9910 #:phases
9911 #~(modify-phases %standard-phases
9912 (add-after 'unpack 'patch-commands
9913 (lambda* (#:key inputs #:allow-other-keys)
9914 (substitute* "src/nautilus-autorun-software.c"
9915 (("g_file_new_for_path \\(\"/bin/sh\");")
9916 (format #f "g_file_new_for_path (~s);"
9917 (search-input-file inputs "bin/sh"))))))
9918 (add-after 'unpack 'patch-tracker3-command
9919 (lambda* (#:key inputs #:allow-other-keys)
9920 (substitute* "src/nautilus-tag-manager.c"
9921 (("\"tracker3\"")
9922 (string-append "\""
9923 (search-input-file inputs "/bin/tracker3")
9924 "\"")))))
9925 (add-after 'unpack 'fix-tests
9926 (lambda _
9927 ;; The tracker test hangs in the build container (see:
9928 ;; https://gitlab.gnome.org/GNOME/nautilus/-/issues/2486).
9929 (substitute* "test/automated/displayless/meson.build"
9930 (("^foreach t: tracker_tests" all)
9931 (string-append "tracker_tests = []\n" all))
9932 ;; This test fails for unknown reasons (see:
9933 ;; <https://gitlab.gnome.org/GNOME/nautilus/-/issues/4174>).
9934 ((".*'test-file-operations-archive'.*") "")
9935 ;; This 'displayless' test requires a display (see:
9936 ;; <https://gitlab.gnome.org/GNOME/nautilus/-/issues/4174>).
9937 ((".*'test-thumbnails'.*") ""))
9938 ;; /etc does not have that many files in our build container.
9939 (substitute* "test/automated/displayless/test-directory.c"
9940 (("g_assert_cmpint \\(g_list_length \\(files\\), >, 10\\);")
9941 "g_assert_cmpint (g_list_length (files), >, 1);"))))
9942 (add-after 'unpack 'skip-gtk-update-icon-cache
9943 ;; Don't create 'icon-theme.cache'.
9944 (lambda _
9945 (substitute* "meson.build"
9946 (("gtk_update_icon_cache: true")
9947 "gtk_update_icon_cache: false"))))
9948 (delete 'check)
9949 (add-after 'install 'check
9950 (assoc-ref %standard-phases 'check))
9951 (add-before 'check 'pre-check
9952 (lambda _
9953 (setenv "HOME" "/tmp") ;some tests require a writable HOME
9954 (setenv "XDG_DATA_DIRS"
9955 (string-append (getenv "XDG_DATA_DIRS")
9956 ":" #$output "/share")))))))
9957 (native-inputs
9958 (list blueprint-compiler
9959 desktop-file-utils ;for update-desktop-database
9960 `(,glib "bin") ;for glib-mkenums, etc.
9961 gettext-minimal
9962 gobject-introspection
9963 pkg-config
9964 python
9965 python-pygobject
9966 xorg-server-for-tests))
9967 (inputs
9968 (list bash-minimal
9969 dconf
9970 gexiv2
9971 gvfs
9972 exempi
9973 glycin-loaders
9974 gnome-desktop
9975 gnome-autoar
9976 gst-plugins-base
9977 json-glib
9978 libadwaita
9979 libglycin
9980 libportal
9981 libseccomp
9982 libselinux
9983 localsearch
9984 tinysparql
9985 ;; XXX: gtk is required by libnautilus-extension.pc
9986 ;;
9987 ;; Don't propagate it to reduce "profile pollution" of the 'gnome' meta
9988 ;; package. See:
9989 ;; <http://lists.gnu.org/archive/html/guix-devel/2016-03/msg00283.html>.
9990 gtk
9991 libexif
9992 libxml2))
9993 (native-search-paths
9994 (list (search-path-specification
9995 (variable "NAUTILUS_EXTENSION_PATH")
9996 (files '("lib/nautilus/extensions-4")))))
9997 (synopsis "File manager for GNOME")
9998 (home-page "https://wiki.gnome.org/Apps/Nautilus")
9999 (description
10000 "Nautilus (Files) is a file manager designed to fit the GNOME desktop
10001design and behaviour, giving the user a simple way to navigate and manage its
10002files.")
10003 (license license:gpl2+)))
10004
10005(define-public baobab
10006 (package
10007 (name "baobab")
10008 (version "50.0")
10009 (source (origin
10010 (method url-fetch)
10011 (uri (string-append
10012 "mirror://gnome/sources/" name "/"
10013 (version-major version) "/"
10014 name "-" version ".tar.xz"))
10015 (sha256
10016 (base32
10017 "0jq2059gx8gib35rvdpn6lisqa6928sg9xh00m23m5jzbzqq8g2p"))))
10018 (build-system meson-build-system)
10019 (arguments
10020 '(#:glib-or-gtk? #t
10021 #:phases
10022 (modify-phases %standard-phases
10023 (add-after 'unpack 'skip-gtk-update-icon-cache
10024 ;; Don't create 'icon-theme.cache'.
10025 (lambda _
10026 (substitute* "meson.build"
10027 (("gtk_update_icon_cache: true")
10028 "gtk_update_icon_cache: false")))))))
10029 (native-inputs
10030 (list desktop-file-utils ;for update-desktop-database
10031 gettext-minimal
10032 `(,glib "bin")
10033 itstool
10034 libxml2
10035 pkg-config
10036 python
10037 vala))
10038 (inputs (list gtk libadwaita))
10039 (synopsis "Disk usage analyzer for GNOME")
10040 (description
10041 "Baobab (Disk Usage Analyzer) is a graphical application to analyse disk
10042usage in the GNOME desktop environment. It can easily scan device volumes or
10043a specific user-requested directory branch (local or remote). Once the scan
10044is complete it provides a graphical representation of each selected folder.")
10045 (home-page "https://wiki.gnome.org/Apps/Baobab")
10046 (license license:gpl2+)))
10047
10048(define-public gnome-backgrounds
10049 (package
10050 (name "gnome-backgrounds")
10051 (version "49.0")
10052 (source
10053 (origin
10054 (method url-fetch)
10055 (uri (string-append "mirror://gnome/sources/" name "/"
10056 (version-major version) "/"
10057 name "-" version ".tar.xz"))
10058 (sha256
10059 (base32
10060 "1dgl8jxczx2cwszg07bhrjpcg2rywfcak2d5md20x84bwl6jdzh1"))))
10061 (build-system meson-build-system)
10062 (native-inputs (list gettext-minimal))
10063 (home-page "https://gitlab.gnome.org/GNOME/gnome-backgrounds")
10064 (synopsis "Background images for the GNOME desktop")
10065 (description
10066 "GNOME backgrounds package contains a collection of graphics files which
10067can be used as backgrounds in the GNOME Desktop environment. Additionally,
10068the package creates the proper framework and directory structure so that you
10069can add your own files to the collection.")
10070 (license (list license:gpl2+
10071 license:cc-by2.0
10072 license:cc-by-sa2.0
10073 license:cc-by-sa3.0))))
10074
10075(define-public gnome-screenshot
10076 ;; GNOME Screenshot hasn't had a release in a long time, and the last one
10077 ;; (41) doesn't build with a recent Meson.
10078 (let ((commit "9f067cf428b6bac78ffac31c1a17a20fb2c24843")
10079 (revision "0"))
10080 (package
10081 (name "gnome-screenshot")
10082 (version (git-version "41.0" revision commit))
10083 (source (origin
10084 (method git-fetch)
10085 (uri (git-reference
10086 (url "https://gitlab.gnome.org/GNOME/gnome-screenshot")
10087 (commit commit)))
10088 (file-name (git-file-name name version))
10089 (sha256
10090 (base32
10091 "10a3yd9qmfhxiw984a9fyvgrfq6i3w2yxayac0n7qqjl9ysxwb31"))))
10092 (build-system meson-build-system)
10093 (arguments
10094 `(#:glib-or-gtk? #t
10095 #:phases
10096 (modify-phases %standard-phases
10097 (add-after 'unpack 'skip-gtk-update-icon-cache
10098 ;; Don't create 'icon-theme.cache'.
10099 (lambda _
10100 (substitute* "build-aux/postinstall.py"
10101 (("gtk-update-icon-cache") "true")))))))
10102 (native-inputs
10103 (list appstream-glib
10104 desktop-file-utils ; for update-desktop-database
10105 gettext-minimal
10106 `(,glib "bin") ; for glib-compile-schemas, etc.
10107 pkg-config
10108 python))
10109 (inputs
10110 (list gtk+
10111 libhandy
10112 libx11
10113 libxext))
10114 (home-page "https://gitlab.gnome.org/GNOME/gnome-screenshot")
10115 (synopsis "Take pictures of your screen")
10116 (description
10117 "GNOME Screenshot is a utility used for taking screenshots of the entire
10118screen, a window or a user defined area of the screen, with optional
10119beautifying border effects.")
10120 (license license:gpl2+))))
10121
10122(define-public dconf-editor
10123 (package
10124 (name "dconf-editor")
10125 (version "49.0")
10126 (source (origin
10127 (method url-fetch)
10128 (uri (string-append "mirror://gnome/sources/" name "/"
10129 (version-major version) "/"
10130 name "-" version ".tar.xz"))
10131 (sha256
10132 (base32
10133 "16fkppclv7xzglfafqg8b9nd5cjqlfwlyci800gg7psivzxcra4h"))))
10134 (build-system meson-build-system)
10135 (arguments
10136 (list #:phases #~(modify-phases %standard-phases
10137 (add-after 'unpack 'disable-gtk-update-icon-cache
10138 (lambda _
10139 (setenv "DESTDIR" "/"))))))
10140 (native-inputs
10141 (list `(,glib "bin") ;for glib-compile-schemas, gio-2.0
10142 desktop-file-utils ;for update-desktop-database
10143 `(,gtk+ "bin") ;for gtk-update-icon-cache
10144 intltool
10145 pkg-config
10146 vala))
10147 (inputs
10148 (list dconf
10149 gtk+
10150 libhandy
10151 libxml2))
10152 (home-page "https://gitlab.gnome.org/GNOME/dconf-editor")
10153 (synopsis "Graphical editor for GNOME's dconf configuration system")
10154 (description
10155 "Dconf-editor is a graphical tool for browsing and editing the dconf
10156configuration system for GNOME. It allows users to configure desktop
10157software that do not provide their own configuration interface.")
10158 (license license:lgpl2.1+)))
10159
10160(define-public gnome-default-applications
10161 (package
10162 (name "gnome-default-applications")
10163 (version "0")
10164 (build-system trivial-build-system)
10165 (source #f)
10166 (propagated-inputs
10167 (list nautilus evince))
10168 (arguments
10169 `(#:modules ((guix build utils))
10170 #:builder
10171 (begin
10172 (use-modules (guix build utils))
10173 (let* ((out (assoc-ref %outputs "out"))
10174 (apps (string-append out "/share/applications")))
10175 (mkdir-p apps)
10176 (call-with-output-file (string-append apps "/gnome-mimeapps.list")
10177 (lambda (port)
10178 (format port "[Default Applications]\n")
10179 (format port "inode/directory=org.gnome.Nautilus.desktop\n")
10180 (format port "application/pdf=evince.desktop\n")
10181 (format port "application/postscript=evince.desktop\n")))
10182 #t))))
10183 (synopsis "Default MIME type associations for the GNOME desktop")
10184 (description
10185 "Given many installed packages which might handle a given MIME type, a
10186user running the GNOME desktop probably has some preferences: for example,
10187that folders be opened by default by the Nautilus file manager, not the Baobab
10188disk usage analyzer. This package establishes that set of default MIME type
10189associations for GNOME.")
10190 (license license:gpl3+)
10191 (home-page #f)))
10192
10193(define-public libgovirt
10194 (package
10195 (name "libgovirt")
10196 (version "0.3.11")
10197 (source (origin
10198 (method url-fetch)
10199 (uri (string-append "mirror://gnome/sources/" name "/"
10200 (version-major+minor version) "/"
10201 name "-" version ".tar.xz"))
10202 (sha256
10203 (base32
10204 "0zmg33rm8mrza3ghj48as68s36yyi6v55hd91rka3f0w16siy708"))))
10205 (build-system meson-build-system)
10206 (arguments
10207 (list #:glib-or-gtk? #t
10208 #:phases #~(modify-phases %standard-phases
10209 (add-after 'unpack 'set-home
10210 (lambda _
10211 ;; The tests require a writable HOME.
10212 (setenv "HOME" "/tmp"))))))
10213 (native-inputs
10214 (list gettext-minimal
10215 `(,glib "bin")
10216 glib-networking ; GIO plugin--for the tests
10217 gobject-introspection
10218 gsettings-desktop-schemas
10219 pkg-config))
10220 (propagated-inputs
10221 ;; These dependencies are required by govirt-1.0.pc.
10222 (list glib librest))
10223 (synopsis "GoVirt Library")
10224 (description "GoVirt is a GObject wrapper for the oVirt REST API.")
10225 (home-page "https://gitlab.gnome.org/GNOME/libgovirt")
10226 (license license:gpl2+)))
10227
10228(define-public gnome-tour
10229 (package
10230 (name "gnome-tour")
10231 (version "49.0")
10232 (source
10233 (origin
10234 (method git-fetch)
10235 (uri (git-reference
10236 (url "https://gitlab.gnome.org/GNOME/gnome-tour")
10237 (commit version)))
10238 (file-name (git-file-name name version))
10239 (sha256
10240 (base32 "0fzvgffwargmycxby6j2q0fka74hcb4ff8yvbh8w8a0vpvpnc9b1"))
10241 (modules '((guix build utils)))
10242 (snippet #~(begin
10243 (substitute* "src/widgets/window.rs"
10244 (("let (name|version) = .*;" all what)
10245 (case (string->symbol what)
10246 ((name) "let name = \"GNOME\";")
10247 ((version) "let version = \"\";"))))))))
10248 (build-system meson-build-system)
10249 (arguments
10250 (list
10251 #:glib-or-gtk? #t
10252 #:imported-modules
10253 `(,@%meson-build-system-modules
10254 ,@%cargo-build-system-modules)
10255 #:modules
10256 `(((guix build cargo-build-system) #:prefix cargo:)
10257 (guix build meson-build-system)
10258 (guix build utils))
10259 #:phases
10260 (with-extensions (list (cargo-guile-json))
10261 #~(modify-phases %standard-phases
10262 (add-after 'unpack 'prepare-for-build
10263 (lambda _
10264 (delete-file "Cargo.lock")))
10265 (add-after 'configure 'prepare-cargo-build-system
10266 (lambda args
10267 (for-each (lambda (phase)
10268 (format #t "Running cargo phase: ~a~%" phase)
10269 (apply (assoc-ref cargo:%standard-phases phase)
10270 #:vendor-dir "vendor"
10271 #:cargo-target #$(cargo-triplet)
10272 args))
10273 '(unpack-rust-crates
10274 configure
10275 check-for-pregenerated-files
10276 patch-cargo-checksums))))))))
10277 (native-inputs (cons* pkg-config
10278 rust
10279 `(,rust "cargo")
10280 gettext-minimal
10281 `(,gtk "bin")
10282 `(,glib "bin")
10283 desktop-file-utils
10284 (cargo-inputs 'gnome-tour)))
10285 (inputs (list libadwaita
10286 glib
10287 gtk))
10288 (synopsis "GNOME Tour and Greeter")
10289 (description "A guided tour and greeter for GNOME.")
10290 (home-page "https://apps.gnome.org/Tour/")
10291 (license license:gpl3+)))
10292
10293(define-public gnome-weather
10294 (package
10295 (name "gnome-weather")
10296 (version "50.0")
10297 (source (origin
10298 (method url-fetch)
10299 (uri (string-append "mirror://gnome/sources/" name "/"
10300 (version-major version) "/"
10301 name "-" version ".tar.xz"))
10302 (sha256
10303 (base32
10304 "04xmzmkh39z71k3k6apli2y0axfv71vwwl8582mzk4azc1w7bpjp"))
10305 (patches (search-patches "gnome-weather-set-root-dir.patch"))))
10306 (build-system meson-build-system)
10307 (arguments
10308 (list
10309 #:glib-or-gtk? #t
10310 #:phases
10311 #~(modify-phases %standard-phases
10312 (add-after 'unpack 'fix-service-file
10313 (lambda _
10314 (substitute* "data/org.gnome.Weather.service.in"
10315 (("Exec=[[:graph:]]+")
10316 (string-append "Exec=" #$output
10317 "/bin/gnome-weather")))))
10318 (add-after 'unpack 'disable-gtk-update-icon-cache
10319 (lambda _
10320 (substitute* "meson.build"
10321 (("gtk_update_icon_cache: true")
10322 "gtk_update_icon_cache: false"))))
10323 (add-after 'install 'fix-desktop-file
10324 ;; FIXME: "gapplication launch org.gnome.Weather" fails for some
10325 ;; reason. See https://issues.guix.gnu.org/issue/39324.
10326 (lambda* (#:key outputs #:allow-other-keys)
10327 (substitute* (search-input-file
10328 outputs
10329 "share/applications/org.gnome.Weather.desktop")
10330 (("Exec=.*") "Exec=gnome-weather\n"))))
10331 (add-after 'install 'wrap
10332 (lambda* (#:key outputs #:allow-other-keys)
10333 ;; GNOME Weather needs the typelib files of GTK+, Pango etc at
10334 ;; runtime.
10335 (wrap-program (search-input-file outputs "bin/gnome-weather")
10336 `("GI_TYPELIB_PATH" ":" prefix
10337 (,(getenv "GI_TYPELIB_PATH")))))))))
10338 (native-inputs
10339 (list desktop-file-utils
10340 gettext-minimal
10341 `(,glib "bin")
10342 gobject-introspection
10343 node-typescript
10344 pkg-config))
10345 (inputs
10346 (list appstream-glib
10347 bash-minimal
10348 geoclue
10349 gjs
10350 gsettings-desktop-schemas
10351 gtk
10352 libadwaita
10353 libgweather))
10354 (synopsis "Weather monitoring for GNOME desktop")
10355 (description "GNOME Weather is a small application that allows you to
10356monitor the current weather conditions for your city, or anywhere in the
10357world.")
10358 (home-page "https://wiki.gnome.org/Apps/Weather")
10359 (license license:gpl2+)))
10360
10361(define-syntax gnome-meta-package
10362 (lambda (x)
10363 (syntax-case x ()
10364 ((_ field ...)
10365 (with-syntax ((base (datum->syntax x 'base)))
10366 #'(let ((base
10367 (package
10368 (name #f) ; we're hidden by default, so don't worry
10369 (version (package-version gnome-shell))
10370 (source #f)
10371 (build-system trivial-build-system)
10372 (arguments
10373 (list #:builder
10374 #~(begin (format (current-warning-port)
10375 "Building ~a is useless. \
10376Refer to its propagated inputs instead.\n"
10377 #$(package-name this-package))
10378 (mkdir #$output))))
10379 (home-page "https://www.gnome.org")
10380 (synopsis "Graphical desktop environment")
10381 (description "GNOME is a graphical desktop environment.
10382It includes a wide variety of applications with a common interface for
10383browsing the web, editing text and images, creating documents and diagrams,
10384playing media, scanning, and much more.")
10385 (license license:gpl2+)
10386 (properties `((hidden? . #t))))))
10387 (package (inherit base)
10388 field ...)))))))
10389
10390(define-public gnome-meta-core-services
10391 (gnome-meta-package
10392 (name "gnome-meta-core-services")
10393 (propagated-inputs
10394 (list accountsservice
10395 evolution-data-server ;for the calendar widget
10396 network-manager
10397 upower))))
10398
10399(define-public gnome-meta-core-shell
10400 (gnome-meta-package
10401 (name "gnome-meta-core-shell")
10402 (propagated-inputs (list adwaita-icon-theme
10403 gdm
10404 glib-networking
10405 gnome-backgrounds
10406 gnome-bluetooth
10407 gnome-color-manager
10408 gnome-control-center
10409 gnome-desktop
10410 gnome-initial-setup
10411 gnome-keyring
10412 gnome-menus
10413 gnome-remote-desktop
10414 gnome-session-shepherd
10415 gnome-settings-daemon
10416 gnome-shell
10417 gnome-shell-extensions
10418 gnome-user-docs
10419 gnome-user-share
10420 gsettings-desktop-schemas
10421 gvfs
10422 mutter
10423 orca
10424 rygel
10425 sushi))))
10426
10427;;; See the list of core apps at <https://apps.gnome.org/>
10428(define-public gnome-meta-core-utilities
10429 (gnome-meta-package
10430 (name "gnome-meta-core-utilities")
10431 (propagated-inputs
10432 (list baobab
10433 decibels
10434 epiphany
10435 file-roller
10436 foundry
10437 gnome-calculator
10438 gnome-calendar
10439 gnome-characters
10440 gnome-clocks
10441 gnome-connections
10442 gnome-console
10443 gnome-contacts
10444 gnome-disk-utility
10445 gnome-font-viewer
10446 gnome-maps
10447 gnome-music
10448 gnome-screenshot
10449 gnome-system-monitor
10450 gnome-text-editor
10451 gnome-tour
10452 gnome-weather
10453 loupe
10454 nautilus
10455 papers
10456 simple-scan
10457 showtime
10458 snapshot
10459 yelp))))
10460
10461(define-public gnome-essential-extras
10462 (gnome-meta-package
10463 (name "gnome-essential-extras")
10464 (propagated-inputs (list at-spi2-core
10465 dbus
10466 dconf
10467 desktop-file-utils
10468 font-adwaita
10469 font-dejavu
10470 gnome-default-applications
10471 gnome-online-accounts
10472 gst-plugins-base
10473 gst-plugins-good
10474 localsearch
10475 pulseaudio
10476 shared-mime-info
10477 xdg-desktop-portal
10478 xdg-desktop-portal-gnome
10479 xdg-user-dirs
10480 xdg-user-dirs-gtk))
10481 (description "This package provides a list of packages required for
10482a good GNOME experience, mixed from core dependencies and other implicitly
10483relied-on packages.")))
10484
10485(define-deprecated/public gnome #f
10486 (gnome-meta-package
10487 (name "gnome")
10488 (propagated-inputs
10489 (append-map package-propagated-inputs
10490 (list gnome-meta-core-services
10491 gnome-meta-core-shell
10492 gnome-meta-core-utilities
10493 gnome-essential-extras)))
10494 (properties (list))))
10495
10496(define-public byzanz
10497 ;; The last stable release of Byzanz was in 2011, but there have been many
10498 ;; useful commits made to the Byzanz repository since then that it would be
10499 ;; silly to use such an old release.
10500 (let ((commit "f7af3a5bd252db84af8365bd059c117a7aa5c4af"))
10501 (package
10502 (name "byzanz")
10503 (version (string-append "0.2-1." (string-take commit 7)))
10504 (source (origin
10505 (method git-fetch)
10506 (uri (git-reference
10507 (url "https://git.gnome.org/browse/byzanz")
10508 (commit commit)))
10509 (file-name (string-append name "-" version "-checkout"))
10510 (sha256
10511 (base32
10512 "1l60myzxf9cav27v5v3nsijlslz9r7ip6d5kiirfpkf9k0w26hz3"))))
10513 (build-system glib-or-gtk-build-system)
10514 (arguments
10515 '(#:phases
10516 (modify-phases %standard-phases
10517 (add-before 'bootstrap 'build-without-Werror
10518 (lambda _
10519 ;; The build system cleverly detects that we're not building from
10520 ;; a release tarball and turns on -Werror for GCC.
10521 ;; Unsurprisingly, there is a warning during compilation that
10522 ;; causes the build to fail unnecessarily, so we remove the flag.
10523 (substitute* '("configure.ac")
10524 (("-Werror") ""))
10525 #t)))))
10526 (native-inputs
10527 (list autoconf
10528 automake
10529 gnome-common
10530 intltool
10531 libtool
10532 pkg-config
10533 which))
10534 (inputs
10535 (list glib gstreamer gst-plugins-base gtk+))
10536 (synopsis "Desktop recording program")
10537 (description "Byzanz is a simple desktop recording program with a
10538command-line interface. It can record part or all of an X display for a
10539specified duration and save it as a GIF encoded animated image file.")
10540 (home-page "https://git.gnome.org/browse/byzanz")
10541 (license license:gpl2+))))
10542
10543(define-deprecated/public-alias gnome-authenticator
10544 (@ (gnu packages gnome-circle) gnome-authenticator))
10545
10546(define-public gsound
10547 (package
10548 (name "gsound")
10549 (version "1.0.3")
10550 (source (origin
10551 (method url-fetch)
10552 (uri (string-append "mirror://gnome/sources/gsound/"
10553 (version-major+minor version) "/"
10554 "gsound-" version ".tar.xz"))
10555 (sha256
10556 (base32
10557 "06l80xgykj7x1kqkjvcq06pwj2rmca458zvs053qc55x3sg06bfa"))))
10558 (build-system meson-build-system)
10559 (native-inputs
10560 (list pkg-config gobject-introspection vala))
10561 (propagated-inputs
10562 (list libcanberra)) ; in Requires.private of gsound.pc
10563 (home-page "https://wiki.gnome.org/Projects/GSound")
10564 (synopsis "GObject wrapper for libcanberra")
10565 (description
10566 "GSound is a small library for playing system sounds. It's designed to be
10567used via GObject Introspection, and is a thin wrapper around the libcanberra C
10568library.")
10569 (license license:lgpl2.1+)))
10570
10571(define-public libzapojit
10572 (let ((revision "1")
10573 (commit "99d49bac5edc4afdcac742a0a142908e405597b0"))
10574 (package
10575 (name "libzapojit")
10576 (version (git-version "0.0.3" revision commit))
10577 (source
10578 (origin
10579 (method git-fetch)
10580 (uri (git-reference
10581 (url "https://gitlab.gnome.org/Archive/libzapojit")
10582 (commit commit)))
10583 (file-name (git-file-name name version))
10584 (sha256
10585 (base32 "12frqg925rmic3rf37h5vs48xdy3mfi4ip24v0bl73h5sxy8n828"))))
10586 (build-system gnu-build-system)
10587 (native-inputs
10588 (list autoconf autoconf-archive automake
10589 `(,glib "bin")
10590 gtk-doc/stable gobject-introspection
10591 intltool libtool pkg-config))
10592 (inputs
10593 (list gnome-online-accounts json-glib librest))
10594 (home-page "https://wiki.gnome.org/Projects/Zapojit")
10595 (synopsis "Library for accessing SkyDrive and Hotmail")
10596 (description
10597 "Libzapojit is a GLib-based library for accessing online service APIs of
10598Microsoft SkyDrive and Hotmail, using their REST protocols.")
10599 (license license:lgpl2.1+))))
10600
10601(define-public gnome-clocks
10602 (package
10603 (name "gnome-clocks")
10604 (version "50.0")
10605 (source (origin
10606 (method url-fetch)
10607 (uri (string-append "mirror://gnome/sources/" name "/"
10608 (version-major version) "/"
10609 name "-" version ".tar.xz"))
10610 (sha256
10611 (base32
10612 "1illwzfghcxq3dmf4wchwhb9xwm1kcn6a5j79m1gpwpl8izpy5mz"))))
10613 (build-system meson-build-system)
10614 (arguments
10615 '(#:glib-or-gtk? #t
10616 #:phases
10617 (modify-phases %standard-phases
10618 (add-after 'unpack 'skip-gtk-update-icon-cache
10619 ;; Don't create 'icon-theme.cache'.
10620 (lambda _
10621 (substitute* "meson.build"
10622 (("gtk_update_icon_cache: true")
10623 "gtk_update_icon_cache: false")))))))
10624 (native-inputs
10625 (list desktop-file-utils
10626 gettext-minimal
10627 `(,glib "bin") ; for glib-compile-resources
10628 itstool
10629 pkg-config
10630 vala
10631 vorbis-tools))
10632 (inputs
10633 (list geoclue
10634 geocode-glib
10635 glib
10636 gnome-desktop
10637 gsound
10638 gtk
10639 libadwaita
10640 libgweather))
10641 (home-page "https://wiki.gnome.org/Apps/Clocks")
10642 (synopsis "GNOME's clock application")
10643 (description
10644 "GNOME Clocks is a simple clocks application designed to fit the GNOME
10645desktop. It supports world clock, stop watch, alarms, and count down timer.")
10646 (license license:gpl3+)))
10647
10648(define-public gnome-calendar
10649 (package
10650 (name "gnome-calendar")
10651 (version "49.1")
10652 (source (origin
10653 (method url-fetch)
10654 (uri (string-append "mirror://gnome/sources/" name "/"
10655 (version-major version) "/"
10656 name "-" version ".tar.xz"))
10657 (sha256
10658 (base32
10659 "1hnjhdxa9vfrs6fj0c0l5fiqwgz5mvby0v7m3562qlsd56mia48c"))))
10660 (build-system meson-build-system)
10661 (arguments
10662 `(#:glib-or-gtk? #t
10663 #:phases
10664 (modify-phases %standard-phases
10665 (add-after 'unpack 'skip-gtk-update-icon-cache
10666 ;; Don't create 'icon-theme.cache'.
10667 (lambda _
10668 (substitute* "meson.build"
10669 (("gtk_update_icon_cache: true")
10670 "gtk_update_icon_cache: false"))))
10671 (add-before 'check 'pre-check
10672 (lambda* (#:key inputs native-inputs #:allow-other-keys)
10673 (setenv "TZDIR"
10674 (search-input-directory
10675 (or native-inputs inputs) "share/zoneinfo"))
10676 (setenv "TZ" "UTC"))))))
10677 (native-inputs
10678 (list blueprint-compiler
10679 gettext-minimal
10680 `(,glib "bin") ; For glib-compile-schemas
10681 pkg-config
10682 tzdata-for-tests))
10683 (inputs
10684 (list evolution-data-server
10685 geoclue
10686 geocode-glib
10687 gnome-online-accounts
10688 gsettings-desktop-schemas
10689 libadwaita
10690 libdazzle
10691 libgweather))
10692 (home-page "https://wiki.gnome.org/Apps/Calendar")
10693 (synopsis "GNOME's calendar application")
10694 (description
10695 "GNOME Calendar is a simple calendar application designed to fit the GNOME
10696desktop. It supports multiple calendars, month, week and year view.")
10697 (license license:gpl3+)))
10698
10699(define-public endeavour
10700 (package
10701 (name "endeavour")
10702 (version "43.0")
10703 (source (origin
10704 (method git-fetch)
10705 (uri (git-reference
10706 (url "https://gitlab.gnome.org/World/Endeavour")
10707 (commit version)))
10708 (file-name (git-file-name name version))
10709 (sha256
10710 (base32
10711 "0gbqmwl1xv5526vlh1mxx9h5mpfnnwikrpr5fk8hxmy9x71r6q6n"))))
10712 (build-system meson-build-system)
10713 (arguments
10714 (list
10715 #:glib-or-gtk? #t
10716 #:phases
10717 #~(modify-phases %standard-phases
10718 (add-after 'unpack 'skip-gtk-update-icon-cache
10719 (lambda _
10720 (substitute* "meson.build"
10721 (("gtk_update_icon_cache: true")
10722 "gtk_update_icon_cache: false"))))
10723 (delete 'check)
10724 (add-after 'install 'check
10725 (assoc-ref %standard-phases
10726 'check))
10727 (add-before 'check 'pre-check
10728 (lambda _
10729 (setenv "GSETTINGS_SCHEMA_DIR"
10730 (string-append #$output "/share/glib-2.0/schemas")))))))
10731 (native-inputs
10732 (list gettext-minimal
10733 gobject-introspection
10734 `(,glib "bin") ;for glib-compile-resources
10735 `(,gtk "bin") ;for gtk-update-icon-cache
10736 itstool
10737 pkg-config))
10738 (inputs
10739 (list librest ;for Todoist plugin
10740 gtk
10741 json-glib ;for Todoist plugin
10742 libadwaita
10743 evolution-data-server
10744 libical
10745 libpeas
10746 libportal
10747 python-pygobject-3.50
10748 gnome-online-accounts
10749 gsettings-desktop-schemas))
10750 (propagated-inputs
10751 ;; This is so that the Guix System D-Bus service can find the Evolution
10752 ;; Data Server schemas.
10753 (list evolution-data-server))
10754 (home-page "https://wiki.gnome.org/Apps/Todo")
10755 (synopsis "GNOME's ToDo Application")
10756 (description "GNOME To Do is a simplistic personal task manager designed
10757to perfectly fit the GNOME desktop.")
10758 (license license:gpl3+)))
10759
10760(define-deprecated/public-alias dialect
10761 (@ (gnu packages gnome-circle) dialect))
10762
10763(define-public gnome-dictionary
10764 (package
10765 (name "gnome-dictionary")
10766 (version "40.0")
10767 (source (origin
10768 (method url-fetch)
10769 (uri (string-append "mirror://gnome/sources/" name "/"
10770 (version-major version) "/"
10771 name "-" version ".tar.xz"))
10772 (sha256
10773 (base32
10774 "1d8dhcfys788vv27v34i3s3x3jdvdi2kqn2a5p8c937a9hm0qr9f"))
10775 (patches
10776 (search-patches "gnome-dictionary-meson-i18n.patch"))))
10777 (build-system meson-build-system)
10778 (arguments
10779 `(#:glib-or-gtk? #t
10780 #:phases
10781 (modify-phases %standard-phases
10782 (add-after 'unpack 'skip-gtk-update-icon-cache
10783 ;; Don't create 'icon-theme.cache'.
10784 (lambda _
10785 (substitute* "build-aux/meson/post-install.py"
10786 (("gtk-update-icon-cache") "true")))))))
10787 (native-inputs
10788 (list `(,glib "bin")
10789 gobject-introspection
10790 intltool
10791 itstool
10792 pkg-config
10793 libxml2))
10794 (inputs
10795 (list gsettings-desktop-schemas
10796 gtk+))
10797 (home-page "https://wiki.gnome.org/Apps/Dictionary")
10798 (synopsis "Look up words in dictionary sources")
10799 (description
10800 "GNOME Dictionary can look for the definition or translation of a word in
10801existing databases over the internet.")
10802 (license license:gpl3+)))
10803
10804(define-public gnome-tweaks
10805 (package
10806 (name "gnome-tweaks")
10807 (version "46.1")
10808 (source (origin
10809 (method url-fetch)
10810 (uri (string-append "mirror://gnome/sources/gnome-tweaks/"
10811 (version-major version) "/"
10812 "gnome-tweaks-" version ".tar.xz"))
10813 (patches
10814 (list (search-patch "gnome-tweaks-search-paths.patch")))
10815 (sha256
10816 (base32
10817 "104v62nf0ng1ycsyljci09r95v11vbcicmw2rwz89mpvhmq2l69g"))))
10818 (build-system meson-build-system)
10819 (arguments
10820 (list
10821 #:glib-or-gtk? #t
10822 #:configure-flags #~(list "-Dlocalstatedir=/tmp"
10823 "-Dsysconfdir=/tmp")
10824 #:imported-modules (append %meson-build-system-modules
10825 %pyproject-build-system-modules)
10826 #:modules '((guix build meson-build-system)
10827 ((guix build pyproject-build-system) #:prefix py:)
10828 (guix build utils))
10829 #:phases
10830 #~(modify-phases %standard-phases
10831 (add-after 'unpack 'skip-gtk-update-icon-cache
10832 ;; Don't create 'icon-theme.cache'.
10833 (lambda _
10834 (substitute* "meson.build"
10835 (("gtk_update_icon_cache: true")
10836 "gtk_update_icon_cache: false")
10837 (("update_desktop_database: true")
10838 "update_desktop_database: false"))))
10839 (add-after 'install 'wrap
10840 (assoc-ref py:%standard-phases 'wrap))
10841 (add-after 'wrap 'wrap-gi-typelib-and-python
10842 (lambda* (#:key inputs outputs #:allow-other-keys)
10843 (wrap-program (search-input-file outputs "bin/gnome-tweaks")
10844 `("GI_TYPELIB_PATH" ":" prefix
10845 (,(getenv "GI_TYPELIB_PATH")))
10846 `("GUIX_PYTHONPATH" ":" prefix
10847 (,(py:site-packages inputs outputs)))))))))
10848 (native-inputs
10849 (list `(,glib "bin") ; for glib-compile-resources, etc.
10850 gettext-minimal
10851 pkg-config))
10852 (inputs
10853 (list bash-minimal ; to execute the wrapper program
10854 gnome-desktop
10855 gtk
10856 gobject-introspection
10857 gsettings-desktop-schemas
10858 libadwaita
10859 libgudev
10860 libnotify
10861 libsoup
10862 nautilus
10863 python
10864 python-pygobject))
10865 (synopsis "Customize advanced GNOME options")
10866 (home-page "https://wiki.gnome.org/Apps/Tweaks")
10867 (description
10868 "GNOME Tweaks allows adjusting advanced configuration settings in
10869GNOME. This includes things like the fonts used in user interface elements,
10870alternative user interface themes, changes in window management behavior,
10871GNOME Shell appearance and extension, etc.")
10872 (license license:gpl3+)))
10873
10874(define-public gnome-shell-extensions
10875 (package
10876 (name "gnome-shell-extensions")
10877 (version "49.0")
10878 (source (origin
10879 (method url-fetch)
10880 (uri (string-append "mirror://gnome/sources/" name "/"
10881 (version-major version) "/"
10882 name "-" version ".tar.xz"))
10883 (sha256
10884 (base32
10885 "0qkakhm2j2fms6s6w906iyrvkmfv3cx3yj70b6bkid3cg1jf0w0m"))))
10886 (build-system meson-build-system)
10887 (arguments
10888 (list
10889 #:configure-flags #~'("-Dextension_set=all")
10890 #:phases
10891 #~(modify-phases %standard-phases
10892 (add-after 'unpack 'wrap-extensions
10893 (lambda _
10894 (use-modules (ice-9 textual-ports)
10895 (guix build utils))
10896 (for-each
10897 (lambda (file-to-wrap)
10898 (with-atomic-file-replacement file-to-wrap
10899 (lambda (source wrapped)
10900 (format wrapped "'~a'.split(':').forEach("
10901 (getenv "GI_TYPELIB_PATH"))
10902 (display
10903 (string-append
10904 "path => imports.gi.GIRepository.Repository"
10905 ".dup_default().prepend_search_path(path));\n")
10906 wrapped)
10907 (dump-port source wrapped))))
10908 (find-files "extensions" "(extension|prefs)\\.js")))))))
10909 (native-inputs
10910 (list `(,glib "bin")
10911 gettext-minimal
10912 gobject-introspection ; to set GI_TYPELIB_PATH
10913 pkg-config))
10914 (inputs
10915 (list glib
10916 gnome-menus)) ; for Applications Menu
10917 (synopsis "Extensions for GNOME Shell")
10918 (description "GNOME Shell extensions modify and extend GNOME Shell
10919functionality and behavior.")
10920 (home-page "https://extensions.gnome.org/")
10921 (license license:gpl3+)))
10922
10923(define-public folks
10924 (package
10925 (name "folks")
10926 (version "0.15.12")
10927 (source (origin
10928 (method url-fetch)
10929 (uri (string-append
10930 "mirror://gnome/sources/folks/"
10931 (version-major+minor version) "/"
10932 "folks-" version ".tar.xz"))
10933 (sha256
10934 (base32
10935 "05594055h3y0n1yig664g1fg7nn71b8rdf8vwkwff7mvv8mlxx11"))))
10936 (build-system meson-build-system)
10937 (arguments
10938 '(;; Tests are broken since GLib 2.80
10939 ;; See <https://gitlab.gnome.org/GNOME/folks/-/issues/140>.
10940 #:tests? #f
10941 #:phases
10942 (modify-phases %standard-phases
10943 (add-after 'unpack 'skip-gtk-update-icon-cache
10944 ;; Don't create 'icon-theme.cache'.
10945 (lambda _
10946 (substitute* "meson.build"
10947 (("gtk_update_icon_cache: true")
10948 "gtk_update_icon_cache: false"))))
10949 (add-before 'configure 'relax-gcc-14-strictness
10950 (lambda _
10951 (setenv "CFLAGS"
10952 (string-append "-g -O2"
10953 " -Wno-error=implicit-function-declaration"
10954 " -Wno-error=incompatible-pointer-types")))))))
10955 (inputs
10956 (list bdb
10957 dbus-glib
10958 evolution-data-server
10959 glib
10960 libgee
10961 readline
10962 telepathy-glib))
10963 (native-inputs
10964 (list gettext-minimal
10965 `(,glib "bin")
10966 gobject-introspection
10967 python-dbusmock
10968 pkg-config
10969 python
10970 vala))
10971 (synopsis "Library to aggregate data about people")
10972 (description "Libfolks is a library that aggregates information about people
10973from multiple sources (e.g., Telepathy connection managers for IM contacts,
10974Evolution Data Server for local contacts, libsocialweb for web service contacts,
10975etc.) to create metacontacts. It's written in Vala, which generates C code when
10976compiled.")
10977 (home-page "https://wiki.gnome.org/Projects/Folks")
10978 (license license:lgpl2.1+)))
10979
10980(define-public libgnomekbd
10981 (package
10982 (name "libgnomekbd")
10983 (version "3.28.1")
10984 (source (origin
10985 (method url-fetch)
10986 (uri (string-append "mirror://gnome/sources/libgnomekbd/"
10987 (version-major+minor version) "/"
10988 "libgnomekbd-" version ".tar.xz"))
10989 (sha256
10990 (base32
10991 "0w78ix6f52xv0hw1h6fzqh47pk1fwr077agma19hdh3kdmb5kp12"))))
10992 (build-system gnu-build-system)
10993 (native-inputs
10994 (list autoconf
10995 automake
10996 `(,glib "bin")
10997 libtool
10998 pkg-config
10999 gettext-minimal
11000 gobject-introspection))
11001 (propagated-inputs
11002 ;; Referred to in .h files and .pc.
11003 (list glib
11004 gtk+
11005 libxklavier))
11006 (home-page "https://www.gnome.org")
11007 (synopsis "GNOME keyboard configuration library")
11008 (description
11009 "Libgnomekbd is a keyboard configuration library for the GNOME desktop
11010environment, which can notably display keyboard layouts.")
11011 (license license:lgpl2.0+)))
11012
11013;;; This package is no longer maintained:
11014;;; https://wiki.gnome.org/Attic/LibUnique
11015;;; "Unique is now in maintenance mode, and its usage is strongly discouraged.
11016;;; Applications should use the GtkApplication class provided by GTK+ 3.0."
11017(define-public libunique
11018 (package
11019 (name "libunique")
11020 (version "3.0.2")
11021 (source (origin
11022 (method url-fetch)
11023 (uri (string-append "mirror://gnome/sources/" name "/"
11024 (version-major+minor version) "/"
11025 name "-" version ".tar.xz"))
11026 (sha256
11027 (base32
11028 "0f70lkw66v9cj72q0iw1s2546r6bwwcd8idcm3621fg2fgh2rw58"))))
11029 (build-system glib-or-gtk-build-system)
11030 (arguments
11031 `(#:configure-flags '("--disable-static"
11032 "--disable-dbus" ; use gdbus
11033 "--enable-introspection")))
11034 (native-inputs
11035 `(("pkg-config" ,pkg-config)
11036 ("gobject-introspection" ,gobject-introspection)
11037 ("glib:bin" ,glib "bin")
11038 ("gtk-doc" ,gtk-doc/stable)))
11039 (propagated-inputs
11040 ;; Referred to in .h files and .pc.
11041 (list gtk+))
11042 (home-page "https://wiki.gnome.org/Attic/LibUnique")
11043 (synopsis "Library for writing single instance applications")
11044 (description
11045 "Libunique is a library for writing single instance applications. If you
11046launch a single instance application twice, the second instance will either just
11047quit or will send a message to the running instance. Libunique makes it easy to
11048write this kind of application, by providing a base class, taking care of all
11049the IPC machinery needed to send messages to a running instance, and also
11050handling the startup notification side.")
11051 (license license:lgpl2.1+)))
11052
11053(define-public gnome-calculator
11054 (package
11055 (name "gnome-calculator")
11056 (version "50.0")
11057 (source
11058 (origin
11059 (method url-fetch)
11060 (uri (string-append "mirror://gnome/sources/" name "/"
11061 (version-major version) "/"
11062 name "-" version ".tar.xz"))
11063 (sha256
11064 (base32
11065 "140a6m1hffa66nn8p2vqxc2h0cdzqm8xphb59f3q5s352n4xclw0"))))
11066 (build-system meson-build-system)
11067 (arguments
11068 (list
11069 #:glib-or-gtk? #t
11070 #:phases
11071 #~(modify-phases %standard-phases
11072 (add-after 'unpack 'skip-gtk-update-icon-cache
11073 (lambda _
11074 (substitute* "meson.build"
11075 (("gtk_update_icon_cache: true")
11076 "gtk_update_icon_cache: false"))))
11077 (add-after 'unpack 'set-absolute-paths
11078 (lambda _
11079 (define calculator
11080 (string-append #$output "/bin/gnome-calculator"))
11081 (substitute* "search-provider/search-provider.vala"
11082 (("argv0 = .*;")
11083 "argv0 = \"/proc/self/exe\";")
11084 (("gnome-calculator --equation")
11085 (string-append calculator " --equation")))))
11086 (add-before 'check 'pre-check
11087 (lambda _
11088 ;; Tests require a writable HOME.
11089 (setenv "HOME" (getcwd)))))))
11090 (native-inputs
11091 (list blueprint-compiler
11092 gettext-minimal
11093 `(,glib "bin") ;for glib-compile-schemas, gio-2.0.
11094 itstool
11095 pkg-config
11096 python
11097 vala))
11098 (inputs
11099 (list gsettings-desktop-schemas
11100 gtksourceview
11101 libadwaita
11102 libgee
11103 libsoup
11104 libxml2
11105 mpc
11106 mpfr))
11107 (propagated-inputs
11108 ;; Marked as requires.private in either .pc
11109 (list libgee glib gtk))
11110 (home-page "https://wiki.gnome.org/Apps/Calculator")
11111 (synopsis "Desktop calculator")
11112 (description
11113 "Calculator is an application that solves mathematical equations and
11114is suitable as a default application in a Desktop environment.")
11115 (license license:gpl3)))
11116
11117(define-public xpad
11118 (package
11119 (name "xpad")
11120 (version "5.8.0")
11121 (source
11122 (origin
11123 (method url-fetch)
11124 (uri (string-append "https://launchpad.net/xpad/trunk/"
11125 version "/+download/"
11126 name "-" version ".tar.bz2"))
11127 (sha256
11128 (base32
11129 "1sc2dz4yxx6glnqpnhiby85g2blnsfn8d3fvbaqhdi2hi0q54q7j"))))
11130 (build-system gnu-build-system)
11131 (native-inputs
11132 (list autoconf automake
11133 `(,gtk+ "bin") intltool pkg-config))
11134 (inputs
11135 (list gtk+ gtksourceview-4 libsm))
11136 (arguments
11137 (list #:phases
11138 #~(modify-phases %standard-phases
11139 (add-after 'unpack 'patch-configure
11140 (lambda _
11141 ;; xpad fails to build due to gettext version mismatch, so
11142 ;; we force it to use gettext 0.23.
11143 (substitute* "configure.ac"
11144 (("AM_GNU_GETTEXT_VERSION.*")
11145 (string-append
11146 "AM_GNU_GETTEXT_VERSION([0.23])\n"
11147 "AM_GNU_GETTEXT_REQUIRE_VERSION([0.23])\n"))))))))
11148 (home-page "https://wiki.gnome.org/Apps/Xpad")
11149 (synopsis "Virtual sticky note")
11150 (description
11151 "Xpad is a sticky note that strives to be simple, fault tolerant,
11152and customizable. Xpad consists of independent pad windows, each is
11153basically a text box in which notes can be written.")
11154 (license license:gpl3+)))
11155
11156(define-public gucharmap
11157 (let ((unicode-files
11158 '(("Blocks.txt"
11159 "05fbpc7miqpv7yic5xkm74ybzxkaf5r58ww21a1iwxqr3apyzvf0")
11160 ("DerivedAge.txt"
11161 "160r7wwidj3c2jl4cw3am0c5d0l7qndis9xx38h0y8fwidvdzv7q")
11162 ("NamesList.txt"
11163 "1x1smmn2kmy8clf6ny2njln75i888lidckc6ssyp2gdhgasdrkhd")
11164 ("Scripts.txt"
11165 "1grmn3bd4m0rcmz544h94kimlj3gf1f343s8177ddrxfmg9m0plz")
11166 ("UnicodeData.txt"
11167 "0327jqfw2hyq8x986cfhwrp717r2jl7ydjjwvzp7biarrcfzq7if")
11168 ("Unihan.zip"
11169 "0pjbyf77lbaxdhwidvpgp81cw13lfhlaw1ynn9vsmkssahmqp97p"))))
11170 (package
11171 (name "gucharmap")
11172 (version "17.0.2")
11173 (source
11174 (origin
11175 (method url-fetch)
11176 (uri (string-append "mirror://gnome/sources/" name "/"
11177 (version-major+minor version) "/"
11178 name "-" version ".tar.xz"))
11179 (sha256
11180 (base32
11181 "1ah0vyxkx3w63ry1pn3592jsxpbrwmcg8z4jvps8ls5bmwn9f8s7"))))
11182 (build-system meson-build-system)
11183 (arguments
11184 `(#:modules ((ice-9 match)
11185 (guix build meson-build-system)
11186 (guix build utils))
11187 #:glib-or-gtk? #t
11188 #:configure-flags
11189 (list
11190 "-Ducd_path=../unicode-data"
11191 "-Dvapi=false"
11192 ;; gtk-doc fails because it didn't generate a devhelp2 file
11193 "-Ddocs=false")
11194 #:phases
11195 (modify-phases %standard-phases
11196 (add-after 'unpack 'prepare-unicode-data
11197 (lambda* (#:key inputs #:allow-other-keys)
11198 (mkdir-p "../unicode-data")
11199 (with-directory-excursion "../unicode-data"
11200 (for-each (match-lambda
11201 ((file _)
11202 (install-file (assoc-ref inputs file) ".")))
11203 ',unicode-files)))))))
11204 (native-inputs
11205 (cons* desktop-file-utils
11206 (list glib "bin")
11207 gobject-introspection
11208 intltool
11209 itstool
11210 pkg-config
11211 python
11212 unzip
11213 (map (match-lambda
11214 ((file hash)
11215 (origin
11216 (method url-fetch)
11217 (uri (string-append
11218 "https://www.unicode.org/Public/17.0.0/ucd/"
11219 file))
11220 (sha256 (base32 hash)))))
11221 unicode-files)))
11222 (inputs
11223 (list gtk+
11224 libxml2))
11225 (home-page "https://gitlab.gnome.org/GNOME/gucharmap")
11226 (synopsis "Unicode character picker and font browser")
11227 (description
11228 "This program allows you to browse through all the available Unicode
11229characters and categories for the installed fonts, and to examine their
11230detailed properties. It is an easy way to find the character you might
11231only know by its Unicode name or code point.")
11232 (license license:gpl3+))))
11233
11234(define-public gcolor3
11235 (package
11236 (name "gcolor3")
11237 (version "2.4.0")
11238 (source
11239 (origin
11240 (method git-fetch)
11241 (uri (git-reference
11242 (url "https://gitlab.gnome.org/World/gcolor3")
11243 (commit (string-append "v" version))))
11244 (file-name (git-file-name name version))
11245 (sha256
11246 (base32 "1igqmach1vhcrvbpw346pmkbb5kabbb806ssswrvkp569n700wmc"))
11247 ;; XXX: Remove when upgrading
11248 (patches (search-patches "gcolor3-update-libportal-usage.patch"))))
11249 (build-system meson-build-system)
11250 (arguments
11251 `(#:glib-or-gtk? #t))
11252 (native-inputs
11253 (list desktop-file-utils gettext-minimal
11254 `(,glib "bin")
11255 `(,gtk+ "bin") pkg-config))
11256 (inputs
11257 (list gsettings-desktop-schemas gtk+ libportal))
11258 (home-page "https://www.hjdskes.nl/projects/gcolor3/")
11259 (synopsis "Simple color chooser written in GTK3")
11260 (description "Color Picker is a simple color chooser written in GTK3. It
11261supports both X and Wayland display servers.")
11262 (license license:gpl2+)))
11263
11264(define-public bluefish
11265 (package
11266 (name "bluefish")
11267 (version "2.2.17")
11268 (source
11269 (origin
11270 (method url-fetch)
11271 (uri (string-append "https://www.bennewitz.com/bluefish/stable/source/"
11272 "bluefish-" version ".tar.gz"))
11273 (sha256
11274 (base32 "17ampw9p1fp7s7i43cz9r68v6mm7xmb1sndx1mqmkns35kn8yl8a"))))
11275 (build-system gnu-build-system)
11276 (arguments
11277 (list
11278 #:configure-flags
11279 #~(list "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration")))
11280 (native-inputs
11281 (list desktop-file-utils intltool pkg-config))
11282 (inputs
11283 (list enchant gtk+ python-wrapper libxml2 gucharmap))
11284 (home-page "https://bluefish.openoffice.nl")
11285 (synopsis "Web development studio")
11286 (description
11287 "Bluefish is an editor aimed at programmers and web developers,
11288with many options to write web sites, scripts and other code.
11289Bluefish supports many programming and markup languages.")
11290 (license license:gpl3+)))
11291
11292(define-public gnome-system-monitor
11293 (package
11294 (name "gnome-system-monitor")
11295 (version "50.0")
11296 (source
11297 (origin
11298 (method url-fetch)
11299 (uri (string-append "mirror://gnome/sources/" name "/"
11300 (version-major version) "/"
11301 name "-" version ".tar.xz"))
11302 (sha256
11303 (base32
11304 "0qj89kc05gmnccc7dpjp4jy14yz2hpbd3ylivr34qn5lajkql4x4"))))
11305 (build-system meson-build-system)
11306 (arguments
11307 '(#:glib-or-gtk? #t
11308 #:configure-flags '("-Dsystemd=false")))
11309 (native-inputs
11310 (list catch2
11311 cmake
11312 `(,glib "bin") ;for glib-mkenums.
11313 `(,gtk+ "bin") ;gtk-update-icon-cache
11314 intltool
11315 itstool
11316 libgtop
11317 polkit
11318 pkg-config))
11319 (inputs
11320 (list gdk-pixbuf ;for loading SVG files.
11321 gtk
11322 gtkmm
11323 libadwaita
11324 (librsvg-for-system)
11325 libxml2
11326 libwnck))
11327 (home-page "https://wiki.gnome.org/Apps/SystemMonitor")
11328 (synopsis "Process viewer and system resource monitor for GNOME")
11329 (description
11330 "GNOME System Monitor is a GNOME process viewer and system monitor with
11331an attractive, easy-to-use interface. It has features, such as a tree view
11332for process dependencies, icons for processes, the ability to hide processes,
11333graphical time histories of CPU/memory/swap usage and the ability to
11334kill/reinice processes.")
11335 (license license:gpl2+)))
11336
11337(define-public python-pyatspi
11338 (package
11339 (name "python-pyatspi")
11340 (version "2.58.1")
11341 (source (origin
11342 (method url-fetch)
11343 (uri (string-append
11344 "mirror://gnome/sources/pyatspi/"
11345 (version-major+minor version)
11346 "/pyatspi-" version ".tar.xz"))
11347 (sha256
11348 (base32
11349 "0dj5n3k02jsg3w96afwrbhj45swdhlqpap02651mh9pr6nchf7rz"))))
11350 (build-system meson-build-system)
11351 (native-inputs (list pkg-config))
11352 (inputs (list python))
11353 (propagated-inputs (list python-pygobject))
11354 (synopsis "Python client bindings for D-Bus AT-SPI")
11355 (home-page "https://wiki.linuxfoundation.org/accessibility\
11356/atk/at-spi/at-spi_on_d-bus")
11357 (description
11358 "This package includes a python client library for the AT-SPI D-Bus
11359accessibility infrastructure.")
11360 (license license:lgpl2.0)
11361 (properties '((upstream-name . "pyatspi")))))
11362
11363(define-public accerciser
11364 (package
11365 (name "accerciser")
11366 (version "3.48.0")
11367 (source (origin
11368 (method git-fetch)
11369 (uri (git-reference
11370 (url "https://gitlab.gnome.org/GNOME/accerciser.git")
11371 (commit version)))
11372 (file-name (git-file-name name version))
11373 (sha256
11374 (base32
11375 "1ddh466im0hxqx0ncxglrif72jfwcdl1ayarw874mp1464wkbc4m"))))
11376 (build-system meson-build-system)
11377 (arguments
11378 (list
11379 #:glib-or-gtk? #t
11380 #:imported-modules (append %meson-build-system-modules
11381 %pyproject-build-system-modules)
11382 #:modules
11383 `((guix build meson-build-system)
11384 ((guix build pyproject-build-system) #:prefix py:)
11385 (guix build utils))
11386 #:phases
11387 #~(modify-phases %standard-phases
11388 (add-after 'unpack 'skip-gnome-post-install
11389 (lambda _
11390 (substitute* "meson.build"
11391 (("gtk_update_icon_cache: true")
11392 "gtk_update_icon_cache: false")
11393 (("update_desktop_database: true")
11394 "update_desktop_database: false"))))
11395 (add-after 'install 'wrap-python
11396 (assoc-ref py:%standard-phases 'wrap))
11397 (add-after 'wrap-python 'wrap-program
11398 (lambda _
11399 (let ((typelib-path (getenv "GI_TYPELIB_PATH")))
11400 (wrap-program (string-append #$output "/bin/accerciser")
11401 `("GI_TYPELIB_PATH" ":" prefix (,typelib-path)))))))))
11402 (native-inputs
11403 (list (list glib "bin")
11404 gettext-minimal
11405 gobject-introspection
11406 pkg-config
11407 yelp-tools))
11408 (inputs
11409 (list appstream
11410 appstream-glib
11411 at-spi2-core
11412 bash-minimal
11413 gdk-pixbuf
11414 glib
11415 gtk+
11416 python
11417 python-dbus
11418 python-pyatspi
11419 python-pycairo
11420 python-pygobject
11421 python-pyxdg))
11422 (synopsis "Accessibility explorer")
11423 (description "This package provides an interactive accessibility explorer
11424for the GNOME desktop.")
11425 (home-page "https://gitlab.gnome.org/GNOME/accerciser")
11426 (license license:bsd-3)))
11427
11428(define-public orca
11429 (package
11430 (name "orca")
11431 (version "48.9")
11432 (source (origin
11433 (method url-fetch)
11434 (uri (string-append
11435 "mirror://gnome/sources/" name "/"
11436 (version-major version) "/"
11437 name "-" version ".tar.xz"))
11438 (sha256
11439 (base32
11440 "0sfs06f66dsibvnp87jshhs7n3f8shkn9x7j3ygpk8409za2n2xy"))
11441 (patches (search-patches "orca-fix-gst-init-check-call.patch"))))
11442 (build-system meson-build-system)
11443 (arguments
11444 '(#:glib-or-gtk? #t
11445 #:phases
11446 (modify-phases %standard-phases
11447 (add-after 'unpack 'skip-gtk-update-icon-cache
11448 (lambda _
11449 (substitute* "meson.build"
11450 (("gtk_update_icon_cache: true")
11451 "gtk_update_icon_cache: false"))))
11452 (add-before 'configure 'qualify-programs
11453 (lambda* (#:key inputs #:allow-other-keys)
11454 (let ((xkbcomp (string-append
11455 (assoc-ref inputs "xkbcomp") "/bin/xkbcomp"))
11456 (pgrep (string-append
11457 (assoc-ref inputs "procps") "/bin/pgrep")))
11458 (substitute* "src/orca/orca_modifier_manager.py"
11459 (("\"xkbcomp\"") (format #f "'~a'" xkbcomp)))
11460 (substitute* "src/orca/orca_bin.py.in"
11461 (("'pgrep -u %s -x orca'")
11462 (format #f "'~a -u %s -x orca'" pgrep))))))
11463 (add-after 'install 'wrap-orca
11464 (lambda* (#:key outputs #:allow-other-keys)
11465 (wrap-program (search-input-file outputs "bin/orca")
11466 `("GI_TYPELIB_PATH" ":" prefix
11467 (,(getenv "GI_TYPELIB_PATH")))
11468 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
11469 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
11470 `("GUIX_PYTHONPATH" ":" prefix
11471 (,(getenv "GUIX_PYTHONPATH")))))))))
11472 (native-inputs
11473 (list gettext-minimal
11474 itstool
11475 pkg-config
11476 libxml2))
11477 (inputs
11478 (list at-spi2-core
11479 brltty
11480 bash-minimal
11481 gsettings-desktop-schemas
11482 gstreamer
11483 gst-plugins-base
11484 gst-plugins-good
11485 gtk+
11486 liblouis
11487 `(,liblouis "python")
11488 procps ; for pgrep
11489 python
11490 python-dbus
11491 python-pygobject-3.50
11492 python-pyatspi
11493 speech-dispatcher
11494 xkbcomp))
11495 (synopsis
11496 "Screen reader for individuals who are blind or visually impaired")
11497 (home-page "https://wiki.gnome.org/Projects/Orca")
11498 (description
11499 "Orca is a screen reader that provides access to the graphical desktop
11500via speech and refreshable braille. Orca works with applications and toolkits
11501that support the Assistive Technology Service Provider Interface (AT-SPI).")
11502 (license license:lgpl2.1+)))
11503
11504(define-public gspell
11505 (package
11506 (name "gspell")
11507 (version "1.14.2")
11508 (source (origin
11509 (method url-fetch)
11510 (uri (string-append "mirror://gnome/sources/" name "/"
11511 (version-major+minor version) "/"
11512 name "-" version ".tar.xz"))
11513 (sha256
11514 (base32
11515 "0xql3rz6r1qy5hrzx8qvp0c3hwxy0q0c1fynmhdjh4whrjnfbisf"))))
11516 (build-system meson-build-system)
11517 (arguments
11518 (list
11519 #:glib-or-gtk? #t
11520 #:configure-flags #~(list "-Dinstall_tests=false"
11521 ;; Avoid circular dependency.
11522 "-Dgtk_doc=false")
11523 #:phases
11524 #~(modify-phases %standard-phases
11525 (add-after 'unpack 'disable-problematic-tests
11526 (lambda _
11527 (substitute* "tests/unit-tests/test-checker.c"
11528 ;; This test is known to fail with Aspell, as a comment
11529 ;; mentions it. Disable it.
11530 ((".*g_test_add_func.*test_dashes.*") ""))))
11531 (add-before 'check 'pre-check
11532 (lambda* (#:key inputs #:allow-other-keys)
11533 ;; Tests require a running X server.
11534 (system "Xvfb :1 &")
11535 (setenv "DISPLAY" ":1")
11536
11537 ;; For the missing /etc/machine-id.
11538 (setenv "DBUS_FATAL_WARNINGS" "0")
11539
11540 ;; Allow Enchant and its Aspell backend to find the en_US
11541 ;; dictionary.
11542 (setenv "ASPELL_DICT_DIR"
11543 (search-input-directory inputs "/lib/aspell")))))))
11544 (inputs
11545 (list iso-codes/pinned))
11546 (native-inputs
11547 (list `(,glib "bin")
11548 gobject-introspection
11549 pkg-config
11550 vala ;for VAPI, needed by Geary
11551 libxml2
11552
11553 ;; For tests.
11554 aspell-dict-en
11555 xorg-server-for-tests))
11556 (propagated-inputs
11557 ;; Referred by .pc file.
11558 (list enchant
11559 glib
11560 gtk+))
11561 (home-page "https://wiki.gnome.org/Projects/gspell")
11562 (synopsis "GNOME's alternative spell checker")
11563 (description
11564 "gspell provides a flexible API to add spell-checking to a GTK+
11565application. It provides a GObject API, spell-checking to text entries and
11566text views, and buttons to choose the language.")
11567 (license license:gpl2+)))
11568
11569(define-public gnome-planner
11570 (package
11571 (name "gnome-planner")
11572 (version "0.14.92")
11573 (source (origin
11574 (method url-fetch)
11575 (uri (string-append "mirror://gnome/sources/planner/"
11576 (version-major+minor version) "/planner-"
11577 version ".tar.xz"))
11578 (sha256
11579 (base32
11580 "0cyqs1ly6cp96pjw0yjk1r0dshp0c3869wgknxpp97dnbppsg8px"))))
11581 (build-system meson-build-system)
11582 (arguments
11583 (list
11584 #:glib-or-gtk? #t
11585 #:configure-flags
11586 ;; Otherwise, the RUNPATH will lack the final 'planner' path component
11587 ;; (see: <https://gitlab.gnome.org/World/planner/-/issues/274>).
11588 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
11589 #$output "/lib/planner"))
11590 #:phases
11591 #~(modify-phases %standard-phases
11592 (add-after 'unpack 'skip-gtk-update-icon-cache
11593 (lambda _
11594 (substitute* "meson_post_install.sh"
11595 (("gtk-update-icon-cache") (which "true"))))))))
11596 (inputs
11597 (list gconf
11598 glib
11599 gtk+
11600 libxml2
11601 libxslt))
11602 (native-inputs
11603 (list `(,glib "bin") ;for glib-genmarshal, etc.
11604 desktop-file-utils ;for update-desktop-database
11605 gettext-minimal
11606 pkg-config))
11607 (home-page "https://gitlab.gnome.org/World/planner")
11608 (synopsis "Project management software for the GNOME desktop")
11609 (description
11610 "GNOME Planner is a project management tool based on the Work Breakdown
11611Structure (WBS). Its goal is to enable you to easily plan projects. Based on
11612the resources, tasks, and constraints that you define, Planner generates
11613various views into a project. For example, Planner can show a Gantt chart of
11614the project. It can show a detailed summary of tasks including their
11615duration, cost, and current progress. It can also show a report of resource
11616utilization that highlights under-utilized and over-utilized resources. These
11617views can be printed as PDF or PostScript files, or exported to HTML.")
11618 (license license:gpl2+)))
11619
11620(define-public lollypop
11621 (package
11622 (name "lollypop")
11623 (version "1.4.45")
11624 (source
11625 (origin
11626 (method url-fetch)
11627 (uri (string-append "https://adishatz.org/lollypop/"
11628 "lollypop-" version ".tar.xz"))
11629 (sha256
11630 (base32 "0wsqbpnqkq0rinq4yz14g876g61xxilk4fbl1pgrwlf76jfxlpyb"))))
11631 (build-system meson-build-system)
11632 (arguments
11633 (list #:imported-modules (append %meson-build-system-modules
11634 %pyproject-build-system-modules)
11635 #:modules '((guix build meson-build-system)
11636 ((guix build pyproject-build-system) #:prefix py:)
11637 (guix build utils))
11638 #:glib-or-gtk? #t
11639 #:phases
11640 #~(modify-phases %standard-phases
11641 (add-after 'unpack 'disable-gtk-update-icon-cache
11642 (lambda _
11643 (setenv "DESTDIR" "/")))
11644 (add-after 'install 'wrap-program
11645 (lambda* (#:key outputs #:allow-other-keys)
11646 (wrap-program (search-input-file outputs "bin/lollypop")
11647 (list "GI_TYPELIB_PATH" ":" 'prefix
11648 (list (getenv "GI_TYPELIB_PATH"))))))
11649 (add-after 'install 'wrap-python
11650 (assoc-ref py:%standard-phases 'wrap)))))
11651 (native-inputs
11652 (list gettext-minimal
11653 `(,glib "bin") ; For glib-compile-resources
11654 pkg-config))
11655 (inputs
11656 (list bash-minimal
11657 glib-networking
11658 gobject-introspection
11659 gsettings-desktop-schemas
11660 gst-plugins-base
11661 gtk+
11662 libnotify
11663 libsecret
11664 libhandy
11665 libsoup
11666 python
11667 python-beautifulsoup4
11668 python-gst
11669 python-pillow
11670 python-pycairo
11671 python-pygobject
11672 python-pylast
11673 totem-pl-parser))
11674 (propagated-inputs
11675 (list gst-plugins-good ;required to start lollypop
11676 gst-plugins-ugly)) ;required for streaming
11677 (home-page "https://wiki.gnome.org/Apps/Lollypop")
11678 (synopsis "GNOME music playing application")
11679 (description
11680 "Lollypop is a music player designed to play well with GNOME desktop.
11681Lollypop plays audio formats such as mp3, mp4, ogg and flac and gets information
11682from artists and tracks from the web. It also fetches cover artworks
11683automatically and it can stream songs from online music services and charts.")
11684 (license license:gpl3+)))
11685
11686(define-public gnome-video-effects
11687 (package
11688 (name "gnome-video-effects")
11689 (version "0.6.0")
11690 (source (origin
11691 (method url-fetch)
11692 (uri (string-append "mirror://gnome/sources/" name "/"
11693 (version-major+minor version) "/" name "-"
11694 version ".tar.xz"))
11695 (sha256
11696 (base32
11697 "1a68wf9f3z3ss6nwjam55hh60qccpx10png0n8pq6nizdfsaxbnp"))))
11698 (build-system meson-build-system)
11699 (native-inputs
11700 (list gettext-minimal pkg-config))
11701 (home-page "https://wiki.gnome.org/Projects/GnomeVideoEffects")
11702 (synopsis "Video effects for Cheese and other GNOME applications")
11703 (description
11704 "A collection of GStreamer video filters and effects to be used in
11705photo-booth-like software, such as Cheese.")
11706 (license license:gpl2+)))
11707
11708(define-public snapshot
11709 (package
11710 (name "snapshot")
11711 (version "50.0")
11712 (source
11713 (origin
11714 (method git-fetch)
11715 (uri (git-reference
11716 (url "https://gitlab.gnome.org/GNOME/snapshot")
11717 (commit version)))
11718 (sha256
11719 (base32 "0v1239p015qd35s25s62544srh4wn7f2819mkavnng7anxfbjxgk"))))
11720 (arguments
11721 (list
11722 #:glib-or-gtk? #t
11723 #:imported-modules `(,@%meson-build-system-modules
11724 ,@%cargo-build-system-modules)
11725 #:modules `(((guix build cargo-build-system)
11726 #:prefix cargo:)
11727 (guix build meson-build-system)
11728 (guix build utils))
11729 #:phases
11730 #~(modify-phases %standard-phases
11731 (add-after 'unpack 'prepare-for-build
11732 (lambda _
11733 (substitute* "meson.build"
11734 (("gtk_update_icon_cache: true")
11735 "gtk_update_icon_cache: false")
11736 (("update_desktop_database: true")
11737 "update_desktop_database: false")
11738 ;; Fix missing manifest path for tests
11739 (("cargo_release_options,")
11740 "cargo_release_options,
11741'--manifest-path',
11742meson.project_source_root() / 'Cargo.toml',")
11743 (("clippy_options,")
11744 "clippy_options,
11745'--manifest-path',
11746meson.project_source_root() / 'Cargo.toml',"))
11747 (delete-file "Cargo.lock")))
11748 (add-after 'configure 'prepare-cargo-build-system
11749 (lambda args
11750 (for-each (lambda (phase)
11751 (format #t "Running cargo phase: ~a~%" phase)
11752 (apply (assoc-ref cargo:%standard-phases phase)
11753 #:vendor-dir "vendor"
11754 #:cargo-target #$(cargo-triplet)
11755 args))
11756 '(prepare-rust-crates unpack-rust-crates configure
11757 check-for-pregenerated-files
11758 patch-cargo-checksums))))
11759 (add-after 'install 'wrap-program
11760 (lambda _
11761 (let ((prog (string-append #$output "/bin/snapshot"))
11762 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
11763 (wrap-program prog
11764 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
11765 (,gst-plugin-path)))))))))
11766 (build-system meson-build-system)
11767 (native-inputs (cons* gettext-minimal
11768 `(,glib "bin")
11769 pkg-config
11770 rust
11771 `(,rust "cargo")
11772 (or (and=> (%current-target-system)
11773 (compose list make-rust-sysroot))
11774 '())))
11775 (inputs (cons* bash-minimal
11776 glib
11777 libglycin
11778 gst-plugins-bad
11779 gst-plugins-good
11780 `(,gst-plugins-rs "video")
11781 gstreamer
11782 gtk
11783 libadwaita
11784 pipewire
11785 (cargo-inputs 'snapshot)))
11786 (home-page "https://apps.gnome.org/Snapshot")
11787 (synopsis "Take pictures and videos")
11788 (description
11789 "Take pictures and videos on your computer, tablet, or phone.")
11790 (license license:gpl3+)))
11791
11792;;; TODO: Delete when 2027/03 comes.
11793(define-deprecated-package cheese
11794 snapshot)
11795
11796(define-deprecated/public-alias secrets
11797 (@ (gnu packages gnome-circle) secrets))
11798
11799(define-public sound-juicer
11800 (package
11801 (name "sound-juicer")
11802 (version "3.40.0")
11803 (source
11804 (origin
11805 (method url-fetch)
11806 (uri (string-append "mirror://gnome/sources/" name "/"
11807 (version-major+minor version) "/"
11808 name "-" version ".tar.xz"))
11809 (sha256
11810 (base32
11811 "1rhxmvx2mr22zd5p0azc0svi0mbnzcjnh3sasv3b9gli8ds85s1f"))))
11812 (build-system meson-build-system)
11813 (arguments
11814 (list
11815 #:glib-or-gtk? #t
11816 #:phases
11817 #~(modify-phases %standard-phases
11818 (add-after 'unpack 'disable-gtk-update-icon-cache
11819 (lambda _
11820 (substitute* "meson.build"
11821 (("gtk_update_icon_cache: true")
11822 "gtk_update_icon_cache: false"))))
11823 (add-after 'install 'wrap-program
11824 (lambda _
11825 (let ((prog (string-append #$output "/bin/sound-juicer"))
11826 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
11827 (wrap-program prog
11828 `("GST_PLUGIN_SYSTEM_PATH"
11829 ":" prefix (,gst-plugin-path)))))))))
11830 (native-inputs
11831 (list desktop-file-utils
11832 gettext-minimal
11833 `(,glib "bin")
11834 itstool
11835 libxml2
11836 pkg-config
11837 python))
11838 (inputs
11839 (list bash-minimal
11840 brasero
11841 gsettings-desktop-schemas
11842 gst-plugins-base
11843 gst-plugins-good
11844 gstreamer
11845 gtk+
11846 iso-codes/pinned
11847 libcanberra
11848 libdiscid
11849 libmusicbrainz
11850 neon))
11851 (home-page "https://wiki.gnome.org/Apps/SoundJuicer")
11852 (synopsis "Audio music cd ripper")
11853 (description "Sound Juicer extracts audio from compact discs and convert it
11854into audio files that a personal computer or digital audio player can play.
11855It supports ripping to any audio codec supported by a GStreamer plugin, such as
11856mp3, Ogg Vorbis and FLAC")
11857 (license license:gpl2+)))
11858
11859(define-public soundconverter
11860 (package
11861 (name "soundconverter")
11862 (version "4.1.3")
11863 (source
11864 (origin
11865 (method git-fetch)
11866 (uri (git-reference
11867 (url "https://github.com/kassoulet/soundconverter")
11868 (commit version)))
11869 (file-name (git-file-name name version))
11870 (sha256
11871 (base32 "1b0vh86fl4ghng5786vh94nm4p6hffrnch1kwcx2k5gdnsvaja0k"))))
11872 (build-system pyproject-build-system)
11873 (arguments
11874 (list #:test-backend #~'custom
11875 #:test-flags #~(list "tests/test.py")
11876 #:phases
11877 #~(modify-phases %standard-phases
11878 (add-after 'unpack 'disable-failing-test
11879 (lambda _
11880 (substitute* "tests/testcases/discoverer.py"
11881 (("test_not_audio")
11882 "disable_test_not_audio"))))
11883 (add-after 'install 'install-data
11884 (lambda _
11885 (mkdir-p (string-append #$output
11886 "/lib/python3.12/site-packages/data"))
11887 (install-file "data/soundconverter.glade"
11888 (string-append #$output
11889 "/lib/python3.12/site-packages/data/"))
11890 (install-file "data/soundconverter-logo.svg"
11891 (string-append #$output
11892 "/lib/python3.12/site-packages/data/"))))
11893 (add-before 'check 'pre-tests
11894 (lambda _
11895 ;; To fix "Settings schema 'org.soundconverter' is not
11896 ;; installed" error.
11897 (setenv "GSETTINGS_SCHEMA_DIR"
11898 (string-append #$output
11899 "/share/glib-2.0/schemas/"))
11900
11901 ;; A test using GIO expects some sub-directories in the
11902 ;; user home directory to be writable.
11903 (setenv "HOME" (getcwd))
11904
11905 ;; Tests require a running X server.
11906 (system "Xvfb :1 &")
11907 (setenv "DISPLAY" ":1")))
11908 (add-after 'install 'wrap-soundconverter
11909 (lambda _
11910 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))
11911 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
11912 (wrap-program (string-append #$output
11913 "/bin/soundconverter")
11914 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
11915 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
11916 (,gst-plugin-path))
11917 `("GSETTINGS_SCHEMA_DIR" =
11918 (,(string-append #$output
11919 "/share/glib-2.0/schemas"))))))))))
11920 (native-inputs
11921 (list (list glib "bin")
11922 intltool
11923 pkg-config
11924 python-distutils-extra
11925 python-pytest
11926 python-setuptools
11927 xorg-server-for-tests))
11928 (inputs
11929 (list bash-minimal
11930 gsettings-desktop-schemas
11931 gst-libav
11932 gst-plugins-bad
11933 gst-plugins-base
11934 gst-plugins-good
11935 gst-plugins-ugly
11936 gstreamer
11937 gtk+
11938 python
11939 python-pygobject-3.50))
11940 (home-page "https://soundconverter.org/")
11941 (synopsis "Convert between audio formats with a graphical interface")
11942 (description
11943 "SoundConverter supports converting between many audio formats including
11944Opus, Ogg Vorbis, FLAC and more. It supports parallel conversion, and
11945configurable file renaming.")
11946 (license license:gpl3)))
11947
11948(define-public workrave
11949 (package
11950 (name "workrave")
11951 (version "1.10.52")
11952 (source
11953 (origin
11954 (method git-fetch)
11955 (uri (git-reference
11956 (url "https://github.com/rcaelers/workrave")
11957 (commit (string-append "v" (string-map
11958 (match-lambda (#\. #\_) (chr chr))
11959 version)))))
11960 (file-name (git-file-name name version))
11961 (sha256
11962 (base32 "1rp6v9a8xmhjy75wmh7pnd092dn9nrb6wd4gcgr3c866qnpp6zsk"))))
11963 (build-system glib-or-gtk-build-system)
11964 (arguments
11965 ;; The only tests are maintainer tests (in po/), which fail.
11966 `(#:tests? #f))
11967 (inputs (list glib
11968 gtk+
11969 gdk-pixbuf
11970 gtkmm-3
11971 glibmm
11972 libx11
11973 libxtst
11974 dconf
11975 libice
11976 libsm
11977 libxscrnsaver))
11978 (native-inputs (list boost
11979 pkg-config
11980 gettext-minimal
11981 autoconf
11982 autoconf-archive
11983 automake
11984 libtool
11985 intltool
11986 gobject-introspection
11987 python-3
11988 python-jinja2))
11989 (synopsis "Tool to help prevent repetitive strain injury (RSI)")
11990 (description
11991 "Workrave is a program that assists in the recovery and prevention of
11992repetitive strain injury (@dfn{RSI}). The program frequently alerts you to take
11993micro-pauses and rest breaks, and restricts you to your daily limit.")
11994 (home-page "https://www.workrave.org")
11995 (license license:gpl3+)))
11996
11997(define-public ghex
11998 (package
11999 (name "ghex")
12000 (version "46.2")
12001 (source (origin
12002 (method url-fetch)
12003 (uri (string-append "mirror://gnome/sources/ghex/"
12004 (version-major version) "/"
12005 "ghex-" version ".tar.xz"))
12006 (sha256
12007 (base32
12008 "0c8zcsng3925sw3bxffyj4lczna389k7rzv2p0h0v9wpcfipdwm8"))))
12009 (build-system meson-build-system)
12010 (arguments
12011 '(#:glib-or-gtk? #t
12012 #:phases
12013 (modify-phases %standard-phases
12014 (add-after 'unpack 'skip-gtk-update-icon-cache
12015 ;; Don't create 'icon-theme.cache'.
12016 (lambda _
12017 (substitute* "meson.build"
12018 (("gtk_update_icon_cache: true")
12019 "gtk_update_icon_cache: false")))))))
12020 (native-inputs
12021 (list desktop-file-utils ;for 'desktop-file-validate'
12022 gettext-minimal
12023 `(,glib "bin") ;for glib-compile-schemas
12024 gnome-common
12025 pkg-config
12026 yelp-tools))
12027 (inputs
12028 (list at-spi2-core
12029 gtk
12030 libadwaita))
12031 (synopsis "GNOME hexadecimal editor")
12032 (description "The GHex program can view and edit files in two ways:
12033hexadecimal or ASCII. It is useful for editing binary files in general.")
12034 (home-page "https://wiki.gnome.org/Apps/Ghex")
12035 (license license:gpl2)))
12036
12037(define-public libdazzle
12038 (package
12039 (name "libdazzle")
12040 (version "3.44.0")
12041 (source (origin
12042 (method url-fetch)
12043 (uri (string-append "mirror://gnome/sources/libdazzle/"
12044 (version-major+minor version) "/"
12045 "libdazzle-" version ".tar.xz"))
12046 (sha256
12047 (base32
12048 "1blfs61ifv4fywl0wbr1cm3rvmgrv06yiqajbnq0qs72nrgf9lrw"))))
12049 (build-system meson-build-system)
12050 (arguments
12051 `(#:phases
12052 (modify-phases %standard-phases
12053 (add-before 'check 'pre-check
12054 (lambda _
12055 ;; Tests require a running X server.
12056 (system "Xvfb :1 &")
12057 (setenv "DISPLAY" ":1"))))))
12058 (native-inputs
12059 (list `(,glib "bin") ; glib-compile-resources
12060 gobject-introspection
12061 pkg-config
12062 ;; For tests.
12063 xorg-server-for-tests
12064 vala))
12065 (inputs
12066 (list glib
12067 gtk+))
12068 (home-page "https://gitlab.gnome.org/GNOME/libdazzle")
12069 (synopsis "Companion library to GObject and Gtk+")
12070 (description "The libdazzle library is a companion library to GObject and
12071Gtk+. It provides various features that the authors wish were in the
12072underlying library but cannot for various reasons. In most cases, they are
12073wildly out of scope for those libraries. In other cases, they are not quite
12074generic enough to work for everyone.")
12075 (license license:gpl3+)))
12076
12077(define-public evolution
12078 (package
12079 (name "evolution")
12080 (version "3.60.0")
12081 (source (origin
12082 (method url-fetch)
12083 (uri (string-append "mirror://gnome/sources/evolution/"
12084 (version-major+minor version) "/"
12085 "evolution-" version ".tar.xz"))
12086 (sha256
12087 (base32
12088 "1rdm75a8w6xn1vil2npb69n6qdmwdab2fq7y708plflk8j579v8g"))))
12089 (build-system cmake-build-system)
12090 (arguments
12091 (list
12092 #:tests? #f
12093 #:imported-modules `(,@%cmake-build-system-modules
12094 (guix build glib-or-gtk-build-system))
12095 #:modules '((guix build cmake-build-system)
12096 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
12097 (guix build utils))
12098 #:configure-flags
12099 #~(list "-DENABLE_PST_IMPORT=OFF") ;libpst is not packaged
12100 #:phases
12101 #~(modify-phases %standard-phases
12102 ;; The build system attempts to install user interface modules to
12103 ;; the output directory of the "evolution-data-server" package;
12104 ;; patch it to install to the same location under #$output prefix.
12105 (add-after 'unpack 'patch-ui-module-dir
12106 (lambda* (#:key outputs #:allow-other-keys)
12107 (substitute* "src/modules/alarm-notify/CMakeLists.txt"
12108 (("\\$\\{edsuimoduledir\\}")
12109 (string-append
12110 #$output "/lib/evolution-data-server/ui-modules")))
12111 (substitute* "src/modules/rss/camel/CMakeLists.txt"
12112 (("\\$\\{camel_providerdir}")
12113 (string-append
12114 #$output "/lib/evolution-data-server/camel-providers")))))
12115 (add-after 'install 'glib-or-gtk-compile-schemas
12116 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
12117 (add-after 'install 'glib-or-gtk-wrap
12118 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
12119 (native-inputs
12120 (list `(,glib "bin") ;glib-mkenums
12121 intltool
12122 itstool
12123 pkg-config))
12124 (inputs
12125 (list cmark
12126 enchant
12127 evolution-data-server ;must be the same version
12128 gcr-3
12129 gsettings-desktop-schemas
12130 gnome-autoar
12131 gnome-desktop
12132 gspell
12133 highlight
12134 libcanberra
12135 libgweather
12136 libnotify
12137 libsoup
12138 nss
12139 openldap
12140 webkitgtk-for-gtk3
12141 ytnef))
12142 (home-page "https://gitlab.gnome.org/GNOME/evolution")
12143 (synopsis "Manage your email, contacts and schedule")
12144 (description "Evolution is a personal information management application
12145that provides integrated mail, calendaring and address book
12146functionality.")
12147 ;; See COPYING for details.
12148 (license (list license:lgpl2.1 license:lgpl3 ; either one of these
12149 license:openldap2.8 ; addressbook/gui/component/openldap-extract.h
12150 license:lgpl2.1+)))) ; smime/lib/*
12151
12152(define-public gthumb
12153 (package
12154 (name "gthumb")
12155 (version "3.12.10")
12156 (source (origin
12157 (method url-fetch)
12158 (uri (string-append "mirror://gnome/sources/gthumb/"
12159 (version-major+minor version) "/"
12160 "gthumb-" version ".tar.xz"))
12161 (sha256
12162 (base32
12163 "0xac51s5bck5hqf8n2i2fi7l236rwcd9awqvk3bvavydad3388ij"))))
12164 (build-system meson-build-system)
12165 (arguments
12166 (list
12167 #:glib-or-gtk? #t
12168 #:configure-flags
12169 ;; Ensure the RUNPATH contains all installed library locations.
12170 #~(list (string-append "-Dc_link_args=-Wl,-rpath=" #$output
12171 "/lib/gthumb/extensions")
12172 (string-append "-Dcpp_link_args=-Wl,-rpath=" #$output
12173 "/lib/gthumb/extensions"))))
12174 (native-inputs
12175 (list desktop-file-utils ; for update-desktop-database
12176 `(,glib "bin") ; for glib-compile-resources
12177 `(,gtk+ "bin") ; for gtk-update-icon-cache
12178 intltool
12179 itstool
12180 pkg-config
12181 python))
12182 (inputs
12183 (list colord
12184 exiv2
12185 gsettings-desktop-schemas
12186 gstreamer
12187 gtk+
12188 libheif
12189 libjpeg-turbo
12190 libraw
12191 (librsvg-for-system)
12192 libtiff
12193 libwebp))
12194 (home-page "https://gitlab.gnome.org/GNOME/gthumb")
12195 (synopsis "GNOME image viewer and browser")
12196 (description "GThumb is an image viewer, browser, organizer, editor and
12197advanced image management tool")
12198 (license license:gpl2+)))
12199
12200(define-public terminator
12201 (package
12202 (name "terminator")
12203 (version "2.1.6")
12204 (source
12205 (origin
12206 (method url-fetch)
12207 (uri (string-append "https://github.com/gnome-terminator/terminator/"
12208 "releases/download/v" version "/"
12209 name "-" version ".tar.gz"))
12210 (sha256
12211 (base32 "1yncj0jnvfingyrkrb0in0rx12r3g0sakbr26fzhw8r16cb4d7v4"))))
12212 (build-system pyproject-build-system)
12213 (arguments
12214 (list
12215 #:test-flags
12216 #~(list
12217 "--ignore=terminatorlib/"
12218 ;; Some of these tests fail due to dbus-python and python-notify.
12219 "--ignore=tests/test_prefseditor_keybindings.py")
12220 #:imported-modules `((guix build glib-or-gtk-build-system)
12221 ,@%pyproject-build-system-modules)
12222 #:modules `((guix build pyproject-build-system)
12223 ((guix build glib-or-gtk-build-system)
12224 #:prefix glib-or-gtk:)
12225 (guix build utils))
12226 #:phases
12227 #~(modify-phases %standard-phases
12228 (add-after 'unpack 'handle-dbus-python
12229 (lambda _
12230 ;; python-dbus cannot be found but it's really there. See
12231 ;; https://github.com/SpotlightKid/jack-select/issues/2
12232 (substitute* "setup.py"
12233 (("'dbus-python',")
12234 ""))))
12235 (replace 'wrap
12236 (lambda* (#:key inputs outputs #:allow-other-keys)
12237 (wrap-program (string-append #$output "/bin/terminator")
12238 `("GUIX_PYTHONPATH" =
12239 (,(getenv "GUIX_PYTHONPATH")
12240 ,(site-packages inputs outputs)))
12241 `("GI_TYPELIB_PATH" =
12242 (,(getenv "GI_TYPELIB_PATH"))))))
12243 (add-after 'wrap 'glib-or-gtk-wrap
12244 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
12245 (native-inputs
12246 (list gettext-minimal
12247 `(,glib "bin") ;for glib-compile-resources
12248 gobject-introspection
12249 intltool
12250 pkg-config
12251 python-psutil
12252 python-pytest))
12253 (inputs
12254 (list bash-minimal ;for wrap-program
12255 cairo
12256 dbus-glib
12257 gsettings-desktop-schemas
12258 gtk+
12259 python-wrapper
12260 python-dbus
12261 python-notify2
12262 python-pycairo
12263 python-pygobject
12264 vte/gtk+-3))
12265 (propagated-inputs (list python-configobj))
12266 (home-page "https://gnome-terminator.org/")
12267 (synopsis "Store and run multiple GNOME terminals in one window")
12268 (description
12269 "Terminator allows you to run multiple GNOME terminals in a grid and
12270tabs, and it supports drag and drop re-ordering of terminals.")
12271 (license license:gpl2)))
12272
12273(define-public libhandy
12274 (package
12275 (name "libhandy")
12276 (version "1.8.3")
12277 (source
12278 (origin
12279 (method git-fetch)
12280 (uri (git-reference
12281 (url "https://gitlab.gnome.org/GNOME/libhandy")
12282 (commit version)))
12283 (file-name (git-file-name name version))
12284 (sha256
12285 (base32 "0p80py59mg9hjk2pzp0595cv64ankaqdvqsxlhrsgzsfx940r9nc"))))
12286 (build-system meson-build-system)
12287 (arguments
12288 (list #:configure-flags
12289 #~(list "-Dglade_catalog=enabled"
12290 ;; XXX: Generating the documentation fails because the
12291 ;; libhandy.devhelp2 document cannot be created. This seems
12292 ;; to be caused by a problem during the XSL transformation.
12293 "-Dgtk_doc=false")
12294 #:phases
12295 #~(modify-phases %standard-phases
12296 (add-before 'check 'pre-check
12297 (lambda _
12298 ;; Tests require a running X server.
12299 (system "Xvfb :1 &")
12300 (setenv "DISPLAY" ":1"))))))
12301 (inputs (list gtk+ glade3))
12302 (native-inputs
12303 (list gobject-introspection ; for g-ir-scanner
12304 `(,glib "bin")
12305 vala
12306 libxml2
12307 libxslt
12308 docbook-xsl
12309 docbook-xml-4.3
12310 gtk-doc/stable
12311 pkg-config
12312 gettext-minimal
12313
12314 ;; Test suite dependencies.
12315 hicolor-icon-theme
12316 xorg-server-for-tests))
12317 (home-page "https://gitlab.gnome.org/GNOME/libhandy/")
12318 (synopsis "Library full of GTK+ widgets for mobile phones")
12319 (description "The aim of the handy library is to help with developing user
12320interfaces for mobile devices using GTK+. It provides responsive GTK+ widgets
12321for usage on small and big screens.")
12322 (license license:lgpl2.1+)))
12323
12324(define-public libgit2-glib
12325 (package
12326 (name "libgit2-glib")
12327 (version "1.2.1")
12328 (source (origin
12329 (method url-fetch)
12330 (uri (string-append "mirror://gnome/sources/" name "/"
12331 (version-major+minor version) "/"
12332 name "-" version ".tar.xz"))
12333 (sha256
12334 (base32
12335 "0pvqp9r6fj32q6gia9kac6iwrz4x0iwrspy7a63vxcq2j1vklhlp"))))
12336 (build-system meson-build-system)
12337 (native-inputs
12338 (list `(,glib "bin") ;; For glib-mkenums
12339 gobject-introspection
12340 pkg-config
12341 python-pygobject
12342 python-wrapper
12343 vala))
12344 (inputs
12345 (list libssh2))
12346 (propagated-inputs
12347 (list glib libgit2)) ;; In Requires of libgit2-glib.pc.
12348 (synopsis "GLib wrapper around the libgit2 Git access library")
12349 (description "libgit2-glib is a GLib wrapper library around the libgit2 Git
12350access library. It only implements the core plumbing functions, not really the
12351higher level porcelain stuff.")
12352 (home-page "https://wiki.gnome.org/Projects/Libgit2-glib")
12353 (license license:gpl2+)))
12354
12355(define-public gitg
12356 (package
12357 (name "gitg")
12358 (version "50")
12359 (source (origin
12360 (method url-fetch)
12361 (uri (string-append "mirror://gnome/sources/" name "/"
12362 (version-major version) "/"
12363 name "-" version ".tar.xz"))
12364 (sha256
12365 (base32
12366 "0m41bac4x4nn3fiimik224filgnbrrinw0xhp654xk90d6l1c4ik"))))
12367 (build-system meson-build-system)
12368 (arguments
12369 (list
12370 #:glib-or-gtk? #t
12371 #:build-type "release" ; don't look at -Wformat…
12372 #:phases
12373 #~(modify-phases %standard-phases
12374 (add-after 'unpack 'disable-post-install-partially
12375 (lambda _
12376 (substitute* "meson_post_install.py"
12377 (("'python'") ; there are no python sources to compile
12378 (string-append "'" (which "true") "'"))
12379 (("gtk-update-icon-cache") (which "true")))))
12380 (add-after 'unpack 'patch-sources
12381 (lambda _
12382 ;; TODO: Remove when updating to next release (see:
12383 ;; <https://gitlab.gnome.org/GNOME/gitg/-/merge_requests/410>).
12384 (substitute* "gitg/gitg-result-dialog.vala"
12385 (("\\\\u001b") "\x1b"))))
12386 (add-after 'unpack 'fix-test-sources
12387 (lambda _
12388 (substitute* "tests/libgitg/test-commit.vala"
12389 (("/bin/bash") (which "bash")))))
12390 (add-after 'glib-or-gtk-wrap 'wrap-typelib
12391 (lambda* (#:key outputs #:allow-other-keys)
12392 (let ((prog (string-append #$output "/bin/gitg")))
12393 (wrap-program prog
12394 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
12395 (inputs
12396 (list bash-minimal
12397 glib
12398 gpgme
12399 gsettings-desktop-schemas
12400 gspell
12401 gtk+
12402 gtksourceview-4
12403 json-glib
12404 libdazzle
12405 libgee
12406 libgit2-glib
12407 libhandy
12408 libpeas
12409 libsecret
12410 libxml2))
12411 (native-inputs
12412 (list `(,glib "bin")
12413 `(,gtk+ "bin")
12414 gobject-introspection
12415 intltool
12416 pkg-config
12417 python
12418 vala))
12419 (synopsis "Graphical user interface for git")
12420 (description
12421 "gitg is a graphical user interface for git. It aims at being a small,
12422fast and convenient tool to visualize the history of git repositories.
12423Besides visualization, gitg also provides several utilities to manage your
12424repository and commit your work.")
12425 (home-page "https://wiki.gnome.org/Apps/Gitg")
12426 (license license:gpl2+)))
12427
12428(define-public gamin
12429 (package
12430 (name "gamin")
12431 (version "0.1.10")
12432 (source (origin
12433 (method url-fetch)
12434 (uri (string-append "mirror://gnome/sources/" name "/"
12435 (version-major+minor version) "/"
12436 name "-" version ".tar.bz2"))
12437 (sha256
12438 (base32
12439 "02n1zr9y8q9lyczhcz0nxar1vmf8p2mmbw8kq0v43wg21jr4i6d5"))))
12440 (build-system gnu-build-system)
12441 (arguments
12442 `(#:configure-flags `(,(string-append
12443 "CFLAGS=-g -O2"
12444 " -Wno-error=implicit-function-declaration"
12445 " -Wno-error=return-mismatch"))
12446 #:phases
12447 (modify-phases %standard-phases
12448 ;; The 'config.sub' is too old to recognise aarch64.
12449 ,@(if (or (target-aarch64?) (target-riscv64?))
12450 `((add-after 'unpack 'replace-config.sub
12451 (lambda _
12452 (delete-file "config.sub")
12453 (symlink (which "config.sub") "config.sub"))))
12454 '())
12455 (add-after 'unpack 'remove-deprecated-macro
12456 (lambda _
12457 (substitute* '("server/gam_node.c"
12458 "server/gam_subscription.h"
12459 "server/gam_node.h"
12460 "server/gam_subscription.c")
12461 (("G_CONST_RETURN") "const"))
12462 #t))
12463 ;; The configure script runs a test program unconditionally,
12464 ;; without an option to manually set the test result.
12465 ;; Override this test anyway.
12466 ,@(if (%current-target-system)
12467 `((add-after 'bootstrap 'set-have-abstract-sockets
12468 (lambda _
12469 (define in-abstract-sockets-test? #f)
12470 (substitute* "configure"
12471 (("^#### Abstract sockets\n$")
12472 (set! in-abstract-sockets-test? #t)
12473 "#### Abstract sockets\n")
12474 (("^have_abstract_sockets=no\n$")
12475 (set! in-abstract-sockets-test? #f)
12476 ;; ‘Abstract sockets’ appear to be Linux-only.
12477 (string-append "have_abstract_sockets="
12478 ,(if (target-linux?)
12479 "yes"
12480 "no")
12481 "\nif false; then\nif false; then :\n"))
12482 (("^(.*\n)$" line)
12483 (if in-abstract-sockets-test?
12484 "" ; delete
12485 line))))))
12486 '()))))
12487 (inputs
12488 (list glib))
12489 (native-inputs
12490 `(("pkg-config" ,pkg-config)
12491 ,@(if (or (target-aarch64?) (target-riscv64?))
12492 `(("config" ,config))
12493 '())))
12494 (home-page "https://people.gnome.org/~veillard/gamin/")
12495 (synopsis "File alteration monitor")
12496 (description
12497 "Gamin is a file and directory monitoring system defined to be a subset
12498of the FAM (File Alteration Monitor) system. This is a service provided by a
12499library which detects when a file or a directory has been modified.")
12500 (license license:gpl2+)))
12501
12502(define-deprecated/public-alias gnome-mahjongg
12503 (@ (gnu packages gnome-circle) gnome-mahjongg))
12504
12505(define-public gnome-themes-extra
12506 (package
12507 (name "gnome-themes-extra")
12508 (version "3.28")
12509 (source
12510 (origin
12511 (method url-fetch)
12512 (uri (string-append "mirror://gnome/sources/" name "/"
12513 (version-major+minor version) "/" name "-"
12514 version ".tar.xz"))
12515 (sha256
12516 (base32
12517 "06aqg9asq2vqi9wr29bs4v8z2bf4manhbhfghf4nvw01y2zs0jvw"))))
12518 (build-system gnu-build-system)
12519 (arguments
12520 '(#:configure-flags
12521 ;; Don't create 'icon-theme.cache'.
12522 (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
12523 (true (string-append coreutils "/bin/true")))
12524 (list (string-append "GTK_UPDATE_ICON_CACHE=" true)))))
12525 (native-inputs
12526 `(("glib:bin" ,glib "bin")
12527 ("intltool" ,intltool)
12528 ("pkg-config" ,pkg-config)))
12529 (inputs
12530 `(("glib" ,glib)
12531 ("gtk+" ,gtk+)
12532 ("gtk+-2" ,gtk+-2)
12533 ("librsvg" ,(librsvg-for-system))
12534 ("libxml2" ,libxml2)))
12535 (home-page "https://gitlab.gnome.org/GNOME/gnome-themes-extra")
12536 (synopsis "GNOME Extra Themes")
12537 (description "This package provides themes and related elements that don't
12538really fit in other upstream packages. It offers legacy support for GTK+ 2
12539versions of Adwaita, Adwaita-dark and HighContrast themes. It also provides
12540index files needed for Adwaita to be used outside of GNOME.")
12541 (license license:lgpl2.1+)))
12542
12543(define-public gnote
12544 (package
12545 (name "gnote")
12546 (version "48.2")
12547 (source
12548 (origin
12549 (method url-fetch)
12550 (uri (string-append "mirror://gnome/sources/" name "/"
12551 (version-major version) "/"
12552 "gnote-" version ".tar.xz"))
12553 (sha256
12554 (base32 "10f74mkqw0la6vyswj4p3qf988r1ai29l4gfx2wryn76knhni09w"))))
12555 (build-system meson-build-system)
12556 (arguments
12557 `(#:glib-or-gtk? #t
12558 #:phases (modify-phases %standard-phases
12559 (add-after 'unpack 'skip-gtk-update-icon-cache
12560 ;; Don't create 'icon-theme.cache'.
12561 (lambda _
12562 (substitute* "meson.build"
12563 (("gtk_update_icon_cache: true")
12564 "gtk_update_icon_cache: false")))))))
12565 (native-inputs
12566 (list desktop-file-utils
12567 gettext-minimal
12568 `(,glib "bin")
12569 gobject-introspection
12570 itstool
12571 pkg-config))
12572 (inputs
12573 (list glibmm
12574 gsettings-desktop-schemas
12575 gtk
12576 gtkmm
12577 libadwaita
12578 libsecret
12579 `(,util-linux "lib")
12580 libxml2
12581 libxslt))
12582 (synopsis "Note-taking application for the GNOME desktop")
12583 (description "Gnote is a note-taking application written for the GNOME
12584desktop environment.")
12585 (home-page "https://wiki.gnome.org/Apps/Gnote")
12586 (license license:gpl3+)))
12587
12588(define-deprecated/public-alias polari
12589 (@ (gnu packages gnome-circle) polari))
12590
12591(define-public gnome-boxes
12592 (package
12593 (name "gnome-boxes")
12594 (version "50.0")
12595 (source
12596 (origin
12597 (method url-fetch)
12598 (uri (string-append "mirror://gnome/sources/gnome-boxes/"
12599 (version-major version) "/"
12600 "gnome-boxes-" version ".tar.xz"))
12601 (sha256
12602 (base32 "0rrdcw9lll6ix0k259znhf0xq59ym8s5l7wzm5n9940hiphmsspx"))))
12603 (outputs '("out" "debug"))
12604 (build-system meson-build-system)
12605 (arguments
12606 (list #:glib-or-gtk? #t
12607 #:phases #~(modify-phases %standard-phases
12608 (add-after 'unpack 'disable-gtk-update-icon-cache
12609 (lambda _
12610 (substitute* "meson.build"
12611 (("gtk_update_icon_cache: true")
12612 "gtk_update_icon_cache: false"))))
12613 (add-before 'configure 'set-qemu-file-name
12614 (lambda* (#:key inputs #:allow-other-keys)
12615 (substitute* "src/installed-media.vala"
12616 (("qemu-img")
12617 (search-input-file inputs
12618 "/bin/qemu-img"))))))))
12619 (native-inputs
12620 (list desktop-file-utils ;for update-desktop-database
12621 gettext-minimal
12622 `(,glib "bin") ;for glib-compile-resources
12623 itstool
12624 pkg-config
12625 python-minimal
12626 vala))
12627 (inputs
12628 (list glib-networking ;for TLS support
12629 gsettings-desktop-schemas
12630 gtk
12631 gtksourceview-4
12632 json-glib
12633 libarchive
12634 libgudev
12635 libhandy
12636 libosinfo
12637 libportal
12638 libsecret
12639 libsoup
12640 libusb
12641 libvirt
12642 libvirt-glib
12643 libxml2
12644 qemu-minimal ;for qemu-img
12645 sparql-query
12646 tinysparql
12647 webkitgtk-for-gtk3))
12648 (propagated-inputs
12649 ;; Propagating spice-gtk is necessary so that the gnome-desktop-service
12650 ;; type configures the polkit actions necessary for the USB redirection
12651 ;; feature to work when gnome-boxes added as a extra GNOME package.
12652 (list spice-gtk))
12653 (home-page "https://wiki.gnome.org/Apps/Boxes")
12654 (synopsis "View, access, and manage remote and virtual systems")
12655 (description "GNOME Boxes is a simple application to view, access, and
12656manage remote and virtual systems. Note that this application requires the
12657@code{libvirt} and @code{virtlog} daemons to run. Use the command
12658@command{info '(guix) Virtualization Services'} to learn how to configure
12659these services on the Guix System.
12660
12661To make it possible to redirect USB devices as a non-privileged user, some
12662extra configuration is necessary: if you use the
12663@code{gnome-desktop-service-type}, you should add the @code{gnome-boxes}
12664package to the @code{extra-packages} field of the
12665@code{gnome-desktop-configuration}, for example:
12666@lisp
12667(service gnome-desktop-service-type
12668 (gnome-desktop-configuration
12669 (extra-packages (list gnome-boxes gnome-essential-extras))))
12670@end lisp
12671If you do @emph{not} use the @code{gnome-desktop-service-type}, you will need
12672manually extend the @code{polkit-service-type} with the @code{spice-gtk}
12673package, as well as configure the
12674@file{libexec/spice-client-glib-usb-acl-helper} executable of @code{spice-gtk}
12675as setuid, to make it possible to redirect USB devices as a non-privileged
12676user.")
12677 (license (list
12678 ;; For data/icons/empty-boxes.png.
12679 license:cc-by2.0
12680 ;; For all others.
12681 license:lgpl2.0+))))
12682
12683(define-public geary
12684 (package
12685 (name "geary")
12686 (version "44.1")
12687 (source (origin
12688 (method git-fetch)
12689 (uri (git-reference
12690 (url "https://gitlab.gnome.org/GNOME/geary.git")
12691 (commit version)))
12692 (file-name (git-file-name name version))
12693 (sha256
12694 (base32
12695 "1cx1jfaxsbkxm8774wf8n7ss2n73bzgk4yi2f9i3ab698ygh0h68"))))
12696 (build-system meson-build-system)
12697 (arguments
12698 (list #:glib-or-gtk? #t
12699 #:configure-flags
12700 #~(list "-Dprofile=release")
12701 #:phases
12702 #~(modify-phases %standard-phases
12703 (add-after 'unpack 'skip-gtk-update-icon-cache
12704 ;; Don't create 'icon-theme.cache'.
12705 (lambda _
12706 (substitute* "meson.build"
12707 (("gtk_update_icon_cache: true")
12708 "gtk_update_icon_cache: false"))))
12709 (add-before 'check 'setup-home
12710 (lambda _
12711 ;; Tests require a writable HOME.
12712 (setenv "HOME" (getcwd))))
12713 (add-before 'check 'setup-xvfb
12714 (lambda _
12715 (system "Xvfb :1 &")
12716 (setenv "DISPLAY" ":1"))))))
12717 (inputs
12718 (list enchant
12719 folks
12720 gcr-3
12721 glib
12722 gmime
12723 gnome-online-accounts
12724 gsettings-desktop-schemas
12725 gspell
12726 gsound
12727 gtk+
12728 iso-codes/pinned
12729 json-glib
12730 libcanberra
12731 libgee
12732 libhandy
12733 libpeas
12734 libsecret
12735 libstemmer
12736 libunwind
12737 sqlite
12738 webkitgtk-for-gtk3
12739 ytnef))
12740 (native-inputs
12741 (list appstream-glib
12742 cmake-minimal
12743 desktop-file-utils
12744 gettext-minimal
12745 `(,glib "bin")
12746 gnutls ; for certtool
12747 gobject-introspection
12748 itstool
12749 libarchive
12750 (libc-utf8-locales-for-target)
12751 libxml2
12752 pkg-config
12753 python-minimal
12754 vala
12755 xorg-server-for-tests))
12756 (synopsis "GNOME email application built around conversations")
12757 (description
12758 "Geary collects related messages together into conversations,
12759making it easy to find and follow your discussions. Full-text and keyword
12760search makes it easy to find the email you are looking for. Geary's
12761full-featured composer lets you send rich, styled text with images, links, and
12762lists, but also send lightweight, easy to read text messages. Geary
12763automatically picks up your existing GNOME Online Accounts, and adding more is
12764easy. Geary has a clean, fast, modern interface that works like you want it
12765to.")
12766 (home-page "https://wiki.gnome.org/Apps/Geary")
12767 (license (list
12768 ;; geary
12769 license:lgpl2.1+
12770 ;; icons
12771 license:cc-by3.0
12772 license:cc-by-sa3.0
12773 license:public-domain
12774 ;; snowball
12775 license:bsd-2))))
12776
12777(define-public glabels
12778 (package
12779 (name "glabels")
12780 (version "3.4.1")
12781 (source
12782 (origin
12783 (method url-fetch)
12784 (uri (string-append "mirror://gnome/sources/" name "/"
12785 (version-major+minor version) "/"
12786 "glabels-" version ".tar.xz"))
12787 (sha256
12788 (base32 "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q"))))
12789 (build-system glib-or-gtk-build-system)
12790 (native-inputs
12791 `(("gettext" ,gettext-minimal)
12792 ("glib:bin" ,glib "bin")
12793 ("intltool" ,intltool)
12794 ("itstool" ,itstool)
12795 ("pkg-config" ,pkg-config)))
12796 (inputs
12797 (list gtk+ (librsvg-for-system) libxml2))
12798 (arguments
12799 `(#:configure-flags
12800 '("CFLAGS=-fcommon -Wno-error=incompatible-pointer-types")))
12801 (home-page "https://glabels.org/")
12802 (synopsis "Program for creating labels and business cards")
12803 (description
12804 "gLabels is a program for creating labels and business cards. It is
12805designed to work with various laser/ink-jet peel-off label and business
12806card sheets that you’ll find at most office supply stores.")
12807 (license license:gpl3+)))
12808
12809(define-public gnome-latex
12810 (package
12811 (name "gnome-latex")
12812 (version "3.44.0")
12813 (source
12814 (origin
12815 (method url-fetch)
12816 (uri (string-append "mirror://gnome/sources/" name "/"
12817 (version-major+minor version) "/"
12818 "gnome-latex-" version ".tar.xz"))
12819 (sha256
12820 (base32 "0i77m431ilbaprcwcnnzfckr1g9bfc03lslnqw0yvir8pm057gc8"))))
12821 (build-system glib-or-gtk-build-system)
12822 (native-inputs
12823 (list gettext-minimal
12824 `(,glib "bin")
12825 gobject-introspection
12826 gtk-doc/stable
12827 itstool
12828 pkg-config
12829 vala))
12830 (inputs
12831 (list dconf
12832 glib
12833 gspell
12834 libgee
12835 tepl
12836 uchardet))
12837 (arguments
12838 (list
12839 #:configure-flags
12840 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")))
12841 (home-page "https://wiki.gnome.org/Apps/GNOME-LaTeX")
12842 (synopsis "LaTeX editor for the GNOME desktop")
12843 (description
12844 "GNOME LaTeX is a LaTeX editor for the GNOME desktop. It has features
12845such as build tools, completion of LaTeX commands, structure navigation,
12846symbol tables, document templates, project management, spell-checking, menus
12847and toolbars.")
12848 (license license:gpl3+)))
12849
12850(define-public setzer
12851 (package
12852 (name "setzer")
12853 (version "66")
12854 (source
12855 (origin
12856 (method git-fetch)
12857 (uri (git-reference
12858 (url "https://github.com/cvfosammmm/Setzer")
12859 (commit (string-append "v" version))))
12860 (file-name (git-file-name name version))
12861 (sha256
12862 (base32 "061zqim3ldhpvl1rc9mqkamf7gb7bsjaaanplsbls2k33w6k1b46"))))
12863 (build-system meson-build-system)
12864 (arguments
12865 (list
12866 #:glib-or-gtk? #t
12867 #:imported-modules (append %meson-build-system-modules
12868 %pyproject-build-system-modules)
12869 #:modules '((guix build meson-build-system)
12870 ((guix build pyproject-build-system) #:prefix py:)
12871 (guix build utils))
12872 #:phases
12873 #~(modify-phases %standard-phases
12874 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
12875 (lambda* (#:key inputs outputs #:allow-other-keys)
12876 (wrap-program (search-input-file outputs "bin/setzer")
12877 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
12878 ,(py:site-packages inputs outputs)))
12879 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
12880 (native-inputs
12881 (list gettext-minimal
12882 python))
12883 (inputs
12884 (list bash-minimal
12885 gobject-introspection
12886 gsettings-desktop-schemas
12887 gspell
12888 gtk
12889 gtksourceview
12890 libadwaita
12891 libportal
12892 pango
12893 poppler
12894 python-bibtexparser
12895 python-numpy
12896 python-pdfminer-six
12897 python-pexpect
12898 python-pillow
12899 python-pycairo
12900 python-pygobject
12901 python-pyxdg
12902 webkitgtk
12903 xdg-utils))
12904 (home-page "https://www.cvfosammmm.org/setzer/")
12905 (synopsis "LaTeX editor written in Python with GTK")
12906 (description
12907 "Setzer is a simple yet full-featured LaTeX editor written in Python with
12908GTK. It integrates well with the GNOME desktop environment.")
12909 (license license:gpl3+)))
12910
12911(define-deprecated/public-alias apostrophe
12912 (@ (gnu packages gnome-circle) apostrophe))
12913
12914(define-public libratbag
12915 (package
12916 (name "libratbag")
12917 (version "0.18")
12918 (source
12919 (origin
12920 (method git-fetch)
12921 (uri (git-reference
12922 (url "https://github.com/libratbag/libratbag")
12923 (commit (string-append "v" version))))
12924 (file-name (git-file-name name version))
12925 (sha256
12926 (base32 "09rmzbvh3q996r5vcdiirr56xzzwi5njay26hp50nyk1bq68l1bl"))))
12927 (build-system meson-build-system)
12928 (arguments
12929 `(#:configure-flags
12930 (list "-Dsystemd=false"
12931 "-Dlogind-provider=elogind"
12932 ,@(if (not (package? (this-package-native-input "valgrind")))
12933 `("-Dtests=false") ; Some tests still run.
12934 `()))
12935 #:phases
12936 (modify-phases %standard-phases
12937 (add-after 'install 'wrap
12938 (lambda* (#:key inputs outputs #:allow-other-keys)
12939 (let* ((out (assoc-ref outputs "out"))
12940 (site (string-append
12941 "/lib/python"
12942 ,(version-major+minor (package-version python))
12943 "/site-packages"))
12944 (evdev (string-append
12945 (assoc-ref inputs "python-evdev") site))
12946 (pygo (string-append
12947 (assoc-ref inputs "python-pygobject") site))
12948 (python-wrap
12949 `("GUIX_PYTHONPATH" = (,evdev ,pygo))))
12950 (wrap-program (string-append out "/bin/" "ratbagctl")
12951 python-wrap)
12952 #t))))))
12953 (native-inputs
12954 (append
12955 (list check pkg-config swig-4.0)
12956 (if (member (%current-system) (package-supported-systems valgrind/pinned))
12957 (list valgrind/pinned)
12958 '())))
12959 (inputs
12960 `(("bash" ,bash-minimal) ; for wrap-program
12961 ("glib" ,glib)
12962 ("json-glib" ,json-glib)
12963 ("libevdev" ,libevdev)
12964 ("libsystemd" ,elogind)
12965 ("libunistring" ,libunistring)
12966 ("python" ,python)
12967 ("python-evdev" ,python-evdev)
12968 ("python-pygobject" ,python-pygobject)
12969 ("udev" ,eudev)))
12970 (home-page "https://github.com/libratbag/libratbag")
12971 (synopsis "DBus daemon and utility for configuring gaming mice")
12972 (description "libratbag provides @command{ratbagd}, a DBus daemon to
12973configure input devices, mainly gaming mice. The daemon provides a generic
12974way to access the various features exposed by these mice and abstracts away
12975hardware-specific and kernel-specific quirks. There is also the
12976@command{ratbagctl} command line interface for configuring devices.
12977
12978libratbag currently supports devices from Logitech, Etekcity, GSkill, Roccat,
12979Steelseries.
12980
12981The ratbagd DBus service can be enabled by adding the following service to
12982your operating-system definition:
12983
12984 (simple-service 'ratbagd dbus-root-service-type (list libratbag))")
12985 (license license:expat)))
12986
12987(define-public piper
12988 (package
12989 (name "piper")
12990 (version "0.8")
12991 (source
12992 (origin (method git-fetch)
12993 (uri (git-reference
12994 (url "https://github.com/libratbag/piper")
12995 (commit version)))
12996 (sha256
12997 (base32 "1zkxrgvrg4bdqcj540lgdw35sj41n9cx8zrfhfd3f0y9m0piz7wg"))
12998 (file-name (git-file-name name version))))
12999 (build-system meson-build-system)
13000 (arguments
13001 (list
13002 #:imported-modules (append %meson-build-system-modules
13003 %pyproject-build-system-modules)
13004 #:modules `(((guix build pyproject-build-system) #:prefix py:)
13005 (guix build meson-build-system)
13006 (guix build utils))
13007 #:phases
13008 #~(modify-phases %standard-phases
13009 (add-after 'unpack 'dont-update-gtk-icon-cache
13010 (lambda _
13011 (substitute* "meson.build"
13012 (("gtk_update_icon_cache: true")
13013 "gtk_update_icon_cache: false"))))
13014 (add-after 'unpack 'do-not-require-flake8
13015 (lambda _
13016 (substitute* "meson.build"
13017 (("find_program\\('flake8'" all)
13018 (string-append all ", required : false")))))
13019 (add-after 'install 'wrap-python
13020 (assoc-ref py:%standard-phases 'wrap))
13021 (add-after 'wrap-python 'wrap
13022 (lambda* (#:key inputs outputs #:allow-other-keys)
13023 (wrap-script (search-input-file outputs "bin/piper")
13024 `("GI_TYPELIB_PATH" =
13025 (,(getenv "GI_TYPELIB_PATH")))
13026 `("GUIX_PYTHONPATH" =
13027 (,(getenv "GUIX_PYTHONPATH")
13028 ,(py:site-packages inputs outputs)))))))))
13029 (native-inputs
13030 (list appstream
13031 desktop-file-utils ;for update-desktop-database
13032 gettext-minimal
13033 `(,glib "bin")
13034 gobject-introspection
13035 pkg-config))
13036 (inputs
13037 (list bash-minimal
13038 adwaita-icon-theme
13039 gtk+
13040 guile-3.0 ;for wrap-script
13041 libratbag
13042 python
13043 python-evdev
13044 python-lxml
13045 python-pycairo
13046 python-pygobject))
13047 (home-page "https://github.com/libratbag/piper/")
13048 (synopsis "Configure bindings and LEDs on gaming mice")
13049 (description "Piper is a GTK+ application for configuring gaming mice with
13050onboard configuration for key bindings via libratbag. Piper requires
13051a @command{ratbagd} daemon running with root privileges. It can be run
13052manually as root, but is preferably configured as a DBus service that can
13053launch on demand. This can be configured by enabling the following service,
13054provided there is a DBus service present:
13055
13056 (simple-service 'ratbagd dbus-root-service-type (list libratbag))")
13057 (license license:gpl2)))
13058
13059(define libgxdp-origin
13060 ;; No releases nor tags. Use the latest commit that passes the project CI.
13061 (let ((commit "e6c11f2812cad0a43e847ec97bfc1c67bf50be52")
13062 (revision "0"))
13063 (origin
13064 (method git-fetch)
13065 (uri (git-reference
13066 (url "https://gitlab.gnome.org/GNOME/libgxdp")
13067 (commit commit)))
13068 (file-name (git-file-name "libgxdp"
13069 (git-version "0.0.0" revision commit)))
13070 (sha256
13071 (base32
13072 "1djfmwvcywbkpl9v8cs0b1hhylfd3fbrdk451vd16hwls46nf0v2")))))
13073
13074(define-public xdg-desktop-portal-gnome
13075 (package
13076 (name "xdg-desktop-portal-gnome")
13077 (version "49.0")
13078 (source (origin
13079 (method url-fetch)
13080 (uri (string-append "mirror://gnome/sources/" name "/"
13081 (version-major version) "/"
13082 name "-" version ".tar.xz"))
13083 (sha256
13084 (base32
13085 "1ln4bsdlrz7irbs3zagwmckl31nxfkvi6a4dq04iz4fbz36sy7a0"))
13086 (snippet
13087 #~(begin
13088 (use-modules (guix build utils))
13089 (delete-file-recursively "subprojects")))))
13090 (build-system meson-build-system)
13091 (arguments
13092 (list
13093 #:glib-or-gtk? #t
13094 #:configure-flags #~'("-Dsystemduserunitdir=no")
13095 #:phases
13096 #~(modify-phases %standard-phases
13097 (add-after 'unpack 'unpack-libgxdp
13098 (lambda* (#:key inputs #:allow-other-keys)
13099 (copy-recursively
13100 (dirname (search-input-file inputs
13101 "libgxdp.doap"))
13102 "subprojects/libgxdp"))))))
13103 (inputs
13104 (list gnome-desktop
13105 gsettings-desktop-schemas
13106 libadwaita
13107 libxml2
13108 libgxdp-origin
13109 xdg-desktop-portal
13110 xdg-desktop-portal-gtk))
13111 (native-inputs
13112 (list gettext-minimal
13113 `(,glib "bin")
13114 pkg-config))
13115 (home-page "https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome")
13116 (synopsis "GNOME backend for xdg-desktop-portal")
13117 (description "xdg-desktop-portal-gnome implements a back-end for
13118@command{xdg-desktop-portal} that uses gtk and some more GNOME APIs.")
13119 (license license:lgpl2.1+)))
13120
13121(define-public parlatype
13122 (package
13123 (name "parlatype")
13124 (version "4.3")
13125 (source
13126 (origin
13127 (method git-fetch)
13128 (uri (git-reference
13129 (url "https://github.com/gkarsay/parlatype")
13130 (commit (string-append "v" version))))
13131 (file-name (git-file-name name version))
13132 (sha256
13133 (base32 "167ij050d6qqkg088rv7a4ply0bzfjz0z0arpymrw2vs7bwxd77x"))))
13134 (build-system meson-build-system)
13135 (arguments
13136 (list
13137 #:glib-or-gtk? #t
13138 #:tests? #f ;require internet access
13139 #:configure-flags #~(list "-Dpocketsphinx=true")
13140 #:phases
13141 #~(modify-phases %standard-phases
13142 (add-after 'install 'wrap-parlatype
13143 ;; Add gstreamer plugin provided in this package to system's
13144 ;; plugins.
13145 (lambda _
13146 (let ((gst-plugin-path
13147 (string-append #$output "/lib/gstreamer-1.0/"
13148 ":"
13149 (getenv "GST_PLUGIN_SYSTEM_PATH"))))
13150 (wrap-program (string-append #$output "/bin/parlatype")
13151 `("GST_PLUGIN_SYSTEM_PATH" ":" = (,gst-plugin-path))))))
13152 (add-after 'glib-or-gtk-wrap 'wrap-gdk-pixbuf
13153 ;; This phase is necessary for Parlatype to load SVG icons.
13154 (lambda _
13155 (let ((pixbuf-module-file (getenv "GDK_PIXBUF_MODULE_FILE")))
13156 (wrap-program (string-append #$output "/bin/parlatype")
13157 `("GDK_PIXBUF_MODULE_FILE" = (,pixbuf-module-file)))))))))
13158 (native-inputs
13159 (list appstream-glib
13160 desktop-file-utils ;for desktop-file-validate
13161 gettext-minimal
13162 `(,glib "bin") ;for glib-compile-resources
13163 `(,gtk "bin") ;for gtk-update-icon-cache
13164 pkg-config
13165 yelp-tools))
13166 (inputs
13167 (list bash-minimal
13168 gst-plugins-base
13169 gst-plugins-good
13170 gstreamer
13171 gtk
13172 iso-codes/pinned
13173 libadwaita
13174 pocketsphinx
13175 pulseaudio))
13176 (home-page "https://www.parlatype.org")
13177 (synopsis "GNOME audio player for transcription")
13178 (description "Parlatype is an audio player for the GNOME desktop
13179environment. Its main purpose is the manual transcription of spoken
13180audio files.")
13181 (license license:gpl3+)))
13182
13183(define-public jsonrpc-glib
13184 (package
13185 (name "jsonrpc-glib")
13186 (version "3.44.2")
13187 (source (origin
13188 (method url-fetch)
13189 (uri (string-append "mirror://gnome/sources/" name "/"
13190 (version-major+minor version) "/"
13191 name "-" version ".tar.xz"))
13192 (sha256
13193 (base32
13194 "15kkwyp58hfjra1pfba0lm006fyw801xi9c2nil38kriw6v9cm4n"))))
13195 (build-system meson-build-system)
13196 (arguments
13197 (list
13198 #:configure-flags #~(list "-Denable_gtk_doc=true")))
13199 (inputs
13200 (list glib
13201 json-glib))
13202 (native-inputs
13203 (list gi-docgen
13204 `(,glib "bin") ; for glib-genmarshal, etc.
13205 gobject-introspection
13206 pkg-config
13207 vala))
13208 (home-page "https://gitlab.gnome.org/GNOME/jsonrpc-glib")
13209 (synopsis "JSON-RPC library for GLib")
13210 (description "Jsonrpc-GLib is a library to communicate with JSON-RPC based
13211peers in either a synchronous or asynchronous fashion. It also allows
13212communicating using the GVariant serialization format instead of JSON when
13213both peers support it. You might want that when communicating on a single
13214host to avoid parser overhead and memory-allocator fragmentation.")
13215 (license license:lgpl2.1+)))
13216
13217(define-public gmobile
13218 (package
13219 (name "gmobile")
13220 (version "0.2.1")
13221 (source
13222 (origin
13223 (method git-fetch)
13224 (uri (git-reference
13225 (url "https://gitlab.gnome.org/World/Phosh/gmobile")
13226 (commit (string-append "v" version))))
13227 (file-name (git-file-name "gmobile" version))
13228 (sha256
13229 (base32
13230 "1cnm4vkvgrkxf1nnghs5zc13d6f46h4c57vn54rlcy6q7qjkdr74"))))
13231 (build-system meson-build-system)
13232 (native-inputs
13233 (list `(,glib "bin") ; for glib-compile-resources
13234 gobject-introspection
13235 pkg-config))
13236 (propagated-inputs
13237 (list glib json-glib))
13238 (synopsis "Functions useful in mobile related, glib based projects")
13239 (description "This package provides functions for mobiles.")
13240 (home-page "https://gitlab.gnome.org/World/Phosh/gmobile")
13241 (license license:lgpl2.1+)))
13242
13243(define-public feedbackd
13244 (package
13245 (name "feedbackd")
13246 (version "0.6.0")
13247 (source (origin
13248 (method git-fetch)
13249 (uri (git-reference
13250 (url "https://source.puri.sm/Librem5/feedbackd.git")
13251 (commit (string-append "v" version))))
13252 (file-name (git-file-name name version))
13253 (sha256
13254 (base32
13255 "0gfh965rddmg9glyh0gzkzxi27c7kfdakwrkycc7hg7s68p03xgh"))
13256 (snippet
13257 #~(begin
13258 (use-modules (guix build utils))
13259 (delete-file-recursively "subprojects")))))
13260 (build-system meson-build-system)
13261 (arguments
13262 (list #:phases
13263 #~(modify-phases %standard-phases
13264 (add-after 'unpack 'fix-meson
13265 (lambda _
13266 (substitute* "meson.build"
13267 (("udev.get_variable\\('udevdir'\\)")
13268 "prefix / 'lib' / 'udev'")))))))
13269 (native-inputs
13270 (list `(,glib "bin") gobject-introspection pkg-config umockdev vala))
13271 (inputs
13272 (list dbus gmobile gsound json-glib libgudev))
13273 (propagated-inputs
13274 (list glib)) ; in Requires of libfeedback-0.0.pc
13275 (synopsis "Haptic/visual/audio feedback via DBus")
13276 (description "Feedbackd provides a DBus daemon to act on events to provide
13277haptic, visual and audio feedback. It offers the libfeedbackd library and
13278GObject introspection bindings.")
13279 (home-page "https://source.puri.sm/Librem5/feedbackd")
13280 (license (list license:lgpl2.1+ ; libfeedbackd
13281 license:lgpl3+)))) ; the rest
13282
13283(define-public sysprof
13284 (package
13285 (name "sysprof")
13286 (version "49.0")
13287 (source
13288 (origin
13289 (method url-fetch)
13290 (uri (string-append "mirror://gnome/sources/sysprof/"
13291 (version-major version) "/"
13292 "sysprof-" version ".tar.xz"))
13293 (sha256
13294 (base32 "0y18535lymqv684n8aa2v601d61v6aj8f84690cq8p3q6yb1617z"))))
13295 (build-system meson-build-system)
13296 (arguments
13297 (list
13298 #:configure-flags
13299 #~(list (string-append "-Dsystemdunitdir=" #$output "/share/systemd")
13300 "-Dhelp=true")
13301 #:phases
13302 #~(modify-phases %standard-phases
13303 (add-after 'unpack 'disable-post-install
13304 (lambda _
13305 (substitute* "meson.build"
13306 (("gtk_update_icon_cache: true")
13307 "gtk_update_icon_cache: false")
13308 (("update_desktop_database: true")
13309 "update_desktop_database: false")))))))
13310 (propagated-inputs
13311 ;; Listed in sysprof-4.pc or sysprof-ui-5.pc
13312 (list glib json-glib libadwaita libdex polkit))
13313 (inputs
13314 (list elfutils
13315 glib
13316 gtk
13317 json-glib
13318 libadwaita
13319 libdazzle
13320 libdex
13321 libpanel
13322 libunwind
13323 polkit))
13324 (native-inputs
13325 (list gettext-minimal
13326 `(,glib "bin") ;for gdbus-codegen, etc.
13327 itstool
13328 libxml2
13329 pkg-config))
13330 ;; This home page is so woefully out of date as to be essentially useless.
13331 ;; (home-page "http://www.sysprof.com")
13332 (home-page "https://wiki.gnome.org/Apps/Sysprof")
13333 (synopsis "System-wide performance profiler for GNU/Linux")
13334 (description
13335 "Sysprof performs detailed, accurate, and fast CPU profiling of an entire
13336GNU/Linux system including the kernel and all user-space applications. This
13337helps find the function(s) in which a program spends most of its time.
13338
13339It uses the kernel's built-in @code{ptrace} feature and handles shared
13340libraries. Applications do not need to be recompiled--or even restarted.")
13341 (license license:gpl3+)))
13342
13343(define-public libspelling
13344 (package
13345 (name "libspelling")
13346 (version "0.4.5")
13347 (source (origin
13348 (method git-fetch)
13349 (uri (git-reference
13350 (url "https://gitlab.gnome.org/GNOME/libspelling")
13351 (commit version)))
13352 (file-name (git-file-name name version))
13353 (sha256
13354 (base32 "030s821sb9rsr1ysl79x7id1bsin9idy8z7p85qr9cvw1w3f2s7r"))))
13355 (build-system meson-build-system)
13356 (inputs (list enchant gtk gtksourceview sysprof))
13357 (native-inputs
13358 (list gi-docgen
13359 gobject-introspection
13360 pkg-config
13361 vala
13362 ;; For testing.
13363 aspell aspell-dict-en))
13364 (home-page "https://gitlab.gnome.org/GNOME/libspelling/")
13365 (synopsis "Spell-checking library for GTK 4")
13366 (description "This package provides a spell-checker for
13367GtkTextView widgets.")
13368 (license license:lgpl2.1+)))
13369
13370(define-public gnome-builder
13371 (package
13372 (name "gnome-builder")
13373 (version "50.0")
13374 (source (origin
13375 (method url-fetch)
13376 (uri (string-append "mirror://gnome/sources/" name "/"
13377 (version-major version) "/"
13378 name "-" version ".tar.xz"))
13379 (sha256
13380 (base32
13381 "0iigv4zrb2f32snniz7slrv9lv8bkm4ln03xxmpdnjsg7z8lzma6"))))
13382 (build-system meson-build-system)
13383 (arguments
13384 (list
13385 #:glib-or-gtk? #t ;To wrap binaries and compile schemas
13386 #:configure-flags #~(list "-Dnetwork_tests=false" "-Ddocs=true")
13387 #:phases
13388 #~(modify-phases %standard-phases
13389 (add-after 'unpack 'patch-meson
13390 (lambda* (#:key inputs #:allow-other-keys)
13391 (substitute* "meson.build"
13392 (("gtk_update_icon_cache: true")
13393 "gtk_update_icon_cache: false"))
13394 (substitute* "build-aux/meson/post_install.py"
13395 ;; The post_install script does not seem to respect the
13396 ;; previous setting regarding gtk-update-icon-cache.
13397 (("gtk-update-icon-cache") "true")
13398 (("update-desktop-database") "true"))
13399 ;; This test is failing for unclear reasons.
13400 (substitute* "src/tests/meson.build"
13401 (("test\\('test-shortcuts'")
13402 "# test('test-shortcuts'"))))
13403 (add-before 'build 'set-home
13404 (lambda _
13405 ;; Required for documentation.
13406 (setenv "HOME" (getcwd))))
13407 (add-before 'check 'pre-check
13408 (lambda* (#:key tests? #:allow-other-keys)
13409 (when tests?
13410 (system "Xvfb :1 &")
13411 (setenv "DISPLAY" ":1"))))
13412 (add-after 'glib-or-gtk-wrap 'wrap-typelib
13413 (lambda* (#:key outputs #:allow-other-keys)
13414 (wrap-program (search-input-file outputs "bin/gnome-builder")
13415 `("GI_TYPELIB_PATH" suffix (,(getenv "GI_TYPELIB_PATH")))))))))
13416 (inputs
13417 (list bash-minimal ;for wrap-program
13418 cmark
13419 clang
13420 d-spy
13421 ;; Cyclic modular dependency
13422 (module-ref
13423 (resolve-interface
13424 '(gnu packages text-editors))
13425 'editorconfig-core-c)
13426 flatpak
13427 gom
13428 gtk
13429 json-glib
13430 jsonrpc-glib
13431 libadwaita
13432 libdazzle
13433 libdex
13434 libgit2-glib
13435 libpanel
13436 libpeas-2
13437 libportal
13438 libsoup
13439 libspelling
13440 llvm
13441 libostree
13442 libyaml
13443 python
13444 python-pygobject
13445 sysprof
13446 template-glib
13447 vte
13448 webkitgtk))
13449 (propagated-inputs
13450 (list gtksourceview)) ;needed for settings
13451 (native-inputs
13452 (list desktop-file-utils ;for desktop-file-validate
13453 `(,glib "bin")
13454 gettext-minimal
13455 gi-docgen
13456 pkg-config
13457 python ;for meson scripts
13458 vala
13459 xorg-server-for-tests))
13460 (home-page "https://gitlab.gnome.org/GNOME/gnome-builder/")
13461 (synopsis "Toolsmith for GNOME-based applications")
13462 (description
13463 "Builder aims to be an integrated development environment (IDE) for
13464writing GNOME-based software. It features fuzzy search, auto-completion,
13465a mini code map, documentation browsing, Git integration, an integrated
13466profiler via Sysprof, debugging support, and more.")
13467 (license license:gpl3+)))
13468
13469(define-deprecated/public-alias komikku
13470 (@ (gnu packages gnome-circle) komikku))
13471
13472(define-deprecated/public-alias komikku-servers
13473 (@ (gnu packages gnome-circle) komikku-servers))
13474
13475(define-public gtranslator
13476 (package
13477 (name "gtranslator")
13478 (version "49.0")
13479 (source (origin
13480 (method url-fetch)
13481 (uri (string-append "mirror://gnome/sources/" name "/"
13482 (version-major version) "/"
13483 name "-" version ".tar.xz"))
13484 (sha256
13485 (base32
13486 "1rn1vkf71vkfp2sifdza3v1rs8hv522c37r18b0jfp4xjhh5da7a"))))
13487 (build-system meson-build-system)
13488 (arguments
13489 (list #:build-type "release" ;otherwise it tries to fetch stuff via git
13490 #:glib-or-gtk? #t
13491 #:phases
13492 #~(modify-phases %standard-phases
13493 (add-after 'unpack 'skip-gtk-update-icon-cache
13494 (lambda _
13495 (substitute* "meson.build"
13496 (("gtk_update_icon_cache: true")
13497 "gtk_update_icon_cache: false")
13498 (("update_desktop_database: true")
13499 "update_desktop_database: false")))))))
13500 (native-inputs
13501 (list `(,glib "bin")
13502 gettext-minimal
13503 itstool
13504 pkg-config))
13505 (inputs
13506 (list json-glib
13507 jsonrpc-glib
13508 gettext-minimal
13509 glib
13510 gsettings-desktop-schemas
13511 gspell
13512 libadwaita
13513 libsoup
13514 pango))
13515 (propagated-inputs
13516 (list gtksourceview)) ; required for source view
13517 (home-page "https://wiki.gnome.org/Apps/Gtranslator")
13518 (synopsis "Translation making program")
13519 (description
13520 "Gtranslator is a translation file editor for the GNOME desktop
13521environment. It handles various formats used by gettext and includes
13522useful to navigate and edit translation messages and comments.")
13523 (license license:gpl3+)))
13524
13525(define-public ocrfeeder
13526 (package
13527 (name "ocrfeeder")
13528 (version "0.8.5")
13529 (source
13530 (origin
13531 (method git-fetch)
13532 (uri (git-reference
13533 (url "https://gitlab.gnome.org/GNOME/ocrfeeder")
13534 (commit version)))
13535 (file-name (git-file-name name version))
13536 (sha256
13537 (base32 "11xj5vidvppfd34hrvadz8fljsasljrgq7smfjx7asf88hv79d60"))))
13538 (build-system gnu-build-system)
13539 (arguments
13540 (list
13541 #:phases
13542 #~(modify-phases %standard-phases
13543 (add-after 'unpack 'fix-configure-on-python-3.12
13544 (lambda _
13545 (substitute* "m4/m4_ax_python_module.m4"
13546 (("import imp; imp\\.find_module\\((.*)\\)" all target)
13547 (format #f "import importlib.util; \
13548exit(0 if importlib.util.find_spec(~a) else 1)"
13549 target)))))
13550 (add-after 'install 'wrap-program
13551 (lambda _
13552 (wrap-program (string-append #$output "/bin/ocrfeeder")
13553 `("PYTHONPATH" =
13554 (,(getenv "GUIX_PYTHONPATH")
13555 ,(string-append #$output "/lib/python"
13556 #$(version-major+minor
13557 (package-version python))
13558 "/site-packages")))
13559 `("GI_TYPELIB_PATH" =
13560 (,(getenv "GI_TYPELIB_PATH")))))))))
13561 (native-inputs
13562 (list autoconf
13563 automake
13564 `(,glib "bin") ;for glib-compile-resources
13565 gobject-introspection
13566 `(,gtk+ "bin") ;for gtk-update-icon-cache
13567 intltool
13568 itstool
13569 gnome-common
13570 libxml2
13571 pkg-config
13572 which
13573 yelp-tools))
13574 (inputs
13575 (list bash-minimal ;for wrap-program
13576 enchant
13577 glib
13578 goocanvas
13579 gtk+
13580 gtkspell3
13581 libjpeg-turbo
13582 libtiff
13583 libraw
13584 ocrad
13585 python-wrapper
13586 python-pygobject
13587 python-odfpy
13588 python-pillow
13589 python-pyenchant
13590 python-reportlab
13591 python-sane
13592 sane
13593 tesseract-ocr))
13594 (home-page "https://wiki.gnome.org/Apps/OCRFeeder")
13595 (synopsis "Complete OCR Suite")
13596 (description "OCRFeeder is a complete Optical Character Recognition and
13597Document Analysis and Recognition program.")
13598 (license license:gpl3+)))
13599
13600(define-public libadwaita
13601 (package
13602 (name "libadwaita")
13603 (version "1.8.4")
13604 (source (origin
13605 (method url-fetch)
13606 (uri (string-append "mirror://gnome/sources/libadwaita/"
13607 (version-major+minor version) "/"
13608 "libadwaita-" version ".tar.xz"))
13609 (sha256
13610 (base32
13611 "074j59bz5zgnb7grw3clpwyxickw9268k6fj0980bw8gdxxvfayh"))))
13612 (build-system meson-build-system)
13613 (outputs (list "doc" "out"))
13614 (arguments
13615 (list
13616 #:configure-flags
13617 #~(list "-Ddocumentation=true")
13618 #:phases
13619 #~(modify-phases %standard-phases
13620 (add-before 'check 'pre-check
13621 (lambda* (#:key inputs #:allow-other-keys)
13622 ;; Tests require a running X server.
13623 (system "Xvfb :1 &")
13624 (setenv "DISPLAY" ":1")))
13625 (add-after 'install 'move-html-doc
13626 (lambda _
13627 (for-each mkdir-p
13628 (list (string-append #$output:doc "/share/doc")))
13629 (rename-file
13630 (string-append #$output "/share/doc")
13631 (string-append #$output:doc "/share/doc")))))))
13632 (native-inputs
13633 (list gettext-minimal
13634 gi-docgen
13635 `(,glib "bin")
13636 gobject-introspection
13637 gtk-doc/stable
13638 pkg-config
13639 sassc
13640 vala
13641 xorg-server-for-tests))
13642 (propagated-inputs
13643 (list appstream gtk)) ;libadwaita-1.pc 'Requires' it
13644 (home-page "https://gnome.pages.gitlab.gnome.org/libadwaita/")
13645 (synopsis "Building blocks for GNOME applications")
13646 (description
13647 "@code{libadwaita} offers widgets and objects to build GNOME
13648applications scaling from desktop workstations to mobile phones. It is the
13649successor of @code{libhandy} for GTK4.")
13650 (license license:lgpl2.1+)))
13651
13652(define-public gnome-power-manager
13653 (package
13654 (name "gnome-power-manager")
13655 (version "3.32.0")
13656 (source (origin
13657 (method url-fetch)
13658 (uri (string-append "mirror://gnome/sources/" name "/"
13659 (version-major+minor version) "/"
13660 name "-" version ".tar.xz"))
13661 (sha256
13662 (base32
13663 "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g"))))
13664 (build-system meson-build-system)
13665 (inputs
13666 (list upower gtk+ gsettings-desktop-schemas adwaita-icon-theme))
13667 (native-inputs
13668 (list desktop-file-utils
13669 `(,glib "bin") gettext-minimal pkg-config))
13670 (home-page "https://gitlab.gnome.org/GNOME/gnome-power-manager")
13671 (synopsis "Power management daemon for the GNOME desktop")
13672 (description "@code{gnome-power-manager} is a tool for viewing present and
13673historical battery usage and related statistics.")
13674 (license license:gpl2)))
13675
13676(define-public xffm+
13677 (package
13678 (name "xffm+")
13679 (version "0.94")
13680 (source (origin
13681 (method url-fetch)
13682 (uri (string-append "mirror://sourceforge/xffm/xffm+/xffm+-"
13683 version ".tar.bz2"))
13684 (sha256
13685 (base32
13686 "0gwbgmjzlgv9ba95cgaigjnc9njzi7qznhvzp0qrnnlq3nbcm1k1"))))
13687 (build-system cmake-build-system)
13688 (arguments
13689 `(#:tests? #f ; No tests exist
13690 #:configure-flags
13691 (let ((shared-mime-info (assoc-ref %build-inputs "shared-mime-info"))
13692 (out (assoc-ref %outputs "out")))
13693 (list (string-append "-DFREEDESKTOP_GLOBS=" shared-mime-info
13694 "/share/mime/globs")
13695 (string-append "-DFREEDESKTOP_ALIAS=" shared-mime-info
13696 "/share/mime/aliases")
13697 (string-append "-DFREEDESKTOP_ICONS=" shared-mime-info
13698 "/share/mime/generic-icons")
13699 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
13700 (string-append "-DPREFIX_BIN=" out "/bin")))
13701 #:phases
13702 (modify-phases %standard-phases
13703 (add-after 'unpack 'patch-installation-destination
13704 (lambda* (#:key outputs #:allow-other-keys)
13705 (substitute* "CMakeLists.txt"
13706 ;; This is done so we can override.
13707 (("^set.CMAKE_INSTALL_PREFIX") "set(QCMAKE_INSTALL_PREFIX")
13708 ;; This is done so we can override.
13709 (("`set.PREFIX_BIN") "set(QPREFIX_BIN")))))))
13710 (native-inputs
13711 (list cmake-minimal pkg-config intltool gettext-minimal))
13712 (inputs
13713 (list glib gtk+ libx11 libsm libxv libxaw libxcb libxkbfile
13714 shared-mime-info))
13715 (synopsis "File manager")
13716 (description "This package provides a graphical file manager.")
13717 (home-page "http://xffm.org/")
13718 (license license:gpl3+)
13719 (properties '((upstream-name . "xffm")))))
13720
13721(define-public gnome-remote-desktop
13722 (package
13723 (name "gnome-remote-desktop")
13724 (version "49.2")
13725 (source (origin
13726 (method url-fetch)
13727 (uri (string-append "mirror://gnome/sources/" name "/"
13728 (version-major version) "/"
13729 name "-" version ".tar.xz"))
13730 (sha256
13731 (base32
13732 "1b8nv7iacp0xjb74hidbrypli70xzv6i4mpzh0an5qblfhg4xm3k"))))
13733 (build-system meson-build-system)
13734 (arguments
13735 (list #:configure-flags
13736 #~'("-Dsystemd=false"
13737 ;; RDP support requires CUDA (ffnvcodec)
13738 "-Drdp=false"
13739 ;; Enable VNC support
13740 "-Dvnc=true")
13741 #:glib-or-gtk? #t
13742 #:phases
13743 #~(modify-phases %standard-phases
13744 (delete 'check)
13745 (add-after 'install 'check
13746 (assoc-ref %standard-phases
13747 'check))
13748 (add-before 'check 'pre-check
13749 (lambda* (#:key tests? #:allow-other-keys)
13750 (when tests?
13751 (setenv "HOME" "/tmp")
13752 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
13753 (mkdir (getenv "XDG_RUNTIME_DIR"))
13754 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
13755 (setenv "GSETTINGS_SCHEMA_DIR"
13756 (string-append #$output "/share/glib-2.0/schemas"))
13757 ;; Unless enabled by the user, the VNC server will not
13758 ;; start.
13759 (invoke "gsettings"
13760 "set"
13761 "org.gnome.desktop.remote-desktop.vnc"
13762 "enable" "true")
13763 ;; Pipewire is required.
13764 (setenv "PIPEWIRE_DEBUG" "2")
13765 (setenv "PIPEWIRE_LOG" "meson-logs/pipewire.log")
13766 (invoke "pipewire" "--version")
13767 (system "pipewire &")))))))
13768 (inputs
13769 (list cairo
13770 glib
13771 libdrm
13772 libei
13773 libepoxy
13774 libgudev
13775 libnotify
13776 libsecret
13777 ;; Cyclic modular dependency
13778 (module-ref
13779 (resolve-interface
13780 '(gnu packages vnc))
13781 'libvnc)
13782 pipewire
13783 wireplumber
13784 tpm2-tss))
13785 (native-inputs
13786 (list asciidoc
13787 dbus
13788 docbook-xsl
13789 docbook-xml-4.3
13790 gettext-minimal
13791 `(,glib "bin")
13792 itstool
13793 libxml2
13794 libxslt
13795 mutter
13796 pkg-config
13797 python
13798 python-dbus-1.2
13799 python-pygobject
13800 xdg-desktop-portal-gnome))
13801 (home-page "https://gitlab.gnome.org/GNOME/gnome-remote-desktop")
13802 (synopsis "Share GNOME desktop with remote sessions")
13803 (description "This package provides a remote desktop server for GNOME.")
13804 (license license:gpl2+)))
13805
13806(define-public libcall-ui
13807 (package
13808 (name "libcall-ui")
13809 (version "0.2.1")
13810 (source
13811 (origin
13812 (method git-fetch)
13813 (uri (git-reference
13814 (url "https://gitlab.gnome.org/World/Phosh/libcall-ui")
13815 (commit (string-append "v" version))))
13816 (file-name (git-file-name "libcall-ui" version))
13817 (sha256
13818 (base32
13819 "1bzrsrqjbncnck762sfr9a55n0l540bx0850dhjm6lwi0yp7giyc"))
13820 (patches (search-patches "libcall-ui-make-it-installable.patch"))))
13821 (build-system meson-build-system)
13822 (arguments
13823 (list
13824 #:phases
13825 #~(modify-phases %standard-phases
13826 (add-before 'check 'pre-check
13827 (lambda _
13828 (setenv "HOME" (getcwd))
13829 ;; Tests require a running X server.
13830 (system "Xvfb :1 &")
13831 (setenv "DISPLAY" ":1"))))))
13832 (propagated-inputs ; All these in call-ui.pc.
13833 (list glib
13834 gtk
13835 libadwaita
13836 libcallaudio
13837 libhandy))
13838 (native-inputs
13839 (list `(,glib "bin") ; glib-mkenums
13840 pkg-config
13841 xorg-server-for-tests))
13842 (synopsis "Common User Interfaces for call handling")
13843 (description "This package provides common user interfaces to make and
13844receive calls.")
13845 (home-page "https://gitlab.gnome.org/World/Phosh/libcall-ui")
13846 (license license:lgpl2.1+)))
13847
13848(define-public calls
13849 (package
13850 (name "calls")
13851 (version "49.1.1")
13852 (source (origin
13853 (method url-fetch)
13854 (uri (string-append "mirror://gnome/sources/" name "/"
13855 (version-major version) "/"
13856 name "-" version ".tar.xz"))
13857 (sha256
13858 (base32
13859 "1ph5m8rzksn1jmirxnp7xx9937hihsfg6vwavrsm30688kq9z2xf"))
13860 (patches
13861 (search-patches "calls-disable-sip-test.patch"))))
13862 (build-system meson-build-system)
13863 (arguments
13864 (list
13865 #:glib-or-gtk? #t
13866 #:configure-flags #~'("-Dgtk_doc=true")
13867 #:phases
13868 #~(modify-phases %standard-phases
13869 (add-after 'unpack 'disable-problematic-tests
13870 (lambda _
13871 (substitute* "tests/meson.build"
13872 ;; The application test does not work in a Guix container,
13873 ;; because an actual sound card is required to run this
13874 ;; integration test; the following disables it.
13875 (("dbus_run_session.found \\()")
13876 "false"))))
13877 (add-before 'check 'pre-check
13878 (lambda _
13879 (setenv "HOME" (getcwd))
13880 ;; Tests require a running X server.
13881 (system "Xvfb :1 &")
13882 (setenv "DISPLAY" ":1"))))))
13883 (inputs
13884 (list evolution-data-server
13885 feedbackd
13886 folks
13887 glib
13888 gom
13889 gstreamer
13890 gst-plugins-base
13891 gst-plugins-good
13892 gst-plugins-bad
13893 gtk
13894 libcall-ui
13895 libgee
13896 libpeas-2
13897 libadwaita
13898 modem-manager
13899 sofia-sip))
13900 (native-inputs
13901 (list desktop-file-utils ;update-desktop-database
13902 gettext-minimal
13903 `(,glib "bin") ;glib-mkenums
13904 gtk-doc ;gtkdoc-scan
13905 `(,gtk+ "bin") ;gtk-update-icon-cache
13906 pkg-config
13907 python-docutils ;rst2man
13908 vala
13909 xorg-server-for-tests))
13910 (home-page "https://gitlab.gnome.org/GNOME/calls")
13911 (synopsis "Phone dialer and call handler")
13912 (description "Calls can make and answer phone calls using different
13913backends, such as ModemManager for phones and @acronym{SIP, Session Initiation
13914Protocol} for @acronym{VoIP, Voice over @acronym{IP, Internet Protocol}}.")
13915 (license license:gpl3+)))
13916
13917(define-public confy
13918 (package
13919 (name "confy")
13920 (version "0.8.0")
13921 (source (origin
13922 (method git-fetch)
13923 (uri (git-reference
13924 (url "https://git.sr.ht/~fabrixxm/confy")
13925 (commit version)))
13926 (file-name (git-file-name name version))
13927 (sha256
13928 (base32 "0hjj1klndhjmy02lxn15cnid0ydnxi0ki59h4an0zsyaha77s1lm"))))
13929 (build-system meson-build-system)
13930 (arguments
13931 (list #:glib-or-gtk? #t
13932 #:imported-modules (append %meson-build-system-modules
13933 %pyproject-build-system-modules)
13934 #:modules '((guix build meson-build-system)
13935 ((guix build pyproject-build-system) #:prefix py:)
13936 (guix build utils))
13937 #:phases
13938 #~(modify-phases %standard-phases
13939 (add-after 'unpack 'disable-post-install
13940 (lambda _
13941 (substitute* "meson.build"
13942 (("gtk_update_icon_cache: true")
13943 "gtk_update_icon_cache: false")
13944 (("update_desktop_database: true")
13945 "update_desktop_database: false"))))
13946 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
13947 (lambda* (#:key inputs outputs #:allow-other-keys)
13948 (wrap-program (search-input-file outputs "bin/confy")
13949 `("GUIX_PYTHONPATH" =
13950 (,(getenv "GUIX_PYTHONPATH")
13951 ,(py:site-packages inputs outputs)))
13952 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
13953 (inputs (list gtk
13954 libadwaita
13955 libnotify
13956 python
13957 python-icalendar
13958 python-pygobject))
13959 (native-inputs (list blueprint-compiler
13960 gettext-minimal
13961 `(,glib "bin")
13962 pkg-config))
13963 (home-page "https://confy.kirgroup.net")
13964 (synopsis "Conference Schedule Viewer")
13965 (description "Confy is a conference schedule viewer for GNOME. It allows
13966you to mark favorite talks and highlights conflicts between favorited talks.")
13967 (license license:gpl3+)))
13968
13969(define-public gtk-frdp
13970 ;; No recent release (see:
13971 ;; <https://gitlab.gnome.org/GNOME/gtk-frdp/-/issues/39>). Use the latest
13972 ;; commit.
13973 (let ((commit "83854a24e31d1c07519f6e4393fe280d3b59e080")
13974 (revision "0"))
13975 (package
13976 (name "gtk-frdp")
13977 ;; https://gitlab.gnome.org/GNOME/gtk-frdp/-/issues/39
13978 (version (git-version "3.37.1" revision commit))
13979 (source
13980 (origin
13981 (method git-fetch)
13982 (uri (git-reference
13983 (url "https://gitlab.gnome.org/GNOME/gtk-frdp")
13984 (commit commit)))
13985 (file-name (git-file-name "gtk-frdp" version))
13986 (sha256
13987 (base32
13988 "1cangyawn69c8vcfgd55k147jblyg8j7kr0mmsc679k422nj5zg9"))))
13989 (build-system meson-build-system)
13990 (arguments
13991 (list #:glib-or-gtk? #t))
13992 (inputs
13993 (list freerdp fuse gtk+))
13994 (native-inputs
13995 (list `(,glib "bin") gobject-introspection pkg-config vala))
13996 (home-page "https://gitlab.gnome.org/GNOME/gtk-frdp")
13997 (synopsis "RDP viewer widget for Gtk")
13998 (description "This library provides a widget to view
13999@acronym{RDP, Remote Desktop Protocol} sessions.")
14000 (license license:gpl3+))))
14001
14002(define gtk-frdp-for-gnome-connections
14003 (let ((commit "6cfdc840159bb349310c3b81cd2df949f1522760")
14004 (revision "1"))
14005 (package
14006 (inherit gtk-frdp)
14007 (version (git-version "45.90" revision commit))
14008 (source
14009 (origin
14010 (method git-fetch)
14011 (uri (git-reference
14012 (url "https://gitlab.gnome.org/GNOME/gtk-frdp")
14013 (commit commit)))
14014 (file-name (git-file-name "gtk-frdp" version))
14015 (sha256
14016 (base32
14017 "1xgilpa2zkcnyi9hvj8yw1db19pz5d1xgvm1pm79mjs4ls8pdn0n")))))))
14018
14019(define-public gnome-connections
14020 (package
14021 (name "gnome-connections")
14022 (version "49.0")
14023 (source (origin
14024 (method url-fetch)
14025 (uri (string-append "mirror://gnome/sources/" name "/"
14026 (version-major version) "/"
14027 name "-" version ".tar.xz"))
14028 (sha256
14029 (base32
14030 "17kk9jra5c6gk75r004ddxzwj9m3dvn23bjz4d3lg4alp9k987rs"))
14031 (snippet
14032 #~(begin
14033 (use-modules (guix build utils))
14034 (delete-file-recursively "subprojects")))))
14035 (build-system meson-build-system)
14036 (arguments
14037 (list
14038 #:glib-or-gtk? #t
14039 #:phases
14040 #~(modify-phases %standard-phases
14041 (add-after 'unpack 'patch-meson
14042 (lambda _
14043 (substitute* "meson.build"
14044 (("gtk_update_icon_cache: true")
14045 "gtk_update_icon_cache: false")
14046 (("update_desktop_database: true")
14047 "update_desktop_database: false"))))
14048 (add-after 'unpack 'disable-onboarding-dialog
14049 (lambda _
14050 (substitute* "src/application.vala"
14051 (("\\(new OnboardingDialog \\(main_window\\)\\).present \\(\\);")
14052 "// Skip the onboarding dialog")))))))
14053 (inputs
14054 (list gtk+ gtk-frdp-for-gnome-connections gtk-vnc libhandy libsecret libxml2))
14055 (native-inputs
14056 (list gettext-minimal
14057 `(,glib "bin")
14058 itstool
14059 pkg-config
14060 vala))
14061 (home-page "https://apps.gnome.org/Connections")
14062 (synopsis "View and use other desktops")
14063 (description "Connections allows the user to connect to different
14064real or virtual machines, using @acronym{VNC, Virtual Network Computing}
14065or @acronym{RDP, Remote Desktop Protocol}.")
14066 (license license:gpl3+)))
14067
14068(define-public lock
14069 (package
14070 (name "lock")
14071 (version "1.1.3")
14072 (source (origin
14073 (method git-fetch)
14074 (uri (git-reference
14075 (url "https://github.com/konstantintutsch/Lock")
14076 (commit (string-append "v" version))))
14077 (file-name (git-file-name name version))
14078 (sha256
14079 (base32 "18xyh7g4qqm2nx9wfd5bxf293dk0ahwr1acj4ypwswasv0isxdf9"))))
14080 (build-system meson-build-system)
14081 (arguments
14082 (list
14083 #:phases
14084 #~(modify-phases %standard-phases
14085 (add-after 'unpack 'disable-gtk-update-icon-cache
14086 (lambda _
14087 (substitute* "meson.build"
14088 (("(gtk_update_icon_cache|update_desktop_database): true" _ key)
14089 (string-append key ": false"))))))))
14090 (inputs (list gpgme
14091 glib
14092 libadwaita))
14093 (native-inputs (list blueprint-compiler
14094 gettext-minimal
14095 gobject-introspection
14096 `(,glib "bin")
14097 pkg-config))
14098 (home-page "https://konstantintutsch.com/Lock")
14099 (synopsis "Graphical front-end for GNU Privacy Guard")
14100 (description "This package provides a graphical frontend for
14101GNU Privacy Guard built with libadwaita.")
14102 (license license:expat)))
14103
14104(define-public gnome-software
14105 (package
14106 (name "gnome-software")
14107 (version "49.3")
14108 (source
14109 (origin
14110 (method url-fetch)
14111 (uri
14112 (string-append "mirror://gnome/sources/"
14113 name "/"
14114 (version-major version) "/"
14115 name "-" version ".tar.xz"))
14116 (sha256 (base32 "004xzx6qm30s66icwqn7xb855klz168swjbb5cvhix5w28pxnipn"))))
14117 (build-system meson-build-system)
14118 (arguments
14119 (list
14120 #:test-options
14121 ;; The plugins test suite requires a D-Bus system session, which
14122 ;; attempts to set its session under /var/run and fails.
14123 #~(list "--no-suite=plugins")
14124 #:glib-or-gtk? #t
14125 #:configure-flags
14126 #~(list "-Dhardcoded_proprietary_webapps=false"
14127 (string-append "-Dc_link_args=-Wl,-rpath=" #$output
14128 "/lib/gnome-software"))
14129 #:phases
14130 #~(modify-phases %standard-phases
14131 (add-after 'unpack 'patch-iso-codes
14132 (lambda _
14133 (with-directory-excursion "src"
14134 (substitute* "./gs-language.c"
14135 (("DATADIR")
14136 (format #f "\"~a/share\"" #$iso-codes))))))
14137 (add-after 'unpack 'disable-gtk-update-icon-cache
14138 (lambda _
14139 (substitute* "meson_post_install.sh"
14140 (("(gtk-update-icon-cache|update-desktop-database)")
14141 "true")))))))
14142 (native-inputs
14143 (list docbook-xsl
14144 gettext-minimal
14145 `(,glib "bin")
14146 gtk-doc/stable
14147 itstool
14148 libglib-testing
14149 libxslt ;for xsltproc
14150 pkg-config
14151 sysprof
14152 valgrind/pinned))
14153 (inputs
14154 (list appstream
14155 flatpak
14156 fwupd
14157 gdk-pixbuf
14158 gtk
14159 json-glib
14160 libadwaita
14161 libgudev
14162 libostree
14163 libsoup-minimal
14164 libxmlb
14165 malcontent
14166 packagekit
14167 polkit))
14168 (synopsis "Graphical software manager for GNOME")
14169 (description "GNOME Software allows you to find and install new
14170applications and system extensions and remove existing installed
14171applications.")
14172 (license license:gpl2+)
14173 (home-page "https://apps.gnome.org/en/Software/")))