projects/guix·blob javascript-team · refs

14205 lines · 533.3 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 documentation)
135 #:use-module (gnu packages elf)
136 #:use-module (gnu packages enchant)
137 #:use-module (gnu packages compiler-tools)
138 #:use-module (gnu packages fonts)
139 #:use-module (gnu packages file-systems)
140 #:use-module (gnu packages firmware)
141 #:use-module (gnu packages fontutils)
142 #:use-module (gnu packages freedesktop)
143 #:use-module (gnu packages game-development)
144 #:use-module (gnu packages gcc)
145 #:use-module (gnu packages gettext)
146 #:use-module (gnu packages ghostscript)
147 #:use-module (gnu packages gimp)
148 #:use-module (gnu packages gl)
149 #:use-module (gnu packages glib)
150 #:use-module (gnu packages gnupg)
151 #:use-module (gnu packages gnuzilla)
152 #:use-module (gnu packages geo)
153 #:use-module (gnu packages gperf)
154 #:use-module (gnu packages graphviz)
155 #:use-module (gnu packages groff)
156 #:use-module (gnu packages gstreamer)
157 #:use-module (gnu packages gtk)
158 #:use-module (gnu packages guile)
159 #:use-module (gnu packages guile-xyz)
160 #:use-module (gnu packages hardware)
161 #:use-module (gnu packages haskell-xyz)
162 #:use-module (gnu packages ibus)
163 #:use-module (gnu packages icu4c)
164 #:use-module (gnu packages image)
165 #:use-module (gnu packages imagemagick)
166 #:use-module (gnu packages inkscape)
167 #:use-module (gnu packages iso-codes)
168 #:use-module (gnu packages kerberos)
169 #:use-module (gnu packages language)
170 #:use-module (gnu packages libcanberra)
171 #:use-module (gnu packages libffi)
172 #:use-module (gnu packages libunistring)
173 #:use-module (gnu packages libunwind)
174 #:use-module (gnu packages libusb)
175 #:use-module (gnu packages linux)
176 #:use-module (gnu packages lirc)
177 #:use-module (gnu packages llvm)
178 #:use-module (gnu packages lsof)
179 #:use-module (gnu packages lua)
180 #:use-module (gnu packages mail)
181 #:use-module (gnu packages man)
182 #:use-module (gnu packages markup)
183 #:use-module (gnu packages messaging)
184 #:use-module (gnu packages mp3)
185 #:use-module (gnu packages multiprecision)
186 #:use-module (gnu packages music)
187 #:use-module (gnu packages ncurses)
188 #:use-module (gnu packages nettle)
189 #:use-module (gnu packages networking)
190 #:use-module (gnu packages node-xyz)
191 #:use-module (gnu packages nss)
192 #:use-module (gnu packages ocr)
193 #:use-module (gnu packages openldap)
194 #:use-module (gnu packages package-management)
195 #:use-module (gnu packages password-utils)
196 #:use-module (gnu packages pcre)
197 #:use-module (gnu packages pdf)
198 #:use-module (gnu packages perl)
199 #:use-module (gnu packages photo)
200 #:use-module (gnu packages pkg-config)
201 #:use-module (gnu packages polkit)
202 #:use-module (gnu packages popt)
203 #:use-module (gnu packages pretty-print)
204 #:use-module (gnu packages protobuf)
205 #:use-module (gnu packages pulseaudio)
206 #:use-module (gnu packages python)
207 #:use-module (gnu packages python-build)
208 #:use-module (gnu packages python-compression)
209 #:use-module (gnu packages python-crypto)
210 #:use-module (gnu packages python-web)
211 #:use-module (gnu packages python-xyz)
212 #:use-module (gnu packages rdesktop)
213 #:use-module (gnu packages rdf)
214 #:use-module (gnu packages readline)
215 #:use-module (gnu packages ruby-xyz)
216 #:use-module (gnu packages rust)
217 #:use-module (gnu packages rust-apps)
218 #:use-module (gnu packages samba)
219 #:use-module (gnu packages scanner)
220 #:use-module (gnu packages sdl)
221 #:use-module (gnu packages search)
222 #:use-module (gnu packages selinux)
223 #:use-module (gnu packages serialization)
224 #:use-module (gnu packages slang)
225 #:use-module (gnu packages speech)
226 #:use-module (gnu packages spice)
227 #:use-module (gnu packages sqlite)
228 #:use-module (gnu packages ssh)
229 #:use-module (gnu packages swig)
230 #:use-module (gnu packages telephony)
231 #:use-module (gnu packages tex)
232 #:use-module (gnu packages texinfo)
233 #:use-module (gnu packages text-editors)
234 #:use-module (gnu packages time)
235 #:use-module (gnu packages tls)
236 #:use-module (gnu packages valgrind)
237 #:use-module (gnu packages version-control)
238 #:use-module (gnu packages video)
239 #:use-module (gnu packages virtualization)
240 #:use-module (gnu packages vpn)
241 #:use-module (gnu packages web)
242 #:use-module (gnu packages webkit)
243 #:use-module (gnu packages window-management)
244 #:use-module (gnu packages xdisorg)
245 #:use-module (gnu packages xiph)
246 #:use-module (gnu packages xml)
247 #:use-module (gnu packages xorg)
248 #:use-module (gnu artwork)
249 #:use-module (guix build-system cargo)
250 #:use-module (guix build-system cmake)
251 #:use-module (guix build-system copy)
252 #:use-module (guix build-system glib-or-gtk)
253 #:use-module (guix build-system gnu)
254 #:use-module (guix build-system meson)
255 #:use-module (guix build-system pyproject)
256 #:use-module (guix build-system trivial)
257 #:use-module ((guix config) #:select (%storedir))
258 #:use-module (guix deprecation)
259 #:use-module (guix download)
260 #:use-module (guix git-download)
261 #:use-module ((guix licenses) #:prefix license:)
262 #:use-module (guix packages)
263 #:use-module (guix platform)
264 #:use-module (guix utils)
265 #:use-module (guix gexp)
266 #:use-module (ice-9 match)
267 #:use-module (srfi srfi-1))
268
269(define-public gupnp-igd
270 (package
271 (name "gupnp-igd")
272 (version "1.6.0")
273 (source
274 (origin
275 (method url-fetch)
276 (uri
277 (string-append "mirror://gnome/sources/" name "/"
278 (version-major+minor version) "/"
279 name "-" version ".tar.xz"))
280 (sha256
281 (base32 "0x0vfw8jzz7ih43qd5w7qx2gr56hnqra7wk895ni48mb761rg6a0"))))
282 (build-system meson-build-system)
283 (outputs '("out" "doc"))
284 (arguments
285 (list
286 #:glib-or-gtk? #t ; To wrap binaries and compile schemas
287 #:configure-flags #~(list "-Dgtk_doc=true")
288 #:phases
289 #~(modify-phases %standard-phases
290 (add-before 'check 'set-home
291 (lambda _
292 ;; A test using GIO expects ~/.config/glib-2.0/settings to be
293 ;; writable.
294 (setenv "HOME" (getcwd))))
295 (add-after 'install 'move-doc
296 (lambda* (#:key outputs #:allow-other-keys)
297 (mkdir-p (string-append #$output:doc "/share"))
298 (rename-file
299 (string-append #$output "/share/gtk-doc")
300 (string-append #$output:doc "/share/gtk-doc")))))))
301 (native-inputs
302 (list docbook-xml-4.1.2
303 docbook-xsl
304 `(,glib "bin")
305 gobject-introspection
306 gsettings-desktop-schemas
307 gtk-doc/stable
308 pkg-config))
309 (propagated-inputs
310 ;; These libraries are required by the .pc file.
311 (list glib
312 glib-networking
313 gupnp))
314 (synopsis "UPnP IGD for GNOME")
315 (description "GUPnP-IGD is a library to handle UPnP IGD port mapping.")
316 (home-page "https://gitlab.gnome.org/GNOME/gupnp-igd")
317 (license license:lgpl2.1+)))
318
319(define-public brasero
320 (package
321 (name "brasero")
322 (version "3.12.3")
323 (source (origin
324 (method url-fetch)
325 (uri (string-append "mirror://gnome/sources/brasero/"
326 (version-major+minor version) "/"
327 "brasero-" version ".tar.xz"))
328 (sha256
329 (base32
330 "05gabybkl7xfinwx97i4scp9hic0dlxj7gh03dyj0hd16fp9wx47"))
331 (patches
332 (search-patches "brasero-fix-gcc-14-build-failure.patch"))))
333 (build-system glib-or-gtk-build-system)
334 (arguments
335 `(#:configure-flags (list
336 (string-append "--with-girdir="
337 (assoc-ref %outputs "out")
338 "/share/gir-1.0")
339 (string-append "--with-typelibdir="
340 (assoc-ref %outputs "out")
341 "/lib/girepository-1.0"))
342 #:phases
343 (modify-phases %standard-phases
344 (add-before 'configure 'embed-growisofs-reference
345 (lambda* (#:key inputs #:allow-other-keys)
346 (let ((dvd+rw-tools (assoc-ref inputs "dvd+rw-tools")))
347 (substitute* "plugins/growisofs/burn-growisofs.c"
348 (("(\")(growisofs)" _ prefix command)
349 (string-append prefix dvd+rw-tools "/bin/" command)))))))))
350 (propagated-inputs
351 (list hicolor-icon-theme))
352 (native-inputs
353 (list intltool
354 itstool
355 `(,glib "bin") ; glib-compile-schemas, etc.
356 gobject-introspection
357 pkg-config))
358 (inputs
359 (list dvd+rw-tools
360 glib
361 gstreamer
362 gst-plugins-base
363 gtk+
364 libcanberra
365 libice
366 libnotify
367 libsm
368 libxml2
369 totem-pl-parser))
370 (home-page "https://wiki.gnome.org/Apps/Brasero")
371 (synopsis "CD/DVD burning tool for Gnome")
372 (description "Brasero is an application to burn CD/DVD for the Gnome
373Desktop. It is designed to be as simple as possible and has some unique
374features to enable users to create their discs easily and quickly.")
375 (license license:gpl2+)))
376
377;;; Minimal variant, used to break a cycle with Inkscape.
378(define-public libcloudproviders-minimal
379 (package
380 (name "libcloudproviders-minimal")
381 (version "0.3.6")
382 (source
383 (origin
384 (method url-fetch)
385 (uri
386 (string-append "mirror://gnome/sources/libcloudproviders/"
387 (version-major+minor version)
388 "/libcloudproviders-" version ".tar.xz"))
389 (sha256
390 (base32 "1dvlbsh5pfrnj745dlb1w0m4s1gy063y8h54qp2z9pjg785i2x9v"))))
391 (build-system meson-build-system)
392 (arguments
393 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
394 #:configure-flags (list "-Dintrospection=false"
395 "-Denable-gtk-doc=false"
396 "-Dvapigen=false")))
397 (native-inputs
398 (list `(,glib "bin") pkg-config vala))
399 (inputs
400 (list glib glib-networking))
401 (synopsis "Cloudproviders Integration API")
402 (description "Libcloudproviders is a DBus API that allows cloud storage sync
403clients to expose their services. Clients such as file managers and desktop
404environments can then provide integrated access to the cloud providers
405services.")
406 (home-page "https://csorianognome.wordpress.com/2015/07/07/cloud-providers/")
407 (license license:lgpl3+)
408 (properties '((upstream-name . "libcloudproviders")))))
409
410(define-public libcloudproviders
411 (package/inherit libcloudproviders-minimal
412 (name "libcloudproviders")
413 (outputs (cons "doc" (package-outputs libcloudproviders-minimal)))
414 (arguments
415 (substitute-keyword-arguments arguments
416 ((#:configure-flags _)
417 '(list "-Denable-gtk-doc=true")) ;false by default
418 ((#:phases phases '%standard-phases)
419 `(modify-phases %standard-phases
420 (add-after 'install 'move-doc
421 (lambda* (#:key outputs #:allow-other-keys)
422 (let* ((out (assoc-ref outputs "out"))
423 (doc (assoc-ref outputs "doc")))
424 (mkdir-p (string-append doc "/share"))
425 (rename-file
426 (string-append out "/share/gtk-doc")
427 (string-append doc "/share/gtk-doc")))))))))
428 (native-inputs
429 (append
430 `(("gobject-introspection" ,gobject-introspection)
431 ("gtk-doc" ,gtk-doc/stable))
432 (package-native-inputs libcloudproviders-minimal)))))
433
434(define-public gnome-js-common
435 (package
436 (name "gnome-js-common")
437 (version "0.1.2")
438 (source
439 (origin
440 (method url-fetch)
441 (uri
442 (string-append "mirror://gnome/sources/" name "/"
443 (version-major+minor version) "/"
444 name "-" version ".tar.gz"))
445 (sha256
446 (base32 "1zv5b9bcbclzj64xd9kgql4ndmbwvvi6cl937ykw8fp21xgh8z7y"))))
447 (build-system glib-or-gtk-build-system)
448 (arguments
449 `(#:configure-flags
450 (list "--disable-static")
451 #:phases
452 (modify-phases %standard-phases
453 ,@(if (or (target-riscv64?)
454 (target-ppc64le?)
455 (target-aarch64?))
456 `((add-after 'unpack 'update-config-scripts
457 (lambda* (#:key native-inputs inputs #:allow-other-keys)
458 (for-each (lambda (file)
459 (install-file
460 (search-input-file
461 (or native-inputs inputs)
462 (string-append "/bin/" file)) "."))
463 '("config.guess" "config.sub")))))
464 '()))))
465 (native-inputs
466 `(,@(if (or (target-riscv64?)
467 (target-ppc64le?)
468 (target-aarch64?))
469 `(("config" ,config))
470 `())
471 ("gettext" ,gettext-minimal)
472 ("intltool" ,intltool)
473 ("pkg-config" ,pkg-config)))
474 (synopsis "Common JS Modules")
475 (description "GNOME-JS-Common provides common modules for GNOME JavaScript
476bindings.")
477 (home-page "https://wiki.gnome.org/Projects/Seed")
478 (license license:gpl3+)))
479
480(define-public libdmapsharing
481 (package
482 (name "libdmapsharing")
483 (version "3.9.14")
484 (source
485 (origin
486 (method url-fetch)
487 (uri
488 (string-append "https://www.flyn.org/projects/"
489 name "/" name "-" version ".tar.gz"))
490 (sha256
491 (base32 "0h0ss2pj5vyj3xfbp4b0lqp8b3k6fw20mqgdg9gwljs34fa0vmja"))))
492 (build-system glib-or-gtk-build-system)
493 (outputs '("out" "doc"))
494 (arguments
495 (list #:tests? #f ; Tests require networking.
496 #:configure-flags
497 #~(list "--disable-static"
498 (string-append "--with-html-dir=" #$output:doc
499 "/share/gtk-doc/html"))))
500 (native-inputs
501 (list check
502 docbook-xml-4.3
503 gobject-introspection
504 pedansee
505 pkg-config))
506 (inputs
507 (list avahi
508 (librsvg-for-system)
509 libgee
510 libsoup
511 gst-plugins-base
512 gtk+))
513 (propagated-inputs
514 (list glib glib-networking gstreamer libsoup))
515 (synopsis "Media management library")
516 (description "Libdmapsharing is a library which allows programs to access,
517share and control the playback of media content using DMAP (DAAP, DPAP & DACP).
518It is written in C using GObject and libsoup.")
519 (home-page "https://gitlab.gnome.org/GNOME/libdmapsharing/")
520 (license license:lgpl2.1+)))
521
522(define-public gtx
523 (package
524 (name "gtx")
525 (version "0.2.2")
526 (source
527 (origin
528 (method url-fetch)
529 (uri
530 (string-append "https://launchpad.net/gtx/trunk/"
531 version "/+download/gtx-" version ".tar.gz"))
532 (sha256
533 (base32 "0i4zvn5v4rf0cw3fxylk6j2pyy5lkrswdiw8jdxkys0ph0nan33n"))))
534 (build-system glib-or-gtk-build-system)
535 (outputs '("out" "doc"))
536 (arguments
537 `(#:configure-flags
538 (list
539 "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
540 "--disable-static"
541 "--enable-gtk-doc"
542 (string-append "--with-html-dir="
543 (assoc-ref %outputs "doc")
544 "/share/gtk-doc/html"))))
545 (native-inputs
546 (list gobject-introspection gtk-doc/stable pkg-config))
547 (propagated-inputs
548 (list glib))
549 (synopsis "GLib Testing Framework")
550 (description "GTX is a small collection of convenience functions intended to
551enhance the GLib testing framework. With specific emphasis on easing the pain
552of writing test cases for asynchronous interactions.")
553 (home-page "https://launchpad.net/gtx")
554 (license license:lgpl2.1+)))
555
556(define-public decibels
557 (package
558 (name "decibels")
559 (version "49.6.1")
560 (source
561 (origin
562 (method url-fetch)
563 (uri
564 (string-append "mirror://gnome/sources/" name "/"
565 (version-major version) "/"
566 name "-" version ".tar.xz"))
567 (sha256
568 (base32
569 "1m8sh2kv5slax4jv36aj0mciw91sqxjagpngky27ql93vwablrws"))
570 (patches
571 (search-patches "decibels-set-root-dir.patch"))))
572 (build-system meson-build-system)
573 (arguments
574 (list
575 #:glib-or-gtk? #t
576 #:phases
577 #~(modify-phases %standard-phases
578 (add-after 'unpack 'fix-gst-init
579 (lambda _
580 ;; `null' is no longer accepted as of gstreamer 2.28.1 (see:
581 ;; <https://gitlab.gnome.org/GNOME/decibels/-/merge_requests/178>).
582 (substitute* "src/stream.ts"
583 (("Gst.init\\(null)")
584 "Gst.init([])"))))
585 (add-after 'unpack 'skip-gnome-post-install
586 (lambda _
587 (substitute* "meson.build"
588 (("gtk_update_icon_cache: true")
589 "gtk_update_icon_cache: false")
590 (("update_desktop_database: true")
591 "update_desktop_database: false"))))
592 (add-after 'install 'wrap-program
593 (lambda _
594 (let ((typelib-path (getenv "GI_TYPELIB_PATH")))
595 (wrap-program (string-append #$output "/bin/org.gnome.Decibels")
596 `("GI_TYPELIB_PATH" ":" prefix (,typelib-path))))))
597 (add-after 'glib-or-gtk-wrap 'install-alias
598 (lambda _
599 (symlink (string-append #$output "/bin/org.gnome.Decibels")
600 (string-append #$output "/bin/decibels")))))))
601 (native-inputs
602 (list blueprint-compiler
603 gettext-minimal
604 `(,glib "bin")
605 pkg-config
606 node-typescript))
607 (inputs
608 (list bash-minimal
609 gjs
610 gst-plugins-bad ;for GstPlay
611 gstreamer
612 libadwaita))
613 (home-page "https://gitlab.gnome.org/GNOME/decibels")
614 (synopsis "GNOME audio file player")
615 (description "Decibels, also known as Audio Player, is an audio player
616focused on simplicity. It offers few advanced features such as:
617@itemize
618@item{An elegant waveform of the track.}
619@item{Adjustable playback speed.}
620@item{Easy seek controls.}
621@item{Playing multiple files at the same time.}
622@end itemize")
623 (license license:gpl3+)))
624
625(define-public dee
626 (package
627 (name "dee")
628 (version "1.2.7")
629 (source
630 (origin
631 (method url-fetch)
632 (uri
633 (string-append "https://launchpad.net/dee/1.0/"
634 version "/+download/dee-" version ".tar.gz"))
635 (sha256
636 (base32 "12mzffk0lyd566y46x57jlvb9af152b4dqpasr40zal4wrn37w0v"))
637 (patches
638 (search-patches "dee-vapi.patch"))))
639 (build-system glib-or-gtk-build-system)
640 (outputs '("out" "doc"))
641 (arguments
642 (list #:configure-flags
643 #~(list "--disable-maintainer-flags"
644 (string-append "--with-pygi-overrides-dir="
645 #$output "/lib/python"
646 #$(version-major+minor
647 (package-version python))
648 "/site-packages/gi/overrides")
649 (string-append "--with-html-dir="
650 #$output "/share/gtk-doc/html"))
651 #:phases
652 #~(modify-phases %standard-phases
653 (add-after 'unpack 'disable-failing-tests
654 (lambda _
655 (substitute* "tests/test-icu.c"
656 (("g_test_add \\(DOMAIN\"/Default/AsciiFolder\",\
657 Fixture, 0,")
658 "")
659 (("setup, test_ascii_folder, teardown\\);")
660 ""))))
661 (add-before 'check 'pre-check
662 (lambda _
663 ;; Tests require a running dbus-daemon.
664 (system "dbus-daemon &")
665 ;; For missing '/etc/machine-id'.
666 (setenv "DBUS_FATAL_WARNINGS" "0"))))))
667 (native-inputs
668 (list dbus
669 dbus-test-runner
670 docbook-xml-4.3
671 gobject-introspection
672 gtk-doc/stable
673 ;; Would only be required by configure flag "--enable-extended-tests".
674 ;;gtx
675 pkg-config
676 python-pygobject
677 python-wrapper
678 vala))
679 (inputs (list icu4c))
680 (propagated-inputs (list glib))
681 (synopsis "Model to synchronize multiple instances over DBus")
682 (description "Dee is a library that uses DBus to provide objects allowing
683you to create Model-View-Controller type programs across DBus. It also consists
684of utility objects which extend DBus allowing for peer-to-peer discoverability
685of known objects without needing a central registrar.")
686 (home-page "https://launchpad.net/dee")
687 (license
688 ;; Dual-licensed
689 (list
690 license:lgpl3+
691 license:gpl3+))))
692
693(define-public foundry
694 (package
695 (name "foundry")
696 (version "1.0.1")
697 (source
698 (origin
699 (method git-fetch)
700 (uri (git-reference
701 (url "https://gitlab.gnome.org/GNOME/foundry")
702 (commit version)))
703 (file-name (git-file-name name version))
704 (sha256
705 (base32 "17f7r6x396g0s5d2w0f2mz5xxmmvjzh8v8w9ivarmgf5xrr3vb1f"))))
706 (build-system meson-build-system)
707 (arguments
708 (list
709 #:phases
710 #~(modify-phases %standard-phases
711 (add-before 'check 'set-HOME
712 (lambda _
713 (setenv "HOME" "/tmp"))))))
714 (native-inputs
715 (list gettext-minimal
716 `(,glib "bin")
717 pkg-config))
718 (inputs
719 (list cmark
720 editorconfig-core-c
721 flatpak
722 glib
723 gom
724 gtksourceview
725 json-glib
726 libdex
727 libgit2
728 libpeas-2
729 libspelling
730 libyaml
731 sysprof
732 template-glib
733 vte
734 webkitgtk))
735 (home-page "https://gitlab.gnome.org/GNOME/foundry")
736 (synopsis "Platform for developer tools in GNOME")
737 (description
738 "This tool aims to extract much of what makes GNOME Builder
739an IDE into a library and companion command-line tool. It features support
740for language servers, build systems, container systems, and more.")
741 (license license:lgpl2.1+)))
742
743(define-public zeitgeist
744 (package
745 (name "zeitgeist")
746 (version "1.0.4")
747 (source
748 (origin
749 (method git-fetch)
750 (uri
751 (git-reference
752 (url "https://gitlab.freedesktop.org/zeitgeist/zeitgeist.git")
753 (commit
754 (string-append "v" version))))
755 (file-name
756 (git-file-name name version))
757 (sha256
758 (base32 "07b1ahj3vd3m8srwkrh7dl3ymr7d55xiiszny44q13g06pq4svch"))))
759 (build-system glib-or-gtk-build-system)
760 (arguments
761 (list #:configure-flags #~(list "--enable-explain-queries"
762 "--enable-fts"
763 "--enable-docs")
764 #:phases
765 #~(modify-phases %standard-phases
766 (add-after 'unpack 'disable-failing-tests
767 (lambda _
768 (substitute* "test/direct/Makefile.am"
769 ((" log-test ")
770 ""))
771 (substitute* "test/c/Makefile.am"
772 ((" test-log ")
773 ""))))
774 (add-before 'bootstrap 'remove-autogen-script
775 (lambda _
776 ;; To honor `autoreconf -vif` by build-system.
777 (delete-file "autogen.sh"))))))
778 (native-inputs
779 (list autoconf
780 automake
781 docbook-xml-4.3
782 gettext-minimal
783 gobject-introspection
784 gtk-doc/stable
785 libtool
786 pkg-config
787 vala
788 xorg-server-for-tests))
789 (inputs
790 (list dee
791 gtk+
792 json-glib
793 sqlite
794 telepathy-glib
795 python-wrapper
796 python-rdflib
797 xapian-1.4))
798 (propagated-inputs (list glib))
799 (synopsis "Desktop Activity Logging")
800 (description "Zeitgeist is a service which logs the users’s activities and
801events, anywhere from files opened to websites visited and conversations. It
802makes this information readily available for other applications to use. It is
803able to establish relationships between items based on similarity and usage
804patterns.")
805 (home-page "https://zeitgeist.freedesktop.org/")
806 (license
807 ;; Dual-licensed
808 (list
809 license:lgpl2.1+
810 license:gpl2+))))
811
812(define-public gnome-recipes
813 (package
814 (name "gnome-recipes")
815 (version "2.0.4")
816 (source (origin
817 (method git-fetch)
818 (uri (git-reference
819 (url "https://gitlab.gnome.org/GNOME/recipes")
820 (commit version)))
821 (file-name (git-file-name name version))
822 (sha256
823 (base32
824 "1h049mzqnlcfqwrhmzbq3pzzdglvy2bn9fj1p8wql7a60pn8sr32"))
825 (patches (search-patches "gnome-recipes-rest-in-soup.patch"))))
826 (build-system meson-build-system)
827 (arguments
828 (list
829 #:glib-or-gtk? #t
830 #:phases
831 #~(modify-phases %standard-phases
832 (add-after 'unpack 'skip-gtk-update-icon-cache
833 (lambda _
834 (substitute* "meson_post_install.py"
835 (("gtk-update-icon-cache") (which "true")))))
836 (add-after 'unpack 'unpack-libgd
837 (lambda _
838 (copy-recursively
839 #$(this-package-native-input "libgd-checkout")
840 "subprojects/libgd")))
841 (add-before 'configure 'relax-gcc-14-strictness
842 (lambda _
843 (setenv "CFLAGS"
844 (string-append
845 "-g -O2"
846 " -Wno-error=incompatible-pointer-types")))))))
847 (inputs (list glib
848 gnome-autoar
849 gnome-online-accounts
850 gspell
851 gtk+
852 json-glib
853 libcanberra
854 librest
855 libsoup))
856 (native-inputs (list desktop-file-utils ;for update-desktop-database
857 gettext-minimal
858 `(,glib "bin")
859 (origin
860 (method git-fetch)
861 (uri (git-reference
862 (url "https://gitlab.gnome.org/GNOME/libgd")
863 (commit "c7c7ff4e05d3fe82854219091cf116cce6b19de0")))
864 (file-name "libgd-checkout")
865 (sha256
866 (base32
867 "16yld0ap7qj1n96h4f2sqkjmibg7xx5xwkqxdfzam2nmyfdlrrrs")))
868 itstool
869 pkg-config
870 python))
871 (home-page "https://wiki.gnome.org/Apps/Recipes")
872 (synopsis "Discover recipes for preparing food")
873 (description "GNOME Recipes helps you discover what to cook today,
874tomorrow, the rest of the week and for special occasions.")
875 (license license:gpl3+)))
876
877(define-public gnome-music
878 (package
879 (name "gnome-music")
880 (version "50.0")
881 (source
882 (origin
883 (method url-fetch)
884 (uri
885 (string-append "mirror://gnome/sources/" name "/"
886 (version-major version) "/"
887 name "-" version ".tar.xz"))
888 (sha256
889 (base32
890 "1andyg0898h1adsdbs95bimi95xiz2ci3c3np3zcw2aqgv590a67"))))
891 (build-system meson-build-system)
892 (arguments
893 (list
894 #:glib-or-gtk? #t
895 #:phases
896 #~(modify-phases %standard-phases
897 (add-after 'unpack 'skip-gtk-update-icon-cache
898 ;; Don't create 'icon-theme.cache'.
899 (lambda _
900 (substitute* "meson.build"
901 (("gtk_update_icon_cache: true")
902 "gtk_update_icon_cache: false"))))
903 (add-after 'install 'wrap-gnome-music
904 (lambda* (#:key inputs outputs #:allow-other-keys)
905 (let* ((out (assoc-ref outputs "out"))
906 (pylib (string-append out "/lib/python"
907 #$(version-major+minor
908 (package-version
909 (this-package-input "python")))
910 "/site-packages")))
911 (wrap-program (string-append out "/bin/gnome-music")
912 `("GI_TYPELIB_PATH" =
913 (,(getenv "GI_TYPELIB_PATH")))
914 `("GST_PLUGIN_SYSTEM_PATH" suffix
915 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
916 `("GRL_PLUGIN_PATH" =
917 (,(getenv "GRL_PLUGIN_PATH")))
918 `("GUIX_PYTHONPATH" =
919 (,(getenv "GUIX_PYTHONPATH") ,pylib)))))))))
920 (native-inputs
921 (list desktop-file-utils
922 gettext-minimal
923 `(,glib "bin")
924 gobject-introspection
925 itstool
926 pkg-config))
927 (inputs
928 (list bash-minimal
929 gnome-online-accounts
930 grilo
931 grilo-plugins
932 gst-plugins-base
933 gst-plugins-good
934 gstreamer
935 gtk
936 gvfs
937 json-glib
938 localsearch
939 libadwaita
940 libdazzle
941 libmediaart
942 libsoup
943 python-pycairo
944 python-pygobject
945 python
946 tinysparql))
947 (synopsis "Simple music player for GNOME desktop")
948 (description "GNOME Music is the new GNOME music playing application that
949aims to combine an elegant and immersive browsing experience with simple
950and straightforward controls.")
951 (home-page "https://gitlab.gnome.org/GNOME/gnome-music")
952 (license license:gpl2+)))
953
954(define-public portablexdr
955 (package
956 (name "portablexdr")
957 (version "4.9.1")
958 (source
959 (origin
960 (method url-fetch)
961 (uri
962 (string-append "https://people.redhat.com/~rjones/" name "/files/"
963 name "-" version ".tar.gz"))
964 (sha256
965 (base32
966 "0b77ipvvi520nv7rr6jb1c3xryhc3m2mywhby7m48kfgag8vvx2w"))))
967 (build-system gnu-build-system)
968 (native-inputs (list bison flex))
969 (arguments
970 (list #:phases #~(modify-phases %standard-phases
971 (add-after 'unpack 'patch-rpcgen-parse
972 (lambda _
973 (substitute* "rpcgen_parse.y"
974 (("#include \"rpcgen_int.h\"")
975 (string-append
976 "#include \"rpcgen_int.h\"\n"
977 "int yylex();\n"))))))))
978 (synopsis "External Data Representation Library")
979 (description "PortableXDR is an implementation of External Data
980Representation (XDR) Library. It is a standard data serialization format, for
981uses such as computer network protocols. It allows data to be transferred
982between different kinds of computer systems.")
983 (home-page "https://people.redhat.com/~rjones/portablexdr/")
984 (license
985 (list
986 license:gpl2+
987 license:lgpl2.1+))))
988
989(define-public tepl
990 (package
991 (name "tepl")
992 (version "6.4.0")
993 (source
994 (origin
995 (method url-fetch)
996 (uri
997 (string-append "mirror://gnome/sources/" name "/"
998 (version-major+minor version) "/"
999 name "-" version ".tar.xz"))
1000 (sha256
1001 (base32
1002 "08bkp3wrvmcks0082lfw4a0ian9c6j68rdb43px0bkyhd43b4mjy"))))
1003 (build-system meson-build-system)
1004 (arguments
1005 `(#:glib-or-gtk? #t
1006 #:phases (modify-phases %standard-phases
1007 (add-after 'unpack 'disable-problematic-tests
1008 (lambda _
1009 ;; Only keep unit tests, as the interactive tests have
1010 ;; other dependencies.
1011 (substitute* "tests/meson.build"
1012 ((".*'interactive-tests'.*") ""))))
1013 (add-before 'check 'start-xserver
1014 (lambda _
1015 (system "Xvfb :1 &")
1016 (setenv "DISPLAY" ":1"))))))
1017 (native-inputs
1018 (list `(,glib "bin")
1019 gobject-introspection
1020 gtk-doc
1021 libxml2
1022 pkg-config
1023 xorg-server-for-tests))
1024 (inputs
1025 (list uchardet))
1026 (propagated-inputs
1027 ;; These are all required by tepl6.pc.
1028 (list amtk
1029 glib
1030 gsettings-desktop-schemas
1031 gtk+
1032 gtksourceview-4))
1033 (synopsis "Text editor product line")
1034 (description "Tepl is a library that eases the development of
1035GtkSourceView-based text editors and IDEs.")
1036 (home-page "https://wiki.gnome.org/Projects/Tepl")
1037 (license license:lgpl2.1+)))
1038
1039(define-public notification-daemon
1040 (package
1041 (name "notification-daemon")
1042 (version "3.20.0")
1043 (source
1044 (origin
1045 (method url-fetch)
1046 (uri
1047 (string-append "mirror://gnome/sources/" name "/"
1048 (version-major+minor version) "/"
1049 name "-" version ".tar.xz"))
1050 (sha256
1051 (base32
1052 "1rgchqi4j2ll7d6a7lgy7id0w9rrkwkgic1096fbm2zx6n7pc4yx"))))
1053 (build-system glib-or-gtk-build-system)
1054 (native-inputs
1055 (list intltool pkg-config))
1056 (inputs
1057 (list glib gtk+ libx11))
1058 (synopsis "Notification Daemon for GNOME Desktop")
1059 (description "Notification-Daemon is the server implementation of the
1060freedesktop.org desktop notification specification.")
1061 (home-page "https://wiki.gnome.org/Projects/NotificationDaemon")
1062 (license license:gpl2+)))
1063
1064(define-public metacity
1065 (package
1066 (name "metacity")
1067 (version "3.46.1")
1068 (source (origin
1069 (method url-fetch)
1070 (uri (string-append "mirror://gnome/sources/metacity/"
1071 (version-major+minor version) "/"
1072 "metacity-" version ".tar.xz"))
1073 (sha256
1074 (base32
1075 "1ifnbpiflaw72m0flysa5qy44c1axd2rr9zcparz5210c7vlkfh0"))))
1076 (build-system glib-or-gtk-build-system)
1077 (native-inputs
1078 (list gettext-minimal
1079 libtool
1080 autoconf
1081 automake
1082 pkg-config
1083 (list glib "bin")
1084 grep))
1085 (inputs
1086 (list libcanberra
1087 zenity
1088 libsm
1089 libice
1090 gtk+
1091 pango
1092 gsettings-desktop-schemas
1093 gobject-introspection
1094 libgtop
1095 libxcomposite
1096 libxcursor
1097 libxfixes
1098 libxdamage
1099 libxext
1100 libxpresent
1101 libxres
1102 libxrender
1103 libxinerama
1104 libx11
1105 libxrandr))
1106 (home-page "https://gitlab.gnome.org/GNOME/metacity")
1107 (synopsis "Simple compositing window manager")
1108 (description "Metacity is a window manager with a focus on simplicity and
1109usability rather than novelties or gimmicks. Its author has characterized it
1110as a \"boring window manager for the adult in you.\"")
1111 (license license:gpl2+)))
1112
1113(define-public mm-common
1114 (package
1115 (name "mm-common")
1116 (version "1.0.7")
1117 (source (origin
1118 (method url-fetch)
1119 (uri (string-append "mirror://gnome/sources/mm-common/"
1120 (version-major+minor version) "/"
1121 "mm-common-" version ".tar.xz"))
1122 (sha256
1123 (base32
1124 "0fbs587sm2xakdfwfv737dplpppl7b3qi24x3sdja60lg37byjj9"))))
1125 (build-system meson-build-system)
1126 (arguments
1127 (list
1128 #:phases
1129 #~(modify-phases %standard-phases
1130 (add-after 'unpack 'patch
1131 (lambda* (#:key inputs #:allow-other-keys)
1132 (substitute* "util/mm-common-prepare.in"
1133 (("ln") (search-input-file inputs "/bin/ln"))
1134 (("cp") (search-input-file inputs "/bin/cp"))
1135 (("sed") (search-input-file inputs "/bin/sed"))
1136 (("cat") (search-input-file inputs "/bin/cat"))))))))
1137 (native-inputs
1138 (list coreutils gettext-minimal pkg-config sed))
1139 (inputs
1140 (list python))
1141 (synopsis "Module of GNOME C++ bindings")
1142 (description "The mm-common module provides the build infrastructure
1143and utilities shared among the GNOME C++ binding libraries. Release
1144archives of mm-common include the Doxygen tag file for the GNU C++
1145Library reference documentation.")
1146 (home-page "https://gitlab.gnome.org/GNOME/mm-common")
1147 (license license:gpl2+)))
1148
1149(define-public phodav
1150 (package
1151 (name "phodav")
1152 (version "3.0")
1153 (source (origin
1154 (method url-fetch)
1155 (uri (string-append "mirror://gnome/sources/" name "/"
1156 (version-major+minor version) "/"
1157 name "-" version ".tar.xz"))
1158 (sha256
1159 (base32
1160 "1l9qs70yvwi9r8ph081mrsdy412kk0m9l9pgy77hsc2hdp8c4bir"))))
1161 (build-system meson-build-system)
1162 (arguments
1163 `(#:phases
1164 (modify-phases %standard-phases
1165 (add-after 'unpack 'fix-udev-rules-directory
1166 (lambda* (#:key outputs #:allow-other-keys)
1167 (let* ((out (assoc-ref outputs "out"))
1168 (rules (string-append out "/lib/udev/rules.d")))
1169 (substitute* "data/meson.build"
1170 (("udev\\.get_pkgconfig_variable\\('udevdir'\\)")
1171 (format #f "'~a'" rules))))))
1172 (add-before 'check 'set-temporary-home
1173 ;; Tests want to write into HOME.
1174 (lambda _
1175 (setenv "HOME" "/tmp"))))))
1176 (native-inputs
1177 (list docbook-xml-4.3
1178 gettext-minimal
1179 `(,glib "bin")
1180 gsettings-desktop-schemas
1181 gtk-doc/stable
1182 pkg-config))
1183 (inputs
1184 (list avahi
1185 libgudev))
1186 (propagated-inputs
1187 ;; These inputs are required by the pkg-config file.
1188 (list glib
1189 libsoup
1190 libxml2))
1191 (synopsis "WebDav server implementation using libsoup")
1192 (description "PhoDav was initially developed as a file-sharing mechanism for Spice,
1193but it is generic enough to be reused in other projects,
1194in particular in the GNOME desktop.")
1195 (home-page "https://wiki.gnome.org/phodav")
1196 (license license:lgpl2.1+)))
1197
1198(define-public gnome-color-manager
1199 (package
1200 (name "gnome-color-manager")
1201 (version "3.36.2")
1202 (source (origin
1203 (method url-fetch)
1204 (uri (string-append "mirror://gnome/sources/" name "/"
1205 (version-major+minor version) "/"
1206 name "-" version ".tar.xz"))
1207 (sha256
1208 (base32
1209 "0zw87bipnk4s8qcb659gd5n3i1lz1fzq43l81ggnd9afpcmd811r"))))
1210 (build-system meson-build-system)
1211 (arguments
1212 (list
1213 #:glib-or-gtk? #t
1214 #:phases
1215 #~(modify-phases %standard-phases
1216 (add-before 'check 'pre-check
1217 (lambda _
1218 ;; Tests require a running X server.
1219 (system "Xvfb :1 &")
1220 (setenv "DISPLAY" ":1"))))))
1221 (native-inputs
1222 (list desktop-file-utils
1223 gettext-minimal
1224 `(,glib "bin")
1225 `(,gtk+ "bin")
1226 itstool
1227 pkg-config
1228 xorg-server-for-tests))
1229 (inputs
1230 (list adwaita-icon-theme
1231 appstream-glib
1232 colord-gtk
1233 exiv2
1234 gnome-desktop
1235 libexif
1236 libtiff
1237 libxrandr
1238 libxtst
1239 libxxf86vm
1240 vte/gtk+-3
1241 xorgproto))
1242 (synopsis "Color profile manager for the GNOME desktop")
1243 (description "GNOME Color Manager is a session framework that makes
1244it easy to manage, install and generate color profiles
1245in the GNOME desktop.")
1246 (home-page "https://gitlab.gnome.org/GNOME/gnome-color-manager")
1247 (license license:gpl2+)))
1248
1249(define-public gssdp
1250 (package
1251 (name "gssdp")
1252 (version "1.6.4")
1253 (source (origin
1254 (method url-fetch)
1255 (uri (string-append "mirror://gnome/sources/" name "/"
1256 (version-major+minor version) "/"
1257 name "-" version ".tar.xz"))
1258 (sha256
1259 (base32
1260 "0ck04svd0cfh7wzydh1wykpw5rsra8aa5xml2dl3w7angzxzv5zz"))))
1261 (build-system meson-build-system)
1262 (arguments
1263 (list #:configure-flags
1264 #~(list "-Dgtk_doc=true"
1265 ;; Manpages are built using pandoc.
1266 #$@(if (this-package-native-input "pandoc")
1267 #~("-Dmanpages=true")
1268 #~("-Dmanpages=false")))))
1269 (native-inputs
1270 (append
1271 (if (supported-package? pandoc)
1272 (list pandoc)
1273 '())
1274 (list gettext-minimal
1275 `(,glib "bin")
1276 gi-docgen
1277 gobject-introspection
1278 pkg-config
1279 vala)))
1280 (inputs
1281 (list gtk))
1282 (propagated-inputs
1283 ;; The .pc file "Requires" libsoup.
1284 (list libsoup))
1285 (synopsis "GNOME GObject-based API over @acronym{SSDP, Simple Service Discovery Protocol}")
1286 (description "This package provides a library to handle resource discovery
1287and announcement over @acronym{SSDP, Simple Service Discovery Protocol} and
1288a debugging tool, @command{gssdp-device-sniffer}.")
1289 (home-page "https://gitlab.gnome.org/GNOME/gssdp")
1290 (license license:lgpl2.0+)))
1291
1292(define-public gupnp
1293 (package
1294 (name "gupnp")
1295 (version "1.6.9")
1296 (source (origin
1297 (method url-fetch)
1298 (uri (string-append "mirror://gnome/sources/" name "/"
1299 (version-major+minor version) "/"
1300 name "-" version ".tar.xz"))
1301 (sha256
1302 (base32
1303 "16w606l3v0q62v2y5qnl15z1n597xs53cdc7acpycn1mc7inxnrf"))))
1304 (build-system meson-build-system)
1305 (arguments
1306 (list
1307 #:configure-flags #~'("-Dgtk_doc=true")
1308 #:phases
1309 #~(modify-phases %standard-phases
1310 (add-before 'check 'pre-check
1311 (lambda _
1312 ;; Tests require a writable HOME.
1313 (setenv "HOME" (getcwd)))))))
1314 (native-inputs
1315 (list gettext-minimal
1316 gi-docgen
1317 `(,glib "bin")
1318 gobject-introspection
1319 gtk-doc/stable
1320 pkg-config
1321 vala))
1322 (propagated-inputs
1323 ;; These libraries are required by the .pc file.
1324 (list glib
1325 gsettings-desktop-schemas ;for ‘org.gnome.system.proxy’.
1326 gssdp
1327 libsoup
1328 libxml2))
1329 (synopsis "PnP API for GNOME")
1330 (description "This package provides GUPnP, an object-oriented framework
1331for creating UPnP devices and control points, written in C using
1332@code{GObject} and @code{libsoup}.")
1333 (home-page "https://gitlab.gnome.org/GNOME/gupnp")
1334 (license license:lgpl2.0+)))
1335
1336(define-public gupnp-dlna
1337 (package
1338 (name "gupnp-dlna")
1339 (version "0.12.0")
1340 (source (origin
1341 (method url-fetch)
1342 (uri (string-append "mirror://gnome/sources/" name "/"
1343 (version-major+minor version) "/"
1344 name "-" version ".tar.xz"))
1345 (sha256
1346 (base32
1347 "1rj8j2nz835slqs09bfp6hmyyf6v5azwjzin7v9jhmmwhmpvjlrx"))))
1348 (build-system meson-build-system)
1349 (native-inputs
1350 (list gettext-minimal
1351 `(,glib "bin")
1352 gobject-introspection
1353 gtk-doc/stable
1354 libxml2
1355 pkg-config
1356 vala))
1357 (inputs
1358 (list gstreamer gupnp))
1359 (propagated-inputs
1360 (list gst-plugins-base gst-plugins-good))
1361 (synopsis "GUPnP DLNA for GNOME")
1362 (description "This package provides a small utility library to
1363support DLNA-related tasks such as media profile guessing, transcoding to a
1364given profile, etc. DLNA is a subset of UPnP A/V.")
1365 (home-page "https://gitlab.gnome.org/GNOME/gupnp-dlna")
1366 (license license:lgpl2.0+)))
1367
1368(define-public gupnp-av
1369 (package
1370 (name "gupnp-av")
1371 (version "0.14.4")
1372 (source (origin
1373 (method url-fetch)
1374 (uri (string-append "mirror://gnome/sources/" name "/"
1375 (version-major+minor version) "/"
1376 name "-" version ".tar.xz"))
1377 (sha256
1378 (base32
1379 "1izq71qphyac02ynypwk0skxqzhfr0zrl7dap3sxrdaw4yrp9n91"))))
1380 (build-system meson-build-system)
1381 (native-inputs
1382 (list gettext-minimal
1383 `(,glib "bin")
1384 gobject-introspection
1385 gtk-doc/stable
1386 libxml2
1387 pkg-config
1388 vala))
1389 (inputs
1390 (list gtk+ gupnp))
1391 (synopsis "GUPnP A/V for GNOME")
1392 (description "This package provides a small library for handling
1393and implementation of UPnP A/V profiles.")
1394 (home-page "https://gitlab.gnome.org/GNOME/gupnp-av")
1395 (license license:lgpl2.0+)))
1396
1397(define-public libmediaart
1398 (package
1399 (name "libmediaart")
1400 (version "1.9.7")
1401 (source (origin
1402 (method url-fetch)
1403 (uri (string-append "mirror://gnome/sources/" name "/"
1404 (version-major+minor version) "/"
1405 name "-" version ".tar.xz"))
1406 (sha256
1407 (base32
1408 "0sqgasfaz11m702fgcmiijwxf1mb84rvip9akswd1n7hajgxshrb"))))
1409 (build-system meson-build-system)
1410 (native-inputs
1411 (list `(,glib "bin")
1412 gettext-minimal
1413 gobject-introspection
1414 pkg-config
1415 vala))
1416 (inputs
1417 (list gdk-pixbuf))
1418 (synopsis "Media art library for the GNOME desktop")
1419 (description
1420 "The libmediaart library is the foundation for media art caching,
1421extraction, and lookup for applications on the desktop.")
1422 (home-page "https://gitlab.gnome.org/GNOME/libmediaart")
1423 (license license:lgpl2.1+)))
1424
1425(define-public gnome-initial-setup
1426 (package
1427 (name "gnome-initial-setup")
1428 (version "48.1")
1429 (source (origin
1430 (method url-fetch)
1431 (uri (string-append "mirror://gnome/sources/gnome-initial-setup/"
1432 (version-major version)
1433 "/gnome-initial-setup-" version ".tar.xz"))
1434 (sha256
1435 (base32
1436 "0piij9snaj4gmy39jx94ca43slc9aihvmg8z4h9gyrdng5zbznmk"))))
1437 (build-system meson-build-system)
1438 (arguments
1439 (list
1440 #:configure-flags #~(list "-Dsystemd=false")
1441 #:glib-or-gtk? #t
1442 #:phases
1443 #~(modify-phases %standard-phases
1444 (add-after 'unpack 'set-gkbd-file-name
1445 (lambda* (#:key inputs #:allow-other-keys)
1446 ;; Allow the "Preview" button in the keyboard layout
1447 ;; selection dialog to display the layout.
1448 (substitute* "gnome-initial-setup/pages/keyboard/cc-input-chooser.c"
1449 (("\"tecla")
1450 (string-append "\"" (search-input-file
1451 inputs
1452 "bin/tecla")))))))))
1453 (native-inputs
1454 (list gettext-minimal
1455 `(,glib "bin")
1456 gobject-introspection
1457 pkg-config))
1458 (inputs
1459 (list accountsservice
1460 dconf
1461 elogind
1462 gdm
1463 geoclue
1464 gnome-desktop
1465 gnome-online-accounts
1466 gstreamer
1467 ibus
1468 json-glib
1469 mit-krb5
1470 libadwaita
1471 libgweather
1472 libnma
1473 libpwquality
1474 librest
1475 libsecret
1476 network-manager
1477 polkit
1478 tecla
1479 upower
1480 webkitgtk))
1481 (synopsis "Initial setup wizard for GNOME desktop")
1482 (description "This package provides a set-up wizard when a
1483user logs into GNOME for the first time. It typically provides a
1484tour of all gnome components and allows the user to set them up.")
1485 (home-page "https://gitlab.gnome.org/GNOME/gnome-initial-setup")
1486 (license license:gpl2)))
1487
1488(define-public gnome-user-share
1489 (package
1490 (name "gnome-user-share")
1491 (version "48.2")
1492 (source (origin
1493 (method url-fetch)
1494 (uri (string-append "mirror://gnome/sources/" name "/"
1495 (version-major version) "/"
1496 name "-" version ".tar.xz"))
1497 (sha256
1498 (base32
1499 "01mzc9gpj1f8hbq4k2a3gvn67rn08smmvfhq9sx80l7q1ba6ha03"))))
1500 (build-system meson-build-system)
1501 (arguments
1502 (list #:glib-or-gtk? #t
1503 #:imported-modules
1504 `((guix build cargo-build-system)
1505 ,@%meson-build-system-modules)
1506 #:modules '((guix build meson-build-system)
1507 ((guix build cargo-build-system) #:prefix cargo:)
1508 (guix build utils))
1509 #:configure-flags
1510 #~(list "-Dsystemduserunitdir=/tmp/empty")
1511 #:phases
1512 (with-extensions (list (cargo-guile-json))
1513 #~(modify-phases %standard-phases
1514 (add-after 'unpack 'unpack-rust-crates
1515 (assoc-ref cargo:%standard-phases 'unpack-rust-crates))
1516 (add-before 'configure 'cargo:configure
1517 (assoc-ref cargo:%standard-phases 'configure))
1518 (add-before 'configure 'cargo:patch-checksums
1519 (assoc-ref cargo:%standard-phases 'patch-cargo-checksums))))))
1520 (native-inputs
1521 (list gettext-minimal
1522 `(,glib "bin")
1523 gobject-introspection
1524 `(,gtk "bin")
1525 pkg-config
1526 rust-1.80
1527 `(,rust-1.80 "cargo")
1528 yelp-tools))
1529 (inputs (cargo-inputs 'gnome-user-share))
1530 (synopsis "File sharing for GNOME desktop")
1531 (description "GNOME User Share is a small package that binds together
1532various free software projects to bring easy to use user-level file
1533sharing to the masses.")
1534 (home-page "https://gitlab.gnome.org/GNOME/gnome-user-share")
1535 (license license:gpl2+)))
1536
1537(define-public sushi
1538 (package
1539 (name "sushi")
1540 (version "46.0")
1541 (source (origin
1542 (method url-fetch)
1543 (uri (string-append "mirror://gnome/sources/" name "/"
1544 (version-major version) "/"
1545 name "-" version ".tar.xz"))
1546 (sha256
1547 (base32
1548 "1ipjl1c9mib5gq9m58vhxg9jzfrggv2bbah6qr123arhljm5n24n"))))
1549 (build-system meson-build-system)
1550 (arguments
1551 (list
1552 #:glib-or-gtk? #t
1553 #:phases
1554 #~(modify-phases %standard-phases
1555 (add-after 'glib-or-gtk-wrap 'wrap-typelib
1556 (lambda* (#:key outputs #:allow-other-keys)
1557 (let ((prog (string-append (assoc-ref outputs "out")
1558 "/bin/sushi")))
1559 ;; Put existing typelibs before sushi's deps, so as to
1560 ;; correctly infer gdk-pixbuf.
1561 (wrap-program prog
1562 `("GI_TYPELIB_PATH" suffix
1563 (,(getenv "GI_TYPELIB_PATH"))))))))))
1564 (native-inputs
1565 (list `(,glib "bin")
1566 gettext-minimal
1567 gobject-introspection
1568 pkg-config))
1569 (inputs
1570 (list bash-minimal
1571 clutter
1572 clutter-gst
1573 clutter-gtk
1574 evince ; For file previewing.
1575 freetype
1576 gdk-pixbuf
1577 gjs
1578 gst-plugins-base
1579 gstreamer
1580 gtksourceview-4
1581 harfbuzz
1582 libepoxy
1583 libmusicbrainz
1584 libxml2
1585 neon
1586 webkitgtk-for-gtk3))
1587 (synopsis "File previewer for the GNOME desktop")
1588 (description "Sushi is a DBus-activated service that allows applications
1589to preview files on the GNOME desktop.")
1590 (home-page "https://gitlab.gnome.org/GNOME/sushi")
1591 (license license:gpl2+)))
1592
1593(define-public rygel
1594 (package
1595 (name "rygel")
1596 (version "45.1")
1597 (source (origin
1598 (method url-fetch)
1599 (uri (string-append "mirror://gnome/sources/" name "/"
1600 (version-major version) "/"
1601 name "-" version ".tar.xz"))
1602 (sha256
1603 (base32
1604 "1j0pasaaazyq3k2mhp2dal4jmiw4hjkqpx52fxk9pbwf1ll6wf6g"))))
1605 (build-system meson-build-system)
1606 (native-inputs
1607 (list gettext-minimal
1608 `(,glib "bin") ; for glib-compile-schemas, etc.
1609 gobject-introspection
1610 gtk-doc/stable
1611 pkg-config
1612 python
1613 vala
1614 docbook-xml
1615 docbook-xsl
1616 libxslt))
1617 (inputs
1618 (list gdk-pixbuf
1619 gssdp
1620 gstreamer
1621 gst-plugins-base
1622 gst-editing-services
1623 gtk
1624 gupnp
1625 gupnp-av
1626 gupnp-dlna
1627 json-glib
1628 libgee
1629 libmediaart
1630 libsoup
1631 libxslt
1632 libunistring
1633 tinysparql))
1634 (propagated-inputs
1635 ;; The .pc files require.private gmodule-2.0
1636 (list glib))
1637 (synopsis "Share audio, video, and pictures with other devices")
1638 (description
1639 "Rygel is a home media solution (@dfn{UPnP AV MediaServer and
1640MediaRenderer}) for GNOME that allows you to easily share audio, video, and
1641pictures, and to control a media player on your home network.
1642
1643Rygel achieves interoperability with other devices by trying to conform to the
1644strict requirements of DLNA and by converting media on-the-fly to formats that
1645client devices can handle.")
1646 (home-page "https://wiki.gnome.org/Projects/Rygel")
1647 (license (list
1648 ;; For logo (data/icons/*).
1649 license:cc-by-sa3.0
1650 ;; For all others.
1651 license:lgpl2.1+))))
1652
1653(define-public libnma
1654 (package
1655 (name "libnma")
1656 (version "1.10.6")
1657 (source (origin
1658 (method url-fetch)
1659 (uri (string-append "mirror://gnome/sources/" name "/"
1660 (version-major+minor version) "/"
1661 name "-" version ".tar.xz"))
1662 (sha256
1663 (base32
1664 "1avdsw1l61gwr29lzvlr4dh3qz6ypsc3xvfahrcprlqa34mzp9jk"))))
1665 (build-system meson-build-system)
1666 (arguments
1667 ;; GTK 4.x depends on Rust (indirectly) so pull it only on platforms
1668 ;; where it is supported.
1669 (list
1670 #:configure-flags
1671 (if (supported-package? gtk)
1672 #~(list "-Dlibnma_gtk4=true")
1673 #~(list "-Dlibnma_gtk4=false"))
1674 #:phases
1675 #~(modify-phases %standard-phases
1676 ;; We follow upstream's recommendation at
1677 ;; https://gitlab.gnome.org/GNOME/libnma/-/commit/9166164387b0367becbe3400af696f925fef0ab1
1678 (add-after 'install 'delete-org.gnome.nm-applet.gschema
1679 (lambda _
1680 (delete-file
1681 (string-append
1682 #$output
1683 "/share/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml")))))))
1684 (native-inputs
1685 (list docbook-xml-4.3
1686 gettext-minimal
1687 `(,glib "bin")
1688 gtk-doc/stable
1689 gobject-introspection
1690 pkg-config
1691 vala))
1692 (inputs
1693 (list gcr-3
1694 (if (supported-package? gtk) gtk gtk+)
1695 iso-codes/pinned
1696 mobile-broadband-provider-info
1697 network-manager))
1698 (synopsis "Network Manager's applet library")
1699 (description "Libnma is an applet library for Network Manager. It was
1700initially part of network-manager-applet and has now become a separate
1701project.")
1702 (home-page "https://gitlab.gnome.org/GNOME/libnma")
1703 ;; Some files carry the "GPL-2.0+" SPDX identifier while others say
1704 ;; "LGPL-2.1+".
1705 (license license:gpl2+)))
1706
1707(define-public gnome-menus
1708 (package
1709 (name "gnome-menus")
1710 (version "3.38.1")
1711 (source (origin
1712 (method url-fetch)
1713 (uri (string-append "mirror://gnome/sources/gnome-menus/"
1714 (version-major+minor version) "/"
1715 name "-" version ".tar.xz"))
1716 (sha256
1717 (base32
1718 "06418hf95c63c3wf6yrjkq12czb14xafywafz4nj7yywvcfak60i"))))
1719 (build-system gnu-build-system)
1720 (arguments
1721 (list
1722 #:phases
1723 #~(modify-phases %standard-phases
1724 (add-after 'unpack 'fix-introspection-install-dir
1725 (lambda _
1726 (substitute* "libmenu/Makefile.in"
1727 (("@INTROSPECTION_GIRDIR@")
1728 (string-append #$output "/share/gir-1.0/"))
1729 (("@INTROSPECTION_TYPELIBDIR@")
1730 (string-append #$output "/lib/girepository-1.0/"))))))))
1731 (native-inputs
1732 (list gettext-minimal glib gobject-introspection pkg-config))
1733 (synopsis "Menu support for GNOME desktop")
1734 (description "GNOME Menus contains the libgnome-menu library, the layout
1735configuration files for the GNOME menu, as well as a simple menu editor.")
1736 (home-page "https://gitlab.gnome.org/GNOME/gnome-menus")
1737 (license license:lgpl2.0+)))
1738
1739(define-public gnome-commander
1740 (package
1741 (name "gnome-commander")
1742 (version "1.18.2")
1743 (source
1744 (origin
1745 (method url-fetch)
1746 (uri (string-append "mirror://gnome/sources/" name "/"
1747 (version-major+minor version) "/"
1748 "gnome-commander-" version ".tar.xz"))
1749 (sha256
1750 (base32 "0wqnm87skbsc7p89ynn64s3154w0j1d0d1gjkbxd5mmpg90i0ysa"))))
1751 (build-system meson-build-system)
1752 (arguments
1753 `(#:glib-or-gtk? #t
1754 #:phases
1755 (modify-phases %standard-phases
1756 (add-before 'build 'prepare-x-for-test
1757 (lambda _
1758 (system "Xvfb &")
1759 (setenv "DISPLAY" ":0"))))))
1760 (native-inputs
1761 (list desktop-file-utils
1762 flex
1763 gettext-minimal
1764 `(,glib "bin")
1765 googletest-1.12
1766 `(,gtk+ "bin")
1767 itstool
1768 pkg-config
1769 xorg-server-for-tests))
1770 (inputs
1771 (list glib gtk+))
1772 (home-page "https://gcmd.github.io/")
1773 (synopsis "Two-pane graphical file manager for the GNOME desktop")
1774 (description
1775 "GNOME Commander is a two-pane graphical file manager using GNOME
1776libraries. It aims to fulfill the demands of more advanced users who
1777like to focus on file management, their work through special applications
1778and running smart commands.")
1779 (license license:gpl2+)))
1780
1781(define-public gnome-user-docs
1782 (package
1783 (name "gnome-user-docs")
1784 (version "49.4")
1785 (source
1786 (origin
1787 (method url-fetch)
1788 (uri (string-append "mirror://gnome/sources/gnome-user-docs/"
1789 (version-major version)
1790 "/gnome-user-docs-" version ".tar.xz"))
1791 (sha256
1792 (base32 "104amr45zp101b81b3fw2pw4w4a7cf542l7biyy1a7swvpm4hi06"))))
1793 (build-system gnu-build-system)
1794 (native-inputs
1795 (list gettext-minimal itstool pkg-config libxml2))
1796 (synopsis "User documentation for the GNOME desktop")
1797 (description
1798 "The GNOME User Documentation explains how to use the GNOME desktop and its
1799components. It covers usage and setup of the core GNOME programs by end-users
1800and system administrators.")
1801 (home-page "https://wiki.gnome.org/DocumentationProject")
1802 (license license:cc-by3.0)))
1803
1804(define-public dia
1805 ;; There are no recent releases; use the latest commit from the master
1806 ;; branch.
1807 (let ((commit "ad68cc378b7a187706bc2648c48b44d16fb80819")
1808 (revision "7"))
1809 (package
1810 (name "dia")
1811 (version (git-version "0.97.3" revision commit))
1812 (source
1813 (origin
1814 (method git-fetch)
1815 (uri (git-reference
1816 (url "https://gitlab.gnome.org/GNOME/dia.git/")
1817 (commit commit)))
1818 (file-name (git-file-name name version))
1819 (sha256
1820 (base32 "0b7czm78xfzimdr0sn5kkdy64k6vag6sd4dpn533wp46s5rx4f3s"))
1821 (patches (search-patches "dia-with-poppler-26.06.patch"))))
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 (add-before 'check 'pre-check
1835 (lambda* (#:key inputs #:allow-other-keys)
1836 ;; Tests require a running X server.
1837 (system "Xvfb :1 &")
1838 (setenv "DISPLAY" ":1"))))))
1839 (native-inputs
1840 (list appstream
1841 docbook-xml-4.5
1842 docbook-xsl
1843 `(,glib "bin")
1844 gettext-minimal
1845 pkg-config
1846 xorg-server-for-tests))
1847 (inputs
1848 (list graphene
1849 gtk+
1850 libxml2
1851 libxslt
1852 poppler
1853 python-minimal
1854 xpm-pixbuf))
1855 (home-page "https://wiki.gnome.org/Apps/Dia")
1856 (synopsis "Diagram creation for GNOME")
1857 (description
1858 "Dia can be used to draw different types of diagrams, and
1859includes support for UML static structure diagrams (class diagrams), entity
1860relationship modeling, and network diagrams. The program supports various file
1861formats like PNG, SVG, PDF and EPS.")
1862 (license license:gpl2+))))
1863
1864(define-public libgdata
1865 (package
1866 (name "libgdata")
1867 (version "0.18.1")
1868 (source (origin
1869 (method url-fetch)
1870 (uri (string-append "mirror://gnome/sources/" name "/"
1871 (version-major+minor version) "/"
1872 name "-" version ".tar.xz"))
1873 (patches (search-patches "libgdata-fix-tests.patch"))
1874 (sha256
1875 (base32
1876 "1iq4d1qy0vkmy29xvr13dgz4pxvn5v3yi2swryld0ajinvp951fx"))))
1877 (build-system meson-build-system)
1878 (arguments
1879 '(#:phases
1880 (modify-phases %standard-phases
1881 (add-before 'check 'set-home-for-tests
1882 (lambda _
1883 (setenv "HOME" "/tmp"))))))
1884 (native-inputs
1885 `(("glib:bin" ,glib "bin")
1886 ("gobject-introspection" ,gobject-introspection)
1887 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1888 ("intltool" ,intltool)
1889 ("pkg-config" ,pkg-config)
1890 ("uhttpmock" ,uhttpmock-with-libsoup2)))
1891 (inputs
1892 (list cyrus-sasl glib-networking vala))
1893 (propagated-inputs
1894 `(("gcr" ,gcr-3)
1895 ("glib" ,glib)
1896 ("gnome-online-accounts" ,gnome-online-accounts)
1897 ("json-glib" ,json-glib)
1898 ("liboauth" ,liboauth)
1899 ("libsoup" ,libsoup-minimal-2)
1900 ("libxml2" ,libxml2)))
1901 (home-page "https://gitlab.gnome.org/Archive/libgdata")
1902 (synopsis "Library for accessing online service APIs")
1903 (description
1904 "libgdata is a GLib-based library for accessing online service APIs using
1905the GData protocol — most notably, Google's services. It provides APIs to
1906access the common Google services, and has full asynchronous support.")
1907 (license license:lgpl2.1+)))
1908
1909(define-public libgxps
1910 (package
1911 (name "libgxps")
1912 (version "0.3.2")
1913 (source (origin
1914 (method url-fetch)
1915 (uri (string-append "mirror://gnome/sources/" name "/"
1916 (version-major+minor version) "/"
1917 name "-" version ".tar.xz"))
1918 (sha256
1919 (base32
1920 "07156nj7yrp3h9zyzx6mjwxwmfijialb4gi5d6dwyp53arr8c9vd"))))
1921 (build-system meson-build-system)
1922 (native-inputs
1923 (list gobject-introspection pkg-config))
1924 (inputs
1925 (list gtk+ libjpeg-turbo lcms libtiff))
1926 (propagated-inputs
1927 ;; In Requires of libgxps.pc.
1928 (list cairo glib libarchive))
1929 (home-page "https://wiki.gnome.org/Projects/libgxps")
1930 (synopsis "GObject-based library for handling and rendering XPS documents")
1931 (description
1932 "libgxps is a GObject-based library for handling and rendering XPS
1933documents. This package also contains binaries that can convert XPS documents
1934to other formats.")
1935 (license license:lgpl2.1+)))
1936
1937(define-public gnome-characters
1938 (package
1939 (name "gnome-characters")
1940 (version "49.1")
1941 (source
1942 (origin
1943 (method url-fetch)
1944 (uri (string-append "mirror://gnome/sources/"
1945 "gnome-characters/" (version-major version)
1946 "/gnome-characters-" version ".tar.xz"))
1947 (sha256
1948 (base32
1949 "0p0l1bsgdqj0n47j2xya0pmf3n67vcq5iywi6dwdq0p66kj0yp3r"))))
1950 (build-system meson-build-system)
1951 (arguments
1952 (list
1953 #:glib-or-gtk? #t
1954 #:phases #~(modify-phases %standard-phases
1955 (delete 'check) ;moved after install
1956 (add-after 'install 'check
1957 ;; This is done because our typelib reference the
1958 ;; installed libraries in Guix.
1959 (assoc-ref %standard-phases 'check))
1960 (add-after 'unpack 'disable-gtk-update-icon-cache
1961 (lambda _
1962 (substitute* "meson.build"
1963 (("gtk_update_icon_cache: true")
1964 "gtk_update_icon_cache: false")
1965 (("update_desktop_database: true")
1966 "update_desktop_database: false"))))
1967 (add-after 'unpack 'fix-test-setup
1968 (lambda _
1969 (substitute* "tests/meson.build"
1970 (("'GI_TYPELIB_PATH': (.*)," all path)
1971 (string-append "'GI_TYPELIB_PATH':"
1972 " ["
1973 path
1974 ", '"
1975 (getenv "GI_TYPELIB_PATH")
1976 "'],")))))
1977 (add-after 'install 'wrap
1978 (lambda* (#:key outputs #:allow-other-keys)
1979 ;; GNOME Characters needs Typelib files from GTK and
1980 ;; gnome-desktop.
1981 (wrap-program (search-input-file outputs
1982 "bin/gnome-characters")
1983 `("GI_TYPELIB_PATH" ":" prefix
1984 (,(getenv "GI_TYPELIB_PATH")))))))))
1985 (native-inputs
1986 (list gettext-minimal
1987 `(,glib "bin")
1988 gobject-introspection
1989 pkg-config
1990 xorg-server-for-tests
1991 xvfb-run))
1992 (inputs
1993 (list bash-minimal ;for wrap-program
1994 gjs
1995 gnome-desktop
1996 gtk
1997 libadwaita
1998 libunistring))
1999 (home-page "https://wiki.gnome.org/Apps/Characters")
2000 (synopsis "Find and insert unusual characters")
2001 (description "Characters is a simple utility application to find
2002and insert unusual characters. It allows you to quickly find the
2003character you are looking for by searching for keywords.")
2004 (license license:bsd-3)))
2005
2006(define-public gnome-common
2007 (package
2008 (name "gnome-common")
2009 (version "3.18.0")
2010 (source
2011 (origin
2012 (method url-fetch)
2013 (uri (string-append "mirror://gnome/sources/" name "/"
2014 (version-major+minor version) "/"
2015 name "-" version ".tar.xz"))
2016 (sha256
2017 (base32
2018 "1kzqi8qvh5p1zncj8msazlmvcwsczjz2hqxp4x2y0mg718vrwmi2"))))
2019 (build-system gnu-build-system)
2020 (home-page "https://www.gnome.org/")
2021 (synopsis "Bootstrap GNOME modules built from Git")
2022 (description "gnome-common contains various files needed to bootstrap
2023GNOME modules built from Git. It contains a common \"autogen.sh\" script that
2024can be used to configure a source directory checked out from Git and some
2025commonly used macros.")
2026 (license license:gpl2+)))
2027
2028(define-public gnome-contacts
2029 (package
2030 (name "gnome-contacts")
2031 (version "49.0")
2032 (source (origin
2033 (method url-fetch)
2034 (uri (string-append "mirror://gnome/sources/gnome-contacts/"
2035 (version-major version) "/"
2036 name "-" version ".tar.xz"))
2037 (sha256
2038 (base32
2039 "1bz4hns4vd9ifw0s4j7jgys143a650ny5lww5pppvmr9pikirwi5"))
2040 (patches
2041 ;; TODO: Remove when bumping to version 50.alpha or newer.
2042 (search-patches "gnome-contacts-evolution-compat.patch"))))
2043 (build-system meson-build-system)
2044 (arguments
2045 (list
2046 #:glib-or-gtk? #t
2047 ;; FIXME: Cannot build the Valadoc, because both gtk+ and gtk are in the
2048 ;; same profile (evolution-data-server propagates both).
2049 #:configure-flags #~'("-Ddocs=false")
2050 #:phases
2051 #~(modify-phases %standard-phases
2052 (add-after 'unpack 'skip-gtk-update-icon-cache
2053 (lambda _
2054 (substitute* "meson.build"
2055 (("gtk_update_icon_cache: true")
2056 "gtk_update_icon_cache: false")))))))
2057 (native-inputs
2058 (list blueprint-compiler
2059 desktop-file-utils
2060 docbook-xml
2061 docbook-xml-4.2
2062 docbook-xsl
2063 gettext-minimal
2064 `(,glib "bin")
2065 gobject-introspection
2066 libxslt
2067 pkg-config))
2068 (inputs
2069 (list evolution-data-server
2070 gnome-desktop
2071 gnome-online-accounts
2072 gst-plugins-base
2073 gtk
2074 libadwaita
2075 libgee
2076 libportal
2077 qrencode
2078 telepathy-glib
2079 vala))
2080 (propagated-inputs
2081 (list folks
2082 telepathy-mission-control))
2083 (synopsis "GNOME's integrated address book")
2084 (description
2085 "GNOME Contacts organizes your contact information from online and
2086offline sources, providing a centralized place for managing your contacts.")
2087 (home-page "https://wiki.gnome.org/Apps/Contacts")
2088 (license license:gpl2+)))
2089
2090(define-public gnome-desktop
2091 (package
2092 (name "gnome-desktop")
2093 (version "44.5")
2094 (source
2095 (origin
2096 (method url-fetch)
2097 (uri (string-append "mirror://gnome/sources/" name "/"
2098 (version-major version) "/"
2099 name "-" version ".tar.xz"))
2100 (sha256
2101 (base32
2102 "0br33ma7l45nr8yp9bcjqgy9zrj57yy2fnkc0b0yh0rsdrd9kq10"))))
2103 (build-system meson-build-system)
2104 (arguments
2105 '(#:phases
2106 (modify-phases %standard-phases
2107 (add-after 'unpack 'disable-problematic-tests
2108 (lambda _
2109 ;; The languages test fails due to Guix defaulting to C.UTF-8.
2110 (substitute* "tests/meson.build"
2111 ((".*'languages':.*") ""))))
2112 (add-before 'configure 'patch-path
2113 (lambda* (#:key inputs #:allow-other-keys)
2114 (substitute* "libgnome-desktop/gnome-languages.c"
2115 (("\"locale\"")
2116 (format #f "~s" (search-input-file inputs "bin/locale"))))))
2117 (add-before 'configure 'patch-bubblewrap
2118 (lambda* (#:key inputs #:allow-other-keys)
2119 (substitute* "libgnome-desktop/gnome-desktop-thumbnail-script.c"
2120 (("\"bwrap\",")
2121 (string-append "\"" (which "bwrap") "\","))
2122 (("\"--ro-bind\", \"/usr\", \"/usr\",")
2123 (string-append "\"--ro-bind\", \""
2124 (%store-directory)
2125 "\", \""
2126 (%store-directory)
2127 "\","))
2128 (("\"--ro-bind\", \"/etc/ld.so.cache\", \"/etc/ld.so.cache\",")
2129 ""))))
2130 (add-before 'check 'pre-check
2131 (lambda* (#:key inputs #:allow-other-keys)
2132 ;; Tests require a running X server and locales.
2133 (system "Xvfb :1 &")
2134 (setenv "DISPLAY" ":1")
2135 (setenv "XDG_CACHE_HOME" "/tmp/xdg-cache")
2136 (setenv "XDG_CONFIG_HOME" "/tmp")
2137 (setenv "GUIX_LOCPATH"
2138 (search-input-directory inputs
2139 "lib/locale")))))))
2140 (native-inputs
2141 (list `(,glib "bin") ;for gdbus-codegen
2142 (libc-utf8-locales-for-target (%current-system)) ;for tests
2143 gobject-introspection
2144 itstool
2145 intltool
2146 pkg-config
2147 libxml2
2148 xorg-server-for-tests))
2149 (propagated-inputs
2150 ;; Required by gnome-desktop-3.0.pc.
2151 (list gsettings-desktop-schemas
2152 gtk
2153 gtk+
2154 iso-codes/pinned
2155 libseccomp
2156 libx11
2157 xkeyboard-config))
2158 (inputs
2159 (list bubblewrap
2160 gdk-pixbuf
2161 glib
2162 libxext
2163 libxkbfile
2164 libxrandr))
2165 (home-page "https://www.gnome.org/")
2166 (synopsis
2167 "Libgnome-desktop, gnome-about, and desktop-wide documents")
2168 (description
2169 "The libgnome-desktop library provides API shared by several applications
2170on the desktop, but that cannot live in the platform for various reasons.
2171There is no API or ABI guarantee, although we are doing our best to provide
2172stability. Documentation for the API is available with gtk-doc.
2173
2174The gnome-about program helps find which version of GNOME is installed.")
2175 ; Some bits under the LGPL.
2176 (license license:gpl2+)))
2177
2178(define-public gnome-desktop-testing
2179 ;; Use the most recent commit as the last release tag is from 2021.
2180 (let ((commit "036b7357f1892b3bdf19aba8d0be7d7b75bda291")
2181 (revision "0"))
2182 (package
2183 (name "gnome-desktop-testing")
2184 (version (git-version "2021.1" revision commit))
2185 (source (origin
2186 (method git-fetch)
2187 (uri (git-reference
2188 (url "https://gitlab.gnome.org/GNOME/gnome-desktop-testing")
2189 (commit commit)))
2190 (file-name (git-file-name name version))
2191 (sha256
2192 (base32
2193 "0qk3j6rkl0l531gxwy8ss8ybrl96k5rrqqq896pjh0fin5k25lrx"))))
2194 (build-system meson-build-system)
2195 (native-inputs (list pkg-config))
2196 (inputs (list glib))
2197 (home-page "https://gitlab.gnome.org/GNOME/gnome-desktop-testing")
2198 (synopsis "Basic test runner from GNOME installed tests.")
2199 (description "This package provides a basic runner for GNOME installed
2200tests, as used by gjs for example.")
2201 (license license:gpl2+))))
2202
2203(define-public gnome-disk-utility
2204 (package
2205 (name "gnome-disk-utility")
2206 (version "46.1")
2207 (source (origin
2208 (method url-fetch)
2209 (uri (string-append "mirror://gnome/sources/" name "/"
2210 (version-major version) "/"
2211 name "-" version ".tar.xz"))
2212 (sha256
2213 (base32
2214 "1zmzkfwg1gvqz16i2lplnvi5yhq5f1617jj9wgxbqw2dl0wr8kn2"))))
2215 (build-system meson-build-system)
2216 (arguments
2217 `(#:configure-flags '("-Dlogind=libelogind")
2218 #:phases
2219 (modify-phases %standard-phases
2220 (add-after 'unpack 'skip-gtk-update-icon-cache
2221 ;; Don't create 'icon-theme.cache'.
2222 (lambda _
2223 (substitute* "meson.build"
2224 (("gtk_update_icon_cache: true")
2225 "gtk_update_icon_cache: false")
2226 (("glib_compile_schemas: true")
2227 "glib_compile_schemas: false")
2228 (("update_desktop_database: true")
2229 "update_desktop_database: false")))))))
2230 (native-inputs
2231 (list docbook-xml
2232 docbook-xsl
2233 `(,glib "bin")
2234 gettext-minimal
2235 pkg-config
2236 libxml2
2237 libxslt))
2238 (inputs
2239 (list elogind
2240 glib
2241 appstream-glib
2242 gnome-settings-daemon
2243 gtk+
2244 libcanberra
2245 libdvdread
2246 libhandy
2247 libnotify
2248 libpwquality
2249 libsecret
2250 udisks))
2251 (home-page "https://gitlab.gnome.org/GNOME/gnome-disk-utility")
2252 (synopsis "Disk management utility for GNOME")
2253 (description "Disk management utility for GNOME.")
2254 (license license:gpl2+)))
2255
2256(define-public gnome-font-viewer
2257 (package
2258 (name "gnome-font-viewer")
2259 (version "49.0")
2260 (source (origin
2261 (method url-fetch)
2262 (uri (string-append "mirror://gnome/sources/gnome-font-viewer/"
2263 (version-major version)
2264 "/gnome-font-viewer-" version ".tar.xz"))
2265 (sha256
2266 (base32
2267 "0114ar42akyl40g8gn8f8pbr7hf025bz39nisxainxw5q8jqj0bw"))))
2268 (build-system meson-build-system)
2269 (arguments
2270 (list
2271 #:phases
2272 #~(modify-phases %standard-phases
2273 (add-after 'unpack 'patch-post-install-script
2274 (lambda _
2275 (substitute* "meson-postinstall.sh"
2276 (("update-desktop-database") (which "true")))))
2277 (add-before 'configure 'relax-gcc-14-strictness
2278 (lambda _
2279 (setenv "CFLAGS"
2280 (string-append "-g -O2"
2281 " -Wno-error=incompatible-pointer-types"))))
2282 (add-after 'install 'patch-thumbnailer
2283 (lambda* (#:key outputs #:allow-other-keys)
2284 (substitute*
2285 (search-input-file
2286 outputs "share/thumbnailers/gnome-font-viewer.thumbnailer")
2287 (("gnome-thumbnail-font")
2288 (search-input-file outputs "bin/gnome-thumbnail-font"))))))))
2289 (native-inputs
2290 (list gettext-minimal
2291 `(,glib "bin")
2292 pkg-config))
2293 (inputs
2294 (list glib
2295 gnome-desktop
2296 gtk
2297 libadwaita
2298 libxml2))
2299 (home-page "https://gitlab.gnome.org/GNOME/gnome-font-viewer")
2300 (synopsis "GNOME Fonts")
2301 (description "Application to show you the fonts installed on your computer
2302for your use as thumbnails. Selecting any thumbnails shows the full view of how
2303the font would look under various sizes.")
2304 (license license:gpl2+)))
2305
2306(define-public gcr
2307 (package
2308 (name "gcr")
2309 (version "4.2.1")
2310 (source (origin
2311 (method url-fetch)
2312 (uri (string-append "mirror://gnome/sources/" name "/"
2313 (version-major+minor version) "/"
2314 name "-" version ".tar.xz"))
2315 (sha256
2316 (base32
2317 "1rbxjrwy88l1b6yml2hrracqamaflvif7a9fq1cd0g1ph1f3ny7d"))))
2318 (build-system meson-build-system)
2319 (arguments
2320 (list
2321 #:phases
2322 #~(modify-phases %standard-phases
2323 (add-after 'unpack 'remove-fatal-warnings-option
2324 ;; Otherwise, the gi-docgen tool would fail because of the
2325 ;; "Fontconfig error: No writable cache directories" warnings.
2326 (lambda _
2327 (substitute* (find-files "." "^meson\\.build$")
2328 ((".*'--fatal-warnings',.*") ""))))
2329 (add-after 'unpack 'skip-gtk-update-icon-cache
2330 (lambda _
2331 (substitute* "meson.build"
2332 (("gtk_update_icon_cache: true")
2333 "gtk_update_icon_cache: false"))))
2334 (add-before 'check 'pre-check
2335 (lambda _
2336 ;; Some tests expect to write to $HOME.
2337 (setenv "HOME" "/tmp")))
2338 (replace 'check
2339 (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
2340 (when tests?
2341 (setenv "MESON_TESTTHREADS"
2342 (if parallel-tests?
2343 (number->string (parallel-job-count))
2344 "1"))
2345 ;; Work around the "mock prompter couldn't get session bus
2346 ;; address: Cannot spawn a message bus without a machine-id"
2347 ;; error by manually creating the session bus via
2348 ;; 'dbus-run-session'.
2349 (invoke "dbus-run-session" "--"
2350 "meson" "test" "-t" "0")))))))
2351 (inputs
2352 (list dbus
2353 gnupg
2354 libgcrypt
2355 libsecret))
2356 (native-inputs
2357 (list gettext-minimal
2358 gi-docgen
2359 `(,glib "bin")
2360 gobject-introspection
2361 gtk-doc/stable
2362 libxml2
2363 libxslt
2364 openssh
2365 pkg-config
2366 python-wrapper
2367 vala))
2368 ;; GLib and p11-kit are mentioned in gck.pc and gcr.pc
2369 ;; GTK is kept for symmetry with gcr-3, which propagates gtk+.
2370 (propagated-inputs (list glib gtk p11-kit))
2371 (home-page "https://www.gnome.org")
2372 (synopsis "Libraries for displaying certificates and accessing key stores")
2373 (description
2374 "The GCR package contains libraries used for displaying certificates and
2375accessing key stores. It also provides the viewer for crypto files on the
2376GNOME Desktop.")
2377 (license license:lgpl2.1+)))
2378
2379(define-public gcr-3
2380 (package
2381 (inherit gcr)
2382 (name "gcr")
2383 (version "3.41.2")
2384 (source (origin
2385 (method url-fetch)
2386 (uri (string-append "mirror://gnome/sources/" name "/"
2387 (version-major+minor version) "/"
2388 name "-" version ".tar.xz"))
2389 (sha256
2390 (base32
2391 "1dqsgrb62fgmy4w63bjl3b525nil4idrrdcscia1h3isaly0zlds"))
2392 (patches (search-patches "gcr-3-suppress-debug-messages.patch"))))
2393 (arguments
2394 (substitute-keyword-arguments arguments
2395 ((#:phases phases)
2396 #~(modify-phases #$phases
2397 (replace 'skip-gtk-update-icon-cache
2398 ;; Don't create 'icon-theme.cache'.
2399 (lambda _
2400 (substitute* "meson_post_install.py"
2401 (("gtk-update-icon-cache") "true"))))))))
2402 ;; mentioned in gck.pc, gcr.pc and gcr-ui.pc
2403 (propagated-inputs (list glib gtk+ p11-kit))))
2404
2405(define-public gdl
2406 (package
2407 (name "gdl")
2408 (version "3.40.0")
2409 (source (origin
2410 (method git-fetch)
2411 (uri (git-reference
2412 (url "https://gitlab.gnome.org/GNOME/gdl.git")
2413 (commit (string-append "GDL_" (string-map (match-lambda
2414 (#\. #\_)
2415 (c c))
2416 version)))))
2417 (file-name (git-file-name name version))
2418 (sha256
2419 (base32
2420 "11hp93gqk7m64h84q5hndzlwj4w6hl0cbmzrk2pkdn04ikm2zj4v"))))
2421 (build-system gnu-build-system)
2422 (arguments
2423 (list #:configure-flags
2424 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")))
2425 (native-inputs
2426 (list autoconf
2427 automake
2428 `(,glib "bin") ; for glib-genmarshal, etc.
2429 gnome-common
2430 gtk-doc/stable
2431 intltool
2432 pkg-config
2433 libtool
2434 which))
2435 (inputs
2436 (list libxml2))
2437 (propagated-inputs
2438 ;; The gdl-3.0.pc file 'Requires' GTK+.
2439 (list gtk+))
2440 (home-page "https://gitlab.gnome.org/GNOME/gdl/")
2441 (synopsis "GNOME docking library")
2442 (description "This library provides docking features for gtk+.")
2443 (license license:lgpl2.1+)))
2444
2445;;; A minimal variant used to break a cycle with Inkscape.
2446(define-public gdl-minimal
2447 (package/inherit gdl
2448 (name "gdl-minimal")
2449 (arguments
2450 (substitute-keyword-arguments arguments
2451 ((#:phases phases #~%standard-phases)
2452 #~(modify-phases #$phases
2453 (add-after 'unpack 'disable-doc-generation
2454 ;; XXX: There is no easy way to disable generating the
2455 ;; documentation.
2456 (lambda _
2457 (substitute* "configure.in"
2458 (("GTK_DOC_CHECK.*") "")
2459 (("docs/.*") ""))
2460 (substitute* "Makefile.am"
2461 (("gdl docs po") "gdl po"))))))))
2462 (native-inputs (alist-delete "gtk-doc" (package-native-inputs gdl)))))
2463
2464(define-public libgnome-keyring
2465 (package
2466 (name "libgnome-keyring")
2467 (version "3.12.0")
2468 (source (origin
2469 (method url-fetch)
2470 (uri (string-append "mirror://gnome/sources/" name "/"
2471 (version-major+minor version) "/"
2472 name "-" version ".tar.xz"))
2473 (sha256
2474 (base32
2475 "10vpjhgbjm7z2djy04qakd02qlzpd02xnbfjhk2aqwjzn3xpihf4"))))
2476 (build-system gnu-build-system)
2477 (inputs
2478 (list libgcrypt dbus))
2479 (native-inputs
2480 (list pkg-config
2481 `(,glib "bin") intltool))
2482 (propagated-inputs
2483 ;; Referred to in .h files and .pc.
2484 (list glib))
2485 (home-page "https://www.gnome.org")
2486 (synopsis "Accessing passwords from the GNOME keyring")
2487 (description
2488 "Client library to access passwords from the GNOME keyring.")
2489
2490 ;; Though a couple of files are LGPLv2.1+.
2491 (license license:lgpl2.0+)))
2492
2493(define-public gnome-keyring
2494 (package
2495 (name "gnome-keyring")
2496 (version "48.0")
2497 (source (origin
2498 (method url-fetch)
2499 (uri (string-append "mirror://gnome/sources/" name "/"
2500 (version-major version) "/"
2501 name "-" version ".tar.xz"))
2502 (sha256
2503 (base32
2504 "17gbzfj2rgbp1yb28mnxs3ngxmyqa26bwi4bkff3zsp9434ih1gj"))))
2505 (build-system meson-build-system)
2506 (arguments
2507 (list
2508 #:configure-flags
2509 #~(list
2510 (string-append "-Dpkcs11-config="
2511 #$output "/share/p11-kit/modules/")
2512 (string-append "-Dpkcs11-modules="
2513 #$output "/share/p11-kit/modules/")
2514 "-Dsystemd=disabled")
2515 #:parallel-tests? #f ; XXX: concurrency in dbus tests
2516 #:phases
2517 #~(modify-phases %standard-phases
2518 (delete 'check)
2519 (add-after 'install 'check
2520 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
2521 (when tests?
2522 (setenv "HOME" "/tmp") ;some tests require a writable HOME
2523 (setenv "XDG_DATA_DIRS" (string-append (getenv "XDG_DATA_DIRS")
2524 ":" #$output "/share"))
2525 (invoke "dbus-run-session" "meson" "test" "-j"
2526 (if parallel-tests?
2527 (number->string (parallel-job-count))
2528 "1"))))))))
2529 (inputs
2530 (list dbus
2531 gcr-3
2532 libgcrypt
2533 linux-pam
2534 openssh))
2535 (native-inputs
2536 (list dbus ;for tests
2537 docbook-xml-4.3
2538 docbook-xml
2539 docbook-xsl
2540 gettext-minimal
2541 `(,glib "bin")
2542 glib ;for m4 macros
2543 libselinux
2544 libxslt ;for documentation
2545 pkg-config
2546 python-wrapper)) ;for tests
2547 (propagated-inputs
2548 (list gcr-3))
2549
2550 ;; XXX: There are concerning test failures on i686-linux and other 32-bit
2551 ;; platforms: <https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/124>.
2552 (supported-systems %64bit-supported-systems)
2553
2554 (home-page "https://www.gnome.org")
2555 (synopsis "Daemon to store passwords and encryption keys")
2556 (description
2557 "@command{gnome-keyring} is a program that keeps passwords and other
2558secrets for users. It is run as a daemon in the session, similar to
2559@command{ssh-agent}, and other applications locate it via an environment
2560variable or D-Bus.
2561
2562The program can manage several keyrings, each with its own master password,
2563and there is also a session keyring which is never stored to disk, but
2564forgotten when the session ends.")
2565 (license license:lgpl2.1+)))
2566
2567(define-public evince
2568 (package
2569 (name "evince")
2570 (version "48.4")
2571 (source
2572 (origin
2573 (method url-fetch)
2574 (uri (string-append "mirror://gnome/sources/evince/"
2575 (version-major version) "/"
2576 "evince-" version ".tar.xz"))
2577 (sha256
2578 (base32 "0s46prlb55ghnz136ra8whmrirydmz08lzjrrpa3arl8cb3cb5pj"))))
2579 (build-system meson-build-system)
2580 (arguments
2581 (list
2582 #:glib-or-gtk? #t
2583 #:build-type "release"
2584 #:configure-flags ''("-Dnautilus=false"
2585 "-Dps=enabled")
2586 #:phases
2587 #~(modify-phases %standard-phases
2588 (add-after 'unpack 'skip-gtk-update-icon-cache
2589 ;; Don't create 'icon-theme.cache'.
2590 (lambda _
2591 (substitute* "meson.build"
2592 (("(glib_compile_schemas|gtk_update_icon_cache|\
2593update_desktop_database): true" _ tool)
2594 (string-append tool ": false")))))
2595 (add-after 'patch-dot-desktop-files 'patch-dot-thumbnailer-files
2596 (lambda _
2597 (define abs-path (string-append #$output "/bin/evince-thumbnailer"))
2598 (substitute* (string-append #$output "/share/thumbnailers/evince.thumbnailer")
2599 (("TryExec=evince-thumbnailer")
2600 (format #f "TryExec=~a" abs-path))
2601 (("Exec=evince-thumbnailer")
2602 (format #f "Exec=~a" abs-path))))))))
2603 (inputs
2604 (list libarchive
2605 libgxps
2606 libspectre
2607 djvulibre
2608 ghostscript
2609 poppler
2610 libtiff
2611 texlive-libkpathsea ; for DVI support
2612 gnome-desktop
2613 gsettings-desktop-schemas
2614 gspell
2615 libgnome-keyring
2616 adwaita-icon-theme
2617 gdk-pixbuf
2618 at-spi2-core
2619 pango
2620 gtk+
2621 glib
2622 libxml2
2623 libsm
2624 libice
2625 shared-mime-info
2626 dconf
2627 libcanberra
2628 libsecret
2629 libhandy))
2630 (native-inputs
2631 (list itstool
2632 gettext-minimal
2633 gi-docgen
2634 `(,glib "bin")
2635 gobject-introspection
2636 pkg-config
2637 libxml2))
2638 (home-page "https://wiki.gnome.org/Apps/Evince")
2639 (synopsis "GNOME's document viewer")
2640 (description
2641 "Evince is a document viewer for multiple document formats. It
2642currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal
2643of Evince is to replace the multiple document viewers that exist
2644on the GNOME Desktop with a single simple application.")
2645 (license license:gpl2+)))
2646
2647(define-public papers
2648 (package
2649 (name "papers")
2650 (version "50.0")
2651 (source (origin
2652 (method url-fetch)
2653 (uri (string-append "mirror://gnome/sources/papers/"
2654 (version-major version) "/"
2655 "papers-" version ".tar.xz"))
2656 (sha256
2657 (base32 "01dws72fb19i9jwp3r0khr7ym2ns51fifdzafb5dcr5w8vmj06rh"))))
2658 (build-system meson-build-system)
2659 (arguments
2660 (list
2661 #:glib-or-gtk? #t
2662 #:configure-flags
2663 #~(list (string-append "-Dc_link_args=-Wl,-rpath=" #$output "/lib"))
2664 #:imported-modules `(,@%meson-build-system-modules
2665 ,@%cargo-build-system-modules)
2666 #:modules `(((guix build cargo-build-system) #:prefix cargo:)
2667 (guix build meson-build-system)
2668 (guix build utils))
2669 #:phases
2670 #~(modify-phases %standard-phases
2671 (add-after 'unpack 'prepare-for-build
2672 (lambda _
2673 (substitute* "meson.build"
2674 (("gtk_update_icon_cache: true")
2675 "gtk_update_icon_cache: false")
2676 (("update_desktop_database: true")
2677 "update_desktop_database: false"))
2678 (substitute* "meson.build"
2679 (("'Cargo.lock',")
2680 ""))
2681 (delete-file "Cargo.lock")))
2682 (add-after 'configure 'prepare-cargo-build-system
2683 (lambda args
2684 (for-each
2685 (lambda (phase)
2686 (format #t "Running cargo phase: ~a~%" phase)
2687 (apply (assoc-ref cargo:%standard-phases phase)
2688 #:vendor-dir "vendor"
2689 #:cargo-target #$(cargo-triplet)
2690 args))
2691 '(unpack-rust-crates
2692 configure
2693 check-for-pregenerated-files
2694 patch-cargo-checksums))
2695
2696 (setenv "RUSTFLAGS"
2697 (string-append (or (getenv "RUSTFLAGS") "")
2698 " -C link-arg=-Wl,-rpath,"
2699 #$output "/lib"))))
2700 (add-after 'patch-dot-desktop-files 'patch-dot-thumbnailer-files
2701 (lambda _
2702 (define abs-path (string-append #$output "/bin/papers-thumbnailer"))
2703 (substitute* (string-append #$output "/share/thumbnailers/papers.thumbnailer")
2704 (("TryExec=papers-thumbnailer")
2705 (format #f "TryExec=~a" abs-path))
2706 (("Exec=papers-thumbnailer")
2707 (format #f "Exec=~a" abs-path))))))))
2708 (native-inputs
2709 (cons* blueprint-compiler
2710 gettext-minimal
2711 `(,glib "bin")
2712 gobject-introspection
2713 gi-docgen
2714 itstool
2715 pkg-config
2716 rust
2717 `(,rust "cargo")
2718 (or (and=> (%current-target-system)
2719 (compose list make-rust-sysroot))
2720 '())))
2721 (inputs
2722 (cons* appstream
2723 djvulibre
2724 exempi
2725 gtk
2726 libadwaita
2727 libarchive
2728 libspelling
2729 libtiff
2730 nautilus ; for nautilus extension
2731 poppler
2732 zlib
2733 (cargo-inputs 'papers)))
2734 (home-page "https://apps.gnome.org/Papers")
2735 ;; TODO: drop “new” when updating to GNOME 49 or newer.
2736 (synopsis "GNOME's new document viewer")
2737 (description "Papers is a document viewer capable of displaying multiple
2738and single page document formats like PDF and DejaVu.")
2739 (license license:gpl2+)))
2740
2741(define-public gsettings-desktop-schemas
2742 (package
2743 (name "gsettings-desktop-schemas")
2744 (version "49.1")
2745 (source
2746 (origin
2747 (method url-fetch)
2748 (uri (string-append "mirror://gnome/sources/" name "/"
2749 (version-major version) "/"
2750 name "-" version ".tar.xz"))
2751 (sha256
2752 (base32
2753 "0qqfxml3kqg87ly5w8rhqalin6qv20jcn2gqkdmhga75sn1pyykp"))))
2754 (build-system meson-build-system)
2755 (arguments
2756 `(#:phases (modify-phases %standard-phases
2757 (add-after 'unpack 'patch-schemas
2758 (lambda* (#:key inputs #:allow-other-keys)
2759 (substitute* (find-files "schemas"
2760 "\\.gschema\\.xml\\.in$")
2761 ;; Provide the correct file name of the default
2762 ;; GNOME background, 'adwaita-timed.xml'.
2763 (("@datadir@/backgrounds/gnome")
2764 (search-input-directory inputs
2765 "/share/backgrounds/gnome"))
2766 ;; Do not reference fonts, that may not exist.
2767 (("'Source Code Pro 10'") "'Monospace 11'")))))))
2768 (inputs (list glib gnome-backgrounds gobject-introspection))
2769 (native-inputs (list gettext-minimal
2770 `(,glib "bin") ;glib-compile-schemas, etc.
2771 gobject-introspection
2772 pkg-config
2773 python)) ;for build-aux/meson/post-install.py
2774 (home-page "https://launchpad.net/gsettings-desktop-schemas")
2775 (synopsis "GNOME settings for various desktop components")
2776 (description "Gsettings-desktop-schemas contains a collection of GSettings
2777schemas for settings shared by various components of the GNOME desktop.")
2778 (license license:lgpl2.1+)))
2779
2780(define-public python-liblarch
2781 ;; The merge request replacing nose with pytest has not been released yet.
2782 ;; Temporarily use a git snapshot.
2783 (let ((commit "fe06860ea6f1cd339b5b38485879ec5d9512698c")
2784 (revision "0"))
2785 (package
2786 (name "python-liblarch")
2787 (version (git-version "3.2.0" revision commit))
2788 (source
2789 (origin
2790 (method git-fetch)
2791 (uri (git-reference
2792 (url "https://github.com/getting-things-gnome/liblarch")
2793 (commit commit)))
2794 (file-name (git-file-name name version))
2795 (sha256
2796 (base32 "1hvwhqhanwkmavnqxbl276nncvnrhgz92pa8z417d8bk3cirmj0b"))))
2797 (build-system pyproject-build-system)
2798 (arguments
2799 (list
2800 #:phases
2801 #~(modify-phases %standard-phases
2802 (add-before 'check 'start-xserver
2803 (lambda* (#:key inputs #:allow-other-keys)
2804 (let ((xorg-display ":1"))
2805 (system (string-join
2806 (list (search-input-file inputs "/bin/Xvfb")
2807 xorg-display "&")
2808 " "))
2809 (setenv "DISPLAY" xorg-display))))
2810 (replace 'check
2811 (lambda* (#:key tests? test-flags #:allow-other-keys)
2812 (when tests?
2813 (invoke "./run-tests")))))))
2814 (native-inputs (list python-pytest python-setuptools xorg-server-for-tests))
2815 (inputs (list gtk+))
2816 (propagated-inputs (list python-pygobject-3.50))
2817 (home-page "https://getting-things-gnome.github.io/liblarch")
2818 (synopsis "Library to easily handle complex data structures")
2819 (description
2820 "Liblarch is a Python library built to easily handle data structures such
2821as lists, trees and acyclic graphs. There's also a GTK binding that will
2822allow you to use your data structure in a @code{Gtk.Treeview}.
2823
2824Liblarch support multiple views of one data structure and complex filtering.
2825That way, you have a clear separation between your data themselves (Model)
2826and how they are displayed (View).")
2827 (license license:lgpl3+))))
2828
2829(define-public gtg
2830 (package
2831 (name "gtg")
2832 (version "0.6")
2833 (source
2834 (origin
2835 (method git-fetch)
2836 (uri (git-reference
2837 (url "https://github.com/getting-things-gnome/gtg")
2838 (commit (string-append "v" version))))
2839 (file-name (git-file-name name version))
2840 (sha256
2841 (base32 "1wcivqp4z3a2jdr2wdrldzwy9v6hlfp5sk0pmh80znlgvl7q3jiv"))))
2842 (build-system meson-build-system)
2843 (arguments
2844 (list
2845 #:glib-or-gtk? #t
2846 #:imported-modules (append %meson-build-system-modules
2847 %pyproject-build-system-modules)
2848 #:modules '((guix build meson-build-system)
2849 ((guix build pyproject-build-system) #:prefix py:)
2850 (guix build utils))
2851 #:phases
2852 #~(modify-phases %standard-phases
2853 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
2854 (lambda* (#:key inputs outputs #:allow-other-keys)
2855 (wrap-program (search-input-file outputs "bin/gtg")
2856 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
2857 ,(py:site-packages inputs outputs)))
2858 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
2859 (native-inputs
2860 (list desktop-file-utils
2861 gettext-minimal
2862 `(,glib "bin")
2863 gobject-introspection
2864 itstool
2865 pkg-config
2866 python))
2867 (inputs
2868 (list bash-minimal
2869 (librsvg-for-system)
2870 gsettings-desktop-schemas
2871 gtk+
2872 gtksourceview-4
2873 pango
2874 python
2875 python-dbus
2876 python-liblarch
2877 python-lxml
2878 python-pycairo
2879 python-pygobject
2880 python-pyxdg))
2881 (home-page "https://wiki.gnome.org/Apps/GTG")
2882 (synopsis "Personal organizer for the GNOME desktop")
2883 (description
2884 "Getting Things GNOME! (GTG) is a personal tasks and TODO list items
2885organizer for the GNOME desktop environment inspired by the Getting Things
2886Done (GTD) methodology. GTG is designed with flexibility, adaptability,
2887and ease of use in mind so it can be used as more than just GTD software.
2888GTG is intended to help you track everything you need to do and need to
2889know, from small tasks to large projects.")
2890 (license license:gpl3+)))
2891
2892(define-public icon-naming-utils
2893 (package
2894 (name "icon-naming-utils")
2895 (version "0.8.90")
2896 (source
2897 (origin
2898 (method url-fetch)
2899 (uri (string-append "https://tango.freedesktop.org/releases/icon-naming-utils-"
2900 version ".tar.bz2"))
2901 (sha256
2902 (base32
2903 "1mc3v28fdfqanx3lqx233vcr4glb4c2376k0kx2v91a4vxwqcdxi"))))
2904 (build-system gnu-build-system)
2905 (inputs
2906 (list perl perl-xml-simple))
2907 (arguments
2908 '(#:phases
2909 (modify-phases %standard-phases
2910 (add-after 'install 'set-load-paths
2911 ;; Tell 'icon-name-mapping' where XML::Simple is.
2912 (lambda* (#:key outputs #:allow-other-keys)
2913 (let* ((out (assoc-ref outputs "out"))
2914 (prog (string-append out "/libexec/icon-name-mapping")))
2915 (wrap-program
2916 prog
2917 `("PERL5LIB" = ,(list (getenv "PERL5LIB")))))
2918 #t)))))
2919 (home-page "http://tango.freedesktop.org/Standard_Icon_Naming_Specification")
2920 (synopsis
2921 "Utility to implement the Freedesktop Icon Naming Specification")
2922 (description
2923 "To help with the transition to the Freedesktop Icon Naming
2924Specification, the icon naming utility maps the icon names used by the
2925GNOME and KDE desktops to the icon names proposed in the specification.")
2926 (license license:lgpl2.1+)))
2927
2928(define-public adwaita-icon-theme-legacy
2929 ;; Copied from [email protected]. The adwaita-icon-theme package
2930 ;; ships (introduced in 46.2) an index.theme that inherits from
2931 ;; AdwaitaLegacy, with the expectation that distributions may choose to make
2932 ;; it a dependency of Adwaita for compatibility purposes.
2933 (package
2934 (name "adwaita-icon-theme-legacy")
2935 (version "46.2")
2936 (source (origin
2937 (method url-fetch)
2938 (uri (string-append "mirror://gnome/sources/" name "/"
2939 (version-major version) "/"
2940 name "-" version ".tar.xz"))
2941 (sha256
2942 (base32 "1d1gyacqy7rf9vbljwhqwdkxbyszn5avfcw8s5r4p9c9hpsq112l"))))
2943 (build-system meson-build-system)
2944 (arguments
2945 (list #:phases
2946 #~(modify-phases %standard-phases
2947 (add-after 'unpack 'patch-meson
2948 ;; Don't create 'icon-theme.cache'.
2949 (lambda _ (substitute* "meson.build"
2950 (("gtk4?-update-icon-cache") "true")))))))
2951 (home-page "https://gitlab.gnome.org/GNOME/adwaita-icon-theme")
2952 (synopsis "Legacy GNOME icon theme")
2953 (description
2954 "Legacy Adwaita icon theme. This provides GNOME's \"old-style\" fullcolor
2955icons, for compatibility with applications that request icons following the
2956Freedesktop Icon Naming Specification.")
2957 (license (list license:lgpl3 license:cc-by-sa3.0))))
2958
2959(define-public adwaita-icon-theme
2960 (package
2961 (name "adwaita-icon-theme")
2962 (version "49.0")
2963 (source (origin
2964 (method url-fetch)
2965 (uri (string-append "mirror://gnome/sources/" name "/"
2966 (version-major version) "/"
2967 name "-" version ".tar.xz"))
2968 (sha256
2969 (base32
2970 "0p3mj6bl8wp1cri2qdszqrqqs47irh7qvajr5yaaly5js5hn85k5"))))
2971 (build-system meson-build-system)
2972 (arguments
2973 (list #:phases
2974 #~(modify-phases %standard-phases
2975 (add-after 'unpack 'patch-meson
2976 ;; Don't create 'icon-theme.cache'.
2977 (lambda _
2978 (substitute* "meson.build"
2979 (("gtk4?-update-icon-cache") "true")))))))
2980 ;; The Adwaita icon theme inherits from both AdwaitaLegacy and hicolor,
2981 ;; per its index.theme file ("Inherits=AdwaitaLegacy,hicolor"); propagate
2982 ;; them so the theme is always fully defined.
2983 (propagated-inputs (list adwaita-icon-theme-legacy hicolor-icon-theme))
2984 (home-page "https://gitlab.gnome.org/GNOME/adwaita-icon-theme")
2985 (synopsis "GNOME icon theme")
2986 (description "Icons for the GNOME desktop.")
2987 (license (list license:lgpl3 license:cc-by-sa3.0)))) ;dual-licensed
2988
2989(define-public tango-icon-theme
2990 (package
2991 (name "tango-icon-theme")
2992 (version "0.8.90")
2993 (source (origin
2994 (method url-fetch)
2995 (uri (string-append "http://tango.freedesktop.org/releases/"
2996 "tango-icon-theme-" version ".tar.bz2"))
2997 (sha256
2998 (base32
2999 "034r9s944b4yikyfgn602yv7s54wdzlq0qfvqh52b9x6kbx08h79"))))
3000 (build-system gnu-build-system)
3001 (native-inputs
3002 (list icon-naming-utils intltool imagemagick pkg-config))
3003 (home-page "http://tango-project.org/")
3004 (synopsis "Tango icon theme")
3005 (description "This is an icon theme that follows the Tango visual
3006guidelines.")
3007 (license license:public-domain)))
3008
3009(define-public system-config-printer
3010 (package
3011 (name "system-config-printer")
3012 (version "1.5.16")
3013 (source
3014 (origin
3015 (method url-fetch)
3016 (uri (string-append
3017 "https://github.com/OpenPrinting/system-config-printer/releases/"
3018 "download/v" version
3019 "/system-config-printer-" version ".tar.xz"))
3020 (sha256
3021 (base32 "1z9pvgifj5c87csnqz10qybbcayh3ak9m606f63ifkvyjh4q9jnb"))))
3022 (build-system glib-or-gtk-build-system)
3023 (arguments
3024 (list
3025 #:imported-modules (append %glib-or-gtk-build-system-modules
3026 %pyproject-build-system-modules)
3027 #:modules '((guix build glib-or-gtk-build-system)
3028 ((guix build pyproject-build-system) #:prefix py:)
3029 (guix build utils))
3030 #:phases
3031 #~(modify-phases %standard-phases
3032 (add-after 'unpack 'patch-build-files
3033 (lambda _
3034 (substitute* "configure.ac"
3035 (("AC_INIT.*" all)
3036 (string-append all "\nAC_CONFIG_MACRO_DIR([m4])\n"))
3037 ;; XXX: AX macros appear unavailable
3038 (("AX_REQUIRE_DEFINED.*") ""))
3039 ;; The Makefile generates some scripts, so set a valid shebang
3040 (substitute* "Makefile.am"
3041 (("/bin/bash") (which "bash")))
3042 (delete-file "configure")))
3043 #$@(if (this-package-native-input "config")
3044 #~((add-after 'unpack 'update-config-scripts
3045 (lambda* (#:key native-inputs inputs #:allow-other-keys)
3046 (for-each (lambda (file)
3047 (install-file
3048 (search-input-file
3049 (or native-inputs inputs)
3050 (string-append "/bin/" file)) "."))
3051 '("config.guess" "config.sub")))))
3052 #~())
3053 (add-after 'install 'add-install-to-pythonpath
3054 (assoc-ref py:%standard-phases 'add-install-to-pythonpath))
3055 (add-after 'add-install-to-pythonpath 'wrap-for-python
3056 (assoc-ref py:%standard-phases 'wrap))
3057 (add-after 'install 'wrap
3058 (lambda _
3059 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
3060 (for-each
3061 (lambda (program)
3062 (wrap-program program
3063 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
3064 (map (lambda (name)
3065 (string-append #$output "/bin/" name))
3066 '("system-config-printer"
3067 "system-config-printer-applet"
3068 "install-printerdriver"
3069 "scp-dbus-service")))))))))
3070 (inputs
3071 (list gsettings-desktop-schemas
3072 gobject-introspection
3073 python
3074 cups
3075 gtk+
3076 python-dbus
3077 python-pygobject
3078 python-pycups
3079 python-requests
3080 python-pycairo
3081 libnotify
3082 packagekit))
3083 (native-inputs
3084 (append
3085 (if (target-riscv64?)
3086 (list config)
3087 '())
3088 (list pkg-config
3089 desktop-file-utils
3090 glib
3091 autoconf
3092 automake
3093 gettext-minimal
3094 xmlto
3095 docbook-xml-4.1.2
3096 docbook-xsl
3097 libxml2)))
3098 (home-page "https://github.com/zdohnal/system-config-printer")
3099 (synopsis "CUPS administration tool")
3100 (description
3101 "system-config-printer is a CUPS administration tool. It's written in
3102Python using GTK+, and uses the @acronym{IPP, Internet Printing Protocol} when
3103configuring CUPS.")
3104 (license license:gpl2+)))
3105
3106(define-public hicolor-icon-theme
3107 (package
3108 (name "hicolor-icon-theme")
3109 (version "0.18")
3110 (source
3111 (origin
3112 (method url-fetch)
3113 (uri (string-append "https://icon-theme.freedesktop.org/releases/"
3114 "hicolor-icon-theme-" version ".tar.xz"))
3115 (sha256
3116 (base32
3117 "1mw1rz1khlj30ywr1iiarx497zayyzwmrjnb8nxn9gx31al503nv"))))
3118 (build-system meson-build-system)
3119 (arguments
3120 `(#:tests? #f)) ; no check target
3121 (home-page "https://icon-theme.freedesktop.org/releases/")
3122 (synopsis
3123 "Freedesktop icon theme")
3124 (description
3125 "The default fallback theme used by XDG icon-theme implementations.")
3126 (license license:gpl2)))
3127
3128(define-public libnotify
3129 (package
3130 (name "libnotify")
3131 (version "0.8.8")
3132 (source
3133 (origin
3134 (method url-fetch)
3135 (uri (string-append "mirror://gnome/sources/" name "/"
3136 (version-major+minor version) "/"
3137 name "-" version ".tar.xz"))
3138 (sha256
3139 (base32
3140 "1pgxbfrw8vhgshl5dl51wl3ir91g7a1g84ynpapbab6w37v0whi3"))))
3141 (outputs '("out" "doc"))
3142 (build-system meson-build-system)
3143 (arguments
3144 (list
3145 ;; The recently added tests would require a notification daemon, which
3146 ;; introduce a circular dependency with libnotify.
3147 #:tests? #f
3148 ;; Also disable tests via configure-flags, as building them requires
3149 ;; gtk, which would introduce yet another circle…
3150 #:configure-flags #~(list "-Dtests=false")
3151 #:phases
3152 #~(modify-phases %standard-phases
3153 (add-after 'install 'move-doc
3154 (lambda _
3155 (let* ((old (string-append #$output "/share/doc"))
3156 (new (string-append #$output:doc "/share/doc")))
3157 (mkdir-p (dirname new))
3158 (rename-file old new)))))))
3159 (propagated-inputs (list gdk-pixbuf glib)) ;in Requires of libnotify.pc.
3160 (inputs (list libpng))
3161 (native-inputs
3162 (list pkg-config
3163 `(,glib "bin")
3164 gobject-introspection
3165
3166 ;; For the documentation.
3167 gi-docgen
3168 gtk-doc/stable
3169 libxslt
3170 docbook-xsl))
3171 (home-page "https://gitlab.gnome.org/GNOME/libnotify/")
3172 (synopsis "GNOME desktop notification library")
3173 (description
3174 "Libnotify is a library that sends desktop notifications to a
3175notification daemon, as defined in the Desktop Notifications spec. These
3176notifications can be used to inform the user about an event or display
3177some form of information without getting in the user's way.")
3178 (license license:lgpl2.1+)))
3179
3180(define-public libpeas
3181 (package
3182 (name "libpeas")
3183 (version "1.36.0")
3184 (source
3185 (origin
3186 (method url-fetch)
3187 (uri (string-append "mirror://gnome/sources/" name "/"
3188 (version-major+minor version) "/"
3189 name "-" version ".tar.xz"))
3190 (sha256
3191 (base32
3192 "0k3v4c9xs7pxpckkagl9ba70nlxl2n23w6ixc8bqd3ndrk1bjz19"))))
3193 (build-system meson-build-system)
3194 (arguments
3195 (list
3196 #:configure-flags #~'("-Dvapi=true" "-Dgtk_doc=true")
3197 #:phases
3198 #~(modify-phases %standard-phases
3199 (add-before 'check 'start-xserver
3200 (lambda* (#:key inputs #:allow-other-keys)
3201 (let ((disp ":1"))
3202 (setenv "DISPLAY" disp)
3203 (setenv "XDG_CACHE_HOME" "/tmp/xdg-cache")
3204 (setenv "XDG_CONFIG_HOME" "/tmp")
3205 ;; Tests require a running X server.
3206 (system (format #f "~a ~a &"
3207 (search-input-file inputs "bin/Xvfb")
3208 disp))))))))
3209 (inputs
3210 (list glade3
3211 python
3212 python-pygobject-3.50))
3213 (native-inputs
3214 (list pkg-config
3215 gettext-minimal
3216 gi-docgen
3217 `(,glib "bin")
3218 gobject-introspection
3219 xorg-server-for-tests
3220 vala))
3221 (propagated-inputs
3222 ;; In "Requires" of the .pc files.
3223 (list glib gtk+ gobject-introspection))
3224 (home-page "https://wiki.gnome.org/Projects/Libpeas")
3225 (synopsis "GObject plugin system")
3226 (description
3227 "Libpeas is a gobject-based plugin engine, targeted at giving every
3228application the chance to assume its own extensibility. It also has a set of
3229features including, but not limited to: multiple extension points; on-demand
3230(lazy) programming language support for C, Python and JS; simplicity of the
3231API.")
3232 (license license:lgpl2.0+)))
3233
3234(define-public libpeas-2
3235 (package
3236 (inherit libpeas)
3237 (name "libpeas")
3238 (version "2.2.1")
3239 (source
3240 (origin
3241 (method url-fetch)
3242 (uri (string-append "mirror://gnome/sources/" name "/"
3243 (version-major+minor version) "/"
3244 name "-" version ".tar.xz"))
3245 (sha256
3246 (base32
3247 "1214is15w2fnp8nj0pgs9jla4h676zq8sism6zgnw01pnj4wm7jq"))))
3248 (arguments
3249 (substitute-keyword-arguments arguments
3250 ((#:configure-flags flags #~(list))
3251 #~(cons* "-Dlua51=false" #$flags))
3252 ((#:phases phases '%standard-phases)
3253 #~(modify-phases #$phases
3254 (add-after 'unpack 'skip-problematic-tests
3255 (lambda _
3256 ;; XXX: Even with the workaround used in the check phase, it
3257 ;; looks like the libraries are doubly loaded because of the
3258 ;; LD_LIBRARY_PATH set up by 'meson test', which breaks the
3259 ;; loading of the extensions ('cannot register existing type
3260 ;; 'PeasExtensionBase', then it hangs).
3261 (substitute* "tests/libpeas/meson.build"
3262 ((".*'extension-gjs', .*") "")
3263 ((".*'extension-py', .*") ""))))
3264 (delete 'check)
3265 (add-after 'install 'check
3266 (lambda args
3267 ;; This workaround is made necessary by a custom patch to our
3268 ;; gobject-introspection package that causes it to always use
3269 ;; absolute paths for the shared objects referenced by the
3270 ;; typelibs.
3271 (let ((src "tests/libpeas/introspection/libintrospection-2.so"))
3272 (install-file src (string-append #$output "/lib/"))
3273 (apply (assoc-ref %standard-phases 'check) args)
3274 (delete-file (string-append #$output "/lib/"
3275 (basename src))))))))))
3276 (inputs
3277 (list gjs
3278 ;; lua-5.1
3279 ;; lua5.1-lgi
3280 mozjs
3281 python
3282 python-pygobject))))
3283
3284(define-public gtkglext
3285 (package
3286 (name "gtkglext")
3287 (version "1.2.0")
3288 (source (origin
3289 (method url-fetch)
3290 (uri (string-append "mirror://sourceforge/gtkglext/gtkglext/"
3291 version "/gtkglext-" version ".tar.gz"))
3292 (sha256
3293 (base32 "1ya4d2j2aacr9ii5zj4ac95fjpdvlm2rg79mgnk7yvl1dcy3y1z5"))
3294 (patches (search-patches
3295 "gtkglext-disable-disable-deprecated.patch"))))
3296 (build-system gnu-build-system)
3297 (arguments
3298 `(#:phases
3299 (modify-phases %standard-phases
3300 ;; Fix a collision between a local variable and a definition from
3301 ;; glibc's string.h.
3302 (add-after 'unpack 'fix-collision
3303 (lambda _
3304 (substitute* "gdk/gdkglshapes.c"
3305 ((" index") " triangle_index"))
3306 #t)))))
3307 (inputs (list gtk+-2 mesa glu libx11 libxt))
3308 (native-inputs (list pkg-config
3309 `(,glib "bin")))
3310 (propagated-inputs (list pangox-compat))
3311 (home-page "https://projects.gnome.org/gtkglext")
3312 (synopsis "OpenGL extension to GTK+")
3313 (description "GtkGLExt is an OpenGL extension to GTK+. It provides
3314additional GDK objects which support OpenGL rendering in GTK+ and GtkWidget
3315API add-ons to make GTK+ widgets OpenGL-capable.")
3316 (license license:lgpl2.1+)))
3317
3318(define-public glade3
3319 (package
3320 (name "glade")
3321 (version "3.40.0")
3322 (source (origin
3323 (method url-fetch)
3324 (uri (string-append "mirror://gnome/sources/" name "/"
3325 (version-major+minor version) "/"
3326 name "-" version ".tar.xz"))
3327 (sha256
3328 (base32
3329 "171x7vshhw0nqgnhkcaqfylpr5qrmhclwmkva6wjm5s9m2pavj9i"))))
3330 (build-system meson-build-system)
3331 (arguments
3332 (list
3333 #:glib-or-gtk? #t
3334 #:phases
3335 #~(modify-phases %standard-phases
3336 (add-after 'unpack 'skip-gtk-update-icon-cache
3337 ;; Don't create 'icon-theme.cache'.
3338 (lambda _
3339 (substitute* "meson_post_install.py"
3340 (("gtk-update-icon-cache") "true"))))
3341 (add-after 'unpack 'skip-modules-test
3342 ;; This test fails with 'GLib-GObject-FATAL-CRITICAL: cannot
3343 ;; register existing type 'GIRepository' since the GNOME 49
3344 ;; upgrades.
3345 (lambda _
3346 (substitute* "tests/meson.build"
3347 ((".*'modules', .*") ""))))
3348 (add-before 'check 'pre-check
3349 (lambda _
3350 (setenv "HOME" "/tmp")
3351 ;; Tests require a running X server.
3352 (system "Xvfb :1 &")
3353 (setenv "DISPLAY" ":1"))))))
3354 (inputs
3355 (append
3356 ;; GJS depends on Rust so remove the GJS dependency on other platforms.
3357 (if (supported-package? gjs)
3358 (list gjs)
3359 '())
3360 (list gtk+ libxml2)))
3361 (native-inputs
3362 (list at-spi2-core ;for tests
3363 docbook-xml-4.2
3364 docbook-xsl
3365 gettext-minimal
3366 `(,glib "bin")
3367 gobject-introspection
3368 hicolor-icon-theme
3369 itstool
3370 libxslt ;for xsltproc
3371 python
3372 python-pygobject-3.50
3373 pkg-config
3374 xorg-server-for-tests))
3375 (home-page "https://glade.gnome.org")
3376 (synopsis "GTK+ rapid application development tool")
3377 (description "Glade is a rapid application development (RAD) tool to
3378enable quick & easy development of user interfaces for the GTK+ toolkit and
3379the GNOME desktop environment.")
3380 (license license:lgpl2.0+)
3381 (native-search-paths (list (search-path-specification
3382 (variable "GLADE_CATALOG_SEARCH_PATH")
3383 (files '("share/glade/catalogs")))
3384 (search-path-specification
3385 (variable "GLADE_MODULE_SEARCH_PATH")
3386 (files '("lib/glade/modules")))))))
3387
3388(define-public blueprint-compiler
3389 (package
3390 (name "blueprint-compiler")
3391 (version "0.20.4")
3392 (source (origin
3393 (method git-fetch)
3394 (uri (git-reference
3395 (url
3396 "https://gitlab.gnome.org/jwestman/blueprint-compiler")
3397 (commit (string-append "v" version))))
3398 (file-name (string-append name "-" version "-checkout"))
3399 (sha256
3400 (base32
3401 "1kdvmy644dvm2wpmrv96n5vmk3ax0agn9s4ljymkwkv66i0qa3vl"))))
3402 (build-system meson-build-system)
3403 (arguments
3404 (list
3405 #:imported-modules
3406 (append %meson-build-system-modules
3407 %pyproject-build-system-modules)
3408 #:modules
3409 `((guix build meson-build-system)
3410 ((guix build pyproject-build-system) #:prefix py:)
3411 (guix build utils))
3412 #:phases
3413 #~(modify-phases %standard-phases
3414 (add-before 'check 'pre-check
3415 (lambda _
3416 (system "Xvfb :1 &")
3417 (setenv "DISPLAY" ":1")))
3418 (add-after 'install 'wrap-python
3419 (assoc-ref py:%standard-phases 'wrap))
3420 (add-after 'wrap-python 'gi-wrap
3421 (lambda _
3422 (let ((prog (string-append #$output "/bin/blueprint-compiler")))
3423 (wrap-program prog
3424 `("GI_TYPELIB_PATH"
3425 suffix
3426 (,(getenv "GI_TYPELIB_PATH"))))))))))
3427 (native-inputs (list gtk
3428 libadwaita
3429 python
3430 python-pygobject-3.50
3431 xorg-server-for-tests))
3432 (inputs (list python))
3433 (synopsis "Template markup language")
3434 (description
3435 "Blueprint is a markup language for GTK user interfaces. Internally, it
3436compiles to GTKBuilder XML.")
3437 (home-page "https://gitlab.gnome.org/jwestman/blueprint-compiler")
3438 (license license:lgpl3+)))
3439
3440(define-public blueprint-compiler-0.4
3441 (package
3442 (inherit blueprint-compiler)
3443 (name "blueprint-compiler")
3444 (version "0.4.0")
3445 (source (origin
3446 (method git-fetch)
3447 (uri (git-reference
3448 (url
3449 "https://gitlab.gnome.org/jwestman/blueprint-compiler")
3450 (commit (string-append "v" version))))
3451 (file-name (string-append name "-" version "-checkout"))
3452 (sha256
3453 (base32
3454 "0hj7f4xhwjc4x32r3lswwclbw37fw3spy806g4plkmym25hz4ydy"))))
3455 (arguments
3456 (substitute-keyword-arguments arguments
3457 ((#:phases phases)
3458 #~(modify-phases #$phases
3459 (delete 'fix-tests)))))))
3460
3461;;; TODO: Remove when 2027/03 comes.
3462(define-deprecated/public-alias cambalache
3463 (@ (gnu packages gnome-xyz) cambalache))
3464
3465(define-public libcroco
3466 (package
3467 (name "libcroco")
3468 (version "0.6.13")
3469 (source (origin
3470 (method url-fetch)
3471 (uri (string-append "mirror://gnome/sources/" name "/"
3472 (version-major+minor version) "/"
3473 name "-" version ".tar.xz"))
3474 (patches (search-patches "libcroco-CVE-2020-12825.patch"))
3475 (sha256
3476 (base32
3477 "1m110rbj5d2raxcdp4iz0qp172284945awrsbdlq99ksmqsc4zkn"))))
3478 (build-system gnu-build-system)
3479 (native-inputs
3480 (list pkg-config))
3481 (inputs
3482 (list glib libxml2 zlib))
3483 (home-page "https://github.com/GNOME/libcroco")
3484 (synopsis "CSS2 parsing and manipulation library")
3485 (description
3486 "Libcroco is a standalone CSS2 parsing and manipulation library.
3487The parser provides a low level event driven SAC-like API and a CSS object
3488model like API. Libcroco provides a CSS2 selection engine and an experimental
3489XML/CSS rendering engine.")
3490
3491 ;; LGPLv2.1-only.
3492 (license license:lgpl2.1)))
3493
3494(define-public libgsf
3495 (package
3496 (name "libgsf")
3497 (version "1.14.55")
3498 (source (origin
3499 (method url-fetch)
3500 (uri (string-append "mirror://gnome/sources/" name "/"
3501 (version-major+minor version) "/"
3502 name "-" version ".tar.xz"))
3503 (sha256
3504 (base32
3505 "0c91l0l3camxpanpgp634nd68vz3v0jbk9bxs5dfmlsvl6xhmmkl"))))
3506 (build-system glib-or-gtk-build-system)
3507 (outputs '("out" "bin" "doc"))
3508 (arguments
3509 (list #:configure-flags
3510 #~(list
3511 "--disable-static"
3512 "--enable-introspection"
3513 (string-append "--with-gir-dir=" #$output
3514 "/share/gir-"
3515 #$(version-major
3516 (package-version gobject-introspection))
3517 ".0")
3518 (string-append "--with-typelib-dir=" #$output
3519 "/lib/girepository-"
3520 #$(version-major
3521 (package-version gobject-introspection))
3522 ".0")
3523 (string-append "--with-html-dir=" #$output
3524 "/share/gtk-doc/html")
3525 "--with-zlib"
3526 "--with-bz2")
3527 #:phases
3528 #~(modify-phases %standard-phases
3529 (add-after 'patch-dot-desktop-files 'patch-dot-thumbnailer-files
3530 (lambda _
3531 (define abs-path (string-append #$output "/bin/gsf-office-thumbnailer"))
3532 (substitute* (string-append #$output "/share/thumbnailers/gsf-office.thumbnailer")
3533 (("TryExec=gsf-office-thumbnailer")
3534 (format #f "TryExec=~a" abs-path))
3535 (("Exec=gsf-office-thumbnailer")
3536 (format #f "Exec=~a" abs-path))))))))
3537 (native-inputs
3538 (list docbook-xml
3539 gettext-minimal
3540 gobject-introspection
3541 perl
3542 perl-xml-parser
3543 pkg-config
3544 python-wrapper))
3545 (inputs
3546 (list bzip2
3547 gdk-pixbuf
3548 zlib))
3549 (propagated-inputs
3550 (list glib
3551 libxml2))
3552 (synopsis "G Structured File Library")
3553 (description "Libgsf aims to provide an efficient extensible I/O abstraction
3554for dealing with different structured file formats.")
3555 (home-page "https://gitlab.gnome.org/GNOME/libgsf")
3556 (license
3557 (list license:lgpl2.1+ ;library
3558 license:lgpl2.0+)))) ;others
3559
3560(define-public librsvg
3561 (package
3562 (name "librsvg")
3563 (version "2.61.4")
3564 (source (origin
3565 (method url-fetch)
3566 (uri (string-append "mirror://gnome/sources/librsvg/"
3567 (version-major+minor version) "/"
3568 "librsvg-" version ".tar.xz"))
3569 (sha256
3570 (base32
3571 "036afbhd2h4brbd491kmgig0ib1df3s7j9bx8349b3zjs4lfm87w"))))
3572 (build-system meson-build-system)
3573 (outputs '("out" "doc" "debug"))
3574 (arguments
3575 (list
3576 #:configure-flags
3577 #~(list #$@(if (%current-target-system)
3578 #~( ;; g-ir-scanner can't import its modules
3579 ;; and vala currently can't be cross-compiled.
3580 "-Dintrospection=false"
3581 "-Dvala=false"
3582 ;; This is needed when cross-compiling for some
3583 ;; architectures as autoconf and rust disagree about
3584 ;; the target triplet.
3585 (string-append "-Dtriplet="
3586 #$(platform-rust-target
3587 (lookup-platform-by-target
3588 (%current-target-system)))))
3589 #~())
3590 "-Dpixbuf-loader=enabled") ;disabled since 2.61.2
3591 #:imported-modules (append %cargo-build-system-modules
3592 %meson-build-system-modules)
3593 #:modules
3594 '(((guix build cargo-build-system) #:prefix cargo:)
3595 (guix build meson-build-system)
3596 (guix build utils))
3597 #:phases
3598 #~(modify-phases %standard-phases
3599 (add-after 'unpack 'patch-gdk-pixbuf-thumbnailer
3600 (lambda* (#:key inputs #:allow-other-keys)
3601 ;; The gdk-pixbuf-thumbnailer location is assumed to be relative
3602 ;; to librsvg's own installation prefix (see:
3603 ;; https://gitlab.gnome.org/GNOME/librsvg/-/issues/955).
3604 (substitute* "gdk-pixbuf-loader/librsvg.thumbnailer.in"
3605 (("@bindir@/gdk-pixbuf-thumbnailer")
3606 (string-append #$(this-package-input "gdk-pixbuf")
3607 "/bin/gdk-pixbuf-thumbnailer")))))
3608 (add-after 'unpack 'prepare-for-build
3609 (lambda _
3610 ;; Something about the build environment resists building
3611 ;; successfully with the '--locked' flag.
3612 (substitute* "meson/cargo_wrapper.py"
3613 (("\"--locked\",?") ""))
3614 ;; This is needed so Cargo embeds the correct RUNPATH
3615 ;; information to the binaries it produces,
3616 ;; e.g. libpixbufloader_svg.so.
3617 (setenv "RUSTFLAGS"
3618 (string-append "-C link-arg=-Wl,-rpath,"
3619 #$output "/lib"))))
3620 (add-after 'unpack 'prepare-for-tests
3621 (lambda _
3622 (setenv "HOME" "/tmp") ;placate fontconfig errors
3623 ;; Increase reftest tolerance a bit to account for different
3624 ;; libraries like pango, etc.
3625 (setenv "RSVG_TEST_TOLERANCE" "20")
3626 ;; These tests fail even after loosening the tolerance.
3627 (substitute* "rsvg/tests/reference.rs"
3628 ((".*svg1_1_filters_conv_0[24]_f_svg.*") "")
3629 ((".*rtl_tspan_svg.*") ""))))
3630 (add-before 'configure 'pre-configure
3631 (lambda* (#:key outputs #:allow-other-keys)
3632 (substitute* "gdk-pixbuf-loader/meson.build"
3633 ;; By default the gdk-pixbuf loader is installed under
3634 ;; gdk-pixbuf's prefix. Work around that.
3635 (("pixbuf_dep.get_variable.*'gdk_pixbuf_moduledir'.*),")
3636 (format #f "get_option('prefix') / '~a',"
3637 #$%gdk-pixbuf-loaders-directory))
3638 (("pixbuf_dep.get_variable.*'gdk_pixbuf_query_loaders'.*),")
3639 (format #f "'~a'," (which "gdk-pixbuf-query-loaders")))
3640 (("pixbuf_dep.get_variable.*'gdk_pixbuf_cache_file'.*)")
3641 (format #f "prefix / '~a'" #$%gdk-pixbuf-loaders-cache-file)))))
3642 (add-after 'unpack 'prepare-cargo-build-system
3643 (lambda args
3644 (for-each
3645 (lambda (phase)
3646 (format #t "Running cargo phase: ~a~%" phase)
3647 (apply (assoc-ref cargo:%standard-phases phase)
3648 #:cargo-target #$(cargo-triplet)
3649 args))
3650 '(unpack-rust-crates
3651 configure
3652 check-for-pregenerated-files
3653 patch-cargo-checksums))))
3654 (add-after 'install 'sanitize-pkg-config-files
3655 (lambda _
3656 (substitute* (find-files #$output "\\.pc$")
3657 (("^Requires.private:.*") "")))))))
3658 (native-inputs
3659 (append
3660 (list gdk-pixbuf
3661 gi-docgen
3662 `(,glib "bin")
3663 gobject-introspection
3664 pkg-config
3665 python
3666 python-docutils ;for rst2man
3667 rust
3668 rust-cargo-c
3669 vala)
3670 (or (and=> (%current-target-system)
3671 (compose list make-rust-sysroot))
3672 '())))
3673 (inputs
3674 (cons* dav1d
3675 freetype
3676 gobject-introspection
3677 libxml2
3678 pango
3679 (cargo-inputs 'librsvg)))
3680 (propagated-inputs (list cairo gdk-pixbuf glib))
3681 (synopsis "SVG rendering library")
3682 (description "Librsvg is a library to render SVG images to Cairo surfaces.
3683GNOME uses this to render SVG icons. Outside of GNOME, other desktop
3684environments use it for similar purposes. Wikimedia uses it for Wikipedia's SVG
3685diagrams.")
3686 (home-page "https://wiki.gnome.org/LibRsvg")
3687 (license license:lgpl2.1+)))
3688
3689(define-public librsvg-2.40
3690 ;; This is the last version implemented in C.
3691 (package
3692 (inherit librsvg)
3693 (version "2.40.21")
3694 (source (origin
3695 (method url-fetch)
3696 (uri (string-append "mirror://gnome/sources/librsvg/"
3697 (version-major+minor version)
3698 "/librsvg-" version ".tar.xz"))
3699 (sha256
3700 (base32
3701 "1fljkag2gr7c4k5mn798lgf9903xslz8h51bgvl89nnay42qjqpp"))))
3702 (build-system gnu-build-system)
3703 (arguments
3704 (list
3705 #:configure-flags '(list "--disable-static")
3706 #:phases
3707 #~(modify-phases %standard-phases
3708 (add-before 'configure 'pre-configure
3709 (lambda* (#:key inputs #:allow-other-keys)
3710 (substitute* "gdk-pixbuf-loader/Makefile.in"
3711 ;; By default the gdk-pixbuf loader is installed under
3712 ;; gdk-pixbuf's prefix. Work around that.
3713 (("gdk_pixbuf_moduledir = .*$")
3714 (string-append "gdk_pixbuf_moduledir = "
3715 "$(prefix)/lib/gdk-pixbuf-2.0/2.10.0/"
3716 "loaders\n"))
3717 ;; Drop the 'loaders.cache' file, it's in gdk-pixbuf+svg.
3718 (("gdk_pixbuf_cache_file = .*$")
3719 "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))))
3720 (add-before 'check 'fix-test-with-pango-1.50
3721 (lambda _
3722 ;; Changes between pango 1.48 and 1.50 caused the text to be one
3723 ;; pixel lower in the output image compared to the reference.
3724 (substitute* "tests/fixtures/reftests/bugs/587721-text-transform.svg"
3725 (("660\\.9") "659.9"))))
3726 (add-before 'check 'remove-failing-tests
3727 (lambda _
3728 (with-directory-excursion "tests/fixtures/reftests"
3729 (for-each delete-file
3730 '( ;; This test fails on i686:
3731 "svg1.1/masking-path-04-b.svg"
3732 ;; This test fails on armhf:
3733 "svg1.1/masking-mask-01-b.svg"
3734 ;; This test fails on aarch64:
3735 "bugs/777834-empty-text-children.svg"
3736 ;; These two tests fail due to slightly different
3737 ;; text rendering (different kerning or similar),
3738 ;; nothing alarming.
3739 "bugs/340047.svg"
3740 "bugs/749415.svg"
3741 ;; These two tests fail with the update to cairo
3742 ;; version 1.18.0.
3743 "bugs/587721-text-transform.svg"
3744 "svg1.1/masking-path-03-b.svg"))))))))
3745 (native-inputs
3746 (list pkg-config
3747 `(,glib "bin") ; glib-mkenums, etc.
3748 gobject-introspection)) ; g-ir-compiler, etc.
3749 (inputs
3750 (list pango libcroco libxml2-2.11))
3751 (propagated-inputs
3752 ;; librsvg-2.0.pc refers to all of that.
3753 (list cairo gdk-pixbuf glib))
3754 (synopsis "Render SVG files using Cairo (ancient C version)")
3755 (properties '((hidden? . #t)))))
3756
3757(define* (librsvg-for-system #:optional
3758 (system (or (%current-target-system)
3759 (%current-system))))
3760 ;; Since librsvg 2.50 depends on Rust, and Rust is only correctly supported
3761 ;; on x86_64, aarch64 and riscv64 so far, use the ancient C version on other
3762 ;; platforms (FIXME).
3763 (if (supported-package? librsvg)
3764 librsvg
3765 librsvg-2.40))
3766
3767(export librsvg-for-system)
3768
3769(define-public libidl
3770 (package
3771 (name "libidl")
3772 (version "0.8.14")
3773 (source (origin
3774 (method url-fetch)
3775 (uri (string-append "mirror://gnome/sources/libIDL/"
3776 (version-major+minor version) "/"
3777 "libIDL-" version ".tar.bz2"))
3778 (sha256
3779 (base32
3780 "08129my8s9fbrk0vqvnmx6ph4nid744g5vbwphzkaik51664vln5"))))
3781 (build-system gnu-build-system)
3782 (inputs (list glib))
3783 (native-inputs
3784 (list pkg-config flex bison))
3785 (home-page "http://freecode.com/projects/libidl")
3786 (synopsis "Create trees of CORBA Interface Definition Language files")
3787 (description "Libidl is a library for creating trees of CORBA Interface
3788Definition Language (idl) files, which is a specification for defining
3789portable interfaces. libidl was initially written for orbit (the orb from the
3790GNOME project, and the primary means of libidl distribution). However, the
3791functionality was designed to be as reusable and portable as possible.")
3792 (properties `((upstream-name . "libIDL")))
3793 (license license:lgpl2.0+)))
3794
3795(define-public orbit2
3796 (package
3797 (name "orbit2")
3798 (version "2.14.19")
3799 (source (origin
3800 (method url-fetch)
3801 (uri (let ((upstream-name "ORBit2"))
3802 (string-append "mirror://gnome/sources/" upstream-name "/"
3803 (version-major+minor version) "/"
3804 upstream-name "-" version ".tar.bz2")))
3805 (sha256
3806 (base32
3807 "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam"))
3808 (patches
3809 (search-patches "orbit2-fix-array-allocation-32bit.patch"))))
3810 (build-system gnu-build-system)
3811 (arguments
3812 (list
3813 ;; The "timeout-server" test hangs when run in parallel.
3814 #:parallel-tests? #f
3815 #:configure-flags
3816 #~'(#$(string-append "CFLAGS=-g -O2"
3817 " -Wno-error=implicit-int"
3818 " -Wno-error=incompatible-pointer-types")
3819 ;; We don't need static libraries, plus they don't build reproducibly
3820 ;; (non-deterministic ordering of .o files in the archive.)
3821 "--disable-static"
3822
3823 ;; The programmer kindly gives us a hook to turn off deprecation
3824 ;; warnings ...
3825 "DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
3826 ;; ... which they then completly ignore !!
3827 #:phases
3828 #~(modify-phases %standard-phases
3829 (add-after 'unpack 'fix-parallel-build
3830 ;; Parallel build fails because of a failed dependency,
3831 ;; https://bugzilla.gnome.org/show_bug.cgi?id=732274
3832 (lambda _
3833 (substitute* "src/services/name/Makefile.am"
3834 (("orbit_name_server_2_DEPENDENCIES = \\$(DEPS) CosNaming.h")
3835 "orbit_name_server_2_DEPENDENCIES = \
3836$(DEPS) CosNaming.h libname-server-2.a"))))
3837 (add-before 'configure 'ignore-deprecations
3838 (lambda _
3839 (substitute* "linc2/src/Makefile.in"
3840 (("-DG_DISABLE_DEPRECATED")
3841 "-DGLIB_DISABLE_DEPRECATION_WARNINGS")))))))
3842 ;; These are required in the installed pkg-config files.
3843 (propagated-inputs (list glib libidl))
3844 (native-inputs (list pkg-config))
3845 (home-page "https://projects.gnome.org/orbit2/")
3846 (synopsis "CORBA 2.4-compliant Object Request Broker")
3847 (description "ORBit2 is a CORBA 2.4-compliant Object Request Broker (orb)
3848featuring mature C, C++ and Python bindings.")
3849 ;; Licence notice is unclear. The Web page simply say "GPL" without giving
3850 ;; a version. SOME of the code files have licence notices for GPLv2+.
3851 ;; The tarball contains files of the text of GPLv2 and LGPLv2.
3852 (license license:gpl2+)
3853 (properties `((upstream-name . "ORBit2")))))
3854
3855(define-public libbonobo
3856 (package
3857 (name "libbonobo")
3858 (version "2.32.1")
3859 (source (origin
3860 (method url-fetch)
3861 (uri (string-append "mirror://gnome/sources/" name "/"
3862 (version-major+minor version)
3863 "/" name "-" version ".tar.bz2"))
3864 (sha256
3865 (base32 "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i"))
3866 (patches (search-patches
3867 "libbonobo-activation-test-race.patch"))))
3868 (build-system gnu-build-system)
3869 (arguments
3870 ;; The programmer kindly gives us a hook to turn off deprecation warnings ...
3871 `(#:configure-flags
3872 '("DISABLE_DEPRECATED_CFLAGS=-DGLIB_DISABLE_DEPRECATION_WARNINGS")
3873 ;; ... which they then completly ignore !!
3874 #:phases
3875 (modify-phases %standard-phases
3876 (add-before 'configure 'ignore-deprecations
3877 (lambda _
3878 (substitute* "activation-server/Makefile.in"
3879 (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
3880 #t)))
3881
3882 ;; There's apparently a race condition between the server stub
3883 ;; generation and linking of the example under 'samples/echo' that can
3884 ;; lead do undefined references when building in parallel, as reported
3885 ;; at <https://forums.gentoo.org/viewtopic-t-223376-start-550.html>.
3886 ;; Thus, disable parallel builds.
3887 #:parallel-build? #f))
3888 (inputs (list popt libxml2))
3889 ;; The following are Required by the .pc file
3890 (propagated-inputs
3891 (list glib orbit2))
3892 (native-inputs
3893 (list intltool
3894 pkg-config
3895 `(,glib "bin") ; for glib-genmarshal, etc.
3896 flex
3897 bison))
3898 (home-page "https://developer.gnome.org/libbonobo/")
3899 (synopsis "Framework for creating reusable components for use in GNOME applications")
3900 (description "Bonobo is a framework for creating reusable components for
3901use in GNOME applications, built on top of CORBA.")
3902 ;; Licence not explicitly stated. Source files contain no licence notices.
3903 ;; Tarball contains text of both GPLv2 and LGPLv2
3904 ;; GPLv2 covers both conditions
3905 (license license:gpl2+)))
3906
3907(define-public gconf
3908 (package
3909 (name "gconf")
3910 (version "3.2.6")
3911 (source (origin
3912 (method url-fetch)
3913 (uri
3914 (let ((upstream-name "GConf"))
3915 (string-append "mirror://gnome/sources/" upstream-name "/"
3916 (version-major+minor version) "/"
3917 upstream-name "-" version ".tar.xz")))
3918 (sha256
3919 (base32 "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr"))))
3920 (build-system gnu-build-system)
3921 (inputs (list dbus-glib libxml2))
3922 (propagated-inputs (list glib ; referred to in the .pc file
3923 orbit2))
3924 (native-inputs
3925 (list intltool
3926 `(,glib "bin") ; for glib-genmarshal, etc.
3927 pkg-config))
3928 (home-page "https://projects.gnome.org/gconf/")
3929 (synopsis "Store application preferences")
3930 (description "Gconf is a system for storing application preferences. It
3931is intended for user preferences; not arbitrary data storage.")
3932 (license license:lgpl2.0+)
3933 (properties '((upstream-name . "GConf")))))
3934
3935(define-public gnome-mime-data
3936 (package
3937 (name "gnome-mime-data")
3938 (version "2.18.0")
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 "1mvg8glb2a40yilmyabmb7fkbzlqd3i3d31kbkabqnq86xdnn69p"))))
3947 (build-system gnu-build-system)
3948 (native-inputs
3949 (list perl intltool))
3950 (arguments
3951 '(#:phases (modify-phases %standard-phases
3952 (add-after 'configure 'use-our-intltool
3953 (lambda _
3954 ;; Do not use the bundled intltool commands, which lack
3955 ;; the "dotless @INC" fixes of our 'intltool' package.
3956 (substitute* (find-files "." "^Makefile$")
3957 (("^INTLTOOL_(EXTRACT|UPDATE|MERGE) = .*$" _ tool)
3958 (string-append "INTLTOOL_" tool " = intltool-"
3959 (string-downcase tool) "\n")))
3960 #t)))))
3961 (home-page "https://www.gnome.org")
3962 (synopsis "Base MIME and Application database for GNOME")
3963 (description "GNOME Mime Data is a module which contains the base MIME
3964and Application database for GNOME. The data stored by this module is
3965designed to be accessed through the MIME functions in GnomeVFS.")
3966 (license license:gpl2+)))
3967
3968(define-public gnome-vfs
3969 (package
3970 (name "gnome-vfs")
3971 (version "2.24.4")
3972 (source (origin
3973 (method url-fetch)
3974 (uri (string-append "mirror://gnome/sources/" name "/"
3975 (version-major+minor version) "/"
3976 name "-" version ".tar.bz2"))
3977 (sha256
3978 (base32
3979 "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2"))))
3980 (build-system gnu-build-system)
3981 (arguments
3982 `(#:configure-flags
3983 ;; Add CFLAGS to relax gcc-14's strictness.
3984 (list (string-append
3985 "CFLAGS=-g -O2"
3986 " -Wno-error=implicit-function-declaration"))
3987 #:phases
3988 (modify-phases %standard-phases
3989 (add-before 'configure 'ignore-deprecations
3990 (lambda _
3991 (substitute* '("libgnomevfs/Makefile.in"
3992 "daemon/Makefile.in")
3993 (("-DG_DISABLE_DEPRECATED")
3994 "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))))
3995 (add-before 'configure 'patch-test-async-cancel-to-never-fail
3996 (lambda _
3997 (substitute* "test/test-async-cancel.c"
3998 (("EXIT_FAILURE") "77")))))))
3999 (inputs (list libxml2 dbus-glib gconf gnome-mime-data zlib))
4000 (native-inputs
4001 (list `(,glib "bin") ; for glib-mkenums, etc.
4002 intltool pkg-config))
4003 (home-page "https://developer.gnome.org/gnome-vfs/")
4004 (synopsis "Access files and folders in GNOME applications")
4005 (description
4006 "GnomeVFS is the core library used to access files and folders in GNOME
4007applications. It provides a file system abstraction which allows applications
4008to access local and remote files with a single consistent API.")
4009 (license license:lgpl2.0+)))
4010
4011(define-public libgnome
4012 (package
4013 (name "libgnome")
4014 (version "2.32.1")
4015 (source (origin
4016 (method url-fetch)
4017 (uri (string-append "mirror://gnome/sources/" name "/"
4018 (version-major+minor version) "/"
4019 name "-" version ".tar.bz2"))
4020 (sha256
4021 (base32
4022 "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj"))
4023 (patches (search-patches "libgnome-encoding.patch"))))
4024 (build-system gnu-build-system)
4025 (arguments
4026 `(#:phases
4027 (modify-phases %standard-phases
4028 (add-before 'configure 'enable-deprecated
4029 (lambda _
4030 (substitute* "libgnome/Makefile.in"
4031 (("-DG_DISABLE_DEPRECATED") "-DGLIB_DISABLE_DEPRECATION_WARNINGS"))
4032 #t)))))
4033 (inputs (list libxml2))
4034 (native-inputs
4035 (list `(,glib "bin") ; for glib-mkenums, etc.
4036 intltool pkg-config))
4037 ;; The following are listed as Required in the .pc file
4038 ;; (except for libcanberra -- which seems to be oversight on the part
4039 ;; of the upstream developers -- anything that links against libgnome,
4040 ;; must also link against libcanberra
4041 (propagated-inputs
4042 (list libcanberra libbonobo gconf gnome-vfs popt)) ;gnome-program.h includes popt.h
4043 (home-page "https://developer.gnome.org/libgnome/")
4044 (synopsis "Useful routines for building applications")
4045 (description "The libgnome library provides a number of useful routines
4046for building modern applications, including session management, activation of
4047files and URIs, and displaying help.")
4048 (license license:lgpl2.0+)))
4049
4050
4051(define-public libart-lgpl
4052 (package
4053 (name "libart-lgpl")
4054 (version "2.3.21")
4055 (source (origin
4056 (method url-fetch)
4057 (uri (let ((upstream-name "libart_lgpl"))
4058 (string-append "mirror://gnome/sources/" upstream-name "/"
4059 (version-major+minor version) "/"
4060 upstream-name "-" version ".tar.bz2")))
4061 (sha256
4062 (base32
4063 "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx"))))
4064 (build-system gnu-build-system)
4065 (native-inputs
4066 (list pkg-config))
4067 (home-page "https://people.gnome.org/~mathieu/libart")
4068 (synopsis "2D drawing library")
4069 (description "Libart is a 2D drawing library intended as a
4070high-quality vector-based 2D library with antialiasing and alpha composition.")
4071 (license license:lgpl2.0+)))
4072
4073(define-public libgnomecanvas
4074 (package
4075 (name "libgnomecanvas")
4076 (version "2.30.3")
4077 (source (origin
4078 (method url-fetch)
4079 (uri (string-append "mirror://gnome/sources/" name "/"
4080 (version-major+minor version) "/"
4081 name "-" version ".tar.gz"))
4082 (sha256
4083 (base32
4084 "1nhnq4lfkk8ljkdafscwaggx0h95mq0rxnd7zgqyq0xb6kkqbjm8"))))
4085 (build-system gnu-build-system)
4086 ;; Mentioned as Required in the .pc file
4087 (propagated-inputs (list libart-lgpl gtk+-2))
4088 (native-inputs
4089 (list intltool
4090 `(,glib "bin") ; for glib-genmarshal, etc.
4091 pkg-config))
4092 (home-page "https://developer.gnome.org/libgnomecanvas/")
4093 (synopsis "Flexible widget for creating interactive structured graphics")
4094 (description "The GnomeCanvas widget provides a flexible widget for
4095creating interactive structured graphics.")
4096 (license license:lgpl2.0+)))
4097
4098(define-public libgnomecanvasmm
4099 (package
4100 (name "libgnomecanvasmm")
4101 (version "2.26.0")
4102 (source (origin
4103 (method url-fetch)
4104 (uri (string-append "mirror://gnome/sources/" name "/"
4105 (version-major+minor version) "/"
4106 name "-" version ".tar.bz2"))
4107 (sha256
4108 (base32
4109 "0679hcnpam2gkag2i63sm0wdm35gwvzafnz1354mg6j5gzwpfrcr"))))
4110 (build-system gnu-build-system)
4111 (propagated-inputs (list libgnomecanvas))
4112 (native-inputs
4113 (list gtkmm-2 pkg-config))
4114 (home-page "https://gtkmm.org")
4115 (synopsis "C++ bindings to the GNOME Canvas library")
4116 (description "C++ bindings to the GNOME Canvas library.")
4117 (license license:lgpl2.0+)))
4118
4119(define-public libgnomeui
4120 (package
4121 (name "libgnomeui")
4122 (version "2.24.5")
4123 (source (origin
4124 (method url-fetch)
4125 (uri (string-append "mirror://gnome/sources/" name "/"
4126 (version-major+minor version) "/"
4127 name "-" version ".tar.bz2"))
4128 (patches (search-patches "libgnomeui-utf8.patch"))
4129 (sha256
4130 (base32
4131 "03rwbli76crkjl6gp422wrc9lqpl174k56cp9i96b7l8jlj2yddf"))))
4132 (build-system gnu-build-system)
4133 ;; Mentioned as Required in the .pc file
4134 (propagated-inputs (list libbonoboui libgnome libgnomecanvas
4135 libgnome-keyring))
4136 (inputs (list libjpeg-turbo popt libbonobo libxml2 libglade))
4137 (native-inputs
4138 (list `(,glib "bin") ; for glib-mkenums, etc.
4139 intltool pkg-config))
4140 (home-page "https://developer.gnome.org/libgnomeui/")
4141 (synopsis "Additional widgets for applications")
4142 (description "The libgnomeui library provides additional widgets for
4143applications. Many of the widgets from libgnomeui have already been
4144ported to GTK+.")
4145 (license license:lgpl2.0+)))
4146
4147(define-public libglade
4148 (package
4149 (name "libglade")
4150 (version "2.6.4")
4151 (source (origin
4152 (method url-fetch)
4153 (uri (string-append "mirror://gnome/sources/" name "/"
4154 (version-major+minor version) "/"
4155 name "-" version ".tar.bz2"))
4156 (sha256
4157 (base32
4158 "1v2x2s04jry4gpabws92i0wq2ghd47yr5n9nhgnkd7c38xv1wdk4"))))
4159 (build-system gnu-build-system)
4160 (inputs
4161 (list python)) ;; needed for the optional libglade-convert program
4162 (propagated-inputs
4163 (list gtk+-2 libxml2)) ; required by libglade-2.0.pc
4164 (native-inputs
4165 (list pkg-config))
4166 (home-page "https://developer.gnome.org/libglade")
4167 (synopsis "Load glade interfaces and access the glade built widgets")
4168 (description "Libglade is a library that provides interfaces for loading
4169graphical interfaces described in glade files and for accessing the
4170widgets built in the loading process.")
4171 (license license:gpl2+))) ; This is correct. GPL not LGPL
4172
4173(define-public libbonoboui
4174 (package
4175 (name "libbonoboui")
4176 (version "2.24.5")
4177 (source (origin
4178 (method url-fetch)
4179 (uri (string-append "mirror://gnome/sources/" name "/"
4180 (version-major+minor version) "/"
4181 name "-" version ".tar.bz2"))
4182 (sha256
4183 (base32
4184 "1kbgqh7bw0fdx4f1a1aqwpff7gp5mwhbaz60c6c98bc4djng5dgs"))))
4185 (build-system gnu-build-system)
4186 (arguments
4187 `(#:configure-flags
4188 '("CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")
4189 #:phases
4190 (modify-phases %standard-phases
4191 (add-before 'check 'start-xserver
4192 (lambda* (#:key inputs #:allow-other-keys)
4193 (let ((xorg-server (assoc-ref inputs "xorg-server"))
4194 (disp ":1"))
4195
4196 (setenv "HOME" (getcwd))
4197 (setenv "DISPLAY" disp)
4198 ;; There must be a running X server and make check doesn't start one.
4199 ;; Therefore we must do it.
4200 (zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))))))
4201 ;; Mentioned as Required by the .pc file
4202 (propagated-inputs (list libxml2))
4203 (inputs
4204 (list popt pangox-compat libgnome libgnomecanvas libglade))
4205 (native-inputs
4206 (list `(,glib "bin") ; for glib-genmarshal, etc.
4207 intltool
4208 xorg-server-for-tests ; For running the tests
4209 pkg-config))
4210 (home-page "https://developer.gnome.org/libbonoboui/")
4211 (synopsis "Some user interface controls using Bonobo")
4212 (description "The Bonobo UI library provides a number of user interface
4213controls using the Bonobo component framework.")
4214 (license license:lgpl2.0+)))
4215
4216(define-public libwnck
4217 (package
4218 (name "libwnck")
4219 (version "40.1")
4220 (source (origin
4221 (method url-fetch)
4222 (uri (string-append "mirror://gnome/sources/" name "/"
4223 (version-major version) "/"
4224 name "-" version ".tar.xz"))
4225 (sha256
4226 (base32
4227 "04b63mh2i7kpq0iymx6fkyzdx8laymw3da2s0wsbwgzg2jhly4q3"))))
4228 (build-system meson-build-system)
4229 (native-inputs
4230 (list gettext-minimal
4231 `(,glib "bin") ;for glib-mkenums
4232 gobject-introspection ;for g-ir-scanner
4233 pkg-config))
4234 (propagated-inputs
4235 (list gtk+
4236 libxres
4237 startup-notification))
4238 (home-page "https://gitlab.gnome.org/GNOME/libwnck/")
4239 (synopsis "Window Navigator Construction Kit")
4240 (description
4241 "Libwnck is the Window Navigator Construction Kit, a library for use in
4242writing pagers, tasklists, and more generally applications that are dealing
4243with window management. It tries hard to respect the Extended Window Manager
4244Hints specification (EWMH).")
4245 (license license:lgpl2.0+)))
4246
4247(define-public goffice
4248 (package
4249 (name "goffice")
4250 (version "0.10.53")
4251 (source
4252 (origin
4253 (method url-fetch)
4254 (uri (string-append "mirror://gnome/sources/goffice/"
4255 (version-major+minor version) "/"
4256 "goffice-" version ".tar.xz"))
4257 (sha256
4258 (base32 "0mrzi8bcykn1jdkvqm8zqwg8k80mafl4xhr0076d875adxwmiz97"))))
4259 (build-system gnu-build-system)
4260 (outputs '("out"
4261 "doc")) ; 4.0 MiB of gtk-doc
4262 (arguments
4263 '(#:configure-flags (list (string-append "--with-html-dir="
4264 (assoc-ref %outputs "doc")
4265 "/share/gtk-doc/html"))))
4266 (inputs
4267 (list gtk+ libgsf (librsvg-for-system) libxslt libxml2))
4268 (native-inputs
4269 (list intltool `(,glib "bin") pkg-config))
4270 (home-page "https://developer.gnome.org/goffice/")
4271 (synopsis "Document-centric objects and utilities")
4272 (description "A GLib/GTK+ set of document-centric objects and utilities.")
4273 (license
4274 ;; Dual licensed under GPLv2 or GPLv3 (both without "or later")
4275 ;; Note: NOT LGPL
4276 (list license:gpl2 license:gpl3))))
4277
4278(define-public gnumeric
4279 (package
4280 (name "gnumeric")
4281 (version "1.12.52")
4282 (source (origin
4283 (method url-fetch)
4284 (uri (string-append "mirror://gnome/sources/gnumeric/"
4285 (version-major+minor version) "/"
4286 "gnumeric-" version ".tar.xz"))
4287 (sha256
4288 (base32
4289 "0fw201j0sks95wgvns3vydgprhwf6z4v4xb2a0ldi892k8277kvk"))))
4290 (build-system glib-or-gtk-build-system)
4291 (arguments
4292 `(;; The gnumeric developers don't worry much about failing tests.
4293 ;; See https://bugzilla.gnome.org/show_bug.cgi?id=732387
4294 #:tests? #f
4295 #:phases
4296 (modify-phases %standard-phases
4297 (add-before
4298 'configure 'pre-conf
4299 (lambda* (#:key outputs #:allow-other-keys)
4300 ;; Make install tries to write into the directory of goffice
4301 ;; I am informed that this only affects the possibility to embed a
4302 ;; spreadsheet inside an Abiword document. So presumably when we
4303 ;; package Abiword we'll have to refer it to this directory.
4304 (substitute* "configure"
4305 (("^GOFFICE_PLUGINS_DIR=.*")
4306 (string-append "GOFFICE_PLUGINS_DIR="
4307 (assoc-ref outputs "out")
4308 "/goffice/plugins"))))))))
4309 (inputs
4310 (list glib
4311 gtk+
4312 goffice
4313 libgsf
4314 (librsvg-for-system)
4315 libxml2
4316 libxslt
4317 python
4318 python-pygobject
4319 zlib))
4320 (native-inputs
4321 (list bison
4322 docbook-xml
4323 `(,glib "bin")
4324 intltool
4325 itstool
4326 pkg-config))
4327 (home-page "http://www.gnumeric.org")
4328 (synopsis "Spreadsheet application")
4329 (description
4330 "GNUmeric is a GNU spreadsheet application, running under GNOME. It is
4331interoperable with other spreadsheet applications. It has a vast array of
4332features beyond typical spreadsheet functionality, such as support for linear
4333and non-linear solvers, statistical analysis, and telecommunication
4334engineering.")
4335 (license
4336 ;; Dual licensed under GPLv2 or GPLv3 (both without "or later")
4337 (list license:gpl2 license:gpl3))))
4338
4339(define-public drawing
4340 (package
4341 (name "drawing")
4342 (version "1.0.2")
4343 (source
4344 (origin
4345 (method git-fetch)
4346 (uri (git-reference
4347 (url "https://github.com/maoschanz/drawing")
4348 (commit version)))
4349 (file-name (git-file-name name version))
4350 (sha256
4351 (base32 "1yazs3jj8i8n64ki54rvh11q0yn46da105hdsjb7b80dpxspvlch"))))
4352 (build-system meson-build-system)
4353 (arguments
4354 (list
4355 #:glib-or-gtk? #t
4356 #:imported-modules (append %meson-build-system-modules
4357 %pyproject-build-system-modules)
4358 #:modules '((guix build meson-build-system)
4359 ((guix build pyproject-build-system) #:prefix py:)
4360 (guix build utils))
4361 #:phases
4362 #~(modify-phases %standard-phases
4363 (add-after 'unpack 'disable-postinstall-script
4364 (lambda _
4365 (setenv "DESTDIR" "/")))
4366 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
4367 (lambda* (#:key inputs outputs #:allow-other-keys)
4368 (wrap-program (search-input-file outputs "bin/drawing")
4369 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
4370 ,(py:site-packages inputs outputs)))
4371 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
4372 (native-inputs
4373 (list desktop-file-utils
4374 gettext-minimal
4375 `(,glib "bin")
4376 gobject-introspection
4377 itstool
4378 pkg-config
4379 python))
4380 (inputs
4381 (list bash-minimal
4382 (librsvg-for-system)
4383 gsettings-desktop-schemas
4384 gtk+
4385 pango
4386 python
4387 python-pycairo
4388 python-pygobject))
4389 (home-page "https://maoschanz.github.io/drawing/")
4390 (synopsis "Basic image editor for GNOME")
4391 (description
4392 "Drawing is a basic image editor aiming at the GNOME desktop.")
4393 (license license:gpl3+)))
4394
4395(define-public seahorse
4396 (package
4397 (name "seahorse")
4398 (version "47.0.1")
4399 (source
4400 (origin
4401 (method url-fetch)
4402 (uri (string-append "mirror://gnome/sources/" name "/"
4403 (version-major version) "/" name "-"
4404 version ".tar.xz"))
4405 (sha256
4406 (base32 "1k6avgd58v853nchp226qc3fgz0pwxnf7744hyvynzqzlvj1f6cw"))))
4407 (build-system meson-build-system)
4408 (arguments
4409 '(#:glib-or-gtk? #t
4410 #:phases
4411 (modify-phases %standard-phases
4412 (add-after 'unpack 'skip-gtk-update-icon-cache
4413 ;; Don't create 'icon-theme.cache'.
4414 (lambda _
4415 (substitute* "meson.build"
4416 (("gtk_update_icon_cache: true")
4417 "gtk_update_icon_cache: false")
4418 (("update_desktop_database: true")
4419 "update_desktop_database: false"))))
4420 (add-before 'check 'pre-check
4421 (lambda _
4422 ;; Tests require a writable HOME.
4423 (setenv "HOME" (getcwd)))))))
4424 (inputs
4425 (list gtk+
4426 gcr-3
4427 gnupg
4428 gpgme
4429 openldap
4430 openssh
4431 avahi
4432 libhandy
4433 libpwquality
4434 libsecret
4435 libsoup-minimal))
4436 (native-inputs
4437 (list gettext-minimal
4438 `(,glib "bin")
4439 itstool
4440 pkg-config
4441 python
4442 vala
4443 libxml2))
4444 (home-page "https://wiki.gnome.org/Apps/Seahorse")
4445 (synopsis "Manage encryption keys and passwords in the GNOME keyring")
4446 (description
4447 "Seahorse is a GNOME application for managing encryption keys and
4448passwords in the GNOME keyring.")
4449 (license license:gpl2+)))
4450
4451(define-public vala
4452 (package
4453 (name "vala")
4454 (version "0.56.18")
4455 (source (origin
4456 (method url-fetch)
4457 (uri (string-append "mirror://gnome/sources/vala/"
4458 (version-major+minor version) "/"
4459 "vala-" version ".tar.xz"))
4460 (sha256
4461 (base32
4462 "10m34vljyj2zg4nzz12c2giwfbwwvimkzk4ygf7dnqxb81yzxbzj"))))
4463 (build-system glib-or-gtk-build-system)
4464 (arguments
4465 (list
4466 #:configure-flags #~(list "CC=gcc" "--enable-coverage")
4467 #:make-flags
4468 #~'(#$@(if (target-hurd?)
4469 '("XFAIL_TESTS=dbus/filedescriptor-errors.test")
4470 '())
4471 ;; Disable icon theme cache generation as per glib-or-gtk-build-system.
4472 "gtk_update_icon_cache=true")
4473 #:phases
4474 #~(modify-phases %standard-phases
4475 (add-after 'unpack 'use-gcc-by-default
4476 (lambda _
4477 (substitute* "codegen/valaccodecompiler.c"
4478 (("cc_command = \"cc\"")
4479 "cc_command = \"gcc\""))))
4480 (add-before 'check 'pre-check
4481 (lambda _
4482 (substitute* "valadoc/tests/libvaladoc/tests-extra-environment.sh"
4483 (("export PKG_CONFIG_PATH=" m)
4484 (string-append m "$PKG_CONFIG_PATH:")))))
4485 ;; Wrapping the binaries breaks vala's behavior adaptations based on
4486 ;; the file name of the program executed (vala: compile and execute,
4487 ;; valac: compile into a binary).
4488 (delete 'glib-or-gtk-wrap))))
4489 (native-inputs
4490 (list bison
4491 dbus ; for dbus tests
4492 docbook-xml-4.4
4493 docbook-xsl
4494 flex
4495 gobject-introspection ; for gir tests
4496 help2man
4497 perl
4498 pkg-config
4499 libxslt))
4500 (propagated-inputs
4501 (list glib ; required by libvala-0.40.pc
4502 graphviz))
4503 (home-page "https://wiki.gnome.org/Projects/Vala/")
4504 (synopsis "Compiler using the GObject type system")
4505 (description "Vala is a programming language using modern high level
4506abstractions without imposing additional runtime requirements and without using
4507a different ABI compared to applications and libraries written in C. Vala uses
4508the GObject type system and has additional code generation routines that make
4509targeting the GNOME stack simple.")
4510 (license license:lgpl2.1+)))
4511
4512;;; An older variant kept to build libsoup-minimal-2.
4513(define-public vala-0.52
4514 (package/inherit vala
4515 (version "0.52.11")
4516 (source (origin
4517 (method url-fetch)
4518 (uri (string-append "mirror://gnome/sources/vala/"
4519 (version-major+minor version) "/"
4520 "vala-" version ".tar.xz"))
4521 (sha256
4522 (base32
4523 "0xvhg32sxnfyvxn86hh9mn65mh1g189vhsjcahccj0zbwnrkqz3w"))
4524 (patches (search-patches "vala-0.52-fix-valagirparser.patch"))))
4525 (arguments
4526 (substitute-keyword-arguments arguments
4527 ((#:configure-flags flags #~'())
4528 #~(cons*
4529 (string-append "CFLAGS=-g -O2"
4530 " -Wno-error=address"
4531 " -Wno-error=incompatible-pointer-types")
4532 #$flags))))))
4533
4534(define-public vte
4535 (package
4536 (name "vte")
4537 (version "0.82.3")
4538 (source (origin
4539 (method url-fetch)
4540 (uri (string-append "mirror://gnome/sources/vte/"
4541 (version-major+minor version) "/"
4542 "vte-" version ".tar.xz"))
4543 (sha256
4544 (base32
4545 "118ajdfi2hqrhsfvbkjn566lxsmi6lrvmqh339yx0c7fdy7jgikd"))))
4546 (build-system meson-build-system)
4547 (arguments
4548 (list #:configure-flags #~(list "-Dgtk3=false"
4549 "-Dvapi=true"
4550 "-D_systemd=false")))
4551 (native-inputs
4552 (list pkg-config
4553 gettext-minimal
4554 vala
4555 gobject-introspection
4556 `(,glib "bin") ; for glib-genmarshal, etc.
4557 gperf
4558 python
4559 libxml2))
4560 (inputs (list fast-float lz4 simdutf))
4561 (propagated-inputs
4562 (list gtk ; required by vte-2.91.pc
4563 gnutls ; ditto
4564 pcre2)) ; ditto
4565 (home-page "https://www.gnome.org/")
4566 (synopsis "Virtual Terminal Emulator")
4567 (description
4568 "VTE is a library (libvte) implementing a terminal emulator widget for
4569GTK+, and a minimal sample application (vte) using that. Vte is mainly used in
4570gnome-terminal, but can also be used to embed a console/terminal in games,
4571editors, IDEs, etc.")
4572 (license license:lgpl2.1+)))
4573
4574(define-public vte/gtk+-3
4575 (package/inherit vte
4576 (name "vte-with-gtk+3")
4577 (arguments (substitute-keyword-arguments arguments
4578 ((#:configure-flags flags #~'())
4579 #~(cons "-Dgtk4=false" (delete "-Dgtk3=false" #$flags)))))
4580 (propagated-inputs (modify-inputs propagated-inputs
4581 (replace "gtk" gtk+)))
4582 (properties
4583 `((upstream-name . "vte")))))
4584
4585(define-public vte-with-sixel
4586 (package/inherit vte
4587 (name "vte-with-sixel")
4588 ;; Choose a version that can render images generated by img2sixel.
4589 (version "0.73.92")
4590 (source (origin
4591 (method git-fetch)
4592 (uri (git-reference
4593 (url "https://gitlab.gnome.org/GNOME/vte")
4594 (commit version)))
4595 (file-name (git-file-name name version))
4596 (sha256 (base32
4597 "0fv6lx7kk1xrfsvc95jm23vxkmyfypriz4nvj0kjy4nshgccwlch"))))
4598 (arguments (substitute-keyword-arguments arguments
4599 ((#:configure-flags flags)
4600 #~(append (list "-Dsixel=true") #$flags))))
4601 (inputs (modify-inputs inputs
4602 (append libsixel)
4603 (append lz4)))))
4604
4605;;; TODO: Remove when 2027/03 comes.
4606(define-deprecated/public-alias vinagre
4607 gnome-connections)
4608
4609(define-public dconf
4610 (package
4611 (name "dconf")
4612 (version "0.49.0")
4613 (source (origin
4614 (method url-fetch)
4615 (uri (string-append
4616 "mirror://gnome/sources/" name "/"
4617 (version-major+minor version) "/"
4618 name "-" version ".tar.xz"))
4619 (sha256
4620 (base32
4621 "0dkc7nbd0byibf6i5gm9xqclr7i94n1p1qbqcnwxnml1lm4px90n"))))
4622 (build-system meson-build-system)
4623 (arguments
4624 (list
4625 #:glib-or-gtk? #t
4626 ;; Configure sysconfdir to /etc so that gconf profiles can be written
4627 ;; there and loaded without having to set GCONF_PROFILE, which cannot be
4628 ;; safely set globally (as a gconf profile is a per-user thing).
4629 #:configure-flags #~(list "--sysconfdir=/etc"
4630 "-Dgtk_doc=true"
4631 "--wrap-mode=nodownload") ;for gvdb
4632 #:phases #~(modify-phases %standard-phases
4633 (add-after 'unpack 'increase-test-timeout
4634 (lambda _
4635 ;; On big-memory systems, the engine test may take
4636 ;; much longer than the default of 30 seconds.
4637 (substitute* "tests/meson.build"
4638 (("test\\(unit_test\\[0\\], exe" all)
4639 (string-append all ", timeout: 300"))))))))
4640 (native-inputs
4641 (list bash-completion
4642 libxslt ;for xsltproc
4643 docbook-xml-4.2
4644 docbook-xsl
4645 `(,glib "bin")
4646 gtk-doc/stable
4647 pkg-config
4648 python
4649 vala))
4650 (inputs
4651 (list gtk+
4652 dbus))
4653 (propagated-inputs
4654 ;; In Requires of dconf.pc.
4655 (list glib))
4656 (home-page "https://wiki.gnome.org/action/show/Projects/dconf")
4657 (synopsis "Low-level GNOME configuration system")
4658 (description "Dconf is a low-level configuration system. Its main purpose
4659is to provide a backend to GSettings on platforms that don't already have
4660configuration storage systems.")
4661 (license license:lgpl2.1+)))
4662
4663(define-public json-glib-minimal
4664 (package
4665 (name "json-glib-minimal")
4666 (version "1.10.0")
4667 (source (origin
4668 (method url-fetch)
4669 (uri (string-append "mirror://gnome/sources/json-glib/"
4670 (version-major+minor version)
4671 "/json-glib-" version ".tar.xz"))
4672 (sha256
4673 (base32
4674 "0yxg215gpa61sxnx05bgzbqq9dsvbawk6cfz8z0yq1k1v5k8vjhv"))))
4675 (build-system meson-build-system)
4676 (arguments
4677 (list #:glib-or-gtk? #t ;to wrap binaries, compile schemas
4678 #:configure-flags #~(list "-Dman=false"
4679 "-Dgtk_doc=disabled")))
4680 (native-inputs
4681 (list
4682 gettext-minimal
4683 `(,glib "bin") ;for glib-mkenums and glib-genmarshal
4684 pkg-config))
4685 (inputs
4686 (list bash-minimal))
4687 (propagated-inputs
4688 (list glib)) ;according to json-glib-1.0.pc
4689 (home-page "https://wiki.gnome.org/Projects/JsonGlib")
4690 (synopsis "Glib and GObject implementation of JSON")
4691 (description "JSON-GLib is a library providing serialization and
4692described by RFC 4627. It implements a full JSON parser and generator using
4693GLib and GObject, and integrates JSON with GLib data types.")
4694 (license license:lgpl2.1+)
4695 (properties '((upstream-name . "json-glib")))))
4696
4697(define-public json-glib
4698 (package/inherit json-glib-minimal
4699 (name "json-glib")
4700 (outputs (cons "doc" (package-outputs json-glib-minimal)))
4701 (arguments
4702 (substitute-keyword-arguments arguments
4703 ((#:configure-flags _)
4704 #~(list "-Dman=true"
4705 #$@(if (%current-target-system)
4706 ;; If enabled, gtkdoc-scangobj will try to execute a
4707 ;; cross-compiled binary.
4708 #~("-Dgtk_doc=disabled"
4709 ;; Trying to build introspection data when cross-compiling
4710 ;; causes errors during linking.
4711 "-Dintrospection=disabled")
4712 #~("-Dgtk_doc=enabled"
4713 "-Dintrospection=enabled"))))
4714 ((#:phases phases '%standard-phases)
4715 #~(modify-phases #$phases
4716 ;; When cross-compiling, there are no docs to move.
4717 #$@(if (%current-target-system)
4718 #~((add-after 'install 'stub-docs
4719 (lambda _
4720 ;; The daemon doesn't like empty output paths.
4721 (mkdir #$output:doc))))
4722 #~((add-after 'install 'move-docs
4723 (lambda _
4724 (mkdir-p (string-append #$output:doc "/share"))
4725 (rename-file
4726 (string-append #$output "/share/doc")
4727 (string-append #$output:doc
4728 "/share/doc"))))))))))
4729 (native-inputs
4730 (if (%current-target-system)
4731 ;; No docs, but rst2man is used for man pages.
4732 (modify-inputs native-inputs
4733 (prepend python-docutils))
4734 (modify-inputs native-inputs
4735 (prepend gi-docgen gobject-introspection
4736 python-docutils))))))
4737
4738(define-public libxklavier
4739 (package
4740 (name "libxklavier")
4741 (version "5.4")
4742 (source (origin
4743 ;; Note: There's no tarball at ftp.gnome.org for this version.
4744 (method git-fetch)
4745 (uri (git-reference
4746 (url "https://anongit.freedesktop.org/git/libxklavier")
4747 (commit (string-append "libxklavier-" version))))
4748 (sha256
4749 (base32
4750 "1w1x5mrgly2ldiw3q2r6y620zgd89gk7n90ja46775lhaswxzv7a"))
4751 (file-name (git-file-name name version))))
4752 (build-system gnu-build-system)
4753 (arguments
4754 '(#:configure-flags
4755 (list (string-append "--with-xkb-base="
4756 (assoc-ref %build-inputs "xkeyboard-config")
4757 "/share/X11/xkb")
4758 "--disable-xmodmap-support")))
4759 (native-inputs
4760 `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
4761 ("gobject-introspection" ,gobject-introspection)
4762 ("pkg-config" ,pkg-config)
4763 ("gtk-doc" ,gtk-doc/stable)
4764 ("intltool" ,intltool)
4765 ("which" ,which)
4766 ("autoconf" ,autoconf)
4767 ("automake" ,automake)
4768 ("libtool" ,libtool)))
4769 (propagated-inputs
4770 ;; Required by libxklavier.pc.
4771 (list glib libxml2))
4772 (inputs
4773 (list iso-codes/pinned libxi libxkbfile xkbcomp xkeyboard-config))
4774 (home-page "https://www.freedesktop.org/wiki/Software/LibXklavier/")
4775 (synopsis "High-level API for X Keyboard Extension")
4776 (description
4777 "LibXklavier is a library providing high-level API for X Keyboard
4778Extension known as XKB. This library is intended to support XFree86 and other
4779commercial X servers. It is useful for creating XKB-related software (layout
4780indicators etc).")
4781 (license license:lgpl2.0+)))
4782
4783(define-public glib-networking
4784 (package
4785 (name "glib-networking")
4786 (version "2.80.1")
4787 (source (origin
4788 (method url-fetch)
4789 (uri (string-append "mirror://gnome/sources/glib-networking/"
4790 (version-major+minor version) "/"
4791 "glib-networking-" version ".tar.xz"))
4792 (sha256
4793 (base32
4794 "13igg1hywyww9hmfxa86w5fsrm8ip6h0ywdny5qm1mbw2ms2h3mq"))))
4795 (build-system meson-build-system)
4796 (arguments
4797 (list
4798 ;; Exclude flaky tests (see https://codeberg.org/guix/guix/issues/1377).
4799 ;; Meson cannot exclude individual tests so the test suite is added in the
4800 ;; phase below.
4801 #:test-options #~(list "--no-suite" "connection")
4802 #:phases
4803 #~(modify-phases %standard-phases
4804 (add-after 'unpack 'mark-tests-for-exclusion
4805 (lambda _
4806 ;; The test names are programmatically generated in the meson
4807 ;; build file. The two failing tests are "connection-gnutls" and
4808 ;; "connection-gnutls-tls1.2" and share program[0] == "common",
4809 ;; so use that as the suite name.
4810 (substitute* "tls/tests/meson.build"
4811 (("test\\(([^)]*)\\)" _ args)
4812 (string-append "test(" args ", suite: program[0])"))))))))
4813 (native-inputs
4814 (list `(,glib "bin") ; for gio-querymodules
4815 pkg-config gettext-minimal))
4816 (inputs
4817 (list glib gnutls gsettings-desktop-schemas libproxy))
4818 (home-page "https://wiki.gnome.org/Projects/GLib")
4819 (synopsis "Network extensions for GLib")
4820 (description
4821 "Glib-networking contains the implementations of certain GLib networking
4822features that cannot be implemented directly in GLib itself because of their
4823dependencies. Currently it contains GnuTLS and OpenSSL-based implementations of
4824GTlsBackend, a libproxy-based implementation of GProxyResolver,
4825GLibproxyResolver, and a GNOME GProxyResolver that uses the proxy information
4826from the GSettings schemas in gsettings-desktop-schemas.")
4827 (license license:lgpl2.1+)))
4828
4829(define-public librest
4830 (package
4831 (name "librest")
4832 (version "0.10.2")
4833 (source (origin
4834 (method url-fetch)
4835 (uri (string-append "mirror://gnome/sources/librest/"
4836 (version-major+minor version) "/"
4837 name "-" version ".tar.xz"))
4838 (sha256
4839 (base32
4840 "1f69hl8qbmp7hsa0j28cvcj31232rdfr41ghvjkwy8ispc9bjv3v"))))
4841 (outputs (list "out" "doc"))
4842 (build-system meson-build-system)
4843 (arguments
4844 (list #:tests? #f ; tests require internet connection
4845 #:configure-flags
4846 #~(list "-Dca_certificates_path=/etc/ssl/certs/ca-certificates.crt"
4847 "-Dexamples=false")))
4848 (native-inputs
4849 (list `(,glib "bin") gi-docgen gobject-introspection pkg-config))
4850 (propagated-inputs
4851 ;; rest-0.10.pc refers to all these.
4852 (list glib json-glib libsoup libxml2))
4853 (home-page "https://www.gtk.org/")
4854 (synopsis "RESTful web api query library")
4855 (description
4856 "This library was designed to make it easier to access web services that
4857claim to be \"RESTful\". It includes convenience wrappers for libsoup and
4858libxml to ease remote use of the RESTful API.")
4859 (license license:lgpl2.1+)))
4860
4861(define-public libshumate
4862 (package
4863 (name "libshumate")
4864 (version "1.6.0")
4865 (source (origin
4866 (method url-fetch)
4867 (uri (string-append "mirror://gnome/sources/" name "/"
4868 (version-major+minor version) "/"
4869 name "-" version ".tar.xz"))
4870 (sha256
4871 (base32
4872 "0f994bwqfna7s11fdcpil9mmqpq8hnwckpr4q6yxzi1wbkh7w2b6"))))
4873 (build-system meson-build-system)
4874 (arguments
4875 (list #:phases
4876 #~(modify-phases %standard-phases
4877 (replace 'check
4878 (lambda* (#:key tests? test-options #:allow-other-keys)
4879 (when tests?
4880 ;; Some tests expect to write to $HOME.
4881 (setenv "HOME" "/tmp")
4882 (setenv "XDG_RUNTIME_DIR" "/tmp/run")
4883 (setenv "XDG_CACHE_HOME" "/tmp/cache")
4884
4885 ;; Tests require a running X server.
4886 (system "Xvfb :1 &")
4887 (setenv "DISPLAY" ":1")
4888
4889 (apply invoke "dbus-run-session" "--" "meson" "test"
4890 "--print-errorlogs" test-options)))))))
4891 (native-inputs
4892 (list gi-docgen
4893 `(,glib "bin")
4894 gobject-introspection
4895 gperf
4896 pkg-config
4897 ;; For tests:
4898 xorg-server-for-tests
4899 dbus
4900 at-spi2-core))
4901 (propagated-inputs
4902 ;; All the libraries are listed as "Requires' in the .pc file.
4903 (list cairo
4904 glib
4905 gtk
4906 json-glib
4907 libsoup
4908 protobuf-c
4909 sqlite))
4910 (home-page "https://wiki.gnome.org/Projects/libshumate")
4911 (synopsis "GtkWidget C library for displaying maps")
4912 (description "@code{libshumate} is a C library providing a
4913@code{GtkWidget} to display maps. It supports numerous free map sources such
4914as OpenStreetMap, OpenCycleMap, OpenAerialMap and Maps.")
4915 (license license:lgpl2.1+)))
4916
4917;;; A minimal version of libsoup used to prevent a cycle with Inkscape.
4918(define-public libsoup-minimal
4919 (package
4920 (name "libsoup-minimal")
4921 (version "3.6.5")
4922 (source (origin
4923 (method url-fetch)
4924 (uri (string-append "mirror://gnome/sources/libsoup/"
4925 (version-major+minor version) "/"
4926 "libsoup-" version ".tar.xz"))
4927 (sha256
4928 (base32
4929 "0d52mnvvsvwpc3scjva5fbvns8f8ijyswgjwjhbr151ymid7d4b8"))
4930 (patches
4931 (search-patches
4932 "libsoup-auth-digest-fix-crash.patch"
4933 "libsoup-deadlock-in-add_listener_in_thread.patch"
4934 "libsoup-fix-merge-of-ranges.patch"
4935 "libsoup-memory-leak-in-soup_form_decode.patch"
4936 "libsoup-multipart-bounds-check.patch"
4937 "libsoup-use-libdl-instead-of-gmodule.patch"))))
4938 (build-system meson-build-system)
4939 (arguments
4940 (list
4941 #:configure-flags #~(list "-Ddocs=disabled")
4942 #:parallel-tests? #f ;hsts-db-test might hang otherwise.
4943 #:phases
4944 #~(modify-phases %standard-phases
4945 (add-after 'unpack 'adjust-tests
4946 (lambda _
4947 ;; This test fails due to missing /etc/nsswitch.conf
4948 ;; in the build environment.
4949 (substitute* "tests/unix-socket-test.c"
4950 ((".*/sockets/unconnected.*") ""))
4951
4952 ;; These fail because "subdomain.localhost" does not resolve in
4953 ;; the build environment. Moreover, the hsts-test suite fails on
4954 ;; i686-linux because of errors from `session_get_uri' like
4955 ;; "Unexpected status 200 OK (expected 301 Moved Permanently)"
4956 ;; (see: https://gitlab.gnome.org/GNOME/libsoup/-/issues/239).
4957 (substitute* "tests/meson.build"
4958 ((".*'name': 'hsts'.*") ""))
4959 (substitute* "tests/hsts-db-test.c"
4960 ((".*/hsts-db/subdomains.*") "")))))))
4961 (native-inputs
4962 (list `(,glib "bin") ;for glib-mkenums
4963 gobject-introspection
4964 pkg-config
4965 python-wrapper
4966 vala
4967 curl
4968 gnutls)) ;for 'certtool'
4969 (propagated-inputs
4970 ;; libsoup-3.0.pc refers to all of these (except where otherwise noted)
4971 (list brotli
4972 glib
4973 glib-networking ; for GIO runtime modules
4974 libpsl
4975 nghttp2 ;for pkg-config
4976 `(,nghttp2 "lib")
4977 libxml2
4978 mit-krb5
4979 sqlite
4980 zlib))
4981 (inputs
4982 (list samba/pinned)) ; For ntlm_auth support
4983 (home-page "https://libsoup.gnome.org")
4984 (synopsis "GLib-based HTTP Library")
4985 (description
4986 "LibSoup is an HTTP client/server library for GNOME. It uses GObjects
4987and the GLib main loop, to integrate well with GNOME applications.")
4988 (license license:lgpl2.0+)
4989 (properties '((upstream-name . "libsoup")))))
4990
4991;;; An older variant kept to build the 'rest' package.
4992(define-public libsoup-minimal-2
4993 (package
4994 (inherit libsoup-minimal)
4995 (version "2.74.3")
4996 (source (origin
4997 (method url-fetch)
4998 (uri (string-append "mirror://gnome/sources/libsoup/"
4999 (version-major+minor version) "/"
5000 "libsoup-" version ".tar.xz"))
5001 (sha256
5002 (base32
5003 "04rgv6hkyhgi7lak9865yxgbgky6gc635p7w6nhcbj64rx0prdz4"))))
5004 (arguments
5005 (substitute-keyword-arguments arguments
5006 ((#:configure-flags configure-flags)
5007 ;; The option name changed between libsoup 2 and libsoup 3.
5008 #~(cons "-Dgtk_doc=false"
5009 (delete "-Ddocs=disabled" #$configure-flags)))
5010 ((#:phases phases)
5011 #~(modify-phases #$phases
5012 (replace 'adjust-tests
5013 (lambda _
5014 ;; Disable the SSL test, failing since 2.68 and resolved in
5015 ;; libsoup 3.
5016 (substitute* "tests/meson.build"
5017 (("[ \t]*\\['ssl', true, \\[\\]\\],") ""))))))))
5018 (native-inputs
5019 (modify-inputs native-inputs
5020 (replace "vala" vala-0.52)))))
5021
5022(define-public libsoup
5023 (package/inherit libsoup-minimal
5024 (name "libsoup")
5025 (outputs (cons "doc" (package-outputs libsoup-minimal)))
5026 (arguments
5027 (substitute-keyword-arguments arguments
5028 ((#:configure-flags configure-flags)
5029 #~(cons "-Ddocs=enabled"
5030 ;; The default value is 'auto', meaning it could be skipped.
5031 (delete "-Ddocs=disabled" #$configure-flags)))
5032 ((#:phases phases)
5033 #~(modify-phases #$phases
5034 (replace 'adjust-tests
5035 (lambda _
5036 ;; This test fails due to missing /etc/nsswitch.conf
5037 ;; in the build environment.
5038 (substitute* "tests/unix-socket-test.c"
5039 ((".*/sockets/unconnected.*") ""))
5040
5041 ;; These fail because "subdomain.localhost" does not resolve in
5042 ;; the build environment. Moreover, the hsts-test suite fails on
5043 ;; i686-linux because of errors from `session_get_uri' like
5044 ;; "Unexpected status 200 OK (expected 301 Moved Permanently)"
5045 ;; (see: https://gitlab.gnome.org/GNOME/libsoup/-/issues/239).
5046 (substitute* "tests/meson.build"
5047 ((".*'name': 'hsts'.*") ""))
5048 (substitute* "tests/hsts-db-test.c"
5049 ((".*/hsts-db/subdomains.*") ""))))
5050 (add-after 'install 'move-doc
5051 (lambda _
5052 (mkdir-p (string-append #$output:doc "/share"))
5053 (rename-file (string-append #$output "/share/doc")
5054 (string-append #$output:doc "/share/doc"))))))))
5055 (native-inputs (modify-inputs native-inputs
5056 (prepend gettext-minimal gi-docgen)))))
5057
5058(define-public libsecret
5059 (package
5060 (name "libsecret")
5061 (version "0.21.7")
5062 (source (origin
5063 (method url-fetch)
5064 (uri (string-append
5065 "mirror://gnome/sources/libsecret/"
5066 (version-major+minor version) "/"
5067 "libsecret-" version ".tar.xz"))
5068 (sha256
5069 (base32
5070 "0pnmivbbyh0w3l72bw8mvq1ljbwdy8k01i5d2xb2n2jra13jwibb"))))
5071 (build-system meson-build-system)
5072 (arguments
5073 (list
5074 #:configure-flags
5075 #~(list "-Dgtk_doc=false") ;requires gi-docgen
5076 #:phases
5077 #~(modify-phases %standard-phases
5078 (delete 'check)
5079 (add-after 'install 'check
5080 (lambda* (#:key tests? test-options #:allow-other-keys)
5081 (when tests?
5082 (setenv "HOME" "/tmp")
5083 (setenv "XDG_DATA_DIRS" ;for /org/freedesktop/secrets/collection
5084 (string-append #$output "/share:"
5085 (getenv "XDG_DATA_DIRS")))
5086 (apply invoke "dbus-run-session" "--"
5087 "meson" "test" "--print-errorlogs" "-t" "0"
5088 test-options)))))))
5089 (native-inputs
5090 (list dbus
5091 docbook-xml-4.2
5092 docbook-xsl
5093 gettext-minimal
5094 `(,glib "bin") ;for gdbus-codegen, etc.
5095 gobject-introspection
5096 libxslt
5097 pkg-config
5098 python
5099 python-dbus
5100 python-pygobject-3.50
5101 vala))
5102 (propagated-inputs
5103 (list glib libgcrypt)) ;required by libsecret-1.pc
5104 (home-page "https://wiki.gnome.org/Projects/Libsecret/")
5105 (synopsis "GObject bindings for \"Secret Service\" API")
5106 (description
5107 "Libsecret is a GObject based library for storing and retrieving passwords
5108and other secrets. It communicates with the \"Secret Service\" using DBus.")
5109 (license license:lgpl2.1+)))
5110
5111(define-public five-or-more
5112 (package
5113 (name "five-or-more")
5114 (version "3.32.3")
5115 (source
5116 (origin
5117 (method url-fetch)
5118 (uri (string-append "mirror://gnome/sources/five-or-more/"
5119 (version-major+minor version) "/"
5120 "five-or-more-" version ".tar.xz"))
5121 (sha256
5122 (base32 "1x4ys18rn37hsavivh532py2avj9686aycnn8ys29cyyxwpdf41d"))))
5123 (build-system meson-build-system)
5124 (arguments
5125 '(#:glib-or-gtk? #t
5126 #:phases
5127 (modify-phases %standard-phases
5128 (add-after 'unpack 'skip-gtk-update-icon-cache
5129 (lambda _
5130 (substitute* "meson_post_install.py"
5131 (("gtk-update-icon-cache") (which "true"))))))))
5132 (native-inputs
5133 (list appstream-glib
5134 desktop-file-utils
5135 `(,glib "bin") ; for glib-compile-resources
5136 intltool
5137 itstool
5138 pkg-config
5139 vala))
5140 (inputs
5141 (list gtk+ libgnome-games-support-1 librsvg libxml2))
5142 (home-page "https://wiki.gnome.org/Apps/Five%20or%20more")
5143 (synopsis "Logic puzzle game")
5144 (description "Five or More is a game where you try to align
5145 five or more objects of the same color and shape causing them to disappear.
5146 On every turn more objects will appear, until the board is full.
5147 Try to last as long as possible.")
5148 (license license:gpl2+)))
5149
5150(define-public gi-docgen
5151 (package
5152 (name "gi-docgen")
5153 (version "2026.1")
5154 (source (origin
5155 (method url-fetch)
5156 (uri (pypi-uri "gi_docgen" version))
5157 (sha256
5158 (base32
5159 "1df7yb6d5zsr4wks4p2lf40a2v4v2dasx3pv2v3d2ma25d7krb35"))))
5160 (build-system pyproject-build-system)
5161 (arguments
5162 (list
5163 #:phases #~(modify-phases %standard-phases
5164 (add-after 'unpack 'patch-commands
5165 (lambda* (#:key inputs #:allow-other-keys)
5166 (substitute* '("gidocgen/config.py"
5167 "gidocgen/utils.py")
5168 (("find_program\\(['\"]dot['\"])")
5169 (format #f "find_program(~s)"
5170 (search-input-file inputs "bin/dot")))))))))
5171 (native-inputs (list python-pytest-bootstrap python-setuptools))
5172 (inputs (list graphviz-14))
5173 (propagated-inputs (list python-jinja2
5174 python-markdown
5175 python-markupsafe
5176 python-packaging
5177 python-pygments
5178 python-typogrify))
5179 (home-page "https://gitlab.gnome.org/GNOME/gi-docgen")
5180 (synopsis "Documentation tool for GObject-based libraries")
5181 (description "GI-DocGen is a document generator for GObject-based
5182libraries. GObject is the base type system of the GNOME project. GI-Docgen
5183reuses the introspection data generated by GObject-based libraries to generate
5184the API reference of these libraries, as well as other ancillary
5185documentation.")
5186 (license license:gpl3+)))
5187
5188(define-public gnome-mines
5189 (package
5190 (name "gnome-mines")
5191 (version "40.1")
5192 (source
5193 (origin
5194 (method url-fetch)
5195 (uri (string-append "mirror://gnome/sources/" name "/"
5196 (version-major version) "/"
5197 name "-" version ".tar.xz"))
5198 (sha256
5199 (base32 "0whjwdxhyw5bvibd9qvpm2yc5g7yhy8h3rn027kv5cqwyyryj0im"))))
5200 (build-system meson-build-system)
5201 (arguments
5202 `(#:glib-or-gtk? #t
5203 #:phases
5204 (modify-phases %standard-phases
5205 (add-after 'unpack 'skip-gtk-update-icon-cache
5206 (lambda _
5207 (substitute* "build-aux/meson_post_install.py"
5208 (("gtk-update-icon-cache") (which "true"))))))))
5209 (native-inputs
5210 (list appstream-glib
5211 desktop-file-utils
5212 gettext-minimal
5213 `(,glib "bin") ; for glib-compile-resources
5214 itstool
5215 pkg-config
5216 python-wrapper ; for meson_post_install.py
5217 vala))
5218 (inputs
5219 (list gtk+
5220 libgnome-games-support-1
5221 librsvg
5222 yelp))
5223 (home-page "https://wiki.gnome.org/Apps/Mines")
5224 (synopsis "Minesweeper game")
5225 (description
5226 "Mines (previously gnomine) is a puzzle game where you locate mines
5227floating in an ocean using only your brain and a little bit of luck.")
5228 (license license:gpl2+)))
5229
5230(define-public gnome-multi-writer
5231 (package
5232 (name "gnome-multi-writer")
5233 (version "3.35.90")
5234 (source
5235 (origin
5236 (method url-fetch)
5237 (uri (string-append "mirror://gnome/sources/gnome-multi-writer/"
5238 (version-major+minor version) "/"
5239 "gnome-multi-writer-" version ".tar.xz"))
5240 (sha256
5241 (base32
5242 "07vgzjjdrxcp7h73z13h9agafxb4vmqx5i81bcfyw0ilw9kkdzmp"))))
5243 (build-system meson-build-system)
5244 (arguments
5245 '(#:glib-or-gtk? #t
5246 #:phases
5247 (modify-phases %standard-phases
5248 (add-after 'unpack 'skip-post-install
5249 (lambda _
5250 (substitute* "meson.build"
5251 (("meson.add_install_script" &) (string-append "# " &)))
5252 #t)))))
5253 (native-inputs
5254 (list gettext-minimal
5255 `(,glib "bin")
5256 pkg-config))
5257 (inputs
5258 (list gtk+
5259 glib ; for gio
5260 gusb
5261 udisks
5262 libgudev
5263 libcanberra
5264 polkit))
5265 (home-page "https://wiki.gnome.org/Apps/MultiWriter")
5266 (synopsis "Write to multiple USB devices at once")
5267 (description
5268 "MultiWriter can be used to write an ISO file to multiple USB devices at
5269once.")
5270 (license license:gpl2+)))
5271
5272(define-public gnome-sudoku
5273 (package
5274 (name "gnome-sudoku")
5275 (version "51.0.1")
5276 (source
5277 (origin
5278 (method url-fetch)
5279 (uri (string-append "mirror://gnome/sources/" name "/"
5280 (version-major version) "/"
5281 name "-" version ".tar.xz"))
5282 (sha256
5283 (base32
5284 "1j6h8bz2s61pw0d02mhs167hr8llj3271bniqzy55ip4sgymwpv0"))))
5285 (build-system meson-build-system)
5286 (arguments
5287 `(#:glib-or-gtk? #t
5288 #:phases
5289 (modify-phases %standard-phases
5290 (add-after 'unpack 'skip-gtk-update-icon-cache
5291 (lambda _
5292 (substitute* "meson.build"
5293 (("gtk_update_icon_cache: true")
5294 "gtk_update_icon_cache: false")
5295 (("update_desktop_database: true")
5296 "update_desktop_database: false")))))))
5297 (native-inputs
5298 (list blueprint-compiler
5299 desktop-file-utils
5300 gettext-minimal
5301 `(,glib "bin") ;for glib-compile-resources
5302 itstool
5303 libxml2
5304 pkg-config
5305 vala))
5306 (inputs
5307 (list gtk
5308 json-glib
5309 libadwaita
5310 libgee
5311 (librsvg-for-system)
5312 qqwing))
5313 (home-page "https://wiki.gnome.org/Apps/Sudoku")
5314 (synopsis "Japanese logic game")
5315 (description
5316 "Sudoku is a Japanese logic game that exploded in popularity in 2005.
5317GNOME Sudoku is meant to have an interface as simple and unobstrusive as
5318possible while still providing features that make playing difficult Sudoku
5319more fun.")
5320 (license license:gpl2+)))
5321
5322(define-public gnome-console
5323 (package
5324 (name "gnome-console")
5325 (version "50.0")
5326 (source (origin
5327 (method url-fetch)
5328 (uri (string-append "mirror://gnome/sources/gnome-console/"
5329 (version-major version) "/"
5330 "gnome-console-" version ".tar.xz"))
5331 (sha256
5332 (base32
5333 "0vmcqx210asimq5awbqgmcg4c40sdv7vzvhq1xn6lzjly03h55g4"))))
5334 (build-system meson-build-system)
5335 (arguments
5336 (list #:glib-or-gtk? #t
5337 #:configure-flags #~(list "-Dtests=true")
5338 #:phases
5339 #~(modify-phases %standard-phases
5340 (add-after 'unpack 'fix-test-path-lookup
5341 (lambda* (#:key inputs #:allow-other-keys)
5342 (substitute* "tests/test-utils.c"
5343 (("/usr/bin/true")
5344 (format #f "~a" (search-input-file
5345 inputs "bin/true"))))))
5346 (replace 'check
5347 (lambda* (#:key tests? test-options parallel-tests?
5348 #:allow-other-keys)
5349 (when tests?
5350 (setenv "HOME" (getcwd))
5351 (system "Xvfb &")
5352 (setenv "DISPLAY" ":0")
5353 (setenv "MESON_TESTTHREADS"
5354 (if parallel-tests?
5355 (number->string (parallel-job-count))
5356 "1"))
5357 (apply invoke "dbus-run-session" "--" "meson" "test"
5358 "--print-errorlogs" "-t" "0" test-options)))))))
5359 (native-inputs (list dbus
5360 `(,glib "bin")
5361 gettext-minimal
5362 sassc
5363 pkg-config
5364 `(,gtk+ "bin")
5365 desktop-file-utils
5366 xorg-server-for-tests))
5367 (inputs (list gtk
5368 libadwaita
5369 vte
5370 libgtop
5371 gsettings-desktop-schemas))
5372 (home-page "https://gitlab.gnome.org/GNOME/console")
5373 (synopsis "GNOME terminal emulator")
5374 (description
5375 "Console is a simple terminal emulator for GNOME desktop")
5376 (license license:gpl3+)))
5377
5378(define-public gnome-terminal
5379 (package
5380 (name "gnome-terminal")
5381 (version "3.48.3")
5382 ;; download.gnome.org does not have any version for gnome-terminal more
5383 ;; recent than 3.44.1, but the repository has several tags newer than
5384 ;; that.
5385 (source (origin
5386 (method git-fetch)
5387 (uri (git-reference
5388 (url "https://gitlab.gnome.org/GNOME/gnome-terminal")
5389 (commit version)))
5390 (file-name (git-file-name name version))
5391 (sha256
5392 (base32
5393 "1cqh35j57a5ni4xlfjzl46kim6nbhqvxx3jql3gjk414z359i0j6"))))
5394 (build-system meson-build-system)
5395 (arguments
5396 (list
5397 #:glib-or-gtk? #t
5398 #:phases
5399 #~(modify-phases %standard-phases
5400 (add-after 'unpack 'patch-build-system
5401 ;; The build system looks for a dbus file from gnome-shell in the
5402 ;; installation tree of teh package it is configuring...
5403 (lambda* (#:key inputs #:allow-other-keys)
5404 (substitute* "src/meson.build"
5405 (("gt_prefix.*'org.gnome.ShellSearchProvider2.xml'")
5406 (format #f "'~a'" (search-input-file
5407 inputs "share/dbus-1/interfaces/\
5408org.gnome.ShellSearchProvider2.xml"))))))
5409 (add-before 'install 'disable-gtk-update-icon-cache
5410 (lambda _
5411 (setenv "DESTDIR" "/"))))))
5412 (native-inputs
5413 (list desktop-file-utils
5414 docbook-xsl
5415 gettext-minimal
5416 `(,glib "bin")
5417 itstool
5418 libxml2
5419 libxslt
5420 pkg-config
5421 python))
5422 (propagated-inputs
5423 (list dconf))
5424 (inputs
5425 (list gnome-shell
5426 gnutls
5427 gsettings-desktop-schemas
5428 gtk+
5429 nautilus ;for extension
5430 `(,util-linux "lib")
5431 vala
5432 vte/gtk+-3))
5433 (home-page "https://wiki.gnome.org/Apps/Terminal")
5434 (synopsis "Terminal emulator")
5435 (description
5436 "GNOME Terminal is a terminal emulator application for accessing a
5437UNIX shell environment which can be used to run programs available on
5438your system.
5439
5440It supports several profiles, multiple tabs and implements several
5441keyboard shortcuts.")
5442 (license license:gpl3+)))
5443
5444(define-public gnome-text-editor
5445 (package
5446 (name "gnome-text-editor")
5447 (version "49.1")
5448 (source (origin
5449 (method url-fetch)
5450 (uri (string-append "mirror://gnome/sources/gnome-text-editor/"
5451 (version-major version) "/"
5452 "gnome-text-editor-" version ".tar.xz"))
5453 (sha256
5454 (base32
5455 "1cfvaip29ljybrv9am72fka0m20i8m6c88h2qr89m5xmgcj8yi7h"))))
5456 (build-system meson-build-system)
5457 (arguments
5458 (list #:glib-or-gtk? #t))
5459 (native-inputs (list pkg-config
5460 cmake-minimal
5461 gettext-minimal
5462 desktop-file-utils
5463 appstream-glib
5464 `(,glib "bin")
5465 `(,gtk "bin")
5466 itstool))
5467 (inputs (list enchant
5468 gtk
5469 gtksourceview
5470 libadwaita
5471 libspelling
5472 pcre2
5473 ;; cyclic module dependency
5474 (module-ref
5475 (resolve-interface
5476 '(gnu packages text-editors))
5477 'editorconfig-core-c)))
5478 (home-page "https://gitlab.gnome.org/GNOME/gnome-text-editor")
5479 (synopsis "GNOME text editor")
5480 (description
5481 "GNOME Text Editor is a simple text editor that focuses on session
5482management. It keeps track of changes and state even if you quit the
5483application. You can come back to your work even if you've never saved it to a
5484file.")
5485 (license license:gpl3+)))
5486
5487(define-public colord-minimal
5488 (package
5489 (name "colord-minimal")
5490 (version "1.4.6")
5491 (source
5492 (origin
5493 (method url-fetch)
5494 (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
5495 "colord-" version ".tar.xz"))
5496 (sha256
5497 (base32 "0vwfx06k1in8hci3kdxpc3c0bh81f1vl5bp7favd3rdz4wd661vl"))))
5498 (build-system meson-build-system)
5499 (arguments
5500 (list
5501 #:glib-or-gtk? #t
5502 #:configure-flags #~(list "-Dargyllcms_sensor=false" ;requires spotread
5503 "-Dbash_completion=false"
5504 "-Ddaemon_user=colord"
5505 "-Ddocs=false"
5506 "-Dlocalstatedir=/var"
5507 "-Dman=false"
5508 "-Dsystemd=false") ;no systemd
5509 ;; Apparently the tests are known to fail on big-endian systems.
5510 #:tests? (not (or (%current-target-system)
5511 (not (target-little-endian?))))
5512 #:phases
5513 #~(modify-phases %standard-phases
5514 (add-before 'configure 'relax-gcc-14-strictness
5515 (lambda _
5516 (setenv "CFLAGS"
5517 "-g -O2 -Wno-error=incompatible-pointer-types")))
5518 (add-after 'unpack 'disable-problematic-tests
5519 (lambda _
5520 ;; Skip the colord-test-private, which requires a *system* D-Bus
5521 ;; session, which wants to run as root, among other requirements
5522 ;; (see: https://github.com/hughsie/colord/issues/97).
5523 (substitute* "lib/colord/meson.build"
5524 ((".*test\\('colord-test-private'.*") ""))))
5525 (add-before 'configure 'patch-build-system
5526 (lambda _
5527 (substitute* "rules/meson.build"
5528 (("udev.get_pkgconfig_variable\\('udevdir'\\)")
5529 (string-append "'" #$output "/lib/udev'")))))
5530 (add-before 'configure 'set-sqlite3-file-name
5531 (lambda* (#:key inputs #:allow-other-keys)
5532 ;; "colormgr dump" works by invoking the "sqlite3" command.
5533 ;; Record its absolute file name.
5534 (substitute* "client/cd-util.c"
5535 (("\"sqlite3\"")
5536 (format #f "~s" (search-input-file inputs
5537 "bin/sqlite3")))))))))
5538 (native-inputs
5539 (list `(,glib "bin") ; for glib-compile-resources, etc.
5540 gettext-minimal
5541 pkg-config
5542 vala))
5543 (propagated-inputs
5544 ;; colord.pc refers to all these.
5545 (list glib
5546 lcms
5547 eudev))
5548 (inputs
5549 (list dbus-glib
5550 gobject-introspection
5551 gusb-minimal
5552 libgudev
5553 libusb
5554 polkit
5555 python-wrapper
5556 sqlite))
5557 (home-page "https://www.freedesktop.org/software/colord/")
5558 (synopsis "Color management service")
5559 (description "Colord is a system service that makes it easy to manage,
5560install and generate color profiles to accurately color manage input and
5561output devices.")
5562 (license license:gpl2+)))
5563
5564(define-public colord
5565 (package/inherit colord-minimal
5566 (name "colord")
5567 (version "1.4.6")
5568 (source
5569 (origin
5570 (method url-fetch)
5571 (uri (string-append "https://www.freedesktop.org/software/colord/releases/"
5572 "colord-" version ".tar.xz"))
5573 (sha256
5574 (base32 "0vwfx06k1in8hci3kdxpc3c0bh81f1vl5bp7favd3rdz4wd661vl"))))
5575 (arguments
5576 (substitute-keyword-arguments arguments
5577 ((#:configure-flags flags)
5578 #~(begin
5579 (use-modules (srfi srfi-1))
5580 (append '("-Dbash_completion=true"
5581 "-Ddocs=true"
5582 "-Dman=true"
5583 "-Dsane=true"
5584 "-Dvapi=true")
5585 (fold delete #$flags '("-Dbash_completion=false"
5586 "-Ddocs=false"
5587 "-Dman=false")))))
5588 ((#:phases phases)
5589 #~(modify-phases #$phases
5590 (add-after 'unpack 'fix-bash-completion-dir
5591 (lambda _
5592 (substitute* "data/meson.build"
5593 (("bash_completion.get_pkgconfig_variable\
5594\\('completionsdir'\\)")
5595 (string-append "'" #$output
5596 "/etc/bash_completion.d'")))))))))
5597 (native-inputs
5598 (modify-inputs native-inputs
5599 (append bash-completion
5600 docbook-xsl
5601 gtk-doc/stable
5602 libxslt
5603 sane
5604 vala))))) ;for VAPI, needed by simple-scan
5605
5606(define-public geoclue
5607 (package
5608 (name "geoclue")
5609 (version "2.7.2")
5610 (source
5611 (origin
5612 (method git-fetch)
5613 (uri (git-reference
5614 (url "https://gitlab.freedesktop.org/geoclue/geoclue")
5615 (commit version)))
5616 (file-name (git-file-name name version))
5617 (sha256
5618 (base32
5619 "1fq5pmypbm6v9ychh9v1k71801jbr3igrxzsq36vy7cxs1dga0ig"))
5620 (patches (search-patches "geoclue-config.patch"))))
5621 (build-system meson-build-system)
5622 (arguments
5623 '(#:configure-flags (list "-Ddbus-srv-user=geoclue")))
5624 (native-inputs
5625 (list pkg-config
5626 gobject-introspection
5627 modem-manager
5628 libnotify
5629 gtk-doc/stable
5630 gettext-minimal
5631 vala))
5632 (inputs
5633 (list avahi
5634 `(,glib "bin")
5635 glib-networking
5636 json-glib
5637 libsoup-minimal))
5638 (home-page "https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home")
5639 (synopsis "Geolocation service")
5640 (description "Geoclue is a D-Bus service that provides location
5641information. The primary goal of the Geoclue project is to make creating
5642location-aware applications as simple as possible, while the secondary goal is
5643to ensure that no application can access location information without explicit
5644permission from user.")
5645 (license license:gpl2+)))
5646
5647(define-public geocode-glib
5648 (package
5649 (name "geocode-glib")
5650 (version "3.26.4")
5651 (source (origin
5652 (method url-fetch)
5653 (uri (string-append "mirror://gnome/sources/geocode-glib/"
5654 (version-major+minor version) "/"
5655 "geocode-glib-" version ".tar.xz"))
5656 (sha256
5657 (base32
5658 "1aipd82qk404qy88pyfgplzgi83db4hi51vkl54h8isqs4k6i6id"))))
5659 (build-system meson-build-system)
5660 (arguments
5661 (list
5662 #:configure-flags #~(list "-Dsoup2=false")))
5663 (native-inputs
5664 (list `(,glib "bin") ;for glib-mkenums
5665 (libc-locales-for-target (%current-system)) ;for tests
5666 gettext-minimal
5667 gobject-introspection
5668 gtk-doc/stable
5669 pkg-config
5670 json-glib))
5671 (propagated-inputs
5672 ;; geocode-glib-2.0.pc refers to GIO.
5673 (list glib))
5674 (inputs
5675 (list libsoup))
5676 (home-page "https://github.com/GNOME/geocode-glib/")
5677 (synopsis "Geocoding and reverse-geocoding library")
5678 (description
5679 "geocode-glib is a convenience library for geocoding (finding longitude,
5680and latitude from an address) and reverse geocoding (finding an address from
5681coordinates) using the Nominatim service. geocode-glib caches requests for
5682faster results and to avoid unnecessary server load.")
5683 (license license:lgpl2.0+)))
5684
5685(define-public upower
5686 (package
5687 (name "upower")
5688 (version "1.90.10")
5689 (source
5690 (origin
5691 (method git-fetch)
5692 (uri (git-reference
5693 (url "https://gitlab.freedesktop.org/upower/upower")
5694 (commit (string-append "v" version))))
5695 (file-name (git-file-name name version))
5696 (sha256
5697 (base32 "0vscs2n1qdbylnz37janvk0241g3ww3xcsk9402zn9sivnvl1jfk"))
5698 (modules '((guix build utils)))
5699 (snippet
5700 ;; Upstream commit <https://cgit.freedesktop.org/upower/commit/
5701 ;; ?id=18457c99b68786cd729b315723d680e6860d9cfa> moved
5702 ;; 'dbus-1/system.d' from etc/ to share/. However,
5703 ;; 'dbus-configuration-directory' in (gnu services dbus) expects it in
5704 ;; etc/. Thus, move it back to its previous location.
5705 #~(substitute* "src/meson.build"
5706 (("dbusdir / 'system.d'")
5707 "get_option('sysconfdir') / 'dbus-1/system.d'")
5708 ;; Avoid writing to /var during the build, this is
5709 ;; not possible in Guix!
5710 (("^install_subdir\\('does-not-exist'.*$") "")
5711 (("install_emptydir\\(historydir\\)") "")))))
5712 (build-system meson-build-system)
5713 (arguments
5714 (list
5715 #:glib-or-gtk? #t
5716 #:configure-flags
5717 #~(list "-Dsystemdsystemunitdir=no"
5718 ;; If not specified, udev will try putting history information and
5719 ;; state files in /gnu/store.
5720 "-Dlocalstatedir=/var"
5721 (string-append "-Dudevrulesdir=" #$output "/bin/udev/rules.d")
5722 (string-append "-Dudevhwdbdir=" #$output "/lib/udev/hwdb.d"))
5723 #:phases
5724 #~(modify-phases %standard-phases
5725 (add-after 'unpack 'adjust-test-suite
5726 (lambda _
5727 ;; This test calls an unimplemented bluez dbus method.
5728 (substitute* "src/linux/integration-test.py"
5729 (("test_bluetooth_hidpp_mouse")
5730 "disabled_test_bluetooth_hidpp_mouse")
5731 (("test_daemon_restart")
5732 "disabled_test_daemon_restart")
5733 ;; TODO: This needs to be fixed on python-dbusmock side by
5734 ;; adding python-setuptools-scm to native inptus, due to a
5735 ;; large rebuild count, mostly not Python related packages, it
5736 ;; left for the next refresh iteration for python-team or
5737 ;; gnome-team, see:
5738 ;; <https://codeberg.org/guix/guix/issues/6028>.
5739 ;;
5740 ;; Pretend current python-dbusmock version explicitly.
5741 (("dbusmock.__version__")
5742 "'0.37.2'")
5743 ;; XXX: File "<...>/integration-test.py", line 2174, in
5744 ;; test_bluetooth_le_device
5745 ;; self.assertEqual(self.get_dbus_dev_property(mouse_bat0_up,
5746 ;; 'Type'), UP_DEVICE_KIND_BLUETOOTH_GENERIC)
5747 ;; AssertionError: 8 != 28
5748 (("test_bluetooth_le_device")
5749 "__off_test_bluetooth_le_device")
5750 (("test_battery_.*_polkit_not.*" all)
5751 (string-append "disabled_" all)))
5752 #$@(if (target-x86-32?)
5753 ;; Address test failure caused by excess precision
5754 ;; on i686:
5755 ;; <https://gitlab.freedesktop.org/upower/upower/-/issues/214>.
5756 '((substitute* "src/linux/integration-test.py"
5757 (("assertEqual(.*)40\\.0" _ middle)
5758 (string-append
5759 "assertAlmostEqual" middle "40.0"))))
5760 '())))
5761 (delete 'check) ;moved after install
5762 (add-after 'install 'set-gi-typelib-path
5763 (lambda* (#:key outputs #:allow-other-keys)
5764 (setenv "GI_TYPELIB_PATH"
5765 (string-append
5766 (search-input-directory outputs "lib/girepository-1.0")
5767 ":" (getenv "GI_TYPELIB_PATH")))))
5768 (add-after 'set-gi-typelib-path 'check
5769 (assoc-ref %standard-phases 'check)))))
5770 (native-inputs
5771 (list `(,glib "bin") ; for gdbus-codegen
5772 gobject-introspection
5773 gtk-doc/stable
5774 intltool
5775 pkg-config
5776 python
5777 ;; For tests.
5778 python-dbus
5779 python-dbusmock-for-tests
5780 python-packaging
5781 python-pygobject
5782 umockdev
5783 dbus
5784 ;; For man pages.
5785 docbook-xsl
5786 libxslt)) ; for 'xsltproc'
5787 (inputs
5788 (list libgudev libusb))
5789 (propagated-inputs
5790 ;; In Requires of upower-glib.pc.
5791 (list glib))
5792 (home-page "https://upower.freedesktop.org/")
5793 (synopsis "System daemon for managing power devices")
5794 (description
5795 "UPower is an abstraction for enumerating power devices,
5796listening to device events and querying history and statistics. Any
5797application or service on the system can access the org.freedesktop.UPower
5798service via the system message bus.")
5799 (license license:gpl2+)
5800 ;; Old versions of upower are tagged as UPOWER_0_99_13, which confuses
5801 ;; the 'generic-git' updater. Give it a little help.
5802 (properties '((release-tag-prefix . "v")
5803 (release-tag-version-delimiter . ".")))))
5804
5805(define-public libgweather
5806 (package
5807 (name "libgweather")
5808 (version "4.4.4")
5809 (source (origin
5810 (method url-fetch)
5811 (uri (string-append "mirror://gnome/sources/" name "/"
5812 (version-major+minor version) "/"
5813 name "-" version ".tar.xz"))
5814 (sha256
5815 (base32
5816 "10s2pyf96yj287929px8jfbkda7bn76vzr2mqgyx3xydadvnf5vh"))))
5817 (build-system meson-build-system)
5818 (arguments
5819 (list
5820 #:tests? #f ;one of two tests requires network access
5821 #:configure-flags
5822 #~(list (string-append "-Dzoneinfo_dir="
5823 (search-input-directory %build-inputs
5824 "share/zoneinfo")))
5825 #:phases
5826 #~(modify-phases %standard-phases
5827 (add-before 'build 'set-home
5828 (lambda _
5829 ;; Build writes to $HOME via fontconfig.
5830 (setenv "HOME" (getcwd)))))))
5831 (native-inputs
5832 (list gettext-minimal
5833 `(,glib "bin") ;for glib-mkenums
5834 gobject-introspection
5835 gi-docgen
5836 pkg-config
5837 python
5838 vala
5839 python-pygobject))
5840 (propagated-inputs
5841 ;; gweather-3.0.pc refers to GTK+, GDK-Pixbuf, GLib/GObject, libxml, and
5842 ;; libsoup.
5843 (list gtk+
5844 gdk-pixbuf
5845 json-glib
5846 libxml2
5847 libsoup
5848 geocode-glib))
5849 (inputs
5850 (list tzdata))
5851 (home-page "https://gnome.pages.gitlab.gnome.org/libgweather/")
5852 (synopsis "Location, time zone, and weather library for GNOME")
5853 (description
5854 "libgweather is a library to access weather information from online
5855services for numerous locations.")
5856 (license license:gpl2+)))
5857
5858(define-public gnome-settings-daemon
5859 (package
5860 (name "gnome-settings-daemon")
5861 (version "49.1")
5862 (source
5863 (origin
5864 (method url-fetch)
5865 (uri (string-append "mirror://gnome/sources/" name "/"
5866 (version-major version) "/"
5867 name "-" version ".tar.xz"))
5868 (sha256
5869 (base32
5870 "1hf1dip78sjfsi28w80wkh6i51glprwl2j29gc9bkhwi9zy5g69a"))
5871 (patches (search-patches "gnome-settings-daemon-gc.patch"
5872 "gnome-settings-daemon-restore-desktop-files.patch"))))
5873 (build-system meson-build-system)
5874 (arguments
5875 (list
5876 #:glib-or-gtk? #t
5877 #:configure-flags
5878 #~(list (string-append "-Dudev_dir=" #$output "/lib/udev")
5879 "-Dsystemd=false"
5880 ;; Otherwise, the RUNPATH will lack the final path component.
5881 (string-append "-Dc_link_args=-Wl,-rpath=" #$output
5882 "/lib/gnome-settings-daemon-3.0:"
5883 ;; Also add NSS because for some reason Meson
5884 ;; > 0.60 does not add it automatically (XXX).
5885 (search-input-directory %build-inputs "lib/nss")))
5886 #:phases
5887 #~(modify-phases %standard-phases
5888 (add-before 'configure 'set-baobab-file-name
5889 (lambda* (#:key inputs #:allow-other-keys)
5890 ;; Hard-code the file name of Baobab instead of looking
5891 ;; it up in $PATH. This ensures users get the "Examine"
5892 ;; button in the low disk space notification of GDM even
5893 ;; if they don't have GNOME in their main profile.
5894 (substitute* "plugins/housekeeping/gsd-disk-space.c"
5895 (("g_find_program_in_path \\(DISK_SPACE_ANALYZER\\)")
5896 (format #f "g_strdup (~s)"
5897 (search-input-file inputs "bin/baobab")))))))
5898 ;; Color management test can't reach the colord system service.
5899 #:tests? #f))
5900 (native-inputs
5901 (list docbook-xml-4.2
5902 docbook-xsl
5903 gettext-minimal
5904 `(,glib "bin") ;for glib-mkenums
5905 libxslt
5906 perl
5907 pkg-config))
5908 (inputs
5909 (list alsa-lib
5910 baobab
5911 colord
5912 cups
5913 gcr
5914 geoclue
5915 geocode-glib
5916 gnome-desktop
5917 gsettings-desktop-schemas
5918 lcms
5919 libcanberra
5920 libgudev
5921 libgweather
5922 libnotify
5923 (librsvg-for-system)
5924 libwacom
5925 libx11
5926 libxtst
5927 modem-manager
5928 network-manager
5929 nss
5930 polkit
5931 pulseaudio
5932 upower
5933 wayland
5934 xf86-input-wacom))
5935 (home-page "https://www.gnome.org")
5936 (synopsis "GNOME settings daemon")
5937 (description
5938 "This package contains the daemon responsible for setting the various
5939parameters of a GNOME session and the applications that run under it. It
5940handles settings such keyboard layout, shortcuts, and accessibility, clipboard
5941settings, themes, mouse settings, and startup of other daemons.")
5942 (license license:gpl2+)))
5943
5944(define-public totem-pl-parser
5945 (package
5946 (name "totem-pl-parser")
5947 (version "3.26.6")
5948 (source (origin
5949 (method url-fetch)
5950 (uri (string-append "mirror://gnome/sources/totem-pl-parser/"
5951 (version-major+minor version) "/"
5952 "totem-pl-parser-" version ".tar.xz"))
5953 (sha256
5954 (base32
5955 "075csd5x0frgf93jvhlqiwv5i0qm24zz3iw17jj7v7fgsml0zpy0"))))
5956 (build-system meson-build-system)
5957 (arguments
5958 ;; FIXME: Tests require gvfs.
5959 `(#:tests? #f))
5960 (native-inputs
5961 (list intltool
5962 `(,glib "bin") gobject-introspection pkg-config))
5963 (propagated-inputs
5964 (list glib gmime libarchive libgcrypt libxml2))
5965 (inputs
5966 (list libsoup))
5967 (home-page "https://projects.gnome.org/totem")
5968 (synopsis "Library to parse and save media playlists for GNOME")
5969 (description "Totem-pl-parser is a GObjects-based library to parse and save
5970playlists in a variety of formats.")
5971 (license license:lgpl2.0+)))
5972
5973(define-public aisleriot
5974 (package
5975 (name "aisleriot")
5976 (version "3.22.9")
5977 (source (origin
5978 (method url-fetch)
5979 (uri (string-append "mirror://gnome/sources/aisleriot/"
5980 (version-major+minor version) "/"
5981 "aisleriot-" version ".tar.xz"))
5982 (sha256
5983 (base32
5984 "0yzdh9cw5cjjgvfh75bihl968czlgfmpmn1z0fdk88sgvpjgzwji"))))
5985 (build-system glib-or-gtk-build-system)
5986 (arguments
5987 '(#:configure-flags
5988 '("--with-platform=gtk-only"
5989 "--with-card-theme-formats=svg")))
5990 (native-inputs
5991 `(("desktop-file-utils" ,desktop-file-utils)
5992 ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
5993 ("intltool" ,intltool)
5994 ("itstool" ,itstool)
5995 ("pkg-config" ,pkg-config)
5996 ("xmllint" ,libxml2)))
5997 (inputs
5998 (list gtk+ guile-2.2 libcanberra (librsvg-for-system)))
5999 (home-page "https://wiki.gnome.org/Apps/Aisleriot")
6000 (synopsis "Solitaire card games")
6001 (description
6002 "Aisleriot (also known as Solitaire or sol) is a collection of card games
6003which are easy to play with the aid of a mouse.")
6004 (license license:gpl3+)))
6005
6006(define-public amtk
6007 (package
6008 (name "amtk")
6009 (version "5.6.1")
6010 (source (origin
6011 (method url-fetch)
6012 (uri (string-append "mirror://gnome/sources/amtk/"
6013 (version-major+minor version) "/"
6014 "amtk-" version ".tar.xz"))
6015 (sha256
6016 (base32
6017 "0a1j2ynsa2nx1rzd55mdyp35d89zd9rfxd9ld4lsqal7bjw1a0fm"))))
6018 (build-system meson-build-system)
6019 (native-inputs
6020 (list gobject-introspection
6021 `(,glib "bin") ; for glib-mkenums
6022 gtk-doc/stable pkg-config))
6023 (inputs
6024 (list glib gtk+))
6025 (home-page "https://wiki.gnome.org/Projects/Amtk")
6026 (synopsis "Actions, Menus and Toolbars Kit for GTK+ applications")
6027 (description
6028 "Amtk is the acronym for @acronym{Amtk, Actions Menus and Toolbars Kit}.
6029It is a basic GtkUIManager replacement based on GAction. It is suitable for
6030both a traditional UI or a modern UI with a GtkHeaderBar.")
6031 (license license:lgpl2.1+)))
6032
6033(define-public cogl
6034 (package
6035 (name "cogl")
6036 (version "1.22.8")
6037 (source
6038 (origin
6039 (method url-fetch)
6040 (uri (string-append "mirror://gnome/sources/cogl/"
6041 (version-major+minor version) "/"
6042 "cogl-" version ".tar.xz"))
6043 (sha256
6044 (base32 "0nfph4ai60ncdx7hy6hl1i1cmp761jgnyjfhagzi0iqq36qb41d8"))
6045 (patches
6046 (search-patches "cogl-fix-double-free.patch"))))
6047 ;; NOTE: mutter exports a bundled fork of cogl, so when making changes to
6048 ;; cogl, corresponding changes may be appropriate in mutter as well.
6049 (build-system gnu-build-system)
6050 (native-inputs
6051 `(("glib:bin" ,glib "bin") ; for glib-mkenums
6052 ("gobject-introspection" ,gobject-introspection)
6053 ("xorg-server" ,xorg-server-for-tests)
6054 ("pkg-config" ,pkg-config)))
6055 (propagated-inputs
6056 (list glib
6057 gdk-pixbuf
6058 libx11
6059 libxext
6060 libxfixes
6061 libxdamage
6062 libxcomposite
6063 libxrandr))
6064 (inputs
6065 (list mesa
6066 cairo
6067 pango
6068 wayland))
6069 (arguments
6070 `(#:disallowed-references ,(list (this-package-native-input "xorg-server"))
6071 #:configure-flags (list ,(string-append
6072 "CFLAGS=-g -O2"
6073 " -Wno-error=implicit-function-declaration")
6074 "--enable-cogl-gst=no" ;broken and unmaintained
6075 "--enable-wayland-egl-platform"
6076 "--enable-wayland-egl-server"
6077
6078 ;; Arrange to pass an absolute file name to
6079 ;; dlopen for libGL.so.
6080 (string-append "--with-gl-libname="
6081 (assoc-ref %build-inputs "mesa")
6082 "/lib/libGL.so"))
6083 #:phases
6084 (modify-phases %standard-phases
6085 (add-after 'unpack 'fix-build-with-mesa-20
6086 (lambda _
6087 ;; Work around a problem with Mesa 20 where some macros used by
6088 ;; Cogl went missing from eglext.h. This can likely be removed
6089 ;; for newer versions of Cogl or Mesa.
6090 ;; https://gitlab.gnome.org/GNOME/cogl/-/merge_requests/19
6091 (substitute* '("configure"
6092 "cogl/winsys/cogl-winsys-egl-kms.c")
6093 (("#include <EGL/eglext.h>" all)
6094 (string-append all "\n#include <EGL/eglmesaext.h>\n")))
6095 #t))
6096 (add-before 'check 'start-xorg-server
6097 (lambda* (#:key tests? inputs #:allow-other-keys)
6098 (if tests?
6099 (begin
6100 ;; The test suite requires a running X server.
6101 (system (format #f "~a/bin/Xvfb :1 +extension GLX &"
6102 (assoc-ref inputs "xorg-server")))
6103 (setenv "DISPLAY" ":1")
6104 #t)
6105 (format #t "test suite not run~%"))
6106 #t)))))
6107 (home-page "https://blogs.gnome.org/clutter/")
6108 (synopsis "Object oriented GL/GLES Abstraction/Utility Layer")
6109 (description
6110 "Cogl is a small library for using 3D graphics hardware to draw pretty
6111pictures. The API departs from the flat state machine style of OpenGL and is
6112designed to make it easy to write orthogonal components that can render
6113without stepping on each others toes.")
6114 (license (list license:expat ; most of the code
6115 license:bsd-3 ; cogl/cogl-point-in-poly.c
6116 license:sgifreeb2.0 ; cogl-path/tesselator/
6117 license:asl2.0)))) ; examples/android/
6118
6119(define-public clutter
6120 (package
6121 (name "clutter")
6122 (version "1.26.4")
6123 (source
6124 (origin
6125 (method url-fetch)
6126 (uri (string-append "mirror://gnome/sources/" name "/"
6127 (version-major+minor version) "/"
6128 name "-" version ".tar.xz"))
6129 (sha256
6130 (base32
6131 "1rn4cd1an6a9dfda884aqpcwcgq8dgydpqvb19nmagw4b70zlj4b"))))
6132 (build-system gnu-build-system)
6133 (outputs '("out"
6134 "doc")) ;9 MiB of gtk-doc HTML pages
6135 (native-inputs
6136 (list `(,glib "bin") ; for glib-genmarshal
6137 gobject-introspection
6138 libxslt
6139 pkg-config))
6140 (propagated-inputs
6141 (list at-spi2-core
6142 cairo
6143 cogl
6144 glib
6145 gtk+
6146 json-glib
6147 libxcomposite
6148 libxdamage
6149 libxext
6150 xinput))
6151 (inputs
6152 (list eudev
6153 libxkbcommon))
6154 (arguments
6155 `(#:configure-flags (list "--enable-x11-backend=yes"
6156
6157 ;; This produces share/doc/{clutter,cally}.
6158 (string-append "--with-html-dir="
6159 (assoc-ref %outputs "doc")
6160 "/share/doc"))
6161 ;; XXX FIXME: Get test suite working. It would probably fail in the
6162 ;; same way the cogl tests fail, since clutter is based on cogl.
6163 #:tests? #f))
6164 (home-page "https://blogs.gnome.org/clutter/")
6165 (synopsis "OpenGL-based interactive canvas library")
6166 (description
6167 "Clutter is an OpenGL-based interactive canvas library, designed for
6168creating fast, mainly 2D single window applications such as media box UIs,
6169presentations, kiosk style applications and so on.")
6170 (license license:lgpl2.0+)))
6171
6172(define-public clutter-gtk
6173 (package
6174 (name "clutter-gtk")
6175 (version "1.8.4")
6176 (source
6177 (origin
6178 (method url-fetch)
6179 (uri (string-append "mirror://gnome/sources/" name "/"
6180 (version-major+minor version) "/"
6181 name "-" version ".tar.xz"))
6182 (sha256
6183 (base32
6184 "01ibniy4ich0fgpam53q252idm7f4fn5xg5qvizcfww90gn9652j"))))
6185 (build-system gnu-build-system)
6186 (native-inputs
6187 (list pkg-config gobject-introspection))
6188 (propagated-inputs
6189 ;; clutter-gtk.pc refers to all these.
6190 (list clutter gtk+))
6191 (home-page "https://blogs.gnome.org/clutter/")
6192 (synopsis "OpenGL-based interactive canvas library GTK+ widget")
6193 (description
6194 "Clutter is an OpenGL-based interactive canvas library, designed for
6195creating fast, mainly 2D single window applications such as media box UIs,
6196presentations, kiosk style applications and so on.")
6197 (license license:lgpl2.0+)))
6198
6199(define-public clutter-gst
6200 (package
6201 (name "clutter-gst")
6202 (version "3.0.27")
6203 (source
6204 (origin
6205 (method url-fetch)
6206 (uri (string-append "mirror://gnome/sources/clutter-gst/"
6207 (version-major+minor version) "/"
6208 "clutter-gst-" version ".tar.xz"))
6209 (sha256
6210 (base32 "17czmpl92dzi4h3rn5rishk015yi3jwiw29zv8qan94xcmnbssgy"))))
6211 (build-system gnu-build-system)
6212 (native-inputs
6213 (list `(,glib "bin") ; for glib-mkenums
6214 pkg-config gobject-introspection))
6215 (inputs
6216 (list clutter gstreamer gst-plugins-base))
6217 (home-page "https://blogs.gnome.org/clutter/")
6218 (synopsis "Integration library for using GStreamer with Clutter")
6219 (description
6220 "Clutter-Gst is an integration library for using GStreamer with Clutter.
6221It provides a GStreamer sink to upload frames to GL and an actor that
6222implements the ClutterGstPlayer interface using playbin. Clutter is an
6223OpenGL-based interactive canvas library.")
6224 (license license:lgpl2.0+)))
6225
6226(define-public libchamplain
6227 (package
6228 (name "libchamplain")
6229 (version "0.12.20")
6230 (source (origin
6231 (method url-fetch)
6232 (uri (string-append
6233 "mirror://gnome/sources/libchamplain/0.12/libchamplain-"
6234 version ".tar.xz"))
6235 (sha256
6236 (base32
6237 "0rihpb0npqpihqcdz4w03rq6xl7jdckfqskvv9diq2hkrnzv8ch2"))))
6238 (build-system meson-build-system)
6239 (native-inputs
6240 (list gobject-introspection pkg-config vala))
6241 (propagated-inputs
6242 (list libsoup-minimal-2
6243 sqlite
6244 clutter
6245 clutter-gtk
6246 `(,glib "bin") ;glib-mkenums, etc.
6247 cairo
6248 gtk+
6249 glib))
6250 (home-page "https://projects.gnome.org/libchamplain/")
6251 (synopsis "C library providing a ClutterActor to display maps")
6252 (description
6253 "libchamplain is a C library providing a ClutterActor to display maps.
6254It also provides a Gtk+ widget to display maps in Gtk+ applications. Python
6255and Perl bindings are also available. It supports numerous free map sources
6256such as OpenStreetMap, OpenCycleMap, OpenAerialMap, and Maps for free.")
6257 (license license:lgpl2.1+)))
6258
6259(define-public gom
6260 (package
6261 (name "gom")
6262 (version "0.5.5")
6263 (source
6264 (origin
6265 (method url-fetch)
6266 (uri (string-append "mirror://gnome/sources/gom/"
6267 (version-major+minor version) "/"
6268 "gom-" version ".tar.xz"))
6269 (sha256
6270 (base32
6271 "0d5m15gz97nyvssy1ljpi6qs7fwzk0baikqzfyqplyiiy9dg0qdd"))))
6272 (build-system meson-build-system)
6273 (arguments
6274 (list
6275 #:imported-modules (append %meson-build-system-modules
6276 %pyproject-build-system-modules)
6277 #:modules '((guix build meson-build-system)
6278 ((guix build pyproject-build-system) #:prefix py:)
6279 (guix build utils))
6280 #:configure-flags
6281 #~(list (string-append "-Dpygobject-override-dir="
6282 (py:site-packages %build-inputs %outputs)
6283 "/gi/overrides"))))
6284 (native-inputs
6285 (list gettext-minimal
6286 gobject-introspection
6287 pkg-config
6288 python
6289 python-pygobject))
6290 (inputs
6291 (list glib
6292 gdk-pixbuf
6293 sqlite))
6294 (home-page "https://wiki.gnome.org/Projects/Gom")
6295 (synopsis "Object mapper from GObjects to SQLite")
6296 (description
6297 "Gom provides an object mapper from GObjects to SQLite. It helps you
6298write applications that need to store structured data as well as make complex
6299queries upon that data.")
6300 (license license:lgpl2.1+)))
6301
6302(define-public libgnome-games-support
6303 (package
6304 (name "libgnome-games-support")
6305 (version "2.0.0")
6306 (source
6307 (origin
6308 (method url-fetch)
6309 (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
6310 (version-major+minor version) "/"
6311 "libgnome-games-support-" version ".tar.xz"))
6312 (sha256
6313 (base32
6314 "196jaga70r16bzypv4z07mnwr0xcm93gc91kxygcpp9fwdpiz0jk"))))
6315 (build-system meson-build-system)
6316 (arguments
6317 '(#:glib-or-gtk? #t
6318 #:phases
6319 (modify-phases %standard-phases
6320 (add-before 'check 'pre-check
6321 (lambda _
6322 ;; Tests require a writable HOME.
6323 (setenv "HOME" (getcwd)))))))
6324 (native-inputs
6325 (list intltool pkg-config vala))
6326 (propagated-inputs
6327 ;; Required by libgnome-games-support-1.0.pc
6328 (list gtk libgee))
6329 (home-page "https://www.gnome.org/")
6330 (synopsis "Useful functionality shared among GNOME games")
6331 (description
6332 "libgnome-games-support is a small library intended for internal use by
6333GNOME Games, but it may be used by others.")
6334 (license license:lgpl3+)))
6335
6336(define-public libgnome-games-support-1
6337 (package
6338 (inherit libgnome-games-support)
6339 (version "1.8.2")
6340 (source
6341 (origin
6342 (method url-fetch)
6343 (uri (string-append "mirror://gnome/sources/libgnome-games-support/"
6344 (version-major+minor version) "/"
6345 "libgnome-games-support-" version ".tar.xz"))
6346 (sha256
6347 (base32
6348 "0zggsg7h9nlcwwjcqc13pdjza17iiww325r3q0d76f5hlw24chr8"))))
6349 (propagated-inputs (modify-inputs (package-propagated-inputs
6350 libgnome-games-support)
6351 (replace "gtk" gtk+)))))
6352
6353(define-public gnome-klotski
6354 (package
6355 (name "gnome-klotski")
6356 (version "3.38.2")
6357 (source (origin
6358 (method url-fetch)
6359 (uri (string-append "mirror://gnome/sources/" name "/"
6360 (version-major+minor version) "/"
6361 name "-" version ".tar.xz"))
6362 (sha256
6363 (base32
6364 "1qm01hdd5yp8chig62bj10912vclbdvywwczs84sfg4zci2phqwi"))))
6365 (build-system meson-build-system)
6366 (arguments
6367 '(#:glib-or-gtk? #t
6368 #:phases
6369 (modify-phases %standard-phases
6370 (add-after 'unpack 'skip-gtk-update-icon-cache
6371 ;; Don't create 'icon-theme.cache'.
6372 (lambda _
6373 (substitute* "build-aux/meson_post_install.py"
6374 (("gtk-update-icon-cache") (which "true"))))))))
6375 (native-inputs
6376 (list desktop-file-utils
6377 `(,glib "bin") ; for glib-compile-resources
6378 intltool
6379 itstool
6380 pkg-config
6381 vala
6382 libxml2))
6383 (inputs
6384 (list gtk+
6385 libgnome-games-support-1
6386 librsvg))
6387 (home-page "https://wiki.gnome.org/Apps/Klotski")
6388 (synopsis "Sliding block puzzles")
6389 (description
6390 "GNOME Klotski is a set of block sliding puzzles. The objective is to move
6391the patterned block to the area bordered by green markers. To do so, you will
6392need to slide other blocks out of the way. Complete each puzzle in as few moves
6393as possible!")
6394 (license license:gpl2+)))
6395
6396(define-public grilo
6397 (package
6398 (name "grilo")
6399 (version "0.3.19")
6400 (source
6401 (origin
6402 (method url-fetch)
6403 (uri (string-append "mirror://gnome/sources/grilo/"
6404 (version-major+minor version) "/"
6405 "grilo-" version ".tar.xz"))
6406 (sha256
6407 (base32 "01k7aclyp1z2mm6d0201zk5vav6bvla7qmkrgmk9q4xb34fwhs88"))))
6408 (build-system meson-build-system)
6409 (arguments
6410 (list #:phases #~(modify-phases %standard-phases
6411 (add-before 'unpack 'set-HOME
6412 (lambda _
6413 ;; Tests require write access to HOME.
6414 (setenv "HOME" "/tmp"))))))
6415 (native-inputs
6416 (list `(,glib "bin") ; for glib-mkenums and glib-genmarshal
6417 gettext-minimal
6418 gsettings-desktop-schemas
6419 pkg-config
6420 gobject-introspection
6421 gtk-doc/stable
6422 python
6423 vala))
6424 (inputs
6425 (list cyrus-sasl
6426 glib
6427 gtk+
6428 liboauth
6429 libsoup
6430 libxml2
6431 totem-pl-parser))
6432 (native-search-paths
6433 (list (search-path-specification
6434 (variable "GRL_PLUGIN_PATH")
6435 (files (list (string-append "lib/grilo-"
6436 (version-major+minor version)))))))
6437 (home-page "https://wiki.gnome.org/Projects/Grilo")
6438 (synopsis "Framework for discovering and browsing media")
6439 (description
6440 "Grilo is a framework focused on making media discovery and browsing easy
6441for application developers.")
6442 (license license:lgpl2.1+)))
6443
6444(define-public grilo-plugins
6445 (package
6446 (name "grilo-plugins")
6447 (version "0.3.18")
6448 (source
6449 (origin
6450 (method url-fetch)
6451 (uri (string-append "mirror://gnome/sources/" name "/"
6452 (version-major+minor version) "/"
6453 name "-" version ".tar.xz"))
6454 (sha256
6455 (base32 "0pkclk4rrd7zan0f45nhlll414dhdgr8s3ybs0ic7hqpwx7ffg4f"))))
6456 (build-system meson-build-system)
6457 (native-inputs
6458 (list gettext-minimal
6459 ;; Gstreamer plugins are required for tests.
6460 gst-plugins-good
6461 gst-plugins-bad
6462 `(,glib "bin")
6463 itstool
6464 pkg-config))
6465 (inputs
6466 (list avahi
6467 grilo
6468 gnome-online-accounts
6469 gom
6470 gstreamer
6471 json-glib
6472 avahi
6473 libdmapsharing
6474 libmediaart
6475 libsoup
6476 localsearch
6477 python-pygobject
6478 tinysparql
6479 totem-pl-parser))
6480 (arguments
6481 (list
6482 #:glib-or-gtk? #t
6483 ;;Disable lua-factory as it needs missing dependencies
6484 #:configure-flags #~'("-Denable-lua-factory=no")
6485 #:phases
6486 #~(modify-phases %standard-phases
6487 (add-before 'configure 'set-shell
6488 (lambda _
6489 (setenv "SHELL" (which "bash"))))
6490 ;; Disable the tracker test that requires the UPower daemon.
6491 (add-before 'configure 'fix-tests
6492 (lambda* (#:key inputs #:allow-other-keys)
6493 (substitute* "tests/tracker3/meson.build"
6494 (("'test_tracker3',?") "")))))))
6495 (home-page "https://wiki.gnome.org/Projects/Grilo")
6496 (synopsis "Plugins for the Grilo media discovery library")
6497 (description
6498 "Grilo is a framework focused on making media discovery and browsing easy
6499for application developers. This package provides plugins for common media
6500discovery protocols.")
6501 (license license:lgpl2.1+)))
6502
6503(define-public showtime
6504 (package
6505 (name "showtime")
6506 (version "50.0")
6507 (source (origin
6508 (method git-fetch)
6509 (uri (git-reference
6510 (url "https://gitlab.gnome.org/GNOME/showtime")
6511 (commit version)))
6512 (file-name (git-file-name name version))
6513 (sha256
6514 (base32
6515 "190xsv4csdj8xfh1rv3yvls5m63k6aca4sh5pmqk6r18bz03jj40"))
6516 (patches (search-patches "showtime-python-3.11-compat.patch"))))
6517 (build-system meson-build-system)
6518 (arguments
6519 (list
6520 #:imported-modules (append %meson-build-system-modules
6521 %pyproject-build-system-modules)
6522 #:modules `((guix build meson-build-system)
6523 ((guix build pyproject-build-system) #:prefix py:)
6524 (guix build utils))
6525 #:glib-or-gtk? #t
6526 #:phases
6527 #~(modify-phases %standard-phases
6528 (add-after 'unpack 'skip-gtk-update-icon-cache
6529 (lambda _
6530 (substitute* "meson.build"
6531 (("gtk_update_icon_cache: true")
6532 "gtk_update_icon_cache: false")
6533 (("glib_compile_schemas: true")
6534 "glib_compile_schemas: false")
6535 (("update_desktop_database: true")
6536 "update_desktop_database: false"))))
6537 (add-after 'install 'add-install-to-pythonpath
6538 (assoc-ref py:%standard-phases 'add-install-to-pythonpath))
6539 (add-after 'add-install-to-pythonpath 'wrap-python
6540 (assoc-ref py:%standard-phases 'wrap))
6541 (add-after 'wrap-python 'gi-wrap
6542 (lambda* (#:key inputs #:allow-other-keys)
6543 (wrap-program (string-append #$output "/bin/showtime")
6544 `("GI_TYPELIB_PATH" prefix
6545 (,(getenv "GI_TYPELIB_PATH")))
6546 `("GST_PLUGIN_SYSTEM_PATH" prefix
6547 ,(map (lambda (x)
6548 (dirname (search-input-file
6549 inputs
6550 (string-append "lib/gstreamer-1.0/" x))))
6551 ;; libgstgtk4.so appears to be sensitive to ordering;
6552 ;; ensure it comes first in the plugin path.
6553 (list "libgstgtk4.so" ;gst-plugins-rs:video
6554 "libgstopengl.so" ;gst-plugins-base
6555 "libgstmatroska.so" ;gst-plugins-good
6556 "libgstmpegpsdemux.so"))))))))) ;gst-plugins-bad
6557
6558 (native-inputs
6559 (list blueprint-compiler
6560 desktop-file-utils
6561 gettext-minimal
6562 `(,glib "bin")
6563 `(,gtk "bin")
6564 pkg-config))
6565 (inputs
6566 (list bash-minimal
6567 gstreamer
6568 gst-plugins-base
6569 gst-plugins-bad ;for GstPlay
6570 gst-plugins-good
6571 `(,gst-plugins-rs "video")
6572 gobject-introspection ;for cairo-1.0.typelib
6573 gtk
6574 libadwaita
6575 python
6576 python-pygobject))
6577 (home-page "https://gitlab.gnome.org/GNOME/showtime")
6578 (synopsis "Video player")
6579 (description "Showtime, also known as Video Player in GNOME, is a modern
6580video player that aims to be simple to use, avoiding distractions. Showtime
6581features simple playback controls that fade out of the way when watching,
6582fullscreen, adjustable playback speed, multiple language and subtitle tracks
6583as well as the ability to take screenshots.")
6584 (license license:gpl3+)))
6585
6586(define-public totem
6587 (package
6588 (name "totem")
6589 (version "43.2")
6590 (source
6591 (origin
6592 (method url-fetch)
6593 (uri (string-append "mirror://gnome/sources/totem/"
6594 (version-major version) "/"
6595 "totem-" version ".tar.xz"))
6596 (sha256
6597 (base32
6598 "197606ffjwlr4j566bjwlwrw6zzmjyj4hj7i0jk9afxrzcq7s00b"))))
6599 (build-system meson-build-system)
6600 (native-inputs
6601 (list `(,glib "bin") ;for 'glib-mkenums'
6602 desktop-file-utils
6603 gettext-minimal
6604 gobject-introspection
6605 intltool
6606 itstool
6607 libxml2
6608 perl ;for pod2man
6609 pkg-config
6610 xorg-server-for-tests))
6611 (propagated-inputs
6612 (list dconf))
6613 (inputs
6614 (list (librsvg-for-system)
6615 adwaita-icon-theme
6616 at-spi2-core
6617 bash-minimal
6618 cairo
6619 dbus-glib
6620 gdk-pixbuf
6621 gnome-desktop
6622 grilo
6623 grilo-plugins
6624 gsettings-desktop-schemas
6625 gst-libav
6626 gst-plugins-base
6627 gst-plugins-good
6628 gstreamer
6629 gtk+
6630 libhandy
6631 libpeas
6632 libportal
6633 libsoup
6634 libxml2
6635 libxrandr
6636 libxtst
6637 libxxf86vm
6638 python
6639 python-pygobject-3.50
6640 totem-pl-parser
6641 vala
6642 xorgproto))
6643 (arguments
6644 (list
6645 #:glib-or-gtk? #t
6646 ;; Disable automatic GStreamer plugin installation via PackageKit and
6647 ;; all that.
6648 #:configure-flags
6649 ;; Do not build .a files for the plugins, it's completely useless.
6650 ;; This saves 2 MiB.
6651 #~(list "--default-library" "shared")
6652 #:phases
6653 #~(modify-phases %standard-phases
6654 (add-after 'unpack 'skip-gtk-update-icon-cache
6655 ;; Don't create 'icon-theme.cache'.
6656 (lambda _
6657 (substitute* "meson.build"
6658 (("gtk_update_icon_cache: true")
6659 "gtk_update_icon_cache: false"))))
6660 (add-before 'install 'disable-cache-generation
6661 (lambda _
6662 (setenv "DESTDIR" "/")))
6663 (add-before 'check 'pre-check
6664 (lambda _
6665 ;; Tests require a running X server.
6666 (system "Xvfb :1 &")
6667 (setenv "DISPLAY" ":1")))
6668 (add-after 'install 'wrap-totem
6669 (lambda* (#:key inputs outputs #:allow-other-keys)
6670 (let ((out (assoc-ref outputs "out"))
6671 (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
6672 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
6673 (grl-plugin-path (getenv "GRL_PLUGIN_PATH")))
6674 (wrap-program (string-append out "/bin/totem")
6675 `("GI_TYPELIB_PATH" ":" suffix (,gi-typelib-path))
6676 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
6677 `("GRL_PLUGIN_PATH" ":" prefix (,grl-plugin-path)))
6678 (wrap-program (string-append out "/bin/totem-video-thumbnailer")
6679 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))))))))
6680 (home-page "https://wiki.gnome.org/Apps/Videos")
6681 (synopsis "Simple media player for GNOME based on GStreamer")
6682 (description "Totem is a simple yet featureful media player for GNOME
6683which can read a large number of file formats.")
6684 ;; GPL2+ with an exception clause for non-GPL compatible GStreamer plugins
6685 ;; to be used and distributed together with GStreamer and Totem. See
6686 ;; file://COPYING in the source distribution for details.
6687 (license license:gpl2+)))
6688
6689(define-public rhythmbox
6690 (package
6691 (name "rhythmbox")
6692 (version "3.5.1")
6693 (source (origin
6694 (method url-fetch)
6695 (uri (string-append "mirror://gnome/sources/rhythmbox/"
6696 (version-major+minor version) "/"
6697 "rhythmbox-" version ".tar.xz"))
6698 (sha256
6699 (base32
6700 "14s0jbdghkr5lsrwbcbjnka1f0nm1fz4w9k4nhin15c18iqx3rwf"))))
6701 (build-system meson-build-system)
6702 (arguments
6703 (list
6704 #:glib-or-gtk? #t
6705 #:phases
6706 #~(modify-phases %standard-phases
6707 (add-after 'unpack 'skip-gtk-update-icon-cache
6708 (lambda _
6709 (substitute* "meson.build"
6710 (("gtk_update_icon_cache: true")
6711 "gtk_update_icon_cache: false"))))
6712 (add-after 'install 'wrap-rhythmbox
6713 (lambda* (#:key outputs #:allow-other-keys)
6714 (wrap-program (search-input-file outputs "bin/rhythmbox")
6715 `("GI_TYPELIB_PATH" ":" prefix
6716 (,(getenv "GI_TYPELIB_PATH")))
6717 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
6718 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
6719 `("GRL_PLUGIN_PATH" ":" prefix
6720 (,(getenv "GRL_PLUGIN_PATH")))
6721 `("GUIX_PYTHONPATH" ":" prefix
6722 (,(getenv "GUIX_PYTHONPATH")))))))))
6723 (propagated-inputs
6724 (list dconf))
6725 (native-inputs
6726 (list desktop-file-utils
6727 gettext-minimal
6728 gobject-introspection
6729 `(,glib "bin")
6730 itstool
6731 pkg-config
6732 vala))
6733 (inputs
6734 (list adwaita-icon-theme
6735 at-spi2-core
6736 bash-minimal
6737 brasero
6738 json-glib
6739 gmime
6740 gnome-desktop
6741 grilo
6742 grilo-plugins
6743 gsettings-desktop-schemas
6744 gst-plugins-base
6745 gst-plugins-good
6746 gstreamer
6747 gtk+
6748 libgpod
6749 libgudev
6750 libnotify
6751 libpeas
6752 libsecret
6753 libmtp
6754 libsoup-minimal
6755 libxml2
6756 lirc
6757 pango
6758 python
6759 python-pygobject-3.50
6760 tdb
6761 totem-pl-parser))
6762 (home-page "https://gitlab.gnome.org/GNOME/rhythmbox")
6763 (synopsis "Music player for GNOME")
6764 (description "Rhythmbox is a music playing application for GNOME. It
6765supports playlists, song ratings, and any codecs installed through gstreamer.")
6766 (license license:gpl2+)))
6767
6768(define-public eog
6769 (package
6770 (name "eog")
6771 (version "47.0")
6772 (source (origin
6773 (method url-fetch)
6774 (uri (string-append "mirror://gnome/sources/" name "/"
6775 (version-major version) "/"
6776 name "-" version ".tar.xz"))
6777 (sha256
6778 (base32
6779 "0rnyrgh0qg1zdnpmn79kaflk0bra4zly93kxgdm14xad4bsxnpnv"))))
6780 (build-system meson-build-system)
6781 (arguments
6782 (list
6783 #:glib-or-gtk? #t
6784 #:configure-flags
6785 ;; Otherwise, the RUNPATH will lack the final 'eog' path component.
6786 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
6787 #$output "/lib/eog"))
6788 #:phases
6789 #~(modify-phases %standard-phases
6790 (add-after 'unpack 'skip-gtk-update-icon-cache
6791 ;; Don't create 'icon-theme.cache'.
6792 (lambda _
6793 (substitute* "meson.build"
6794 (("gtk_update_icon_cache: true")
6795 "gtk_update_icon_cache: false"))))
6796 (add-after 'install 'wrap-eog
6797 (lambda* (#:key outputs #:allow-other-keys)
6798 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
6799 (wrap-program (search-input-file outputs "bin/eog")
6800 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
6801 (propagated-inputs
6802 (list dconf
6803 libhandy)) ;libhandy is required by eog.pc
6804 (native-inputs
6805 (list gettext-minimal
6806 `(,glib "bin")
6807 gobject-introspection
6808 itstool
6809 libxml2
6810 pkg-config))
6811 (inputs
6812 (list adwaita-icon-theme
6813 bash-minimal
6814 exempi
6815 gnome-desktop
6816 gtk
6817 lcms
6818 libexif
6819 libjpeg-turbo
6820 libpeas
6821 libportal
6822 librsvg
6823 shared-mime-info))
6824 (home-page "https://wiki.gnome.org/Apps/EyeOfGnome")
6825 (synopsis "GNOME image viewer")
6826 (description "Eye of GNOME is the GNOME image viewer. It
6827supports image conversion, rotation, and slideshows.")
6828 (license license:gpl2+)))
6829
6830;; Also update (@ (gnu packages rust-sources) rust-glycin-3) when updating this.
6831(define-public libglycin
6832 (package
6833 (name "libglycin")
6834 (version "2.1.1")
6835 (source
6836 (origin
6837 (method git-fetch)
6838 (uri (git-reference
6839 (url "https://gitlab.gnome.org/GNOME/glycin.git")
6840 (commit version)))
6841 (file-name (git-file-name name version))
6842 (sha256
6843 (base32
6844 "1mrv733xhbxydww4szskv7jc0hif908aavh8h4kjcxp0zgy13blf"))
6845 (patches (search-patches "glycin-sandbox-Adapt-bwrap-invocation.patch"))))
6846 (outputs '("out" "debug"))
6847 (build-system meson-build-system)
6848 (arguments
6849 (list
6850 #:configure-flags #~(list "-Dglycin-loaders=false"
6851 "-Dglycin-thumbnailer=true"
6852 "-Dlibglycin=true"
6853 "-Dlibglycin-gtk4=true")
6854 #:imported-modules `(,@%meson-build-system-modules
6855 ,@%cargo-build-system-modules)
6856 #:modules `(((guix build cargo-build-system) #:prefix cargo:)
6857 (guix build meson-build-system)
6858 (guix build utils))
6859 #:phases
6860 (with-extensions (list (cargo-guile-json))
6861 #~(modify-phases %standard-phases
6862 (add-after 'unpack 'unpack-test-images
6863 (lambda _
6864 (copy-recursively
6865 #$(this-package-native-input "glycin-test-images")
6866 "tests/test-images")
6867 (delete-file "tests/test-images/images/color/color-link.svg")))
6868 (add-after 'unpack 'prepare-for-build
6869 (lambda _
6870 ;; Avoid checking the lock checksums.
6871 (delete-file "Cargo.lock")
6872 ;; libglycin-gtk4-2.so does not have libglycin-2.so.0 in its
6873 ;; runpath.
6874 (setenv
6875 "RUSTFLAGS"
6876 (string-append "-C link-arg=-Wl,-rpath," #$output "/lib"))))
6877 (add-after 'unpack 'set-bin-paths
6878 (lambda* (#:key inputs #:allow-other-keys)
6879 (substitute* "glycin/src/sandbox.rs"
6880 (("@bwrap@")
6881 (search-input-file inputs "bin/bwrap"))
6882 (("@storedir@")
6883 #$%storedir)
6884 (("/usr/bin/true")
6885 (search-input-file inputs "bin/true")))))
6886 ;; Ensure that bubblewrap is working in the build environment.
6887 (add-after 'set-bin-paths 'preliminary-bwrap-test
6888 (lambda* (#:key inputs #:allow-other-keys)
6889 (invoke
6890 (search-input-file inputs "bin/bwrap")
6891 "--unshare-all"
6892 "--die-with-parent"
6893 "--chdir" "/"
6894 "--ro-bind-try" "/usr" "/usr"
6895 "--dev" "/dev"
6896 "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache"
6897 "--ro-bind-try" "/nix/store" "/nix/store"
6898 "--ro-bind-try" #$%storedir #$%storedir
6899 "--ro-bind-try" #$%storedir #$%storedir
6900 "--tmpfs" "/tmp-home"
6901 "--tmpfs" "/tmp-run"
6902 "--clearenv"
6903 "--setenv" "HOME" "/tmp-home"
6904 "--setenv" "XDG_RUNTIME_DIR" "/tmp/run"
6905 "--setenv" "RUST_LOG" "warn"
6906 (search-input-file inputs "bin/true"))))
6907 ;; The meson 'configure phase changes to a different directory and
6908 ;; we need it created before unpacking the crates.
6909 (add-after 'configure 'prepare-cargo-build-system
6910 (lambda args
6911 (for-each
6912 (lambda (phase)
6913 (format #t "Running cargo phase: ~a~%" phase)
6914 (apply (assoc-ref cargo:%standard-phases phase)
6915 #:vendor-dir "vendor"
6916 #:cargo-target #$(cargo-triplet)
6917 args))
6918 '(unpack-rust-crates
6919 configure
6920 check-for-pregenerated-files
6921 patch-cargo-checksums))))
6922 (add-before 'check 'prepare-for-tests
6923 (lambda _
6924 ;; Fontconfig needs a writable cache
6925 (setenv "HOME" "/tmp")))))))
6926 (native-inputs (list gettext-minimal
6927 gobject-introspection
6928 pkg-config
6929 python-minimal
6930 rust
6931 `(,rust "cargo")
6932 vala ;for vapigen
6933 ;; Dependencies for tests.
6934 bubblewrap
6935 (origin
6936 (method git-fetch)
6937 (uri (git-reference
6938 (url "https://gitlab.gnome.org/sophie-h/test-images.git")
6939 (commit "b3a107267cc4f1d136b7007938556250ce06fc4f")))
6940 (file-name "glycin-test-images")
6941 (sha256
6942 (base32
6943 "1jvra75kjqkndxzzpmi5lb8d3q4fi3yc4hha0r1g9brdsnbhsp6f")))))
6944 (inputs (cons* bubblewrap
6945 (cargo-inputs 'glycin)))
6946 ;; The following inputs are 'Required' in the pkg-config files.
6947 (propagated-inputs (list fontconfig glib gtk lcms libseccomp))
6948 (home-page "https://gitlab.gnome.org/GNOME/glycin")
6949 (synopsis "Rust library for sandboxed image decoding")
6950 (description "Glycin is a sandbox image decoder for image viewers and
6951thumbnails to display untrusted content safely. This package provides the
6952runtime image loader executables that are used inside the sandbox.")
6953 (license (list license:mpl2.0 license:lgpl2.1+))))
6954
6955(define-public glycin-loaders
6956 (package/inherit libglycin
6957 (name "glycin-loaders")
6958 (arguments
6959 (substitute-keyword-arguments arguments
6960 ((#:configure-flags original-flags #~(list))
6961 #~(list "-Dglycin-loaders=true"
6962 "-Dglycin-thumbnailer=false"
6963 "-Dlibglycin=false"
6964 "-Dlibglycin-gtk4=false"))))
6965 (inputs
6966 (modify-inputs inputs
6967 (prepend libheif
6968 libjxl
6969 librsvg)))))
6970
6971(define-public loupe
6972 (package
6973 (name "loupe")
6974 (version "50.0")
6975 (source (origin
6976 (method url-fetch)
6977 (uri (string-append "mirror://gnome/sources/loupe/"
6978 (version-major version) "/"
6979 "loupe-" version ".tar.xz"))
6980 (sha256
6981 (base32
6982 "15592gcbln4sw83gzw6q5nk4h53rbbf80vy582k6lc8rbspgpr3s"))))
6983 (build-system meson-build-system)
6984 (arguments
6985 (list
6986 #:glib-or-gtk? #t
6987 #:imported-modules `(,@%meson-build-system-modules
6988 ,@%cargo-build-system-modules)
6989 #:modules `(((guix build cargo-build-system) #:prefix cargo:)
6990 (guix build meson-build-system)
6991 (guix build utils))
6992 #:phases
6993 (with-extensions (list (cargo-guile-json))
6994 #~(modify-phases %standard-phases
6995 (add-after 'unpack 'prepare-for-build
6996 (lambda _
6997 (substitute* "meson.build"
6998 (("gtk_update_icon_cache: true")
6999 "gtk_update_icon_cache: false")
7000 (("update_desktop_database: true")
7001 "update_desktop_database: false"))
7002 ;; Avoid checking the lock checksums.
7003 (delete-file "Cargo.lock")))
7004 ;; The meson 'configure phase changes to a different directory and
7005 ;; we need it created before unpacking the crates.
7006 (add-after 'configure 'prepare-cargo-build-system
7007 (lambda args
7008 (for-each
7009 (lambda (phase)
7010 (format #t "Running cargo phase: ~a~%" phase)
7011 (apply (assoc-ref cargo:%standard-phases phase)
7012 #:vendor-dir "vendor"
7013 #:cargo-target #$(cargo-triplet)
7014 args))
7015 '(prepare-rust-crates
7016 unpack-rust-crates
7017 configure
7018 check-for-pregenerated-files
7019 patch-cargo-checksums))))
7020 (add-after 'install 'wrap-program
7021 (lambda _
7022 (wrap-program (string-append #$output "/bin/loupe")
7023 `("GSETTINGS_SCHEMA_DIR" =
7024 (,(string-append #$output "/share/glib-2.0/schemas")))
7025 `("XDG_DATA_DIRS" suffix
7026 (,(string-append #$(this-package-input "glycin-loaders")
7027 "/share"))))))))))
7028 (native-inputs
7029 (list gettext-minimal
7030 `(,glib "bin")
7031 pkg-config
7032 itstool
7033 rust
7034 `(,rust "cargo")))
7035 (inputs
7036 (cons* bash-minimal
7037 glycin-loaders
7038 gtk
7039 lcms
7040 libadwaita
7041 libglycin
7042 libgweather
7043 libseccomp
7044 (cargo-inputs 'loupe)))
7045 (home-page "https://apps.gnome.org/Loupe/")
7046 (synopsis "Image viewer for GNOME")
7047 (description "Image browser and viewer for GNOME, made to replace Eye of
7048GNOME as a more modern default image viewer.")
7049 (license license:gpl3+)))
7050
7051(define-public libgudev
7052 (package
7053 (name "libgudev")
7054 (version "238")
7055 (source (origin
7056 (method url-fetch)
7057 (uri (string-append "mirror://gnome/sources/" name "/"
7058 version "/" name "-" version ".tar.xz"))
7059 (sha256
7060 (base32
7061 "1laxgdkgmr30aw44sm4rgpsdybwxx5rszcm8c2y3vmy9myqnl9k1"))))
7062 (build-system meson-build-system)
7063 (native-inputs
7064 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
7065 ("gobject-introspection" ,gobject-introspection)
7066 ("pkg-config" ,pkg-config)))
7067 (propagated-inputs
7068 (list glib ; in Requires of gudev-1.0.pc
7069 eudev)) ; in Requires.private of gudev-1.0.pc
7070 (inputs
7071 `(("udev" ,eudev)))
7072 (home-page "https://wiki.gnome.org/Projects/libgudev")
7073 (synopsis "GObject bindings for libudev")
7074 (description
7075 "This library provides GObject bindings for libudev. It was originally
7076part of udev-extras, then udev, then systemd. It's now a project on its own.")
7077 (license license:lgpl2.1+)))
7078
7079(define-public msgraph
7080 (package
7081 (name "msgraph")
7082 (version "0.3.4")
7083 (source (origin
7084 (method url-fetch)
7085 (uri (string-append "mirror://gnome/sources/msgraph/"
7086 (version-major+minor version) "/"
7087 "msgraph-" version ".tar.xz"))
7088 (sha256
7089 (base32 "1iyn0jdqgw238cxaxvji0v9ds0xwfzffz65xpgzywcibn3kfqc87"))))
7090 (build-system meson-build-system)
7091 (native-inputs (list gi-docgen gobject-introspection pkg-config uhttpmock))
7092 (inputs (list gnome-online-accounts json-glib libsoup librest))
7093 (home-page "https://gnome.pages.gitlab.gnome.org/msgraph/")
7094 (synopsis "GLib library for accessing MS Graph APIs")
7095 (description "This package provides a GLib-based library for accessing
7096MS Graph APIs.")
7097 (license license:lgpl3+)))
7098
7099(define-public gvfs
7100 (package
7101 (name "gvfs")
7102 (version "1.58.1")
7103 (replacement gvfs/fixed)
7104 (source (origin
7105 (method url-fetch)
7106 (uri (string-append "mirror://gnome/sources/gvfs/"
7107 (version-major+minor version) "/"
7108 "gvfs-" version ".tar.xz"))
7109 (sha256
7110 (base32
7111 "0fywnla2xwyi44jfipyixcczxh5h34c4lzfzf9lsgzxip9mpslzw"))))
7112 (build-system meson-build-system)
7113 (arguments
7114 (list
7115 #:glib-or-gtk? #t
7116 #:configure-flags
7117 #~(list "-Dsystemduserunitdir=no"
7118 "-Dtmpfilesdir=no"
7119 "-Dman=true"
7120 ;; Otherwise, the RUNPATH will lack the final path component.
7121 (string-append "-Dc_link_args=-Wl,-rpath="
7122 #$output "/lib/gvfs"))
7123 #:phases
7124 #~(modify-phases %standard-phases
7125 (add-after 'unpack 'patch-commands
7126 (lambda* (#:key inputs #:allow-other-keys)
7127 (substitute* "monitor/udisks2/gvfsudisks2mount.c"
7128 (("\"lsof -t")
7129 (string-append "\"" (search-input-file inputs "bin/lsof")
7130 " -t"))
7131 (("\"umount %s")
7132 (string-append "\"" (search-input-file inputs "bin/umount")
7133 " %s")))
7134 (substitute* "monitor/udisks2/gvfsudisks2volume.c"
7135 (("\"mount \\\\\"%s")
7136 (string-append "\"" (search-input-file inputs "bin/mount")
7137 " \\\"%s"))))))))
7138 (native-inputs
7139 (list `(,glib "bin") ;for glib-genmarshal, etc.
7140 gettext-minimal
7141 gtk-doc/stable
7142 pkg-config
7143 libxslt))
7144 (inputs
7145 (list avahi
7146 docbook-xml-4.2
7147 docbook-xsl
7148 dbus
7149 elogind
7150 fuse
7151 gcr
7152 glib
7153 gnome-online-accounts
7154 gsettings-desktop-schemas
7155 libarchive
7156 libbluray
7157 libcap
7158 libcdio-paranoia
7159 libgcrypt
7160 libgdata
7161 libgphoto2
7162 libgudev
7163 libimobiledevice
7164 libmtp
7165 libnfs
7166 libsecret
7167 lsof
7168 msgraph
7169 samba
7170 libsoup
7171 libxml2
7172 openssh
7173 polkit
7174 udisks
7175 util-linux))
7176 (home-page "https://wiki.gnome.org/Projects/gvfs")
7177 (synopsis "Userspace virtual file system for GIO")
7178 (description
7179 "GVFS is a userspace virtual file system designed to work with the I/O
7180abstraction of GIO. It contains a GIO module that seamlessly adds GVFS
7181support to all applications using the GIO API. It also supports exposing the
7182GVFS mounts to non-GIO applications using FUSE.
7183
7184GVFS comes with a set of backends, including trash support, SFTP, SMB, HTTP,
7185DAV, and others.")
7186 (license license:lgpl2.0+)))
7187
7188(define gvfs/fixed
7189 (package
7190 (inherit gvfs)
7191 (version "1.58.5")
7192 (source (origin
7193 (method url-fetch)
7194 (uri (string-append "mirror://gnome/sources/gvfs/"
7195 (version-major+minor version) "/"
7196 "gvfs-" version ".tar.xz"))
7197 (sha256
7198 (base32
7199 "1r1cj5mmdh9apgv1z6qiqznlslpp5bbpx378vkkqvm1ykkrms5xy"))))))
7200
7201(define-public gusb-minimal
7202 (package
7203 (name "gusb-minimal")
7204 (version "0.3.5")
7205 (source (origin
7206 (method git-fetch)
7207 (uri (git-reference
7208 (url "https://github.com/hughsie/libgusb")
7209 (commit version)))
7210 (file-name (git-file-name name version))
7211 (sha256
7212 (base32
7213 "0ifhdqhpyxwsg0z9s1anj7cf5pya5qsqyp5ksh9n7mqwa4lrjkl8"))))
7214 (build-system meson-build-system)
7215 (arguments
7216 `(#:tests? #f ;libusb fails to initialize. Wonder what that is.
7217 #:configure-flags
7218 (cons "-Ddocs=false"
7219 (if ,(%current-target-system)
7220 ;; Introspection data cannot currently be cross-compiled.
7221 '("-Dintrospection=false"
7222 ;; Requires introspection data.
7223 "-Dvapi=false")
7224 '()))))
7225 (native-inputs
7226 (list gobject-introspection pkg-config python vala))
7227 (propagated-inputs
7228 ;; Both of these are required by gusb.pc.
7229 (list glib libusb))
7230 (home-page "https://github.com/hughsie/libgusb")
7231 (synopsis "GLib binding for libusb1")
7232 (description
7233 "GUsb is a GObject wrapper for libusb1 that makes it easy to do
7234asynchronous control, bulk and interrupt transfers with proper cancellation
7235and integration into a mainloop. This makes it easy to integrate low level
7236USB transfers with your high-level application or system daemon.")
7237 (license license:lgpl2.1+)))
7238
7239(define-public gusb
7240 (package/inherit gusb-minimal
7241 (name "gusb")
7242 (arguments
7243 (substitute-keyword-arguments arguments
7244 ((#:configure-flags flags)
7245 `(cons "-Ddocs=true"
7246 (delete "-Ddocs=false" ,flags)))))
7247 (native-inputs
7248 (cons `("gtk-doc" ,gtk-doc/stable)
7249 (package-native-inputs gusb-minimal)))))
7250
7251(define-public simple-scan
7252 (package
7253 (name "simple-scan")
7254 (version "49.1")
7255 (source
7256 (origin
7257 (method url-fetch)
7258 (uri (string-append "mirror://gnome/sources/simple-scan/"
7259 (version-major version) "/"
7260 "simple-scan-" version ".tar.xz"))
7261 (sha256
7262 (base32 "0d733cjq0dy07fx3yxh2rzr3ij3rslvb96czxd2miyfa3qax9s4s"))))
7263 (build-system meson-build-system)
7264 (arguments
7265 (list #:glib-or-gtk? #t
7266 #:phases
7267 #~(modify-phases %standard-phases
7268 (add-after 'unpack 'skip-gtk-update-icon-cache
7269 ;; Don't create 'icon-theme.cache'.
7270 (lambda _
7271 (substitute* "meson.build"
7272 (("gtk_update_icon_cache: true")
7273 "gtk_update_icon_cache: false")
7274 (("glib_compile_schemas: true")
7275 "glib_compile_schemas: false")))))))
7276 (native-inputs
7277 (list gettext-minimal
7278 `(,gtk "bin")
7279 itstool
7280 `(,glib "bin") ; glib-compile-schemas, etc.
7281 pkg-config
7282 python
7283 vala
7284 libxml2))
7285 (inputs
7286 (list gtk
7287 zlib
7288 cairo
7289 colord
7290 gdk-pixbuf
7291 gusb
7292 libadwaita
7293 sane))
7294 (home-page "https://gitlab.gnome.org/GNOME/simple-scan")
7295 (synopsis "Document and image scanner")
7296 (description
7297 "Document Scanner is an easy-to-use application that lets you connect your
7298scanner and quickly capture images and documents in an appropriate format. It
7299supports any scanner for which a suitable SANE driver is available, which is
7300almost all of them.")
7301 (license license:gpl3+)))
7302
7303(define-public epiphany
7304 (package
7305 (name "epiphany")
7306 (version "49.2")
7307 (source (origin
7308 (method url-fetch)
7309 (uri (string-append "mirror://gnome/sources/epiphany/"
7310 (version-major version) "/"
7311 "epiphany-" version ".tar.xz"))
7312 (sha256
7313 (base32
7314 "13ibzgan6jcri7zf82chiy9vb0kvqc05bs1k2wgzi1ry45l3vfmk"))))
7315 (build-system meson-build-system)
7316 (arguments
7317 (list
7318 #:glib-or-gtk? #t
7319 #:modules '((guix build meson-build-system)
7320 (guix build utils)
7321 (guix build union))
7322 #:imported-modules `((guix build union)
7323 ,@%meson-build-system-modules)
7324 #:phases
7325 #~(modify-phases %standard-phases
7326 (add-after 'unpack 'skip-gtk-update-icon-cache
7327 ;; Don't create 'icon-theme.cache'.
7328 (lambda _
7329 (substitute* "meson.build"
7330 (("gtk_update_icon_cache: true")
7331 "gtk_update_icon_cache: false"))))
7332 (add-after 'unpack 'disable-failing-tests
7333 (lambda _
7334 (substitute* "tests/meson.build"
7335 ;; embed_shell fails, because webkitgtk apparently no longer
7336 ;; supports overriding the ftp schema web_app_utils fails due
7337 ;; to missing network access.
7338 (("(embed_shell|web_app_utils)_test,")
7339 "find_program('sh'), args: ['-c', 'exit 77'],")
7340 ;; web_view_test partially fails, because it can’t run bwrap.
7341 (("web_view_test,")
7342 (string-append
7343 "web_view_test, args: ["
7344 (string-join
7345 (map (lambda (test)
7346 (string-append "'-s', '/embed/ephy-web-view/" test "'"))
7347 '("load_url"
7348 "provisional_load_failure_updates_back_forward_list"
7349 "error-pages-not-stored-in-history"))
7350 ", ")
7351 "],")))))
7352 (replace 'check
7353 (lambda* (#:key inputs parallel-tests? tests? #:allow-other-keys)
7354 (when tests?
7355 ;(setenv "GALLIUM_DRIVER" "llvmpipe")
7356 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd)
7357 "/runtime-dir"))
7358 (mkdir (getenv "XDG_RUNTIME_DIR"))
7359 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
7360 (setenv "MESON_TESTTHREADS"
7361 (if parallel-tests?
7362 (number->string (parallel-job-count))
7363 "1"))
7364 (setenv "XDG_CACHE_HOME" (getcwd))
7365 ;; There are too many directories in XDG_DATA_DIRS, so
7366 ;; dbus-daemon fails to start. We work around this by
7367 ;; creating a single union directory of all these directories.
7368 (setenv "XDG_DATA_DIRS" "/tmp/share")
7369 (union-build "/tmp/share"
7370 (search-path-as-list '("share") (map cdr inputs))
7371 #:create-all-directories? #t)
7372 ;; Tests require a running X server.
7373 (system "Xvfb :1 &")
7374 (setenv "DISPLAY" ":1")
7375 (invoke "dbus-run-session" "--"
7376 "meson" "test" "--print-errorlogs" "-t" "0"))))
7377 (add-after 'install 'gst-wrap
7378 (lambda* (#:key inputs outputs #:allow-other-keys)
7379 (let ((out (assoc-ref outputs "out"))
7380 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
7381 (wrap-program (string-append out "/bin/epiphany")
7382 `("GST_PLUGIN_SYSTEM_PATH" ":" suffix (,gst-plugin-path)))))))
7383 #:configure-flags
7384 ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component.
7385 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
7386 #$output "/lib/epiphany"))))
7387 (propagated-inputs (list dconf))
7388 (native-inputs
7389 (list blueprint-compiler
7390 desktop-file-utils ; for update-desktop-database
7391 gettext-minimal
7392 `(,glib "bin") ; for glib-mkenums
7393 itstool
7394 pkg-config
7395 libxml2
7396 xorg-server-for-tests))
7397 (inputs
7398 (list avahi
7399 bash-minimal ; for wrap-program
7400 gcr
7401 glib-networking
7402 gnome-desktop
7403 gsettings-desktop-schemas
7404 gst-plugins-base
7405 gst-plugins-good
7406 gstreamer
7407 iso-codes/pinned
7408 json-glib
7409 libadwaita
7410 libarchive
7411 libnotify
7412 libportal
7413 (librsvg-for-system) ; for loading SVG files
7414 libsecret
7415 libsoup
7416 libxslt
7417 nettle ; for hogweed
7418 sqlite
7419 webkitgtk))
7420 (home-page "https://wiki.gnome.org/Apps/Web")
7421 (synopsis "GNOME web browser")
7422 (description
7423 "Epiphany is a GNOME web browser targeted at non-technical users. Its
7424principles are simplicity and standards compliance.")
7425 (license license:gpl2+)))
7426
7427(define-public d-spy
7428 (package
7429 (name "d-spy")
7430 (version "49.2")
7431 (source (origin
7432 (method git-fetch)
7433 (uri (git-reference
7434 (url "https://gitlab.gnome.org/GNOME/d-spy")
7435 (commit version)))
7436 (file-name (git-file-name name version))
7437 (sha256
7438 (base32
7439 "048bcckhj75b4lbcbpxgsgagd78a1ajahlqaidm1873b4vfahmfq"))))
7440 (build-system meson-build-system)
7441 (arguments
7442 (list
7443 #:glib-or-gtk? #t
7444 #:phases
7445 #~(modify-phases %standard-phases
7446 (add-after 'unpack 'skip-gtk-update-icon-cache
7447 ;; Don't create 'icon-theme.cache'.
7448 (lambda _
7449 (substitute* "meson.build"
7450 (("gtk_update_icon_cache: true")
7451 "gtk_update_icon_cache: false")))))))
7452 (native-inputs
7453 (list desktop-file-utils ; for update-desktop-database
7454 `(,glib "bin")
7455 gettext-minimal
7456 gobject-introspection
7457 pkg-config))
7458 (inputs
7459 (list gtk
7460 libadwaita
7461 libdex))
7462 (home-page "https://gitlab.gnome.org/GNOME/d-spy")
7463 (synopsis "D-Bus debugger")
7464 (description
7465 "D-Spy is a tool to explore and test end-points and interfaces of running
7466programs via D-Bus. It also ships a library for integration into development
7467environments.")
7468 (license license:gpl2+)))
7469
7470(define-public yelp-xsl
7471 (package
7472 (name "yelp-xsl")
7473 (version "49.0")
7474 (source
7475 (origin
7476 (method url-fetch)
7477 (uri
7478 (string-append "mirror://gnome/sources/" name "/"
7479 (version-major version) "/"
7480 name "-" version ".tar.xz"))
7481 (sha256
7482 (base32 "1v7va1xa80pyj0dyfraalvsag4m0lza4v87r2i7phyz6iy7kmm2r"))))
7483 (build-system meson-build-system)
7484 (native-inputs
7485 (list mallard-ducktype
7486 gettext-minimal
7487 itstool
7488 libxml2
7489 libxslt))
7490 (synopsis "XSL stylesheets for Yelp")
7491 (description "Yelp-XSL is a collection of programs and data files to help
7492you build, maintain, and distribute documentation. It provides XSLT stylesheets
7493that can be built upon for help viewers and publishing systems. These
7494stylesheets output JavaScript and CSS content, and reference images
7495provided by yelp-xsl. It also redistributes copies of the jQuery and
7496jQuery.Syntax JavaScript libraries.")
7497 (home-page "https://wiki.gnome.org/Apps/Yelp")
7498 (license
7499 (list
7500 ;; XSLT
7501 license:gpl2+
7502 ;; Images
7503 license:lgpl2.1+
7504 ;; JavaScript
7505 license:expat))))
7506
7507(define-public yelp
7508 (package
7509 (name "yelp")
7510 (version "49.0")
7511 (source (origin
7512 (method url-fetch)
7513 (uri (string-append "mirror://gnome/sources/" name "/"
7514 (version-major version) "/"
7515 name "-" version ".tar.xz"))
7516 (sha256
7517 (base32
7518 "0mrlqsbr2wb0k2p3dmywzdb0c0rzcx1dv6qlimxzx9ab3w5lwqg6"))))
7519 (build-system meson-build-system)
7520 (arguments
7521 (list #:phases
7522 #~(modify-phases %standard-phases
7523 (add-after 'unpack 'set-man-file-name
7524 (lambda* (#:key inputs #:allow-other-keys)
7525 ;; Invoke 'man' directly instead of searching $PATH.
7526 (substitute* '("libyelp/yelp-man-parser.c"
7527 "libyelp/yelp-uri.c")
7528 (("\"man\"")
7529 (string-append "\""
7530 (search-input-file inputs "bin/man")
7531 "\""))
7532 (("G_SPAWN_SEARCH_PATH")
7533 "0"))))
7534 (add-after 'install 'help-man-find-its-dependencies
7535 (lambda* (#:key inputs outputs #:allow-other-keys)
7536 ;; XXX: Currently 'man' looks for 'groff' in $PATH in one
7537 ;; case. This should be fixed in 'man-db' proper.
7538 (wrap-program (string-append (assoc-ref outputs "out")
7539 "/bin/yelp")
7540 `("PATH" ":" prefix
7541 (,(dirname (search-input-file inputs "bin/groff"))))))))))
7542 (native-inputs
7543 (list desktop-file-utils
7544 `(,glib "bin") ;for glib-genmarshal, etc.
7545 `(,gtk "bin")
7546 intltool
7547 itstool
7548 pkg-config))
7549 (propagated-inputs
7550 (list dconf))
7551 (inputs
7552 (list bash-minimal
7553 gsettings-desktop-schemas
7554 libadwaita
7555 libhandy
7556 libxslt
7557 man-db ;for URIs like "man:ls"
7558 groff-minimal ;ditto
7559 gtk
7560 sqlite
7561 webkitgtk
7562 yelp-xsl))
7563 (home-page "https://wiki.gnome.org/Apps/Yelp")
7564 (synopsis "GNOME help browser")
7565 (description
7566 "Yelp is the help viewer in Gnome. It natively views Mallard, DocBook,
7567man, info, and HTML documents. It can locate documents according to the
7568freedesktop.org help system specification.")
7569 (license license:gpl2+)))
7570
7571(define-public yelp-tools
7572 (package
7573 (name "yelp-tools")
7574 (version "42.1")
7575 (source
7576 (origin
7577 (method url-fetch)
7578 (uri
7579 (string-append "mirror://gnome/sources/" name "/"
7580 (version-major version) "/"
7581 name "-" version ".tar.xz"))
7582 (sha256
7583 (base32 "01gr255nlb77462040499qx50sik17x2b2jhzncmn56l4106lj9y"))))
7584 (build-system meson-build-system)
7585 (arguments
7586 (list #:configure-flags #~'("-Dhelp=true")))
7587 (native-inputs
7588 (list gettext-minimal pkg-config python python-lxml-for-texlive))
7589 (inputs
7590 (list yelp-xsl))
7591 (propagated-inputs
7592 ;; Needed by `yelp-build', `yelp-check' or 'yelp.m4'.
7593 (list itstool libxml2 libxslt))
7594 (synopsis "Yelp documentation tools")
7595 (description
7596 "Yelp-tools is a collection of scripts and build utilities to help create,
7597manage, and publish documentation for Yelp and the web. Most of the heavy
7598lifting is done by packages like yelp-xsl and itstool. This package just
7599wraps things up in a developer-friendly way.")
7600 (home-page "https://wiki.gnome.org/Apps/Yelp/Tools")
7601 (license license:gpl2+)))
7602
7603(define-public libgee
7604 (package
7605 (name "libgee")
7606 (version "0.20.8")
7607 (source (origin
7608 (method url-fetch)
7609 (uri (string-append "mirror://gnome/sources/libgee/"
7610 (version-major+minor version) "/"
7611 "libgee-" version ".tar.xz"))
7612 (sha256
7613 (base32
7614 "1vmhs3xavdm2vjsxc12zl44a2fhzqdyjpidhjdqqd29x2jn1b60q"))))
7615 (build-system gnu-build-system)
7616 (arguments
7617 (list
7618 #:configure-flags
7619 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")
7620 #:phases
7621 #~(modify-phases %standard-phases
7622 (add-after 'unpack 'fix-introspection-install-dir
7623 (lambda _
7624 (substitute* "gee/Makefile.in"
7625 (("@INTROSPECTION_GIRDIR@")
7626 (string-append #$output "/share/gir-1.0/"))
7627 (("@INTROSPECTION_TYPELIBDIR@")
7628 (string-append #$output "/lib/girepository-1.0/"))))))))
7629 (native-inputs
7630 (list `(,glib "bin") pkg-config))
7631 (inputs
7632 (list glib gobject-introspection))
7633 (home-page "https://wiki.gnome.org/Projects/Libgee")
7634 (synopsis "GObject collection library")
7635 (description
7636 "Libgee is a utility library providing GObject-based interfaces and
7637classes for commonly used data structures.")
7638 (license license:lgpl2.1+)))
7639
7640(define-public gexiv2
7641 (package
7642 (name "gexiv2")
7643 (version "0.16.0")
7644 (source (origin
7645 (method url-fetch)
7646 (uri (string-append "mirror://gnome/sources/" name "/"
7647 (version-major+minor version) "/"
7648 name "-" version ".tar.xz"))
7649 (sha256
7650 (base32
7651 "1fvvlxs7802a9q30r38ajwr84kz8k94b4avvaxprd7sk4igqjvyr"))))
7652 (build-system meson-build-system)
7653 (native-inputs
7654 (list gcr-3
7655 `(,glib "bin")
7656 gobject-introspection
7657 pkg-config
7658 python
7659 python-pygobject
7660 vala))
7661 (propagated-inputs
7662 ;; Listed in "Requires" section of gexiv2.pc
7663 (list exiv2))
7664 (inputs
7665 (list glib))
7666 (home-page "https://wiki.gnome.org/Projects/gexiv2")
7667 (synopsis "GObject wrapper around the Exiv2 photo metadata library")
7668 (description
7669 "Gexiv2 is a GObject wrapper around the Exiv2 photo metadata library. It
7670allows for GNOME applications to easily inspect and update EXIF, IPTC, and XMP
7671metadata in photo and video files of various formats.")
7672 (license license:gpl2+)))
7673
7674(define-public gexiv2-0.14
7675 (package
7676 (inherit gexiv2)
7677 (name "gexiv2")
7678 (version "0.14.6")
7679 (source (origin
7680 (method url-fetch)
7681 (uri (string-append "mirror://gnome/sources/" name "/"
7682 (version-major+minor version) "/"
7683 name "-" version ".tar.xz"))
7684 (sha256
7685 (base32
7686 "12rbly3y4zw4zdqpcnyjcv4a3ifpzxymxgpar3skw7vvmsm2hv30"))))))
7687
7688(define-public shotwell
7689 (package
7690 (name "shotwell")
7691 (version "0.32.15")
7692 (source (origin
7693 (method url-fetch)
7694 (uri (string-append "mirror://gnome/sources/shotwell/"
7695 (version-major+minor version) "/"
7696 "shotwell-" version ".tar.xz"))
7697 (sha256
7698 (base32
7699 "0figfjpr1qs2slrn39vgahswmwb364acinmhpf9k26if707jc45c"))))
7700 (build-system meson-build-system)
7701 (arguments
7702 (list
7703 #:glib-or-gtk? #t
7704 #:phases
7705 #~(modify-phases %standard-phases
7706 (add-after 'unpack 'skip-gtk-update-icon-cache
7707 (lambda _
7708 (substitute* "meson.build"
7709 (("gtk_update_icon_cache: true")
7710 "gtk_update_icon_cache: false")
7711 (("update_desktop_database: true")
7712 "update_desktop_database: false")))))))
7713 (propagated-inputs
7714 (list dconf))
7715 (native-inputs
7716 (list gettext-minimal
7717 `(,glib "bin")
7718 itstool
7719 pkg-config
7720 python
7721 vala))
7722 (inputs
7723 (list gcr-3
7724 gexiv2-0.14
7725 gst-plugins-base
7726 gstreamer
7727 json-glib
7728 libportal
7729 libgdata
7730 libgee
7731 libgphoto2
7732 libgudev
7733 libraw
7734 libsecret
7735 libwebp
7736 libxml2
7737 sqlite
7738 webkitgtk))
7739 (home-page "https://wiki.gnome.org/Apps/Shotwell")
7740 (synopsis "Photo manager for GNOME 3")
7741 (description
7742 "Shotwell is a digital photo manager designed for the GNOME desktop
7743environment. It allows you to import photos from disk or camera, organize
7744them by keywords and events, view them in full-window or fullscreen mode, and
7745share them with others via social networking and more.")
7746 (license license:lgpl2.1+)))
7747
7748(define-public file-roller
7749 (package
7750 (name "file-roller")
7751 (version "3.42.0")
7752 (source (origin
7753 (method url-fetch)
7754 (uri (string-append "mirror://gnome/sources/file-roller/"
7755 (version-major+minor version) "/"
7756 "file-roller-" version ".tar.xz"))
7757 (sha256
7758 (base32
7759 "1iq24g2z7kf1a6kn9asp96lc59r8pxxjvcmm5r7zy47cadnqwhqw"))))
7760 (build-system meson-build-system)
7761 (arguments
7762 (list #:glib-or-gtk? #t
7763 #:phases #~(modify-phases %standard-phases
7764 (add-before 'install 'disable-gtk-update-icon-cache
7765 (lambda _
7766 (setenv "DESTDIR" "/"))))))
7767 (native-inputs
7768 (list desktop-file-utils
7769 gettext-minimal
7770 `(,glib "bin")
7771 itstool
7772 pkg-config
7773 python))
7774 ;; TODO: Add libnautilus.
7775 (inputs
7776 (list gtk+
7777 json-glib
7778 libarchive
7779 libhandy
7780 libnotify
7781 nettle
7782 libxml2))
7783 (synopsis "Graphical archive manager for GNOME")
7784 (description "File Roller is an archive manager for the GNOME desktop
7785environment that allows users to view, unpack, and create compressed archives
7786such as gzip tarballs.")
7787 (home-page "https://fileroller.sourceforge.net")
7788 (license license:gpl2+)))
7789
7790(define-public gnome-session-shepherd
7791 (package
7792 (name "gnome-session-shepherd")
7793 (version "1.0")
7794 (source (origin
7795 (method git-fetch)
7796 (uri (git-reference
7797 (url "https://gitlab.gnome.org/noe/gnome-session-shepherd.git")
7798 (commit version)))
7799 (file-name (git-file-name name version))
7800 (sha256
7801 (base32
7802 "09kl7plq6qvy4pgr20sn670vk9abg3cmhvfbv4rbnibwkpsjasv7"))))
7803 (build-system meson-build-system)
7804 (arguments
7805 (list
7806 #:configure-flags
7807 #~(let ((inputs (map cdr %build-inputs)))
7808 (list
7809 "-Dsystem_tests=disabled" ;requires guix daemon
7810 "-Dunit_tests=disabled" ;requires guile-3.0.11
7811 "-Dleader=enabled"
7812 "-Dservices=enabled"
7813 "-Dstartup=enabled"
7814 "-Ddbus_service=enabled"
7815 (string-append "-Dgsettings_path="
7816 (search-input-file %build-inputs "/bin/gsettings"))
7817 (string-append "-Dguile_load_path="
7818 (string-join
7819 (search-path-as-list
7820 '("/share/guile/site/3.0")
7821 inputs)
7822 ":"))
7823 (string-append "-Dguile_load_compiled_path="
7824 (string-join
7825 (search-path-as-list
7826 '("/lib/guile/3.0/site-ccache")
7827 inputs)
7828 ":"))
7829 (string-append "-Dshepherd_path="
7830 #$(this-package-input "shepherd")
7831 "/bin/shepherd")))
7832 #:phases
7833 #~(begin
7834 (use-modules (ice-9 ftw))
7835 (modify-phases %standard-phases
7836 (add-after 'install 'wrap-scripts
7837 (lambda* (#:key inputs #:allow-other-keys)
7838 (let ((bin (string-append #$output "/bin")))
7839 (for-each
7840 (lambda (script)
7841 (format #t "Wrapping ~a~%" script)
7842 (wrap-program (string-append bin "/" script)
7843 `("GUILE_LOAD_PATH" ":" prefix
7844 ,(list (string-append #$output "/share/guile/site/3.0")))
7845 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
7846 ,(list (string-append #$output "/lib/guile/3.0/site-ccache")))
7847 `("GI_TYPELIB_PATH" ":" = ;FIXME “prefix” or “=”?
7848 (,(getenv "GI_TYPELIB_PATH")))
7849 ;; TODO: this is not good, because it means starting
7850 ;; unwanted services/apps in GDM.
7851 `("XDG_CONFIG_DIRS" suffix
7852 ("/run/current-system/profile/etc/xdg")))
7853 ;; Not needed since the wrapper points directly to
7854 ;; #$output/share/guile/site/3.0/…
7855 (delete-file (string-append bin "/." script "-real")))
7856 '("gnome-session" "gnome-session-leader" "gherd")))))
7857 ;; Fails on Guile object files, because DT_RUNPATH is unset. See
7858 ;; <https://codeberg.org/guix/guix/pulls/7535>.
7859 (delete 'shrink-runpath)))))
7860 (native-inputs
7861 (list guile-3.0
7862 guile-fibers
7863 guile-ini
7864 guile-gi
7865 pkg-config
7866 shepherd-1.0
7867 texinfo))
7868 (inputs
7869 (list gsettings-desktop-schemas
7870 `(,glib "bin")
7871 guile-fibers
7872 guile-ini
7873 guile-gi
7874 shepherd-1.0))
7875 (home-page "https://gitlab.gnome.org/noe/gnome-session-shepherd")
7876 (synopsis "Session manager for GNOME")
7877 (description "Implementation of gnome-session that manages services using
7878the GNU Shepherd.")
7879 (license license:gpl3+)))
7880
7881(define-deprecated-package gnome-session
7882 gnome-session-shepherd)
7883
7884(define-public gjs
7885 (package
7886 (name "gjs")
7887 (version "1.88.0")
7888 (source
7889 (origin
7890 (method url-fetch)
7891 (uri (string-append "mirror://gnome/sources/" name "/"
7892 (version-major+minor version) "/"
7893 name "-" version ".tar.xz"))
7894 (sha256
7895 (base32
7896 "0ly43lcpafl0an3k4g4mvwrwvc78f0y91ckdi6qn13ky67rvk81h"))
7897 (modules '((guix build utils)))
7898 (snippet
7899 #~(delete-all-but "subprojects" "gobject-introspection-tests"))))
7900 (build-system meson-build-system)
7901 (outputs '("out" "debug"))
7902 (arguments
7903 (list
7904 #:modules '((guix build meson-build-system)
7905 (guix build utils)
7906 (ice-9 match))
7907 #:configure-flags #~(list "-Dinstalled_tests=false")
7908 #:phases
7909 #~(modify-phases %standard-phases
7910 (add-after 'install 'wrap-gi
7911 (lambda* (#:key inputs #:allow-other-keys)
7912 (wrap-program (string-append #$output "/bin/gjs")
7913 `("GI_TYPELIB_PATH" suffix
7914 (,(dirname
7915 (search-input-file
7916 inputs
7917 "lib/girepository-1.0/GObject-2.0.typelib"))
7918 ,(dirname
7919 (search-input-file
7920 inputs
7921 "lib/girepository-1.0/GIRepository-2.0.typelib")))))))
7922 (replace 'check
7923 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
7924 (when tests?
7925 ;; For the missing /etc/machine-id.
7926 (setenv "DBUS_FATAL_WARNINGS" "0")
7927 (setenv "HOME" (getcwd))
7928 ;; In Guix, gobject-introspection is patched to always embed
7929 ;; the absolute path of a typelib library; unfortunately it
7930 ;; does this also for test typelibs not meant to be installed;
7931 ;; work around it via temporary symlinks.
7932 (let* ((test-libraries (find-files (getcwd)
7933 "\\.so(\\.[0-9]*)?$"))
7934 (test-library-links (map (lambda (x)
7935 (cons x (string-append
7936 #$output "/lib/"
7937 (basename x))))
7938 test-libraries)))
7939 (for-each (match-lambda
7940 ((old . new)
7941 (symlink old new)))
7942 test-library-links)
7943 (invoke "xvfb-run" "--" "dbus-run-session"
7944 "meson" "test" "--print-errorlogs" "-t" "0"
7945 "-j" (if parallel-tests?
7946 (number->string (parallel-job-count))
7947 "1"))
7948 (for-each delete-file (map cdr test-library-links))))))
7949 (add-after 'install 'delete-installed-tests
7950 (lambda _
7951 ;; Installed tests libraries are installed despite
7952 ;; -Dinstalled_tests=false.
7953 (delete-file-recursively
7954 (string-append #$output "/libexec/installed-tests"))))
7955 (add-after 'install 'sanitize-pkg-config-files
7956 (lambda _
7957 (substitute* (find-files #$output "\\.pc$")
7958 (("^Requires.private:.*") "")))))))
7959 (native-inputs
7960 (list `(,glib "bin") ;for glib-compile-resources
7961 pkg-config
7962 libxml2
7963 ;; For testing
7964 dbus
7965 dconf ;required to properly store settings
7966 gtk+
7967 sysprof
7968 util-linux
7969 xvfb-run))
7970 (inputs (list mozjs readline))
7971 (propagated-inputs
7972 ;; These are all in the Requires field of gjs-1.0.pc.
7973 (list glib gobject-introspection))
7974 (synopsis "Javascript bindings for GNOME")
7975 (home-page "https://gitlab.gnome.org/GNOME/gjs")
7976 (description
7977 "Gjs is a javascript binding for GNOME. It's mainly based on spidermonkey
7978javascript engine and the GObject introspection framework.")
7979 (license license:gpl2+)))
7980
7981(define-public gedit
7982 (package
7983 (name "gedit")
7984 (version "44.3")
7985 (source (origin
7986 (method url-fetch)
7987 (uri (string-append "mirror://gnome/sources/" name "/"
7988 (version-major version) "/"
7989 name "-" version ".tar.xz"))
7990 (sha256
7991 (base32
7992 "0j8p7lnf05sbw194babasfhvpd3pp29f17kvzn16ffnh34psn3y9"))))
7993 (build-system meson-build-system)
7994 (arguments
7995 (list
7996 #:glib-or-gtk? #t
7997 #:configure-flags
7998 ;; Otherwise, the RUNPATH will lack the final path component.
7999 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
8000 #$output "/lib/gedit"))
8001 #:phases
8002 #~(modify-phases %standard-phases
8003 (add-after 'unpack 'skip-gtk-update-icon-cache
8004 ;; Don't create 'icon-theme.cache'.
8005 (lambda _
8006 (substitute* "build-aux/meson/post_install.py"
8007 (("gtk-update-icon-cache") (which "true")))))
8008 (add-after 'unpack 'do-not-invoke-git
8009 (lambda* (#:key inputs #:allow-other-keys)
8010 (substitute* "meson.build"
8011 ((".*git.*") ""))))
8012 (add-after 'install 'wrap-gedit
8013 (lambda* (#:key outputs #:allow-other-keys)
8014 (wrap-program (search-input-file outputs "bin/gedit")
8015 ;; For plugins.
8016 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
8017 `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
8018 ;; For language-specs.
8019 `("XDG_DATA_DIRS" ":" prefix
8020 (,(string-append #$(this-package-input "gtksourceview")
8021 "/share")))))))))
8022 (propagated-inputs
8023 (list dconf))
8024 (native-inputs
8025 (list desktop-file-utils ;for update-desktop-database
8026 `(,glib "bin") ;for glib-mkenums, etc.
8027 gobject-introspection
8028 gtk-doc
8029 intltool
8030 itstool
8031 libxml2
8032 pkg-config
8033 python
8034 vala))
8035 (inputs
8036 (list adwaita-icon-theme
8037 amtk
8038 bash-minimal
8039 glib
8040 gsettings-desktop-schemas
8041 gspell
8042 gtk+
8043 gtksourceview-4
8044 libpeas
8045 libsoup
8046 python
8047 python-pygobject-3.50
8048 tepl))
8049 (home-page "https://wiki.gnome.org/Apps/Gedit")
8050 (synopsis "GNOME text editor")
8051 (description "While aiming at simplicity and ease of use, gedit is a
8052powerful general purpose text editor.")
8053 (license license:gpl2+)))
8054
8055(define-public zenity
8056 (package
8057 (name "zenity")
8058 (version "4.2.2")
8059 (source (origin
8060 (method url-fetch)
8061 (uri (string-append "mirror://gnome/sources/zenity/"
8062 (version-major+minor version) "/"
8063 "zenity-" version ".tar.xz"))
8064 (sha256
8065 (base32
8066 "138130f3flxp13bf7j4slaivmxbkarxmf8bf6pyg8vh9jslqd481"))))
8067 (build-system meson-build-system)
8068 (arguments
8069 (list
8070 #:phases
8071 #~(modify-phases %standard-phases
8072 (add-after 'unpack 'disable-gtk-update-icon-cache
8073 ;; The gtk-update-icon-cache tool is only run when
8074 ;; DESTDIR is unset.
8075 (lambda _
8076 (setenv "DESTDIR" "/")))
8077 (add-after 'install 'wrap-executable
8078 (lambda _
8079 (wrap-program (string-append #$output "/bin/zenity")
8080 `("XDG_DATA_DIRS" ":" prefix
8081 ,(list #$(file-append gtk "/share")))))))))
8082 (native-inputs (list gettext-minimal
8083 `(,gtk "bin")
8084 help2man
8085 itstool
8086 pkg-config))
8087 (inputs (list bash-minimal libadwaita `(,glib "bin") gtk))
8088 (synopsis "Display graphical dialog boxes from shell scripts")
8089 (home-page "https://www.gnome.org")
8090 (description
8091 "Zenity is a rewrite of gdialog, the GNOME port of dialog which allows you
8092to display dialog boxes from the commandline and shell scripts.")
8093 (license license:lgpl2.0+)))
8094
8095(define-public mutter
8096 (package
8097 (name "mutter")
8098 (version "49.4")
8099 (source (origin
8100 (method url-fetch)
8101 (uri (string-append "mirror://gnome/sources/" name "/"
8102 (version-major version) "/"
8103 name "-" version ".tar.xz"))
8104 (sha256
8105 (base32
8106 "0mbq7pijx29bp0b8nfy6057z6anc5ff973dqbki0nlv10p2nwrn1"))
8107 (patches (search-patches "mutter-disable-flaky-tests.patch"))))
8108 ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
8109 ;; versions of cogl and clutter. As a result, many of the inputs,
8110 ;; propagated-inputs, and configure flags used in cogl and clutter are
8111 ;; needed here as well.
8112 (build-system meson-build-system)
8113 (arguments
8114 (list
8115 #:glib-or-gtk? #t
8116 #:configure-flags
8117 #~(list
8118 "-Dlogind=true"
8119 "-Dbash_completion=false"
8120 ;; Don't install tests.
8121 "-Dinstalled_tests=false"
8122 ;; The following flags are needed for the bundled clutter
8123 (string-append "-Dxwayland_path="
8124 (search-input-file %build-inputs "bin/Xwayland"))
8125 ;; the remaining flags are needed for the bundled cogl
8126 (string-append "-Dopengl_libname="
8127 (search-input-file %build-inputs "lib/libGL.so"))
8128 (string-append "-Dgles2_libname="
8129 (search-input-file %build-inputs "lib/libGLESv2.so"))
8130 "-Degl_device=true" ;false by default
8131 "-Dx11=true" ;false by default
8132 "-Dwayland_eglstream=true" ;false by default
8133 (string-append "-Dudev_dir=" #$output "/lib/udev"))
8134 #:test-options #~(list "--verbose")
8135 #:phases
8136 #~(modify-phases %standard-phases
8137 (add-after 'unpack 'set-SOURCE_DIR
8138 (lambda _
8139 ;; Just to make our life easier later.
8140 (setenv "SOURCE_DIR" (getcwd))))
8141 (add-after 'unpack 'use-RUNPATH-instead-of-RPATH
8142 (lambda _
8143 ;; The build system disables RUNPATH in favor of RPATH to work
8144 ;; around a peculiarity of their CI system. Ignore that.
8145 (substitute* "meson.build"
8146 (("disable-new-dtags")
8147 "enable-new-dtags"))))
8148 (add-after 'unpack 'patch-dlopen-calls
8149 (lambda* (#:key inputs #:allow-other-keys)
8150 (substitute* "src/wayland/meta-wayland-egl-stream.c"
8151 (("libnvidia-egl-wayland.so.1")
8152 (search-input-file inputs "lib/libnvidia-egl-wayland.so.1")))))
8153 (add-before 'configure 'set-udev-dir
8154 (lambda _
8155 (setenv "PKG_CONFIG_UDEV_UDEVDIR"
8156 (string-append #$output "/lib/udev"))))
8157 (add-after 'unpack 'disable-problematic-tests
8158 (lambda _
8159 (with-directory-excursion "src/tests"
8160 (substitute* "meson.build"
8161 ;; Many (all?) stacking tests are susceptible to fail
8162 ;; non-deterministically under high load (see:
8163 ;; <https://gitlab.gnome.org/GNOME/mutter/-/issues/4035>).
8164 (("foreach stacking_test: stacking_tests")
8165 "foreach stacking_test: []"))
8166 (substitute* "clutter/conform/meson.build"
8167 ;; The 'event-delivery' test fails non-deterministically
8168 ;; (see:
8169 ;; <https://gitlab.gnome.org/GNOME/mutter/-/issues/4035#note_2402672>).
8170 ((".*'event-delivery',.*") "")))))
8171 (replace 'check
8172 (lambda* (#:key tests? test-options parallel-tests?
8173 #:allow-other-keys)
8174 (when tests?
8175 ;; Setup (refer to the 'test-mutter' and its dependent targets
8176 ;; in the '.gitlab-ci.yml' file.
8177 (setenv "HOME" "/tmp")
8178 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd)
8179 "/runtime-dir"))
8180 (mkdir (getenv "XDG_RUNTIME_DIR"))
8181 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
8182
8183 (setenv "GSETTINGS_SCHEMA_DIR" "data")
8184 (setenv "MUTTER_DEBUG_DUMMY_MODE_SPECS" "[email protected]")
8185 (setenv "PIPEWIRE_DEBUG" "2")
8186 (setenv "PIPEWIRE_LOG" "meson-logs/pipewire.log")
8187 (setenv "XVFB_SERVER_ARGS" "+iglx -noreset")
8188 (setenv "G_SLICE" "always-malloc")
8189 (setenv "MALLOC_CHECK" "3")
8190 (setenv "NO_AT_BRIDGE" "1")
8191
8192 (invoke "glib-compile-schemas" (getenv "GSETTINGS_SCHEMA_DIR"))
8193 (invoke "pipewire" "--version") ;check for pipewire
8194
8195 (setenv "MESON_TESTTHREADS"
8196 (if parallel-tests?
8197 (number->string (parallel-job-count))
8198 "1"))
8199
8200 (apply invoke "xvfb-run" "-a" "-s" (getenv "XVFB_SERVER_ARGS")
8201 (string-append (getenv "SOURCE_DIR")
8202 "/src/tests/meta-dbus-runner.py")
8203 "--launch=wireplumber"
8204 "meson" "test" "-t" "0"
8205 "--no-suite=mutter/kvm"
8206 "--no-suite=gvdb"
8207 ;; XXX: monitor-unit and monitor-dbus fail/hang.
8208 "--no-suite=mutter/backend"
8209 "--no-suite=mutter/backends/native"
8210 "--no-rebuild"
8211 "--print-errorlogs"
8212 test-options))))
8213 (add-after 'install 'sanitize-pkg-config-files
8214 (lambda _
8215 (substitute* (find-files #$output "\\.pc$")
8216 (("^Requires.private:.*" all)
8217 (string-append "# " all))))))))
8218 (native-inputs
8219 (list adwaita-icon-theme
8220 desktop-file-utils ;for update-desktop-database
8221 gettext-minimal
8222 `(,glib "bin") ;for glib-compile-schemas, etc.
8223 gobject-introspection
8224 `(,gtk "bin")
8225 libei
8226 libxcursor ;for XCURSOR_PATH
8227 pipewire
8228 pkg-config
8229 python
8230 python-dbus
8231 python-dbusmock
8232 python-docutils
8233 umockdev
8234 wayland-protocols
8235 wireplumber-minimal
8236 xvfb-run
8237 zenity))
8238 (inputs
8239 (list colord
8240 egl-wayland ;for wayland-eglstream-protocols
8241 elogind
8242 eudev
8243 gdk-pixbuf
8244 glycin-loaders
8245 gnome-desktop
8246 gnome-settings-daemon
8247 json-glib
8248 libcanberra
8249 libdisplay-info
8250 libei
8251 libglycin
8252 libgudev
8253 libinput
8254 libwacom
8255 libxcomposite
8256 libxcvt
8257 libxdamage
8258 libxext
8259 libxkbfile
8260 libxml2
8261 libxrandr
8262 libxtst
8263 pango
8264 pipewire
8265 python ; for gdctl
8266 startup-notification
8267 sysprof
8268 upower
8269 xkeyboard-config))
8270 (propagated-inputs
8271 ;; The following inputs are in 'Requires' of pkg-config files.
8272 (list at-spi2-core ;for atk
8273 cairo
8274 glib
8275 graphene
8276 gsettings-desktop-schemas
8277 lcms
8278 libx11
8279 libxfixes
8280 libxkbcommon
8281 mesa
8282 pixman
8283 xinput ;for xi.pc
8284 xorg-server-xwayland))
8285 (synopsis "Window and compositing manager")
8286 (home-page "https://www.gnome.org")
8287 (description
8288 "Mutter is a window and compositing manager that displays and manages your
8289desktop via OpenGL. Mutter combines a sophisticated display engine using the
8290Clutter toolkit with solid window-management logic inherited from the Metacity
8291window manager.")
8292 (license license:gpl2+)))
8293
8294(define-public gnome-online-accounts
8295 (package
8296 (name "gnome-online-accounts")
8297 (version "3.56.4")
8298 (source (origin
8299 (method url-fetch)
8300 (uri (string-append "mirror://gnome/sources/" name "/"
8301 (version-major+minor version) "/"
8302 name "-" version ".tar.xz"))
8303 (sha256
8304 (base32
8305 "1cv1l757g4iac39l0ccwvqhibyjdjhy9q8p86fp8mqs5mfnix0ra"))))
8306 (build-system meson-build-system)
8307 (arguments
8308 (list
8309 #:glib-or-gtk? #t
8310 #:configure-flags #~(list "-Dc_args=-Wno-error=missing-include-dirs")
8311 #:phases
8312 #~(modify-phases %standard-phases
8313 (add-after 'unpack 'disable-gtk-update-icon-cache
8314 (lambda _
8315 (substitute* "meson.build"
8316 (("gtk_update_icon_cache: true")
8317 "gtk_update_icon_cache: false")))))))
8318 (native-inputs
8319 (list gettext-minimal
8320 `(,glib "bin") ; for glib-compile-schemas, etc.
8321 gobject-introspection
8322 gi-docgen
8323 libxslt
8324 pkg-config
8325 vala))
8326 (propagated-inputs
8327 (list glib ; required by goa-1.0.pc
8328 gtk libadwaita)) ; required by goa-backend-1.0.pc
8329 (inputs
8330 (list docbook-xsl
8331 dbus
8332 gcr
8333 json-glib
8334 keyutils
8335 libsecret
8336 librest
8337 mit-krb5
8338 webkitgtk))
8339 (synopsis "Single sign-on framework for GNOME")
8340 (home-page "https://wiki.gnome.org/Projects/GnomeOnlineAccounts")
8341 (description
8342 "GNOME Online Accounts provides interfaces so that applications and
8343libraries in GNOME can access the user's online accounts. It has providers
8344for Google, ownCloud, Facebook, Flickr, Windows Live, Pocket, Foursquare,
8345Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
8346 (license license:lgpl2.0+)))
8347
8348(define-public evolution-data-server
8349 (package
8350 (name "evolution-data-server")
8351 (version "3.60.0")
8352 (source
8353 (origin
8354 (method url-fetch)
8355 (uri (string-append "mirror://gnome/sources/" name "/"
8356 (version-major+minor version) "/"
8357 name "-" version ".tar.xz"))
8358 (sha256
8359 (base32 "063cvwx83irc86f9kis572x4cpbsp3zzcwyknf8lvci81qz3hkp0"))))
8360 (build-system cmake-build-system)
8361 (arguments
8362 (list
8363 #:parallel-tests? #f
8364 #:configure-flags
8365 #~(let* ((lib (string-append #$output "/lib"))
8366 (runpaths (map (lambda (s)
8367 (string-append lib "/evolution-data-server/" s))
8368 '("addressbook-backends" "calendar-backends"
8369 "camel-providers" "credential-modules"
8370 "registry-modules"))))
8371 (list "-DENABLE_GOOGLE=OFF" ;disable Google Contacts support
8372 "-DENABLE_VALA_BINDINGS=ON"
8373 (string-append "-DCMAKE_INSTALL_RPATH=" lib ";"
8374 (string-append lib "/evolution-data-server;")
8375 (string-join runpaths ";"))
8376 "-DENABLE_INTROSPECTION=ON" ;required for Vala bindings
8377 "-DWITH_PHONENUMBER=ON"))
8378 #:phases
8379 #~(modify-phases %standard-phases
8380 #$@(if (target-aarch64?)
8381 #~((add-after 'unpack 'disable-failing-aarch64-tests
8382 (lambda _
8383 ;; 26/90 Test #26: test-book-client-custom-summary
8384 ;; ...........SIGTRAP***Exception: 35.99 sec
8385 (substitute* "tests/libebook/client/CMakeLists.txt"
8386 (("test-book-client-custom-summary") "")))))
8387 '())
8388 (add-after 'unpack 'disable-failing-tests
8389 (lambda _
8390 ;; tests/book-migration/test-migration.c:160:test_fetch_contacts:
8391 ;; assertion failed (g_slist_length (contacts) == 20): (0 == 20)
8392 (delete-file-recursively "tests/book-migration")
8393 (substitute* "tests/CMakeLists.txt"
8394 (("add_subdirectory\\(book-migration\\)") ""))))
8395 (add-after 'unpack 'patch-locale-in-test
8396 (lambda _
8397 (substitute* "tests/libebook/client/test-book-client-custom-summary.c"
8398 (("en_US\\.UTF-8") "C.UTF-8"))))
8399 (add-after 'unpack 'patch-paths
8400 (lambda _
8401 (substitute* '("tests/test-server-utils/e-test-server-utils.c"
8402 "tests/libedata-book/data-test-utils.c"
8403 "tests/libedata-book/test-book-cache-utils.c"
8404 "tests/libedata-cal/test-cal-cache-utils.c")
8405 (("/bin/rm") (which "rm")))))
8406 (add-before 'configure 'dont-override-rpath
8407 (lambda _
8408 (substitute* "CMakeLists.txt"
8409 ;; CMakeLists.txt hard-codes runpath to just the libdir.
8410 ;; Remove it so the configure flag is respected.
8411 (("SET\\(CMAKE_INSTALL_RPATH .*") "")))))))
8412 (native-inputs
8413 (list `(,glib "bin") ; for glib-mkenums, etc.
8414 gobject-introspection
8415 gperf
8416 gsettings-desktop-schemas
8417 intltool
8418 pkg-config
8419 protobuf
8420 python-wrapper
8421 vala))
8422 (propagated-inputs
8423 ;; These are all in the Requires field of .pc files.
8424 (list glib
8425 gtk
8426 gtk+
8427 json-glib
8428 libical
8429 libsecret
8430 libsoup
8431 nss
8432 sqlite))
8433 (inputs
8434 (list bdb
8435 boost
8436 gcr-3
8437 gnome-online-accounts
8438 json-glib
8439 libcanberra
8440 libgweather
8441 libphonenumber
8442 mit-krb5
8443 openldap
8444 webkitgtk
8445 webkitgtk-for-gtk3))
8446 (synopsis "Store address books and calendars")
8447 (home-page "https://wiki.gnome.org/Apps/Evolution")
8448 (description
8449 "This package provides a unified backend for programs that work with
8450contacts, tasks, and calendar information. It was originally developed for
8451Evolution (hence the name), but is now used by other packages as well.")
8452 (license license:lgpl2.0)))
8453
8454(define-public network-manager
8455 (package
8456 (name "network-manager")
8457 ;; Note: NetworkManager still follows the odd/even major version number
8458 ;; for development/stable releases scheme; be sure to use a stable one.
8459 (version "1.54.3")
8460 (source (origin
8461 (method git-fetch)
8462 (uri (git-reference
8463 (url (string-append "https://gitlab.freedesktop.org/"
8464 "NetworkManager/NetworkManager"))
8465 (commit version)))
8466 (file-name (git-file-name name version))
8467 (patches (search-patches
8468 "network-manager-plugin-ownership.patch"
8469 "network-manager-plugin-path.patch"))
8470 (sha256
8471 (base32
8472 "0dph39qb6c9gjg7yzl6bbfkndcz2lvvcssfq570r1kmw4xw8mf60"))))
8473 (build-system meson-build-system)
8474 (outputs '("out"
8475 "doc")) ; 8 MiB of gtk-doc HTML
8476 (arguments
8477 (list
8478 #:configure-flags
8479 #~(list
8480 ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
8481 ;; component.
8482 (string-append "-Dc_link_args=-Wl,-rpath="
8483 #$output "/lib:"
8484 #$output "/lib/NetworkManager/" #$version)
8485 ;; This is needed since openresolv 3.17, which validates the file is
8486 ;; owned/managed by itself via a comment in /etc/resolv.conf.
8487 "-Dconfig_dns_rc_manager_default=resolvconf"
8488 "-Dsystemd_journal=false"
8489 "-Dsession_tracking=elogind"
8490 "-Dsuspend_resume=elogind"
8491 "-Dsystemdsystemunitdir=no"
8492 "-Dsession_tracking_consolekit=false"
8493 "-Dcrypto=gnutls"
8494 "-Diwd=true"
8495 "-Dnm_cloud_setup=false"
8496 "-Dlibaudit=yes"
8497 "-Dnbft=false"
8498 "-Dqt=false"
8499 "-Ddocs=true"
8500 "--sysconfdir=/etc"
8501 "--localstatedir=/var"
8502 (string-append "-Dudev_dir="
8503 #$output "/lib/udev")
8504 (string-append "-Ddbus_conf_dir="
8505 #$output "/etc/dbus-1/system.d")
8506 (string-append "-Dmodprobe=" (search-input-file %build-inputs
8507 "bin/modprobe")))
8508 #:phases
8509 #~(modify-phases %standard-phases
8510 (add-after 'unpack 'patch-dlopen-call-to-libjansson.so
8511 (lambda* (#:key inputs #:allow-other-keys)
8512 (substitute* "src/libnm-glib-aux/nm-json-aux.c"
8513 (("(handle = dlopen\\()soname" _ head)
8514 (string-append
8515 head "\"" (search-input-file inputs
8516 "lib/libjansson.so") "\"")))))
8517 (add-before 'configure 'pre-configure
8518 (lambda _
8519 ;; These tests try to test aspects of network-manager's
8520 ;; functionality within restricted containers, but they don't
8521 ;; cope with being already in the Guix build jail as that jail
8522 ;; lacks some features that they would like to proxy over (like
8523 ;; a /sys mount).
8524 (substitute* "src/core/tests/meson.build"
8525 ((".*test-l3cfg.*") ""))
8526 (substitute* "src/core/devices/tests/meson.build"
8527 ((".*test-acd.*") "")
8528 ((".*test-lldp.*") ""))
8529 (substitute* "src/core/platform/tests/meson.build"
8530 ((".*test-address-linux.*") "")
8531 ((".*test-cleanup-linux.*") "")
8532 ((".*test-link-linux.*") "")
8533 ((".*test-lldp.*") "")
8534 ((".*test-route-linux.*") "")
8535 ((".*test-tc-linux.*") ""))
8536 (substitute* "src/libnm-client-impl/meson.build"
8537 ;; Note: printenv results in bogus newline, that isn't stripped
8538 (("run_command\\('printenv', '([^']*)',[^\n]*" all var)
8539 (string-append "'" (or (getenv var) "") "'")))))
8540 (add-before 'check 'pre-check
8541 (lambda _
8542 ;; For the missing /etc/machine-id.
8543 (setenv "DBUS_FATAL_WARNINGS" "0")))
8544 (add-before 'install 'no-polkit-magic
8545 ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
8546 (lambda _
8547 (setenv "PKEXEC_UID" "something")))
8548 (add-after 'install 'move-doc
8549 (lambda _
8550 (mkdir-p (string-append #$output:doc "/share"))
8551 (for-each (lambda (directory)
8552 (copy-recursively (string-append #$output directory)
8553 (string-append #$output:doc
8554 directory))
8555 (delete-file-recursively
8556 (string-append #$output directory)))
8557 '("/share/doc" "/share/gtk-doc")))))))
8558 (propagated-inputs
8559 (list glib))
8560 (native-inputs
8561 (list docbook-xml
8562 docbook-xsl
8563 gettext-minimal
8564 `(,glib "bin") ;for gdbus-codegen
8565 gobject-introspection
8566 gtk-doc/stable
8567 libxml2
8568 libxslt
8569 perl
8570 pkg-config
8571 python-dbus
8572 python-pygobject-3.50
8573 python-wrapper
8574 vala))
8575 (inputs
8576 (list audit
8577 curl
8578 cyrus-sasl
8579 dbus-glib
8580 dhcpcd
8581 dnsmasq
8582 elogind
8583 eudev
8584 gnutls
8585 iptables
8586 iwd ;wpa_supplicant alternative
8587 jansson
8588 kmod
8589 libgcrypt
8590 libgudev
8591 libndp
8592 libnl
8593 libpsl
8594 libselinux
8595 mobile-broadband-provider-info
8596 modem-manager
8597 nftables
8598 newt ;for the 'nmtui' console interface
8599 openresolv ;alternative resolv.conf manager
8600 polkit
8601 ppp
8602 readline
8603 util-linux))
8604 (synopsis "Network connection manager")
8605 (home-page "https://wiki.gnome.org/Projects/NetworkManager")
8606 (description
8607 "NetworkManager is a system network service that manages your network
8608devices and connections, attempting to keep active network connectivity when
8609available. It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE
8610devices, and provides VPN integration with a variety of different VPN
8611services.")
8612 ;; “This NetworkManager project consists of the daemon, client tools, and
8613 ;; libnm. libnm is licensed LGPL-2.1+, while the rest is licensed under
8614 ;; GPL-2.0+.”
8615 (license (list license:gpl2+
8616 license:lgpl2.1+))
8617 (properties '((upstream-name . "NetworkManager")))))
8618
8619(define-public network-manager-openvpn
8620 (package
8621 (name "network-manager-openvpn")
8622 (version "1.12.5")
8623 (source (origin
8624 (method url-fetch)
8625 (uri (string-append
8626 "mirror://gnome/sources/NetworkManager-openvpn/"
8627 (version-major+minor version)
8628 "/NetworkManager-openvpn-" version ".tar.xz"))
8629 (sha256
8630 (base32
8631 "1zas9g0hjhlhp7vny7xrbv9w4zw1g5va2b07r0pxzv800n5y6cnf"))))
8632 (build-system gnu-build-system)
8633 (arguments
8634 (list
8635 #:configure-flags #~(list "--enable-absolute-paths"
8636 "--localstatedir=/var"
8637 "--with-gtk4=yes")
8638 #:phases
8639 #~(modify-phases %standard-phases
8640 (add-after 'configure 'patch-path
8641 (lambda* (#:key inputs #:allow-other-keys #:rest args)
8642 (let* ((ovpn (search-input-file inputs "/sbin/openvpn"))
8643 (modprobe (search-input-file inputs "/bin/modprobe"))
8644 (pretty-ovpn (string-append "\"" ovpn "\"")))
8645 (for-each
8646 (lambda (file)
8647 (substitute* file
8648 (("\"/usr/local/sbin/openvpn\"") pretty-ovpn)
8649 (("\"/usr/sbin/openvpn\"") pretty-ovpn)
8650 (("\"/sbin/openvpn\"") pretty-ovpn)
8651 (("/sbin/modprobe") modprobe)))
8652 '("src/nm-openvpn-service.c"
8653 "properties/nm-openvpn-editor.c"))))))))
8654 (native-inputs
8655 (list intltool
8656 `(,glib "bin")
8657 pkg-config))
8658 (inputs
8659 (list gtk+
8660 gtk
8661 kmod
8662 libnma
8663 libsecret
8664 network-manager
8665 openvpn))
8666 (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
8667 (synopsis "OpenVPN plug-in for NetworkManager")
8668 (description
8669 "This extension of NetworkManager allows it to take care of connections
8670to virtual private networks (VPNs) via OpenVPN.")
8671 (license license:gpl2+)
8672 (properties `((upstream-name . "NetworkManager-openvpn")))))
8673
8674(define-public network-manager-openconnect
8675 (package
8676 (name "network-manager-openconnect")
8677 (version "1.2.10")
8678 (source (origin
8679 (method url-fetch)
8680 (uri (string-append
8681 "mirror://gnome/sources/NetworkManager-openconnect/"
8682 (version-major+minor version)
8683 "/NetworkManager-openconnect-" version ".tar.xz"))
8684 (sha256
8685 (base32
8686 "0r342dinhh1808cb095xb5zfxrm5kaw6sxwclss9gnya9vv6njw4"))))
8687 (build-system gnu-build-system)
8688 (arguments
8689 `(#:configure-flags '("--enable-absolute-paths"
8690 "--localstatedir=/var"
8691 "--with-gtk4=yes")
8692 #:phases
8693 (modify-phases %standard-phases
8694 (add-after 'configure 'patch-path
8695 (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
8696 (let* ((openconnect (search-input-file inputs
8697 "/sbin/openconnect"))
8698 (modprobe (search-input-file inputs "/bin/modprobe"))
8699 (pretty-ovpn (string-append "\"" openconnect "\"")))
8700 (substitute* "src/nm-openconnect-service.c"
8701 (("\"/usr(/local)?/s?bin/openconnect\"") pretty-ovpn)
8702 (("/sbin/modprobe") modprobe))))))))
8703 (native-inputs
8704 (list `(,glib "bin")
8705 intltool
8706 libnma
8707 pkg-config))
8708 (inputs
8709 (list gcr-3
8710 gtk
8711 gtk+
8712 kmod
8713 libsecret
8714 libxml2
8715 lz4
8716 network-manager
8717 openconnect
8718 webkitgtk-for-gtk3))
8719 (home-page "https://gitlab.gnome.org/GNOME/NetworkManager-openconnect")
8720 (synopsis "OpenConnect plug-in for NetworkManager")
8721 (description
8722 "This extension of NetworkManager allows it to take care of connections
8723to @acronym{VPNs, virtual private networks} via OpenConnect, an open client for
8724Cisco's AnyConnect SSL VPN.")
8725 (license license:gpl2+)
8726 (properties `((upstream-name . "NetworkManager-openconnect")
8727
8728 ;; The 'etc/dbus-1/system.d/nm-openconnect-service.conf'
8729 ;; file refers to account "nm-openconnect". Specify it here
8730 ;; so that 'network-manager-service-type' creates it.
8731 (user-accounts . ("nm-openconnect"))))))
8732
8733
8734(define-deprecated/public-alias network-manager-fortisslvpn
8735 network-manager-openconnect)
8736
8737(define-public network-manager-libreswan
8738 (package
8739 (name "network-manager-libreswan")
8740 (version "1.2.30")
8741 (source (origin
8742 (method url-fetch)
8743 (uri (string-append
8744 "mirror://gnome/sources/NetworkManager-libreswan/"
8745 (version-major+minor version)
8746 "/NetworkManager-libreswan-" version ".tar.xz"))
8747 (sha256
8748 (base32
8749 "1lqigbqx6y51ys6rvlmv9qg72hlyd2xvl0zq53jqfj5vscvayw36"))))
8750 (build-system gnu-build-system)
8751 (arguments
8752 (list
8753 #:configure-flags #~'("--enable-absolute-paths"
8754 "--localstatedir=/var"
8755 "--with-gtk4=yes")
8756 #:phases
8757 #~(modify-phases %standard-phases
8758 (add-after 'configure 'patch-path
8759 (lambda* (#:key inputs #:allow-other-keys #:rest args)
8760 (define (quoted-input-file inputs file)
8761 (string-append "\"" (search-input-file inputs file) "\""))
8762
8763 (substitute* "src/nm-libreswan-service.c"
8764 (("nm_libreswan_find_helper_bin\\(\"([^\"]*)\", error\\)"
8765 all bin)
8766 (quoted-input-file inputs (string-append "/sbin/" bin)))
8767 (("nm_libreswan_find_helper_libexec\\(\"([^\"]*)\", error\\)"
8768 all bin)
8769 (cond
8770 ;; Removed from libreswan 5.3 and forward.
8771 ((string=? bin "_stackmanager")
8772 (or (false-if-exception
8773 (quoted-input-file inputs
8774 "/libexec/ipsec/_stackmanager"))
8775 all))
8776 (else
8777 (quoted-input-file
8778 inputs
8779 (string-append "/libexec/ipsec/" bin)))))))))))
8780 (native-inputs
8781 (list `(,glib "bin")
8782 intltool
8783 libnma
8784 pkg-config))
8785 (inputs
8786 (list gcr-3
8787 gtk
8788 gtk+
8789 libreswan
8790 libsecret
8791 libnl
8792 network-manager
8793 webkitgtk-for-gtk3))
8794 (home-page "https://gitlab.gnome.org/GNOME/NetworkManager-libreswan")
8795 (synopsis "Libreswan plug-in for NetworkManager")
8796 (description
8797 "This extension of NetworkManager allows it to take care of connections
8798to @acronym{VPNs, virtual private networks} via Libreswan.")
8799 (license license:gpl2+)
8800 (properties `((upstream-name . "NetworkManager-libreswan")))))
8801
8802(define-deprecated/public-alias network-manager-vpnc
8803 network-manager-libreswan)
8804
8805(define-public network-manager-l2tp
8806 (package
8807 (name "network-manager-l2tp")
8808 (version "1.52.6")
8809 (source (origin
8810 (method git-fetch)
8811 (uri (git-reference
8812 (url "https://github.com/nm-l2tp/NetworkManager-l2tp")
8813 (commit version)))
8814 (file-name (git-file-name name version))
8815 (sha256
8816 (base32
8817 "0j6iil7hg2fs5kzs419n89gdjvib8vc70gw7gmal5qs086lfjkb5"))))
8818 (build-system gnu-build-system)
8819 (arguments
8820 (list
8821 #:configure-flags
8822 #~(list
8823 "--enable-absolute-paths"
8824 "--localstatedir=/var"
8825 "--with-gtk4=yes")
8826 #:phases
8827 #~(modify-phases %standard-phases
8828 (add-after 'configure 'patch-path
8829 (lambda* (#:key inputs #:allow-other-keys #:rest args)
8830 (let* ((xl2tpd (search-input-file inputs "/sbin/xl2tpd"))
8831 (ipsec
8832 (search-input-file inputs "/sbin/ipsec"))
8833 (modprobe
8834 (search-input-file inputs "/bin/modprobe")))
8835 (for-each
8836 (lambda (file)
8837 (substitute* file
8838 (("/usr/bin/xl2tpd") xl2tpd)
8839 (("/usr/bin/ipsec") ipsec)
8840 (("/sbin/modprobe") modprobe)))
8841 '("shared/utils.c"
8842 "src/nm-l2tp-service.c"))))))))
8843 (native-inputs
8844 (list gettext-minimal
8845 intltool
8846 autoconf
8847 automake
8848 libtool
8849 (list glib "bin")
8850 pkg-config))
8851 (inputs
8852 (list gtk+
8853 gtk
8854 (list gtk "bin")
8855 kmod
8856 ppp
8857 openssl
8858 nss
8859 libnma
8860 libsecret
8861 network-manager
8862 strongswan
8863 xl2tpd))
8864 (home-page "https://github.com/nm-l2tp/NetworkManager-l2tp")
8865 (synopsis "NetworkManager plugin for L2TP")
8866 (description "NetworkManager-l2tp is a VPN plugin for NetworkManager
8867and later which provides support for L2TP and L2TP/IPsec (i.e. L2TP over
8868IPsec) connections.")
8869 (license license:gpl2+)
8870 (properties `((upstream-name . "NetworkManager-l2tp")))))
8871
8872(define-public mobile-broadband-provider-info
8873 (package
8874 (name "mobile-broadband-provider-info")
8875 (version "20240407")
8876 (source (origin
8877 (method url-fetch)
8878 (uri (string-append
8879 "mirror://gnome/sources/"
8880 "mobile-broadband-provider-info/" version "/"
8881 "mobile-broadband-provider-info-" version ".tar.xz"))
8882 (sha256
8883 (base32
8884 "0jl13k02m63izk35kylv3v8q1c7xa19c4bpzqglzigzl2prfzgw9"))))
8885 (build-system meson-build-system)
8886 (native-inputs (list libxml2 libxslt))
8887 (home-page "https://wiki.gnome.org/Projects/NetworkManager")
8888 (synopsis "Database of broadband connection configuration")
8889 (description "Database of broadband connection configuration.")
8890 (license license:public-domain)))
8891
8892(define-public network-manager-applet
8893 (package
8894 (name "network-manager-applet")
8895 (version "1.36.0")
8896 (source (origin
8897 (method url-fetch)
8898 (uri (string-append "mirror://gnome/sources/network-manager-applet/"
8899 (version-major+minor version) "/"
8900 "network-manager-applet-" version ".tar.xz"))
8901 (sha256
8902 (base32
8903 "0lz2lxj5xy65l7qcn3df83spkxxqk2sjmys7bi4f3bx3gr408ix8"))))
8904 (build-system meson-build-system)
8905 (arguments
8906 `(#:glib-or-gtk? #t
8907 #:configure-flags
8908 '("-Dappindicator=yes")))
8909 (native-inputs
8910 (list gettext-minimal
8911 `(,glib "bin") ; for glib-compile-resources, etc.
8912 gobject-introspection
8913 gtk-doc/stable
8914 pkg-config))
8915 (propagated-inputs
8916 ;; libnm-gtk.pc refers to all these.
8917 (list dbus-glib gtk+ network-manager
8918 ;; nm-applet need by org.gnome.nm-applet.gschema.xml
8919 libnma))
8920 (inputs
8921 (list gcr-3
8922 libappindicator
8923 libgudev
8924 libsecret
8925 libselinux
8926 jansson ; for team support
8927 modem-manager))
8928 (synopsis "Applet for managing network connections")
8929 (home-page "https://wiki.gnome.org/Projects/NetworkManager")
8930 (description
8931 "This package contains a systray applet for NetworkManager. It displays
8932the available networks and allows users to easily switch between them.")
8933 (license license:gpl2+)))
8934
8935(define-public libxml++
8936 (package
8937 (name "libxml++")
8938 (version "5.6.0")
8939 (source
8940 (origin
8941 (method git-fetch)
8942 (uri (git-reference
8943 (url "https://github.com/libxmlplusplus/libxmlplusplus")
8944 (commit version)))
8945 (file-name (git-file-name name version))
8946 (sha256
8947 (base32 "1ckgllfgnfszri57ay41jykwblcilsyldkhiq0x5h50c5av118pj"))))
8948 (build-system gnu-build-system)
8949 (propagated-inputs
8950 (list libxml2)) ;required by .pc file
8951 (native-inputs
8952 (list autoconf
8953 automake
8954 doxygen
8955 docbook-xml
8956 docbook-xsl
8957 graphviz ;for dot
8958 libtool
8959 libxslt
8960 mm-common
8961 perl
8962 pkg-config))
8963 (home-page "https://github.com/libxmlplusplus/libxmlplusplus/")
8964 (synopsis "C++ bindings to the libxml2 XML parser library")
8965 (description
8966 "This package provides a C++ interface to the libxml2 XML parser
8967library.")
8968 (license license:lgpl2.1+)))
8969
8970;; This is the last release providing the 2.6 API, hence the name.
8971(define-public libxml++-2
8972 (package
8973 (inherit libxml++)
8974 (name "libxml++")
8975 (version "2.42.3")
8976 (source
8977 (origin
8978 (method git-fetch)
8979 (uri (git-reference
8980 (url "https://github.com/libxmlplusplus/libxmlplusplus")
8981 (commit version)))
8982 (file-name (git-file-name name version))
8983 (sha256
8984 (base32 "0a0q25q275ysfr2ly66nbizkkwxnylsydzy5a8ay0c9cdskd3sc9"))))
8985 (propagated-inputs (modify-inputs (package-propagated-inputs libxml++)
8986 (append glibmm-2.66)))))
8987
8988(define-public gdm
8989 (package
8990 (name "gdm")
8991 (version "49.2")
8992 (source (origin
8993 (method url-fetch)
8994 (uri (string-append "mirror://gnome/sources/" name "/"
8995 (version-major version) "/"
8996 name "-" version ".tar.xz"))
8997 (sha256
8998 (base32
8999 "01ksb7gf2pfccnvw7dr363nppz0fwrk7hhsal478c3szkwgn64wq"))
9000 (patches
9001 (search-patches
9002 "gdm-default-session.patch"
9003 "gdm-remove-hardcoded-xwayland-path.patch"
9004 "gdm-wayland-session-wrapper-from-env.patch"
9005 "gdm-pass-gdk-pixbuf-loader-env.patch"))))
9006 (build-system meson-build-system)
9007 (outputs '("out" "debug"))
9008 (arguments
9009 (list
9010 #:glib-or-gtk? #t
9011 #:configure-flags
9012 #~(list
9013 "-Dplymouth=disabled"
9014 "-Dsystemd-journal=false"
9015
9016 ;; Using --with-initial-vt=7 allows GDM to run alongside TTY 1,
9017 ;; instead of having to replace it (i.e., stopping the mingetty
9018 ;; service for TTY 1 before starting GDM).
9019 "-Dinitial-vt=7"
9020
9021 ;; Use elogind instead of systemd.
9022 "-Dlogind-provider=elogind"
9023 "-Dsystemdsystemunitdir=no"
9024 "-Dsystemduserunitdir=no"
9025
9026 ;; Use '/etc/environment' for locale settings instead of the
9027 ;; systemd-specific '/etc/locale.conf'.
9028 "-Dlang-file=/etc/environment"
9029
9030 (string-append "-Dudev-dir=" #$output "/lib/udev")
9031
9032 "--localstatedir=/var"
9033 (string-append "-Ddefault-path="
9034 (string-join '("/run/privileged/bin"
9035 "/run/current-system/profile/bin"
9036 "/run/current-system/profile/sbin")
9037 ":"))
9038 ;; Put GDM in bindir so that glib-or-gtk-build-system wraps the
9039 ;; XDG_DATA_DIRS so that it finds its schemas.
9040 "--sbindir" (string-append #$output "/bin"))
9041 #:phases
9042 #~(modify-phases %standard-phases
9043 (add-after 'unpack 'patch-paths
9044 (lambda* (#:key inputs #:allow-other-keys)
9045 (substitute* "daemon/gdm-session.c"
9046 (("dbus-run-session")
9047 (search-input-file inputs "bin/dbus-run-session")))))
9048 (add-before 'configure 'pre-configure
9049 (lambda* (#:key inputs #:allow-other-keys)
9050 ;; We don't want to write to other packages.
9051 (substitute* "meson.build"
9052 (("if dconf_dep\\.found\\(\\)" all)
9053 (string-append all " and false")))
9054 ;; We don't have <systemd/sd-daemon.h>.
9055 (substitute* '("common/gdm-log.c"
9056 "daemon/gdm-server.c"
9057 "daemon/gdm-session-worker.c"
9058 "daemon/gdm-session-worker-job.c")
9059 (("#include <systemd/sd-daemon\\.h>") ""))
9060 ;; Use elogind for sd-login.
9061 (substitute* '("common/gdm-common.c"
9062 "daemon/gdm-local-display-factory.c"
9063 "daemon/gdm-manager.c"
9064 "libgdm/gdm-user-switching.c")
9065 (("#include <systemd/sd-login\\.h>")
9066 "#include <elogind/sd-login.h>"))
9067 ;; Look for system-installed sessions in
9068 ;; /run/current-system/profile/share.
9069 (substitute* '("libgdm/gdm-sessions.c"
9070 "daemon/gdm-session.c"
9071 "daemon/gdm-display.c"
9072 "daemon/gdm-launch-environment.c")
9073 (("DATADIR \"/x")
9074 "\"/run/current-system/profile/share/x")
9075 (("DATADIR \"/wayland")
9076 "\"/run/current-system/profile/share/wayland")
9077 (("DATADIR \"/gnome")
9078 "\"/run/current-system/profile/share/gnome"))
9079 (let ((propagate '("GDM_CUSTOM_CONF"
9080 "GDM_DBUS_DAEMON"
9081 "GDM_X_SERVER"
9082 "GDM_X_SESSION"
9083 ;; XXX: Remove this once GNOME Shell is
9084 ;; a dependency of GDM.
9085 "XDG_DATA_DIRS")))
9086 (substitute* "daemon/gdm-session.c"
9087 (("set_up_session_environment \\(self\\);")
9088 (apply string-append
9089 "set_up_session_environment (self);\n"
9090 (map (lambda (name)
9091 (string-append
9092 "gdm_session_set_environment_variable "
9093 "(self, \"" name "\","
9094 "g_getenv (\"" name "\"));\n"))
9095 propagate)))
9096 ;; This is used by remote sessions, such as when using VNC.
9097 (("\\(GDMCONFDIR \"/Xsession \\\\\"%s\\\\\"\", command)")
9098 "(\"%s \\\"%s\\\"\", g_getenv (\"GDM_X_SESSION\"), command)")))
9099 ;; Find the configuration file using an environment variable.
9100 (substitute* '("common/gdm-settings.c")
9101 (("GDM_CUSTOM_CONF")
9102 (string-append "(g_getenv(\"GDM_CUSTOM_CONF\") != NULL"
9103 " ? g_getenv(\"GDM_CUSTOM_CONF\")"
9104 " : GDM_CUSTOM_CONF)")))
9105 ;; Use service-supplied path to X.
9106 (substitute* '("daemon/gdm-server.c")
9107 (("\\(X_SERVER X_SERVER_ARG_FORMAT")
9108 "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")"))
9109 (substitute* '("daemon/gdm-wayland-session.c"
9110 "daemon/gdm-x-session.c")
9111 (("\"dbus-daemon\"")
9112 "g_getenv (\"GDM_DBUS_DAEMON\")")
9113 (("X_SERVER")
9114 "g_getenv (\"GDM_X_SERVER\")")
9115 (("GDMCONFDIR \"/Xsession\"")
9116 "g_getenv (\"GDM_X_SESSION\")"))
9117 ;; Use an absolute path for GNOME Session.
9118 (substitute* "daemon/gdm-launch-environment.c"
9119 (("\"gnome-session\"")
9120 (format #f "~s"
9121 (search-input-file inputs "bin/gnome-session"))))
9122 ;; Do not automatically select the placeholder session.
9123 (substitute* "daemon/gdm-session.c"
9124 (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]")
9125 (string-append "!g_str_has_suffix (base_name, \".desktop\") || "
9126 "(g_strcmp0(search_dirs[i], \""
9127 #$output "/share/gdm/BuiltInSessions/"
9128 "\") == 0 && "
9129 "g_strcmp0(base_name, \"fail.desktop\") == 0)"))
9130 (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];")
9131 "{ self->fallback_session_name = g_strdup(\"fail\"); goto out; }"))))
9132 (add-before 'install 'install-logo
9133 (lambda* (#:key inputs #:allow-other-keys)
9134 (let ((icon (search-input-file inputs "share/icons/hicolor/\
9135scalable/apps/guix-white-icon.svg"))
9136 (schema (string-append #$output "/share/glib-2.0/schemas/\
9137org.gnome.login-screen.gschema.override")))
9138 (mkdir-p (dirname schema))
9139 (with-output-to-file schema
9140 (lambda ()
9141 (format #t "\
9142[org.gnome.login-screen]
9143logo='~a'~%" icon))))))
9144 ;; GDM requires that there be at least one desktop entry
9145 ;; file. This phase installs a hidden one that simply
9146 ;; fails. This enables users to use GDM with a
9147 ;; '~/.xsession' script with no other desktop entry files.
9148 ;; See <https://bugs.gnu.org/35068>.
9149 (add-after 'install 'install-placeholder-desktop-entry
9150 (lambda _
9151 (let* ((sessions (string-append #$output
9152 "/share/gdm/BuiltInSessions"))
9153 (fail (string-append sessions "/fail.desktop")))
9154 (mkdir-p sessions)
9155 (with-output-to-file fail
9156 (lambda ()
9157 (for-each
9158 display
9159 '("[Desktop Entry]\n"
9160 "Encoding=UTF-8\n"
9161 "Type=Application\n"
9162 "Name=Fail\n"
9163 "Comment=This session fails immediately.\n"
9164 "NoDisplay=true\n"
9165 "Exec=false\n")))))))
9166 ;; GDM needs some additional programs available via XDG_DATA_DIRS,
9167 ;; to make accessibility settings and related services available.
9168 (add-after 'install 'wrap-accessibility-dependencies
9169 (lambda _
9170 (wrap-program (string-append #$output "/bin/gdm")
9171 `("XDG_DATA_DIRS" ":" prefix
9172 #$(map (lambda (input)
9173 (file-append (this-package-input input) "/share"))
9174 '("at-spi2-core"
9175 "dconf"
9176 "gnome-control-center")))))))))
9177 (native-inputs
9178 (list `(,glib "bin") ;for glib-compile-schemas, etc.
9179 dconf
9180 gobject-introspection
9181 guix-icons
9182 intltool
9183 itstool
9184 libxml2
9185 pkg-config))
9186 (inputs
9187 (list accountsservice
9188 at-spi2-core
9189 check ; for testing
9190 dconf ; for wrap-accessibility-dependencies
9191 egl-wayland
9192 elogind
9193 eudev
9194 gnome-session-shepherd
9195 gnome-control-center
9196 gnome-settings-daemon
9197 gtk+
9198 iso-codes/pinned
9199 json-glib
9200 libcanberra
9201 libgudev
9202 linux-pam))
9203 (synopsis "Display manager for GNOME")
9204 (home-page "https://wiki.gnome.org/Projects/GDM/")
9205 (description
9206 "GNOME Display Manager is a system service that is responsible for
9207providing graphical log-ins and managing local and remote displays.")
9208 (license license:gpl2+)))
9209
9210(define-public libgtop
9211 (package
9212 (name "libgtop")
9213 (version "2.41.3")
9214 (source (origin
9215 (method url-fetch)
9216 (uri (string-append "mirror://gnome/sources/libgtop/"
9217 (version-major+minor version) "/"
9218 "libgtop-" version ".tar.xz"))
9219 (sha256
9220 (base32
9221 "136snaww293n1dfdswr764yhd0d55s5z4s3m5x2s4blfjpgpcmkp"))))
9222 (build-system gnu-build-system)
9223 (native-inputs
9224 (list gobject-introspection intltool perl pkg-config))
9225 (propagated-inputs
9226 (list glib)) ; required by libgtop-2.0.pc
9227 (synopsis "Portable system access library")
9228 (home-page "https://www.gnome.org/")
9229 (description
9230 "LibGTop is a library to get system specific data such as CPU and memory
9231usage and information about running processes.")
9232 (license license:gpl2+)))
9233
9234(define-public gnome-bluetooth
9235 (package
9236 (name "gnome-bluetooth")
9237 (version "47.1")
9238 (source (origin
9239 (method url-fetch)
9240 (uri (string-append "mirror://gnome/sources/gnome-bluetooth/"
9241 (version-major version) "/"
9242 "gnome-bluetooth-" version ".tar.xz"))
9243 (sha256
9244 (base32
9245 "18xbblcr7x53qz67xh556hl1p5n2llfhl8cn2ky8y40m790fgqq3"))))
9246 (build-system meson-build-system)
9247 (native-inputs
9248 (list gettext-minimal
9249 gobject-introspection
9250 `(,glib "bin") ;for gdbus-codegen, etc.
9251 libxml2
9252 pkg-config
9253 python
9254 python-dbus-1.2))
9255 (propagated-inputs
9256 ;; These are all required by the gnome-bluetooth .pc file.
9257 (list glib
9258 gtk
9259 libadwaita))
9260 (inputs
9261 (list eudev
9262 gsound
9263 libnotify
9264 python-dbus-1.2
9265 upower))
9266 (synopsis "GNOME Bluetooth subsystem")
9267 (home-page "https://wiki.gnome.org/Projects/GnomeBluetooth")
9268 (description
9269 "This package contains tools for managing and manipulating Bluetooth
9270devices using the GNOME desktop.")
9271 (license license:lgpl2.1+)))
9272
9273(define-public tecla
9274 (package
9275 (name "tecla")
9276 (version "49.0")
9277 (source (origin
9278 (method url-fetch)
9279 (uri (string-append "mirror://gnome/sources/" name "/"
9280 (version-major version) "/"
9281 name "-" version ".tar.xz"))
9282 (sha256
9283 (base32
9284 "17r4a7v27n2426bjy3rxiypizfqyf0xp0xrpn7b0rxms0bj2991c"))))
9285 (build-system meson-build-system)
9286 (arguments (list #:glib-or-gtk? #t))
9287 (inputs (list gtk libadwaita))
9288 (native-inputs (list `(,glib "bin") gettext-minimal pkg-config))
9289 (home-page "https://gitlab.gnome.org/GNOME/tecla")
9290 (synopsis "Keyboard layout viewer")
9291 (description "Tecla is a keyboard layout viewer based on GTK 4 and
9292Libadwaita.")
9293 (license license:gpl2+)))
9294
9295(define-public gnome-control-center
9296 (package
9297 (name "gnome-control-center")
9298 (version "49.9")
9299 (source (origin
9300 (method url-fetch)
9301 (uri (string-append "mirror://gnome/sources/" name "/"
9302 (version-major version) "/"
9303 name "-" version ".tar.xz"))
9304 (sha256
9305 (base32
9306 "0xyz7igmh95nxgmni4f0rrxma6yw3a6nk6pzr6xq95c9ssj7m65p"))))
9307 (build-system meson-build-system)
9308 (arguments
9309 (list
9310 #:glib-or-gtk? #t
9311 #:phases
9312 #~(modify-phases %standard-phases
9313 (add-before 'configure 'patch-paths
9314 (lambda* (#:key inputs #:allow-other-keys)
9315 (substitute* "panels/system/datetime/tz.h"
9316 (("/usr/share/zoneinfo/zone.tab")
9317 (search-input-file inputs "share/zoneinfo/zone.tab")))
9318 (substitute* "tests/datetime/test-endianess.c"
9319 (("/usr/share/locale")
9320 (search-input-directory inputs "share/locale")))
9321 (substitute* '("panels/network/net-device-bluetooth.c"
9322 "panels/network/net-device-mobile.c"
9323 "panels/network/connection-editor/net-connection-editor.c")
9324 (("\"nm-connection-editor")
9325 (string-append "\"" (search-input-file
9326 inputs "bin/nm-connection-editor"))))))
9327 (add-after 'unpack 'skip-gtk-update-icon-cache
9328 ;; Don't create 'icon-theme.cache'.
9329 (lambda _
9330 (substitute* "meson.build"
9331 (("gtk_update_icon_cache: true")
9332 "gtk_update_icon_cache: false"))))
9333 (replace 'check
9334 (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
9335 (when tests?
9336 ;; Tests require a running X server.
9337 (system "Xvfb :1 &")
9338 (setenv "DISPLAY" ":1")
9339 ;; For the missing /var/lib/dbus/machine-id
9340 (setenv "DBUS_FATAL_WARNINGS" "0")
9341 (setenv "NO_AT_BRIDGE" "1")
9342 (setenv "HOME" "/tmp")
9343 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
9344 (mkdir (getenv "XDG_RUNTIME_DIR"))
9345 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
9346 (setenv "MESON_TESTTHREADS"
9347 (if parallel-tests?
9348 (number->string (parallel-job-count))
9349 "1"))
9350 (invoke "dbus-run-session" "--"
9351 "meson" "test" "-t" "0")))))))
9352 (native-inputs
9353 (list blueprint-compiler
9354 docbook-xsl
9355 gettext-minimal
9356 `(,glib "bin") ;for glib-mkenums, etc.
9357 libxslt
9358 pkg-config
9359 python
9360 python-dbusmock
9361 xorg-server-for-tests
9362 setxkbmap))
9363 (inputs
9364 (list accountsservice
9365 colord-gtk
9366 cups
9367 dconf
9368 gcr
9369 gnome-bluetooth
9370 gnome-desktop
9371 gnome-online-accounts
9372 gnome-session-shepherd
9373 gnome-settings-daemon
9374 gnutls
9375 grilo
9376 gsound
9377 ibus
9378 json-glib
9379 libadwaita
9380 libgudev
9381 libgtop
9382 `(,libjxl "pixbuf-loader") ;for the backgrounds
9383 libnma
9384 libpwquality
9385 (librsvg-for-system) ;for loading SVG files
9386 libsecret
9387 libsoup
9388 libxml2
9389 libwacom
9390 mesa
9391 mit-krb5
9392 modem-manager
9393 network-manager-applet
9394 polkit
9395 pulseaudio
9396 samba
9397 tecla
9398 tzdata
9399 udisks
9400 upower))
9401 (synopsis "Utilities to configure the GNOME desktop")
9402 (home-page "https://www.gnome.org/")
9403 (description
9404 "This package contains configuration applets for the GNOME desktop,
9405allowing to set accessibility configuration, desktop fonts, keyboard and mouse
9406properties, sound setup, desktop theme and background, user interface
9407properties, screen resolution, and other GNOME parameters.")
9408 (license license:gpl2+)))
9409
9410(define-public gnome-shell
9411 (package
9412 (name "gnome-shell")
9413 (version "49.4")
9414 (source (origin
9415 (method url-fetch)
9416 (uri (string-append "mirror://gnome/sources/" name "/"
9417 (version-major version) "/"
9418 name "-" version ".tar.xz"))
9419 (sha256
9420 (base32
9421 "022vb4y0ri7ws6l1ghx63vxi9xhi6r0hfrsg257i230ly2i0qvwx"))
9422 (patches
9423 (search-patches "gnome-shell-restore-desktop-file.patch"))))
9424 (outputs '("out" "debug"))
9425 (build-system meson-build-system)
9426 (arguments
9427 (let ((disallowed-references
9428 (list (gexp-input (this-package-native-input "glib") "bin")
9429 (this-package-native-input "libxslt")
9430 meson)))
9431 (list
9432 #:glib-or-gtk? #t
9433 #:disallowed-references disallowed-references
9434 #:configure-flags
9435 #~(list "-Dsystemd=false"
9436 ;; Otherwise, the RUNPATH will lack the final path component.
9437 (string-append "-Dc_link_args=-Wl,-rpath="
9438 #$output "/lib/gnome-shell")
9439 ;; TODO: Unbundle jasmine
9440 "--wrap-mode=nodownload")
9441 #:modules '((guix build meson-build-system)
9442 (guix build utils)
9443 (ice-9 match)
9444 (srfi srfi-1)
9445 (srfi srfi-26))
9446 #:phases
9447 #~(modify-phases %standard-phases
9448 (add-after 'unpack 'fix-keysdir
9449 (lambda _
9450 (substitute* "meson.build"
9451 (("keysdir =.*")
9452 (string-append
9453 "keysdir = "
9454 "prefix / 'share/gnome-control-center/keybindings'\n")))))
9455 (add-after 'unpack 'patch-jasmine
9456 (lambda _
9457 (substitute* (find-files "subprojects/jasmine-gjs/bin")
9458 (("/usr/bin/env") (which "env")))))
9459 (add-after 'unpack 'patch-shew
9460 (lambda _
9461 (substitute* "subprojects/libshew/src/meson.build"
9462 (("extra_args: \\[(.*)\\]" all args)
9463 (string-append "extra_args: ['--fallback-library-path="
9464 #$output "/lib/gnome-shell/'," args
9465 "]")))))
9466 (add-after 'unpack 'skip-gtk-update-icon-cache
9467 ;; Don't create 'icon-theme.cache'.
9468 (lambda _
9469 (substitute* "meson.build"
9470 (("gtk_update_icon_cache: true")
9471 "gtk_update_icon_cache: false"))))
9472 (add-after 'unpack 'unbreak-shell-tests
9473 (lambda _
9474 ;; Lest non-fatal dbus warnings be made fatal again…
9475 (substitute* "tests/meson.build"
9476 (("shell_testenv\\.set\\('G_DEBUG'" all)
9477 (string-append "# " all)))))
9478 (add-before 'configure 'record-absolute-file-names
9479 (lambda* (#:key inputs #:allow-other-keys)
9480 (let ((ibus-daemon (search-input-file inputs "bin/ibus-daemon"))
9481 (tecla (search-input-file inputs "bin/tecla")))
9482 (substitute* "js/misc/ibusManager.js"
9483 (("'ibus-daemon'")
9484 (string-append "'" ibus-daemon "'")))
9485 (substitute* "js/ui/status/keyboard.js"
9486 (("'tecla'")
9487 (string-append "'" tecla "'"))))))
9488 (add-after 'install 'wrap-programs
9489 (lambda* (#:key inputs #:allow-other-keys)
9490 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))
9491 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
9492 (python-path
9493 (string-join
9494 (filter (lambda (item)
9495 (not (any (cut string-prefix? <> item)
9496 '#$disallowed-references)))
9497 (string-split (getenv "GUIX_PYTHONPATH") #\:))
9498 ":")))
9499 (for-each
9500 (lambda (prog)
9501 (wrap-program (string-append #$output "/bin/" prog)
9502 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
9503 '("gnome-shell" "gnome-extensions" "gnome-extensions-app"))
9504 (substitute* (string-append #$output "/share/gnome-shell/"
9505 "org.gnome.Shell.Extensions")
9506 (("^import " all)
9507 (string-append "'" gi-typelib-path "'.split(':').forEach("
9508 "path => imports.gi.GIRepository.Repository."
9509 "dup_default().prepend_search_path(path));\n"
9510 all)))
9511 ;; Screencast requires a pipewire service running
9512 ;; (i.e. as provided by home-pipewire-service-type)
9513 (substitute* (string-append #$output "/share/gnome-shell/"
9514 "org.gnome.Shell.Screencast")
9515 (("^import " all)
9516 (string-append "'" gi-typelib-path "'.split(':').forEach("
9517 "path => imports.gi.GIRepository.Repository."
9518 "dup_default().prepend_search_path(path));\n"
9519 "imports.gi.GLib.setenv('GST_PLUGIN_SYSTEM_PATH',"
9520 "[imports.gi.GLib.getenv('GST_PLUGIN_SYSTEM_PATH'),"
9521 "'" gst-plugin-path "'].filter(v => v).join(':'),"
9522 "true);\n"
9523 all))))))
9524 (replace 'check
9525 (lambda* (#:key tests? inputs #:allow-other-keys #:rest args)
9526 (when tests?
9527 ;; For the missing /var/lib/dbus/machine-id
9528 ;; See explanation of the symlinks workaround in the gjs
9529 ;; package definition.
9530 (let* ((test-libraries (find-files (getcwd)
9531 "\\.so(\\.[0-9]*)?$"))
9532 (test-library-links
9533 (map (lambda (x)
9534 (cons x (string-append
9535 #$output "/lib/gnome-shell/"
9536 (basename x))))
9537 test-libraries)))
9538 (mkdir-p (string-append #$output "/lib/gnome-shell"))
9539 (for-each (match-lambda
9540 ((old . new)
9541 (symlink old new)))
9542 test-library-links)
9543 (apply (assoc-ref %standard-phases 'check) args)
9544 (for-each delete-file (map cdr test-library-links))))))
9545 (add-after 'install 'rewire
9546 (lambda* (#:key inputs #:allow-other-keys)
9547 (for-each
9548 (lambda (tool)
9549 (call-with-output-file (string-append #$output
9550 "/bin/" tool)
9551 (lambda (port)
9552 (format port "#!~a
9553printf '~a is deprecated. Use the \"gnome-extensions\" CLI or \
9554\"gnome-extensions-app\" instead.\\n'"
9555 (search-input-file inputs "bin/bash")
9556 tool))))
9557 '("gnome-shell-extension-tool" "gnome-shell-extension-prefs"))))
9558 (add-after 'install 'install-xdg-autostart-service
9559 (lambda _
9560 (install-file (string-append #$output "/share/applications/org.gnome.Shell.desktop")
9561 (string-append #$output "/etc/xdg/autostart"))))
9562 (add-after 'install 'wrap-glycin-loaders
9563 (lambda* (#:key inputs #:allow-other-keys)
9564 (wrap-program (string-append #$output "/bin/gnome-shell")
9565 `("XDG_DATA_DIRS" ":" prefix
9566 ,(list (dirname (search-input-directory inputs "/share/glycin-loaders")))))))
9567 (replace 'glib-or-gtk-wrap
9568 (let ((wrap (assoc-ref %standard-phases 'glib-or-gtk-wrap)))
9569 (lambda* (#:key inputs outputs #:allow-other-keys)
9570 ;; By default glib:bin et al. would end up in the XDG_DATA_DIRS
9571 ;; settings of the wrappers created by the 'glib-or-gtk-wrap'
9572 ;; phase. Fix that since we don't need these.
9573 (wrap #:inputs
9574 (filter (match-lambda
9575 ((label . output)
9576 (not (member output
9577 '#$disallowed-references))))
9578 inputs)
9579 #:outputs outputs))))))))
9580 (native-inputs
9581 (list adwaita-icon-theme ;for cursor theme
9582 asciidoc
9583 coreutils-minimal ;for env
9584 gettext-minimal
9585 `(,glib "bin") ;for glib-compile-schemas, etc.
9586 desktop-file-utils ;for update-desktop-database
9587 gobject-introspection
9588 libxslt
9589 perl
9590 pkg-config
9591 python
9592 python-dbus
9593 python-dbusmock
9594 python-docutils
9595 sassc
9596 umockdev))
9597 (inputs
9598 (list accountsservice
9599 bash-minimal
9600 docbook-xsl
9601 evolution-data-server
9602 gcr
9603 gdm
9604 geoclue
9605 gjs
9606 gtk
9607 glycin-loaders
9608 gnome-autoar
9609 gnome-bluetooth
9610 gnome-desktop
9611 gnome-settings-daemon
9612 graphene
9613 gst-plugins-base
9614 gst-plugins-good
9615 ibus
9616 libcanberra
9617 libcroco
9618 libgweather
9619 libnma
9620 librsvg
9621 libsoup
9622 mesa-headers
9623 mutter
9624 network-manager-applet
9625 pipewire
9626 polkit
9627 pulseaudio
9628 python-pygobject
9629 startup-notification
9630 tecla ;for keyboard previews
9631 telepathy-logger
9632 upower))
9633 (synopsis "Desktop shell for GNOME")
9634 (home-page "https://wiki.gnome.org/Projects/GnomeShell")
9635 (description
9636 "GNOME Shell provides core user interface functions for the GNOME desktop,
9637like switching to windows and launching applications.")
9638 (license license:gpl2+)))
9639
9640(define-public gtk-vnc
9641 (package
9642 (name "gtk-vnc")
9643 (version "1.5.0")
9644 (source
9645 (origin
9646 (method url-fetch)
9647 (uri
9648 (string-append "mirror://gnome/sources/" name "/"
9649 (version-major+minor version) "/"
9650 name "-" version ".tar.xz"))
9651 (sha256
9652 (base32 "08yx6hnf1v6cv4g5fra4cbygg401d9y5dk1slhfr7b98fmsb9gn0"))))
9653 (build-system meson-build-system)
9654 (arguments
9655 `(#:glib-or-gtk? #t)) ; To wrap binaries and/or compile schemas
9656 (native-inputs
9657 (append
9658 ;; GJS depends on Rust so remove the GJS dependency on other platforms.
9659 (if (supported-package? gjs)
9660 (list gjs)
9661 '())
9662 (list gettext-minimal
9663 `(,glib "bin")
9664 gobject-introspection
9665 perl
9666 pkg-config
9667 python-wrapper
9668 vala)))
9669 (inputs
9670 (list cairo
9671 (librsvg-for-system)))
9672 (propagated-inputs
9673 ;; These are all in Requires or Requires.private of the .pc files.
9674 (list cyrus-sasl
9675 gdk-pixbuf
9676 glib
9677 gnutls
9678 gtk+
9679 libgcrypt
9680 libx11
9681 pulseaudio
9682 zlib))
9683 (synopsis "VNC client viewer widget for GTK+")
9684 (description "GTK-VNC is a project providing client side APIs for the RFB
9685protocol / VNC remote desktop technology. It is built using coroutines allowing
9686it to be completely asynchronous while remaining single threaded. It provides a
9687core C library, and bindings for Python (PyGTK).")
9688 (home-page "https://wiki.gnome.org/Projects/gtk-vnc")
9689 (license license:lgpl2.1+)))
9690
9691(define-public gnome-autoar
9692 (package
9693 (name "gnome-autoar")
9694 (version "0.4.5")
9695 (source (origin
9696 (method url-fetch)
9697 (uri (string-append "mirror://gnome/sources/" name "/"
9698 (version-major+minor version) "/"
9699 name "-" version ".tar.xz"))
9700 (sha256
9701 (base32
9702 "1gns2nkcgfgmfk5mvyq36cg7f5dzyii45qmb4cpsmgrqzh357343"))))
9703 (build-system meson-build-system)
9704 (native-inputs
9705 (list gobject-introspection `(,glib "bin") pkg-config))
9706 (propagated-inputs
9707 (list libarchive)) ; Required by gnome-autoar-0.pc
9708 (inputs
9709 (list gtk+))
9710 (synopsis "Archives integration support for GNOME")
9711 (home-page "https://git.gnome.org/browse/gnome-autoar/")
9712 (description
9713 "GNOME Autoar is a library which makes creating and extracting archives
9714easy, safe, and automatic.")
9715 (license license:lgpl2.1+)))
9716
9717(define-public tinysparql
9718 (package
9719 (name "tinysparql")
9720 (version "3.10.1")
9721 (source (origin
9722 (method url-fetch)
9723 (uri (string-append "mirror://gnome/sources/tinysparql/"
9724 (version-major+minor version) "/"
9725 "tinysparql-" version ".tar.xz"))
9726 (sha256
9727 (base32
9728 "0r824dz8szfwd2z95nk8ffkvwq0ayva0wa6n1railrxnkmw3wzss"))))
9729 (build-system meson-build-system)
9730 (arguments
9731 (list
9732 #:glib-or-gtk? #t
9733 #:configure-flags
9734 #~(list "-Ddocs=false" "-Dsystemd_user_services=false")
9735 #:phases
9736 #~(modify-phases %standard-phases
9737 (add-after 'unpack 'disable-failing-tests
9738 (lambda _
9739 (substitute* "tests/functional-tests/test_cli.py"
9740 (("^([\t ]*)def test_help\\(self\\)" all indent)
9741 (string-append indent "@unittest.skip('apparently broken')\n"
9742 all)))
9743 #$@(if (not (target-64bit?))
9744 ;; On 32-bit systems, the far away dates are incorrect,
9745 ;; and the floats are not parsed exactly.
9746 '((substitute*
9747 "tests/libtinysparql/tracker-statement-test.c"
9748 (("g_assert_cmpfloat *\\((.*), ==, ([0-9.e-]+)\\);"
9749 total actual expected)
9750 (string-append "g_assert_cmpfloat_with_epsilon ("
9751 actual ", " expected ", 1e-12);")))
9752 (substitute* "tests/core/tracker-sparql-test.c"
9753 (("\\{ \"datetime/direct-1\", .* \\},")
9754 "/* datetime test disabled */")))
9755 '())
9756 *unspecified*))
9757 (add-before 'configure 'set-shell
9758 (lambda _
9759 (setenv "SHELL" (which "bash"))))
9760 (delete 'check) ;moved after install
9761 (add-after 'install 'set-gi-typelib-path
9762 (lambda* (#:key outputs #:allow-other-keys)
9763 (setenv "GI_TYPELIB_PATH"
9764 (search-input-directory outputs "lib/girepository-1.0"))))
9765 (add-after 'set-gi-typelib-path 'check
9766 (lambda* (#:key tests? test-options #:allow-other-keys)
9767 (when tests?
9768 ;; Some tests expect to write to $HOME.
9769 (setenv "HOME" "/tmp")
9770 (apply invoke "dbus-run-session" "--" "meson" "test"
9771 "--print-errorlogs" "-t0" test-options)))))))
9772 (native-inputs
9773 (list gettext-minimal
9774 `(,glib "bin")
9775 (libc-utf8-locales-for-target)
9776 gobject-introspection
9777 docbook-xsl
9778 docbook-xml
9779 gsettings-desktop-schemas
9780 asciidoc
9781 libxslt
9782 cmake-minimal
9783 python-pygobject
9784 gtk-doc/stable
9785 dbus
9786 pkg-config
9787 python
9788 vala))
9789 (inputs
9790 (list bash-minimal
9791 dbus
9792 libstemmer
9793 libsoup))
9794 (propagated-inputs
9795 ;; These are in Requires or Requires.private of tracker-sparql-3.0.pc.
9796 (list glib
9797 icu4c ;libunistring gets miner-miner-fs test to fail
9798 json-glib
9799 libxml2
9800 sqlite))
9801 (synopsis "Lightweight RDF triple store")
9802 (home-page "https://gitlab.gnome.org/GNOME/tinysparql")
9803 (description
9804 "TinySPARQL is a RDF triple store with a SPARQL 1.1 interface. It allows
9805creating local databases in memory or the filesystem, and accessing/creating
9806endpoints for federated queries.")
9807 ;; https://gitlab.gnome.org/GNOME/tinysparql/-/blob/master/COPYING (stale):
9808 ;; src/common/* and src/libtinysparql/* are covered by lgpl2.1+,
9809 ;; the rest is gpl2+.
9810 (license (list license:gpl2+ license:lgpl2.1+))))
9811
9812(define-public localsearch
9813 (package
9814 (name "localsearch")
9815 (version "3.10.2")
9816 (source (origin
9817 (method url-fetch)
9818 (uri (string-append "mirror://gnome/sources/localsearch/"
9819 (version-major+minor version)
9820 "/localsearch-" version ".tar.xz"))
9821 (sha256
9822 (base32
9823 "11d2g3l55kix8bmq161f0g2iwqwgcwrrmv6lp80p2qbnbp48kpdl"))))
9824 (build-system meson-build-system)
9825 (arguments
9826 (list
9827 #:glib-or-gtk? #t
9828 #:configure-flags
9829 #~(list ;; Ensure the RUNPATH contains all installed library locations.
9830 (string-append "-Dc_link_args=-Wl,-rpath="
9831 #$output "/lib/localsearch-3.0")
9832 ;; TODO: Check if this is only a build-time failure, or add
9833 ;; variants to explicitly enable this features, (see:
9834 ;; https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/300).
9835 "-Dlandlock=disabled"
9836 ;; TODO: Enable functional tests. Currently, the following error
9837 ;; appears:
9838 ;; Exception: The functional tests require DConf to be the default
9839 ;; GSettings backend. Got GKeyfileSettingsBackend instead.
9840 "-Dfunctional_tests=false"
9841 "-Dsystemd_user_services=false")
9842 #:phases
9843 #~(modify-phases %standard-phases
9844 (add-before 'configure 'fix-tests
9845 (lambda _
9846 ;; Disable those tests that require the functional_tests option
9847 ;; to be true and the UPower daemon to be started.
9848 (substitute* "examples/python/meson.build"
9849 (("foreach example_name:.*")
9850 "foreach example_name: []"))))
9851 (replace 'check
9852 (lambda* (#:key tests? #:allow-other-keys)
9853 (when tests?
9854 ;; Some tests expect to write to $HOME.
9855 (setenv "HOME" "/tmp")
9856 (setenv "LANG" "en_US.UTF-8")
9857 (invoke "dbus-run-session" "--" "meson" "test"
9858 "--print-errorlogs" "-t0"
9859 ;; Do not run the slow test, which fail (see:
9860 ;; https://gitlab.gnome.org/GNOME/tracker-miners
9861 ;; /-/issues/226).
9862 "--no-suite" "slow")))))))
9863 (native-inputs
9864 (list `(,glib "bin")
9865 asciidoc
9866 dbus
9867 docbook-xml
9868 docbook-xsl
9869 gettext-minimal
9870 gobject-introspection
9871 gsettings-desktop-schemas
9872 libxslt
9873 pkg-config
9874 python-pygobject))
9875 (inputs
9876 (list exempi
9877 ffmpeg
9878 flac
9879 giflib
9880 glib
9881 gstreamer
9882 gst-plugins-base
9883 icu4c
9884 json-glib
9885 libcue
9886 libexif
9887 libgsf
9888 libgxps
9889 libiptcdata
9890 libjpeg-turbo
9891 libosinfo
9892 libpng
9893 libseccomp
9894 libsoup
9895 libtiff
9896 libvorbis
9897 libxml2
9898 poppler
9899 shared-mime-info
9900 taglib
9901 totem-pl-parser
9902 tinysparql
9903 upower
9904 zlib))
9905 (synopsis "Desktop search framework")
9906 (home-page "https://gitlab.gnome.org/GNOME/localsearch")
9907 (description
9908 "LocalSearch is the file search framework of the GNOME desktop. It stores
9909data about user files structured by the Nepomuk definitions, features a
9910sandboxed metadata extractor, and provides facilities to alter file metadata.
9911The data is exposed through a SPARQL endpoint, which applications may access
9912through portals.")
9913 ;; src/common/*, src/cli/* (except src/cli/main.c) and src/extractor/* are
9914 ;; covered by lgpl2.1+, src/control/*, src/indexer/* and src/writeback/*
9915 ;; is gpl2+.
9916 (license (list license:gpl2+ license:lgpl2.1+))))
9917
9918(define-public tracker
9919 (deprecated-package "tracker" tinysparql))
9920
9921(define-public tracker-miners
9922 (deprecated-package "tracker-miners" localsearch))
9923
9924(define-public nautilus
9925 (package
9926 (name "nautilus")
9927 (version "50.0")
9928 (source (origin
9929 (method url-fetch)
9930 (uri (string-append "mirror://gnome/sources/" name "/"
9931 (version-major version) "/"
9932 name "-" version ".tar.xz"))
9933 (sha256
9934 (base32
9935 "1k1kcg8ran40b86554cds7pf2v3dhfrrp43ws2v8l4gy8jxnwnd9"))
9936 (patches
9937 (search-patches "nautilus-extension-search-path.patch"))))
9938 (build-system meson-build-system)
9939 (arguments
9940 (list
9941 #:glib-or-gtk? #t
9942 #:phases
9943 #~(modify-phases %standard-phases
9944 (add-after 'unpack 'patch-commands
9945 (lambda* (#:key inputs #:allow-other-keys)
9946 (substitute* "src/nautilus-autorun-software.c"
9947 (("g_file_new_for_path \\(\"/bin/sh\");")
9948 (format #f "g_file_new_for_path (~s);"
9949 (search-input-file inputs "bin/sh"))))))
9950 (add-after 'unpack 'patch-tracker3-command
9951 (lambda* (#:key inputs #:allow-other-keys)
9952 (substitute* "src/nautilus-tag-manager.c"
9953 (("\"tracker3\"")
9954 (string-append "\""
9955 (search-input-file inputs "/bin/tracker3")
9956 "\"")))))
9957 (add-after 'unpack 'fix-tests
9958 (lambda _
9959 ;; The tracker test hangs in the build container (see:
9960 ;; https://gitlab.gnome.org/GNOME/nautilus/-/issues/2486).
9961 (substitute* "test/automated/displayless/meson.build"
9962 (("^foreach t: tracker_tests" all)
9963 (string-append "tracker_tests = []\n" all))
9964 ;; This test fails for unknown reasons (see:
9965 ;; <https://gitlab.gnome.org/GNOME/nautilus/-/issues/4174>).
9966 ((".*'test-file-operations-archive'.*") "")
9967 ;; This 'displayless' test requires a display (see:
9968 ;; <https://gitlab.gnome.org/GNOME/nautilus/-/issues/4174>).
9969 ((".*'test-thumbnails'.*") ""))
9970 ;; /etc does not have that many files in our build container.
9971 (substitute* "test/automated/displayless/test-directory.c"
9972 (("g_assert_cmpint \\(g_list_length \\(files\\), >, 10\\);")
9973 "g_assert_cmpint (g_list_length (files), >, 1);"))))
9974 (add-after 'unpack 'skip-gtk-update-icon-cache
9975 ;; Don't create 'icon-theme.cache'.
9976 (lambda _
9977 (substitute* "meson.build"
9978 (("gtk_update_icon_cache: true")
9979 "gtk_update_icon_cache: false"))))
9980 (delete 'check)
9981 (add-after 'install 'check
9982 (assoc-ref %standard-phases 'check))
9983 (add-before 'check 'pre-check
9984 (lambda _
9985 (setenv "HOME" "/tmp") ;some tests require a writable HOME
9986 (setenv "XDG_DATA_DIRS"
9987 (string-append (getenv "XDG_DATA_DIRS")
9988 ":" #$output "/share")))))))
9989 (native-inputs
9990 (list blueprint-compiler
9991 desktop-file-utils ;for update-desktop-database
9992 `(,glib "bin") ;for glib-mkenums, etc.
9993 gettext-minimal
9994 gobject-introspection
9995 pkg-config
9996 python
9997 python-pygobject
9998 xorg-server-for-tests))
9999 (inputs
10000 (list bash-minimal
10001 dconf
10002 gexiv2
10003 gvfs
10004 exempi
10005 glycin-loaders
10006 gnome-desktop
10007 gnome-autoar
10008 gst-plugins-base
10009 json-glib
10010 libadwaita
10011 libglycin
10012 libportal
10013 libseccomp
10014 libselinux
10015 localsearch
10016 tinysparql
10017 ;; XXX: gtk is required by libnautilus-extension.pc
10018 ;;
10019 ;; Don't propagate it to reduce "profile pollution" of the 'gnome' meta
10020 ;; package. See:
10021 ;; <http://lists.gnu.org/archive/html/guix-devel/2016-03/msg00283.html>.
10022 gtk
10023 libexif
10024 libxml2))
10025 (native-search-paths
10026 (list (search-path-specification
10027 (variable "NAUTILUS_EXTENSION_PATH")
10028 (files '("lib/nautilus/extensions-4")))))
10029 (synopsis "File manager for GNOME")
10030 (home-page "https://wiki.gnome.org/Apps/Nautilus")
10031 (description
10032 "Nautilus (Files) is a file manager designed to fit the GNOME desktop
10033design and behaviour, giving the user a simple way to navigate and manage its
10034files.")
10035 (license license:gpl2+)))
10036
10037(define-public baobab
10038 (package
10039 (name "baobab")
10040 (version "50.0")
10041 (source (origin
10042 (method url-fetch)
10043 (uri (string-append
10044 "mirror://gnome/sources/" name "/"
10045 (version-major version) "/"
10046 name "-" version ".tar.xz"))
10047 (sha256
10048 (base32
10049 "0jq2059gx8gib35rvdpn6lisqa6928sg9xh00m23m5jzbzqq8g2p"))))
10050 (build-system meson-build-system)
10051 (arguments
10052 '(#:glib-or-gtk? #t
10053 #:phases
10054 (modify-phases %standard-phases
10055 (add-after 'unpack 'skip-gtk-update-icon-cache
10056 ;; Don't create 'icon-theme.cache'.
10057 (lambda _
10058 (substitute* "meson.build"
10059 (("gtk_update_icon_cache: true")
10060 "gtk_update_icon_cache: false")))))))
10061 (native-inputs
10062 (list desktop-file-utils ;for update-desktop-database
10063 gettext-minimal
10064 `(,glib "bin")
10065 itstool
10066 libxml2
10067 pkg-config
10068 python
10069 vala))
10070 (inputs (list gtk libadwaita))
10071 (synopsis "Disk usage analyzer for GNOME")
10072 (description
10073 "Baobab (Disk Usage Analyzer) is a graphical application to analyse disk
10074usage in the GNOME desktop environment. It can easily scan device volumes or
10075a specific user-requested directory branch (local or remote). Once the scan
10076is complete it provides a graphical representation of each selected folder.")
10077 (home-page "https://wiki.gnome.org/Apps/Baobab")
10078 (license license:gpl2+)))
10079
10080(define-public gnome-backgrounds
10081 (package
10082 (name "gnome-backgrounds")
10083 (version "49.0")
10084 (source
10085 (origin
10086 (method url-fetch)
10087 (uri (string-append "mirror://gnome/sources/" name "/"
10088 (version-major version) "/"
10089 name "-" version ".tar.xz"))
10090 (sha256
10091 (base32
10092 "1dgl8jxczx2cwszg07bhrjpcg2rywfcak2d5md20x84bwl6jdzh1"))))
10093 (build-system meson-build-system)
10094 (native-inputs (list gettext-minimal))
10095 (home-page "https://gitlab.gnome.org/GNOME/gnome-backgrounds")
10096 (synopsis "Background images for the GNOME desktop")
10097 (description
10098 "GNOME backgrounds package contains a collection of graphics files which
10099can be used as backgrounds in the GNOME Desktop environment. Additionally,
10100the package creates the proper framework and directory structure so that you
10101can add your own files to the collection.")
10102 (license (list license:gpl2+
10103 license:cc-by2.0
10104 license:cc-by-sa2.0
10105 license:cc-by-sa3.0))))
10106
10107(define-public gnome-screenshot
10108 ;; GNOME Screenshot hasn't had a release in a long time, and the last one
10109 ;; (41) doesn't build with a recent Meson.
10110 (let ((commit "9f067cf428b6bac78ffac31c1a17a20fb2c24843")
10111 (revision "0"))
10112 (package
10113 (name "gnome-screenshot")
10114 (version (git-version "41.0" revision commit))
10115 (source (origin
10116 (method git-fetch)
10117 (uri (git-reference
10118 (url "https://gitlab.gnome.org/GNOME/gnome-screenshot")
10119 (commit commit)))
10120 (file-name (git-file-name name version))
10121 (sha256
10122 (base32
10123 "10a3yd9qmfhxiw984a9fyvgrfq6i3w2yxayac0n7qqjl9ysxwb31"))))
10124 (build-system meson-build-system)
10125 (arguments
10126 `(#:glib-or-gtk? #t
10127 #:phases
10128 (modify-phases %standard-phases
10129 (add-after 'unpack 'skip-gtk-update-icon-cache
10130 ;; Don't create 'icon-theme.cache'.
10131 (lambda _
10132 (substitute* "build-aux/postinstall.py"
10133 (("gtk-update-icon-cache") "true")))))))
10134 (native-inputs
10135 (list appstream-glib
10136 desktop-file-utils ; for update-desktop-database
10137 gettext-minimal
10138 `(,glib "bin") ; for glib-compile-schemas, etc.
10139 pkg-config
10140 python))
10141 (inputs
10142 (list gtk+
10143 libhandy
10144 libx11
10145 libxext))
10146 (home-page "https://gitlab.gnome.org/GNOME/gnome-screenshot")
10147 (synopsis "Take pictures of your screen")
10148 (description
10149 "GNOME Screenshot is a utility used for taking screenshots of the entire
10150screen, a window or a user defined area of the screen, with optional
10151beautifying border effects.")
10152 (license license:gpl2+))))
10153
10154(define-public dconf-editor
10155 (package
10156 (name "dconf-editor")
10157 (version "49.0")
10158 (source (origin
10159 (method url-fetch)
10160 (uri (string-append "mirror://gnome/sources/" name "/"
10161 (version-major version) "/"
10162 name "-" version ".tar.xz"))
10163 (sha256
10164 (base32
10165 "16fkppclv7xzglfafqg8b9nd5cjqlfwlyci800gg7psivzxcra4h"))))
10166 (build-system meson-build-system)
10167 (arguments
10168 (list #:phases #~(modify-phases %standard-phases
10169 (add-after 'unpack 'disable-gtk-update-icon-cache
10170 (lambda _
10171 (setenv "DESTDIR" "/"))))))
10172 (native-inputs
10173 (list `(,glib "bin") ;for glib-compile-schemas, gio-2.0
10174 desktop-file-utils ;for update-desktop-database
10175 `(,gtk+ "bin") ;for gtk-update-icon-cache
10176 intltool
10177 pkg-config
10178 vala))
10179 (inputs
10180 (list dconf
10181 gtk+
10182 libhandy
10183 libxml2))
10184 (home-page "https://gitlab.gnome.org/GNOME/dconf-editor")
10185 (synopsis "Graphical editor for GNOME's dconf configuration system")
10186 (description
10187 "Dconf-editor is a graphical tool for browsing and editing the dconf
10188configuration system for GNOME. It allows users to configure desktop
10189software that do not provide their own configuration interface.")
10190 (license license:lgpl2.1+)))
10191
10192(define-public gnome-default-applications
10193 (package
10194 (name "gnome-default-applications")
10195 (version "0")
10196 (build-system trivial-build-system)
10197 (source #f)
10198 (propagated-inputs
10199 (list nautilus evince))
10200 (arguments
10201 `(#:modules ((guix build utils))
10202 #:builder
10203 (begin
10204 (use-modules (guix build utils))
10205 (let* ((out (assoc-ref %outputs "out"))
10206 (apps (string-append out "/share/applications")))
10207 (mkdir-p apps)
10208 (call-with-output-file (string-append apps "/gnome-mimeapps.list")
10209 (lambda (port)
10210 (format port "[Default Applications]\n")
10211 (format port "inode/directory=org.gnome.Nautilus.desktop\n")
10212 (format port "application/pdf=evince.desktop\n")
10213 (format port "application/postscript=evince.desktop\n")))
10214 #t))))
10215 (synopsis "Default MIME type associations for the GNOME desktop")
10216 (description
10217 "Given many installed packages which might handle a given MIME type, a
10218user running the GNOME desktop probably has some preferences: for example,
10219that folders be opened by default by the Nautilus file manager, not the Baobab
10220disk usage analyzer. This package establishes that set of default MIME type
10221associations for GNOME.")
10222 (license license:gpl3+)
10223 (home-page #f)))
10224
10225(define-public libgovirt
10226 (package
10227 (name "libgovirt")
10228 (version "0.3.11")
10229 (source (origin
10230 (method url-fetch)
10231 (uri (string-append "mirror://gnome/sources/" name "/"
10232 (version-major+minor version) "/"
10233 name "-" version ".tar.xz"))
10234 (sha256
10235 (base32
10236 "0zmg33rm8mrza3ghj48as68s36yyi6v55hd91rka3f0w16siy708"))))
10237 (build-system meson-build-system)
10238 (arguments
10239 (list #:glib-or-gtk? #t
10240 #:phases #~(modify-phases %standard-phases
10241 (add-after 'unpack 'set-home
10242 (lambda _
10243 ;; The tests require a writable HOME.
10244 (setenv "HOME" "/tmp"))))))
10245 (native-inputs
10246 (list gettext-minimal
10247 `(,glib "bin")
10248 glib-networking ; GIO plugin--for the tests
10249 gobject-introspection
10250 gsettings-desktop-schemas
10251 pkg-config))
10252 (propagated-inputs
10253 ;; These dependencies are required by govirt-1.0.pc.
10254 (list glib librest))
10255 (synopsis "GoVirt Library")
10256 (description "GoVirt is a GObject wrapper for the oVirt REST API.")
10257 (home-page "https://gitlab.gnome.org/GNOME/libgovirt")
10258 (license license:gpl2+)))
10259
10260(define-public gnome-tour
10261 (package
10262 (name "gnome-tour")
10263 (version "49.0")
10264 (source
10265 (origin
10266 (method git-fetch)
10267 (uri (git-reference
10268 (url "https://gitlab.gnome.org/GNOME/gnome-tour")
10269 (commit version)))
10270 (file-name (git-file-name name version))
10271 (sha256
10272 (base32 "0fzvgffwargmycxby6j2q0fka74hcb4ff8yvbh8w8a0vpvpnc9b1"))
10273 (modules '((guix build utils)))
10274 (snippet #~(begin
10275 (substitute* "src/widgets/window.rs"
10276 (("let (name|version) = .*;" all what)
10277 (case (string->symbol what)
10278 ((name) "let name = \"GNOME\";")
10279 ((version) "let version = \"\";"))))))))
10280 (build-system meson-build-system)
10281 (arguments
10282 (list
10283 #:glib-or-gtk? #t
10284 #:imported-modules
10285 `(,@%meson-build-system-modules
10286 ,@%cargo-build-system-modules)
10287 #:modules
10288 `(((guix build cargo-build-system) #:prefix cargo:)
10289 (guix build meson-build-system)
10290 (guix build utils))
10291 #:phases
10292 (with-extensions (list (cargo-guile-json))
10293 #~(modify-phases %standard-phases
10294 (add-after 'unpack 'prepare-for-build
10295 (lambda _
10296 (delete-file "Cargo.lock")))
10297 (add-after 'configure 'prepare-cargo-build-system
10298 (lambda args
10299 (for-each (lambda (phase)
10300 (format #t "Running cargo phase: ~a~%" phase)
10301 (apply (assoc-ref cargo:%standard-phases phase)
10302 #:vendor-dir "vendor"
10303 #:cargo-target #$(cargo-triplet)
10304 args))
10305 '(unpack-rust-crates
10306 configure
10307 check-for-pregenerated-files
10308 patch-cargo-checksums))))))))
10309 (native-inputs (cons* pkg-config
10310 rust
10311 `(,rust "cargo")
10312 gettext-minimal
10313 `(,gtk "bin")
10314 `(,glib "bin")
10315 desktop-file-utils
10316 (cargo-inputs 'gnome-tour)))
10317 (inputs (list libadwaita
10318 glib
10319 gtk))
10320 (synopsis "GNOME Tour and Greeter")
10321 (description "A guided tour and greeter for GNOME.")
10322 (home-page "https://apps.gnome.org/Tour/")
10323 (license license:gpl3+)))
10324
10325(define-public gnome-weather
10326 (package
10327 (name "gnome-weather")
10328 (version "50.0")
10329 (source (origin
10330 (method url-fetch)
10331 (uri (string-append "mirror://gnome/sources/" name "/"
10332 (version-major version) "/"
10333 name "-" version ".tar.xz"))
10334 (sha256
10335 (base32
10336 "04xmzmkh39z71k3k6apli2y0axfv71vwwl8582mzk4azc1w7bpjp"))
10337 (patches (search-patches "gnome-weather-set-root-dir.patch"))))
10338 (build-system meson-build-system)
10339 (arguments
10340 (list
10341 #:glib-or-gtk? #t
10342 #:phases
10343 #~(modify-phases %standard-phases
10344 (add-after 'unpack 'fix-service-file
10345 (lambda _
10346 (substitute* "data/org.gnome.Weather.service.in"
10347 (("Exec=[[:graph:]]+")
10348 (string-append "Exec=" #$output
10349 "/bin/gnome-weather")))))
10350 (add-after 'unpack 'disable-gtk-update-icon-cache
10351 (lambda _
10352 (substitute* "meson.build"
10353 (("gtk_update_icon_cache: true")
10354 "gtk_update_icon_cache: false"))))
10355 (add-after 'install 'fix-desktop-file
10356 ;; FIXME: "gapplication launch org.gnome.Weather" fails for some
10357 ;; reason. See https://issues.guix.gnu.org/issue/39324.
10358 (lambda* (#:key outputs #:allow-other-keys)
10359 (substitute* (search-input-file
10360 outputs
10361 "share/applications/org.gnome.Weather.desktop")
10362 (("Exec=.*") "Exec=gnome-weather\n"))))
10363 (add-after 'install 'wrap
10364 (lambda* (#:key outputs #:allow-other-keys)
10365 ;; GNOME Weather needs the typelib files of GTK+, Pango etc at
10366 ;; runtime.
10367 (wrap-program (search-input-file outputs "bin/gnome-weather")
10368 `("GI_TYPELIB_PATH" ":" prefix
10369 (,(getenv "GI_TYPELIB_PATH")))))))))
10370 (native-inputs
10371 (list desktop-file-utils
10372 gettext-minimal
10373 `(,glib "bin")
10374 gobject-introspection
10375 node-typescript
10376 pkg-config))
10377 (inputs
10378 (list appstream-glib
10379 bash-minimal
10380 geoclue
10381 gjs
10382 gsettings-desktop-schemas
10383 gtk
10384 libadwaita
10385 libgweather))
10386 (synopsis "Weather monitoring for GNOME desktop")
10387 (description "GNOME Weather is a small application that allows you to
10388monitor the current weather conditions for your city, or anywhere in the
10389world.")
10390 (home-page "https://wiki.gnome.org/Apps/Weather")
10391 (license license:gpl2+)))
10392
10393(define-syntax gnome-meta-package
10394 (lambda (x)
10395 (syntax-case x ()
10396 ((_ field ...)
10397 (with-syntax ((base (datum->syntax x 'base)))
10398 #'(let ((base
10399 (package
10400 (name #f) ; we're hidden by default, so don't worry
10401 (version (package-version gnome-shell))
10402 (source #f)
10403 (build-system trivial-build-system)
10404 (arguments
10405 (list #:builder
10406 #~(begin (format (current-warning-port)
10407 "Building ~a is useless. \
10408Refer to its propagated inputs instead.\n"
10409 #$(package-name this-package))
10410 (mkdir #$output))))
10411 (home-page "https://www.gnome.org")
10412 (synopsis "Graphical desktop environment")
10413 (description "GNOME is a graphical desktop environment.
10414It includes a wide variety of applications with a common interface for
10415browsing the web, editing text and images, creating documents and diagrams,
10416playing media, scanning, and much more.")
10417 (license license:gpl2+)
10418 (properties `((hidden? . #t))))))
10419 (package (inherit base)
10420 field ...)))))))
10421
10422(define-public gnome-meta-core-services
10423 (gnome-meta-package
10424 (name "gnome-meta-core-services")
10425 (propagated-inputs
10426 (list accountsservice
10427 evolution-data-server ;for the calendar widget
10428 network-manager
10429 upower))))
10430
10431(define-public gnome-meta-core-shell
10432 (gnome-meta-package
10433 (name "gnome-meta-core-shell")
10434 (propagated-inputs (list adwaita-icon-theme
10435 gdm
10436 glib-networking
10437 gnome-backgrounds
10438 gnome-bluetooth
10439 gnome-color-manager
10440 gnome-control-center
10441 gnome-desktop
10442 gnome-initial-setup
10443 gnome-keyring
10444 gnome-menus
10445 gnome-remote-desktop
10446 gnome-session-shepherd
10447 gnome-settings-daemon
10448 gnome-shell
10449 gnome-shell-extensions
10450 gnome-user-docs
10451 gnome-user-share
10452 gsettings-desktop-schemas
10453 gvfs
10454 mutter
10455 orca
10456 rygel
10457 sushi))))
10458
10459;;; See the list of core apps at <https://apps.gnome.org/>
10460(define-public gnome-meta-core-utilities
10461 (gnome-meta-package
10462 (name "gnome-meta-core-utilities")
10463 (propagated-inputs
10464 (list baobab
10465 decibels
10466 epiphany
10467 file-roller
10468 foundry
10469 gnome-calculator
10470 gnome-calendar
10471 gnome-characters
10472 gnome-clocks
10473 gnome-connections
10474 gnome-console
10475 gnome-contacts
10476 gnome-disk-utility
10477 gnome-font-viewer
10478 gnome-maps
10479 gnome-music
10480 gnome-screenshot
10481 gnome-system-monitor
10482 gnome-text-editor
10483 gnome-tour
10484 gnome-weather
10485 loupe
10486 nautilus
10487 papers
10488 simple-scan
10489 showtime
10490 snapshot
10491 yelp))))
10492
10493(define-public gnome-essential-extras
10494 (gnome-meta-package
10495 (name "gnome-essential-extras")
10496 (propagated-inputs (list at-spi2-core
10497 dbus
10498 dconf
10499 desktop-file-utils
10500 font-adwaita
10501 font-dejavu
10502 gnome-default-applications
10503 gnome-online-accounts
10504 gst-plugins-base
10505 gst-plugins-good
10506 localsearch
10507 pulseaudio
10508 shared-mime-info
10509 xdg-desktop-portal
10510 xdg-desktop-portal-gnome
10511 xdg-user-dirs
10512 xdg-user-dirs-gtk))
10513 (description "This package provides a list of packages required for
10514a good GNOME experience, mixed from core dependencies and other implicitly
10515relied-on packages.")))
10516
10517(define-deprecated/public gnome #f
10518 (gnome-meta-package
10519 (name "gnome")
10520 (propagated-inputs
10521 (append-map package-propagated-inputs
10522 (list gnome-meta-core-services
10523 gnome-meta-core-shell
10524 gnome-meta-core-utilities
10525 gnome-essential-extras)))
10526 (properties (list))))
10527
10528(define-public byzanz
10529 ;; The last stable release of Byzanz was in 2011, but there have been many
10530 ;; useful commits made to the Byzanz repository since then that it would be
10531 ;; silly to use such an old release.
10532 (let ((commit "f7af3a5bd252db84af8365bd059c117a7aa5c4af"))
10533 (package
10534 (name "byzanz")
10535 (version (string-append "0.2-1." (string-take commit 7)))
10536 (source (origin
10537 (method git-fetch)
10538 (uri (git-reference
10539 (url "https://git.gnome.org/browse/byzanz")
10540 (commit commit)))
10541 (file-name (string-append name "-" version "-checkout"))
10542 (sha256
10543 (base32
10544 "1l60myzxf9cav27v5v3nsijlslz9r7ip6d5kiirfpkf9k0w26hz3"))))
10545 (build-system glib-or-gtk-build-system)
10546 (arguments
10547 '(#:phases
10548 (modify-phases %standard-phases
10549 (add-before 'bootstrap 'build-without-Werror
10550 (lambda _
10551 ;; The build system cleverly detects that we're not building from
10552 ;; a release tarball and turns on -Werror for GCC.
10553 ;; Unsurprisingly, there is a warning during compilation that
10554 ;; causes the build to fail unnecessarily, so we remove the flag.
10555 (substitute* '("configure.ac")
10556 (("-Werror") ""))
10557 #t)))))
10558 (native-inputs
10559 (list autoconf
10560 automake
10561 gnome-common
10562 intltool
10563 libtool
10564 pkg-config
10565 which))
10566 (inputs
10567 (list glib gstreamer gst-plugins-base gtk+))
10568 (synopsis "Desktop recording program")
10569 (description "Byzanz is a simple desktop recording program with a
10570command-line interface. It can record part or all of an X display for a
10571specified duration and save it as a GIF encoded animated image file.")
10572 (home-page "https://git.gnome.org/browse/byzanz")
10573 (license license:gpl2+))))
10574
10575(define-deprecated/public-alias gnome-authenticator
10576 (@ (gnu packages gnome-circle) gnome-authenticator))
10577
10578(define-public gsound
10579 (package
10580 (name "gsound")
10581 (version "1.0.3")
10582 (source (origin
10583 (method url-fetch)
10584 (uri (string-append "mirror://gnome/sources/gsound/"
10585 (version-major+minor version) "/"
10586 "gsound-" version ".tar.xz"))
10587 (sha256
10588 (base32
10589 "06l80xgykj7x1kqkjvcq06pwj2rmca458zvs053qc55x3sg06bfa"))))
10590 (build-system meson-build-system)
10591 (native-inputs
10592 (list pkg-config gobject-introspection vala))
10593 (propagated-inputs
10594 (list libcanberra)) ; in Requires.private of gsound.pc
10595 (home-page "https://wiki.gnome.org/Projects/GSound")
10596 (synopsis "GObject wrapper for libcanberra")
10597 (description
10598 "GSound is a small library for playing system sounds. It's designed to be
10599used via GObject Introspection, and is a thin wrapper around the libcanberra C
10600library.")
10601 (license license:lgpl2.1+)))
10602
10603(define-public libzapojit
10604 (let ((revision "1")
10605 (commit "99d49bac5edc4afdcac742a0a142908e405597b0"))
10606 (package
10607 (name "libzapojit")
10608 (version (git-version "0.0.3" revision commit))
10609 (source
10610 (origin
10611 (method git-fetch)
10612 (uri (git-reference
10613 (url "https://gitlab.gnome.org/Archive/libzapojit")
10614 (commit commit)))
10615 (file-name (git-file-name name version))
10616 (sha256
10617 (base32 "12frqg925rmic3rf37h5vs48xdy3mfi4ip24v0bl73h5sxy8n828"))))
10618 (build-system gnu-build-system)
10619 (native-inputs
10620 (list autoconf autoconf-archive automake
10621 `(,glib "bin")
10622 gtk-doc/stable gobject-introspection
10623 intltool libtool pkg-config))
10624 (inputs
10625 (list gnome-online-accounts json-glib librest))
10626 (home-page "https://wiki.gnome.org/Projects/Zapojit")
10627 (synopsis "Library for accessing SkyDrive and Hotmail")
10628 (description
10629 "Libzapojit is a GLib-based library for accessing online service APIs of
10630Microsoft SkyDrive and Hotmail, using their REST protocols.")
10631 (license license:lgpl2.1+))))
10632
10633(define-public gnome-clocks
10634 (package
10635 (name "gnome-clocks")
10636 (version "50.0")
10637 (source (origin
10638 (method url-fetch)
10639 (uri (string-append "mirror://gnome/sources/" name "/"
10640 (version-major version) "/"
10641 name "-" version ".tar.xz"))
10642 (sha256
10643 (base32
10644 "1illwzfghcxq3dmf4wchwhb9xwm1kcn6a5j79m1gpwpl8izpy5mz"))))
10645 (build-system meson-build-system)
10646 (arguments
10647 '(#:glib-or-gtk? #t
10648 #:phases
10649 (modify-phases %standard-phases
10650 (add-after 'unpack 'skip-gtk-update-icon-cache
10651 ;; Don't create 'icon-theme.cache'.
10652 (lambda _
10653 (substitute* "meson.build"
10654 (("gtk_update_icon_cache: true")
10655 "gtk_update_icon_cache: false")))))))
10656 (native-inputs
10657 (list desktop-file-utils
10658 gettext-minimal
10659 `(,glib "bin") ; for glib-compile-resources
10660 itstool
10661 pkg-config
10662 vala
10663 vorbis-tools))
10664 (inputs
10665 (list geoclue
10666 geocode-glib
10667 glib
10668 gnome-desktop
10669 gsound
10670 gtk
10671 libadwaita
10672 libgweather))
10673 (home-page "https://wiki.gnome.org/Apps/Clocks")
10674 (synopsis "GNOME's clock application")
10675 (description
10676 "GNOME Clocks is a simple clocks application designed to fit the GNOME
10677desktop. It supports world clock, stop watch, alarms, and count down timer.")
10678 (license license:gpl3+)))
10679
10680(define-public gnome-calendar
10681 (package
10682 (name "gnome-calendar")
10683 (version "49.1")
10684 (source (origin
10685 (method url-fetch)
10686 (uri (string-append "mirror://gnome/sources/" name "/"
10687 (version-major version) "/"
10688 name "-" version ".tar.xz"))
10689 (sha256
10690 (base32
10691 "1hnjhdxa9vfrs6fj0c0l5fiqwgz5mvby0v7m3562qlsd56mia48c"))))
10692 (build-system meson-build-system)
10693 (arguments
10694 `(#:glib-or-gtk? #t
10695 #:phases
10696 (modify-phases %standard-phases
10697 (add-after 'unpack 'skip-gtk-update-icon-cache
10698 ;; Don't create 'icon-theme.cache'.
10699 (lambda _
10700 (substitute* "meson.build"
10701 (("gtk_update_icon_cache: true")
10702 "gtk_update_icon_cache: false"))))
10703 (add-before 'check 'pre-check
10704 (lambda* (#:key inputs native-inputs #:allow-other-keys)
10705 (setenv "TZDIR"
10706 (search-input-directory
10707 (or native-inputs inputs) "share/zoneinfo"))
10708 (setenv "TZ" "UTC"))))))
10709 (native-inputs
10710 (list blueprint-compiler
10711 gettext-minimal
10712 `(,glib "bin") ; For glib-compile-schemas
10713 pkg-config
10714 tzdata-for-tests))
10715 (inputs
10716 (list evolution-data-server
10717 geoclue
10718 geocode-glib
10719 gnome-online-accounts
10720 gsettings-desktop-schemas
10721 libadwaita
10722 libdazzle
10723 libgweather))
10724 (home-page "https://wiki.gnome.org/Apps/Calendar")
10725 (synopsis "GNOME's calendar application")
10726 (description
10727 "GNOME Calendar is a simple calendar application designed to fit the GNOME
10728desktop. It supports multiple calendars, month, week and year view.")
10729 (license license:gpl3+)))
10730
10731(define-public endeavour
10732 (package
10733 (name "endeavour")
10734 (version "43.0")
10735 (source (origin
10736 (method git-fetch)
10737 (uri (git-reference
10738 (url "https://gitlab.gnome.org/World/Endeavour")
10739 (commit version)))
10740 (file-name (git-file-name name version))
10741 (sha256
10742 (base32
10743 "0gbqmwl1xv5526vlh1mxx9h5mpfnnwikrpr5fk8hxmy9x71r6q6n"))))
10744 (build-system meson-build-system)
10745 (arguments
10746 (list
10747 #:glib-or-gtk? #t
10748 #:phases
10749 #~(modify-phases %standard-phases
10750 (add-after 'unpack 'skip-gtk-update-icon-cache
10751 (lambda _
10752 (substitute* "meson.build"
10753 (("gtk_update_icon_cache: true")
10754 "gtk_update_icon_cache: false"))))
10755 (delete 'check)
10756 (add-after 'install 'check
10757 (assoc-ref %standard-phases
10758 'check))
10759 (add-before 'check 'pre-check
10760 (lambda _
10761 (setenv "GSETTINGS_SCHEMA_DIR"
10762 (string-append #$output "/share/glib-2.0/schemas")))))))
10763 (native-inputs
10764 (list gettext-minimal
10765 gobject-introspection
10766 `(,glib "bin") ;for glib-compile-resources
10767 `(,gtk "bin") ;for gtk-update-icon-cache
10768 itstool
10769 pkg-config))
10770 (inputs
10771 (list librest ;for Todoist plugin
10772 gtk
10773 json-glib ;for Todoist plugin
10774 libadwaita
10775 evolution-data-server
10776 libical
10777 libpeas
10778 libportal
10779 python-pygobject-3.50
10780 gnome-online-accounts
10781 gsettings-desktop-schemas))
10782 (propagated-inputs
10783 ;; This is so that the Guix System D-Bus service can find the Evolution
10784 ;; Data Server schemas.
10785 (list evolution-data-server))
10786 (home-page "https://wiki.gnome.org/Apps/Todo")
10787 (synopsis "GNOME's ToDo Application")
10788 (description "GNOME To Do is a simplistic personal task manager designed
10789to perfectly fit the GNOME desktop.")
10790 (license license:gpl3+)))
10791
10792(define-deprecated/public-alias dialect
10793 (@ (gnu packages gnome-circle) dialect))
10794
10795(define-public gnome-dictionary
10796 (package
10797 (name "gnome-dictionary")
10798 (version "40.0")
10799 (source (origin
10800 (method url-fetch)
10801 (uri (string-append "mirror://gnome/sources/" name "/"
10802 (version-major version) "/"
10803 name "-" version ".tar.xz"))
10804 (sha256
10805 (base32
10806 "1d8dhcfys788vv27v34i3s3x3jdvdi2kqn2a5p8c937a9hm0qr9f"))
10807 (patches
10808 (search-patches "gnome-dictionary-meson-i18n.patch"))))
10809 (build-system meson-build-system)
10810 (arguments
10811 `(#:glib-or-gtk? #t
10812 #:phases
10813 (modify-phases %standard-phases
10814 (add-after 'unpack 'skip-gtk-update-icon-cache
10815 ;; Don't create 'icon-theme.cache'.
10816 (lambda _
10817 (substitute* "build-aux/meson/post-install.py"
10818 (("gtk-update-icon-cache") "true")))))))
10819 (native-inputs
10820 (list `(,glib "bin")
10821 gobject-introspection
10822 intltool
10823 itstool
10824 pkg-config
10825 libxml2))
10826 (inputs
10827 (list gsettings-desktop-schemas
10828 gtk+))
10829 (home-page "https://wiki.gnome.org/Apps/Dictionary")
10830 (synopsis "Look up words in dictionary sources")
10831 (description
10832 "GNOME Dictionary can look for the definition or translation of a word in
10833existing databases over the internet.")
10834 (license license:gpl3+)))
10835
10836(define-public gnome-tweaks
10837 (package
10838 (name "gnome-tweaks")
10839 (version "46.1")
10840 (source (origin
10841 (method url-fetch)
10842 (uri (string-append "mirror://gnome/sources/gnome-tweaks/"
10843 (version-major version) "/"
10844 "gnome-tweaks-" version ".tar.xz"))
10845 (patches
10846 (list (search-patch "gnome-tweaks-search-paths.patch")))
10847 (sha256
10848 (base32
10849 "104v62nf0ng1ycsyljci09r95v11vbcicmw2rwz89mpvhmq2l69g"))))
10850 (build-system meson-build-system)
10851 (arguments
10852 (list
10853 #:glib-or-gtk? #t
10854 #:configure-flags #~(list "-Dlocalstatedir=/tmp"
10855 "-Dsysconfdir=/tmp")
10856 #:imported-modules (append %meson-build-system-modules
10857 %pyproject-build-system-modules)
10858 #:modules '((guix build meson-build-system)
10859 ((guix build pyproject-build-system) #:prefix py:)
10860 (guix build utils))
10861 #:phases
10862 #~(modify-phases %standard-phases
10863 (add-after 'unpack 'skip-gtk-update-icon-cache
10864 ;; Don't create 'icon-theme.cache'.
10865 (lambda _
10866 (substitute* "meson.build"
10867 (("gtk_update_icon_cache: true")
10868 "gtk_update_icon_cache: false")
10869 (("update_desktop_database: true")
10870 "update_desktop_database: false"))))
10871 (add-after 'install 'wrap
10872 (assoc-ref py:%standard-phases 'wrap))
10873 (add-after 'wrap 'wrap-gi-typelib-and-python
10874 (lambda* (#:key inputs outputs #:allow-other-keys)
10875 (wrap-program (search-input-file outputs "bin/gnome-tweaks")
10876 `("GI_TYPELIB_PATH" ":" prefix
10877 (,(getenv "GI_TYPELIB_PATH")))
10878 `("GUIX_PYTHONPATH" ":" prefix
10879 (,(py:site-packages inputs outputs)))))))))
10880 (native-inputs
10881 (list `(,glib "bin") ; for glib-compile-resources, etc.
10882 gettext-minimal
10883 pkg-config))
10884 (inputs
10885 (list bash-minimal ; to execute the wrapper program
10886 gnome-desktop
10887 gtk
10888 gobject-introspection
10889 gsettings-desktop-schemas
10890 libadwaita
10891 libgudev
10892 libnotify
10893 libsoup
10894 nautilus
10895 python
10896 python-pygobject))
10897 (synopsis "Customize advanced GNOME options")
10898 (home-page "https://wiki.gnome.org/Apps/Tweaks")
10899 (description
10900 "GNOME Tweaks allows adjusting advanced configuration settings in
10901GNOME. This includes things like the fonts used in user interface elements,
10902alternative user interface themes, changes in window management behavior,
10903GNOME Shell appearance and extension, etc.")
10904 (license license:gpl3+)))
10905
10906(define-public gnome-shell-extensions
10907 (package
10908 (name "gnome-shell-extensions")
10909 (version "49.0")
10910 (source (origin
10911 (method url-fetch)
10912 (uri (string-append "mirror://gnome/sources/" name "/"
10913 (version-major version) "/"
10914 name "-" version ".tar.xz"))
10915 (sha256
10916 (base32
10917 "0qkakhm2j2fms6s6w906iyrvkmfv3cx3yj70b6bkid3cg1jf0w0m"))))
10918 (build-system meson-build-system)
10919 (arguments
10920 (list
10921 #:configure-flags #~'("-Dextension_set=all")
10922 #:phases
10923 #~(modify-phases %standard-phases
10924 (add-after 'unpack 'wrap-extensions
10925 (lambda _
10926 (use-modules (ice-9 textual-ports)
10927 (guix build utils))
10928 (for-each
10929 (lambda (file-to-wrap)
10930 (with-atomic-file-replacement file-to-wrap
10931 (lambda (source wrapped)
10932 (format wrapped "'~a'.split(':').forEach("
10933 (getenv "GI_TYPELIB_PATH"))
10934 (display
10935 (string-append
10936 "path => imports.gi.GIRepository.Repository"
10937 ".dup_default().prepend_search_path(path));\n")
10938 wrapped)
10939 (dump-port source wrapped))))
10940 (find-files "extensions" "(extension|prefs)\\.js")))))))
10941 (native-inputs
10942 (list `(,glib "bin")
10943 gettext-minimal
10944 gobject-introspection ; to set GI_TYPELIB_PATH
10945 pkg-config))
10946 (inputs
10947 (list glib
10948 gnome-menus)) ; for Applications Menu
10949 (synopsis "Extensions for GNOME Shell")
10950 (description "GNOME Shell extensions modify and extend GNOME Shell
10951functionality and behavior.")
10952 (home-page "https://extensions.gnome.org/")
10953 (license license:gpl3+)))
10954
10955(define-public folks
10956 (package
10957 (name "folks")
10958 (version "0.15.12")
10959 (source (origin
10960 (method url-fetch)
10961 (uri (string-append
10962 "mirror://gnome/sources/folks/"
10963 (version-major+minor version) "/"
10964 "folks-" version ".tar.xz"))
10965 (sha256
10966 (base32
10967 "05594055h3y0n1yig664g1fg7nn71b8rdf8vwkwff7mvv8mlxx11"))))
10968 (build-system meson-build-system)
10969 (arguments
10970 '(;; Tests are broken since GLib 2.80
10971 ;; See <https://gitlab.gnome.org/GNOME/folks/-/issues/140>.
10972 #:tests? #f
10973 #:phases
10974 (modify-phases %standard-phases
10975 (add-after 'unpack 'skip-gtk-update-icon-cache
10976 ;; Don't create 'icon-theme.cache'.
10977 (lambda _
10978 (substitute* "meson.build"
10979 (("gtk_update_icon_cache: true")
10980 "gtk_update_icon_cache: false"))))
10981 (add-before 'configure 'relax-gcc-14-strictness
10982 (lambda _
10983 (setenv "CFLAGS"
10984 (string-append "-g -O2"
10985 " -Wno-error=implicit-function-declaration"
10986 " -Wno-error=incompatible-pointer-types")))))))
10987 (inputs
10988 (list bdb
10989 dbus-glib
10990 evolution-data-server
10991 glib
10992 libgee
10993 readline
10994 telepathy-glib))
10995 (native-inputs
10996 (list gettext-minimal
10997 `(,glib "bin")
10998 gobject-introspection
10999 python-dbusmock
11000 pkg-config
11001 python
11002 vala))
11003 (synopsis "Library to aggregate data about people")
11004 (description "Libfolks is a library that aggregates information about people
11005from multiple sources (e.g., Telepathy connection managers for IM contacts,
11006Evolution Data Server for local contacts, libsocialweb for web service contacts,
11007etc.) to create metacontacts. It's written in Vala, which generates C code when
11008compiled.")
11009 (home-page "https://wiki.gnome.org/Projects/Folks")
11010 (license license:lgpl2.1+)))
11011
11012(define-public libgnomekbd
11013 (package
11014 (name "libgnomekbd")
11015 (version "3.28.1")
11016 (source (origin
11017 (method url-fetch)
11018 (uri (string-append "mirror://gnome/sources/libgnomekbd/"
11019 (version-major+minor version) "/"
11020 "libgnomekbd-" version ".tar.xz"))
11021 (sha256
11022 (base32
11023 "0w78ix6f52xv0hw1h6fzqh47pk1fwr077agma19hdh3kdmb5kp12"))))
11024 (build-system gnu-build-system)
11025 (native-inputs
11026 (list autoconf
11027 automake
11028 `(,glib "bin")
11029 libtool
11030 pkg-config
11031 gettext-minimal
11032 gobject-introspection))
11033 (propagated-inputs
11034 ;; Referred to in .h files and .pc.
11035 (list glib
11036 gtk+
11037 libxklavier))
11038 (home-page "https://www.gnome.org")
11039 (synopsis "GNOME keyboard configuration library")
11040 (description
11041 "Libgnomekbd is a keyboard configuration library for the GNOME desktop
11042environment, which can notably display keyboard layouts.")
11043 (license license:lgpl2.0+)))
11044
11045;;; This package is no longer maintained:
11046;;; https://wiki.gnome.org/Attic/LibUnique
11047;;; "Unique is now in maintenance mode, and its usage is strongly discouraged.
11048;;; Applications should use the GtkApplication class provided by GTK+ 3.0."
11049(define-public libunique
11050 (package
11051 (name "libunique")
11052 (version "3.0.2")
11053 (source (origin
11054 (method url-fetch)
11055 (uri (string-append "mirror://gnome/sources/" name "/"
11056 (version-major+minor version) "/"
11057 name "-" version ".tar.xz"))
11058 (sha256
11059 (base32
11060 "0f70lkw66v9cj72q0iw1s2546r6bwwcd8idcm3621fg2fgh2rw58"))))
11061 (build-system glib-or-gtk-build-system)
11062 (arguments
11063 `(#:configure-flags '("--disable-static"
11064 "--disable-dbus" ; use gdbus
11065 "--enable-introspection")))
11066 (native-inputs
11067 `(("pkg-config" ,pkg-config)
11068 ("gobject-introspection" ,gobject-introspection)
11069 ("glib:bin" ,glib "bin")
11070 ("gtk-doc" ,gtk-doc/stable)))
11071 (propagated-inputs
11072 ;; Referred to in .h files and .pc.
11073 (list gtk+))
11074 (home-page "https://wiki.gnome.org/Attic/LibUnique")
11075 (synopsis "Library for writing single instance applications")
11076 (description
11077 "Libunique is a library for writing single instance applications. If you
11078launch a single instance application twice, the second instance will either just
11079quit or will send a message to the running instance. Libunique makes it easy to
11080write this kind of application, by providing a base class, taking care of all
11081the IPC machinery needed to send messages to a running instance, and also
11082handling the startup notification side.")
11083 (license license:lgpl2.1+)))
11084
11085(define-public gnome-calculator
11086 (package
11087 (name "gnome-calculator")
11088 (version "50.0")
11089 (source
11090 (origin
11091 (method url-fetch)
11092 (uri (string-append "mirror://gnome/sources/" name "/"
11093 (version-major version) "/"
11094 name "-" version ".tar.xz"))
11095 (sha256
11096 (base32
11097 "140a6m1hffa66nn8p2vqxc2h0cdzqm8xphb59f3q5s352n4xclw0"))))
11098 (build-system meson-build-system)
11099 (arguments
11100 (list
11101 #:glib-or-gtk? #t
11102 #:phases
11103 #~(modify-phases %standard-phases
11104 (add-after 'unpack 'skip-gtk-update-icon-cache
11105 (lambda _
11106 (substitute* "meson.build"
11107 (("gtk_update_icon_cache: true")
11108 "gtk_update_icon_cache: false"))))
11109 (add-after 'unpack 'set-absolute-paths
11110 (lambda _
11111 (define calculator
11112 (string-append #$output "/bin/gnome-calculator"))
11113 (substitute* "search-provider/search-provider.vala"
11114 (("argv0 = .*;")
11115 "argv0 = \"/proc/self/exe\";")
11116 (("gnome-calculator --equation")
11117 (string-append calculator " --equation")))))
11118 (add-before 'check 'pre-check
11119 (lambda _
11120 ;; Tests require a writable HOME.
11121 (setenv "HOME" (getcwd)))))))
11122 (native-inputs
11123 (list blueprint-compiler
11124 gettext-minimal
11125 `(,glib "bin") ;for glib-compile-schemas, gio-2.0.
11126 itstool
11127 pkg-config
11128 python
11129 vala))
11130 (inputs
11131 (list gsettings-desktop-schemas
11132 gtksourceview
11133 libadwaita
11134 libgee
11135 libsoup
11136 libxml2
11137 mpc
11138 mpfr))
11139 (propagated-inputs
11140 ;; Marked as requires.private in either .pc
11141 (list libgee glib gtk))
11142 (home-page "https://wiki.gnome.org/Apps/Calculator")
11143 (synopsis "Desktop calculator")
11144 (description
11145 "Calculator is an application that solves mathematical equations and
11146is suitable as a default application in a Desktop environment.")
11147 (license license:gpl3)))
11148
11149(define-public xpad
11150 (package
11151 (name "xpad")
11152 (version "5.8.0")
11153 (source
11154 (origin
11155 (method url-fetch)
11156 (uri (string-append "https://launchpad.net/xpad/trunk/"
11157 version "/+download/"
11158 name "-" version ".tar.bz2"))
11159 (sha256
11160 (base32
11161 "1sc2dz4yxx6glnqpnhiby85g2blnsfn8d3fvbaqhdi2hi0q54q7j"))))
11162 (build-system gnu-build-system)
11163 (native-inputs
11164 (list autoconf automake
11165 `(,gtk+ "bin") intltool pkg-config))
11166 (inputs
11167 (list gtk+ gtksourceview-4 libsm))
11168 (arguments
11169 (list #:phases
11170 #~(modify-phases %standard-phases
11171 (add-after 'unpack 'patch-configure
11172 (lambda _
11173 ;; xpad fails to build due to gettext version mismatch, so
11174 ;; we force it to use gettext 0.23.
11175 (substitute* "configure.ac"
11176 (("AM_GNU_GETTEXT_VERSION.*")
11177 (string-append
11178 "AM_GNU_GETTEXT_VERSION([0.23])\n"
11179 "AM_GNU_GETTEXT_REQUIRE_VERSION([0.23])\n"))))))))
11180 (home-page "https://wiki.gnome.org/Apps/Xpad")
11181 (synopsis "Virtual sticky note")
11182 (description
11183 "Xpad is a sticky note that strives to be simple, fault tolerant,
11184and customizable. Xpad consists of independent pad windows, each is
11185basically a text box in which notes can be written.")
11186 (license license:gpl3+)))
11187
11188(define-public gucharmap
11189 (let ((unicode-files
11190 '(("Blocks.txt"
11191 "05fbpc7miqpv7yic5xkm74ybzxkaf5r58ww21a1iwxqr3apyzvf0")
11192 ("DerivedAge.txt"
11193 "160r7wwidj3c2jl4cw3am0c5d0l7qndis9xx38h0y8fwidvdzv7q")
11194 ("NamesList.txt"
11195 "1x1smmn2kmy8clf6ny2njln75i888lidckc6ssyp2gdhgasdrkhd")
11196 ("Scripts.txt"
11197 "1grmn3bd4m0rcmz544h94kimlj3gf1f343s8177ddrxfmg9m0plz")
11198 ("UnicodeData.txt"
11199 "0327jqfw2hyq8x986cfhwrp717r2jl7ydjjwvzp7biarrcfzq7if")
11200 ("Unihan.zip"
11201 "0pjbyf77lbaxdhwidvpgp81cw13lfhlaw1ynn9vsmkssahmqp97p"))))
11202 (package
11203 (name "gucharmap")
11204 (version "17.0.2")
11205 (source
11206 (origin
11207 (method url-fetch)
11208 (uri (string-append "mirror://gnome/sources/" name "/"
11209 (version-major+minor version) "/"
11210 name "-" version ".tar.xz"))
11211 (sha256
11212 (base32
11213 "1ah0vyxkx3w63ry1pn3592jsxpbrwmcg8z4jvps8ls5bmwn9f8s7"))))
11214 (build-system meson-build-system)
11215 (arguments
11216 `(#:modules ((ice-9 match)
11217 (guix build meson-build-system)
11218 (guix build utils))
11219 #:glib-or-gtk? #t
11220 #:configure-flags
11221 (list
11222 "-Ducd_path=../unicode-data"
11223 "-Dvapi=false"
11224 ;; gtk-doc fails because it didn't generate a devhelp2 file
11225 "-Ddocs=false")
11226 #:phases
11227 (modify-phases %standard-phases
11228 (add-after 'unpack 'prepare-unicode-data
11229 (lambda* (#:key inputs #:allow-other-keys)
11230 (mkdir-p "../unicode-data")
11231 (with-directory-excursion "../unicode-data"
11232 (for-each (match-lambda
11233 ((file _)
11234 (install-file (assoc-ref inputs file) ".")))
11235 ',unicode-files)))))))
11236 (native-inputs
11237 (cons* desktop-file-utils
11238 (list glib "bin")
11239 gobject-introspection
11240 intltool
11241 itstool
11242 pkg-config
11243 python
11244 unzip
11245 (map (match-lambda
11246 ((file hash)
11247 (origin
11248 (method url-fetch)
11249 (uri (string-append
11250 "https://www.unicode.org/Public/17.0.0/ucd/"
11251 file))
11252 (sha256 (base32 hash)))))
11253 unicode-files)))
11254 (inputs
11255 (list gtk+
11256 libxml2))
11257 (home-page "https://gitlab.gnome.org/GNOME/gucharmap")
11258 (synopsis "Unicode character picker and font browser")
11259 (description
11260 "This program allows you to browse through all the available Unicode
11261characters and categories for the installed fonts, and to examine their
11262detailed properties. It is an easy way to find the character you might
11263only know by its Unicode name or code point.")
11264 (license license:gpl3+))))
11265
11266(define-public gcolor3
11267 (package
11268 (name "gcolor3")
11269 (version "2.4.0")
11270 (source
11271 (origin
11272 (method git-fetch)
11273 (uri (git-reference
11274 (url "https://gitlab.gnome.org/World/gcolor3")
11275 (commit (string-append "v" version))))
11276 (file-name (git-file-name name version))
11277 (sha256
11278 (base32 "1igqmach1vhcrvbpw346pmkbb5kabbb806ssswrvkp569n700wmc"))
11279 ;; XXX: Remove when upgrading
11280 (patches (search-patches "gcolor3-update-libportal-usage.patch"))))
11281 (build-system meson-build-system)
11282 (arguments
11283 `(#:glib-or-gtk? #t))
11284 (native-inputs
11285 (list desktop-file-utils gettext-minimal
11286 `(,glib "bin")
11287 `(,gtk+ "bin") pkg-config))
11288 (inputs
11289 (list gsettings-desktop-schemas gtk+ libportal))
11290 (home-page "https://www.hjdskes.nl/projects/gcolor3/")
11291 (synopsis "Simple color chooser written in GTK3")
11292 (description "Color Picker is a simple color chooser written in GTK3. It
11293supports both X and Wayland display servers.")
11294 (license license:gpl2+)))
11295
11296(define-public bluefish
11297 (package
11298 (name "bluefish")
11299 (version "2.2.17")
11300 (source
11301 (origin
11302 (method url-fetch)
11303 (uri (string-append "https://www.bennewitz.com/bluefish/stable/source/"
11304 "bluefish-" version ".tar.gz"))
11305 (sha256
11306 (base32 "17ampw9p1fp7s7i43cz9r68v6mm7xmb1sndx1mqmkns35kn8yl8a"))))
11307 (build-system gnu-build-system)
11308 (arguments
11309 (list
11310 #:configure-flags
11311 #~(list "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration")))
11312 (native-inputs
11313 (list desktop-file-utils intltool pkg-config))
11314 (inputs
11315 (list enchant gtk+ python-wrapper libxml2 gucharmap))
11316 (home-page "https://bluefish.openoffice.nl")
11317 (synopsis "Web development studio")
11318 (description
11319 "Bluefish is an editor aimed at programmers and web developers,
11320with many options to write web sites, scripts and other code.
11321Bluefish supports many programming and markup languages.")
11322 (license license:gpl3+)))
11323
11324(define-public gnome-system-monitor
11325 (package
11326 (name "gnome-system-monitor")
11327 (version "50.0")
11328 (source
11329 (origin
11330 (method url-fetch)
11331 (uri (string-append "mirror://gnome/sources/" name "/"
11332 (version-major version) "/"
11333 name "-" version ".tar.xz"))
11334 (sha256
11335 (base32
11336 "0qj89kc05gmnccc7dpjp4jy14yz2hpbd3ylivr34qn5lajkql4x4"))))
11337 (build-system meson-build-system)
11338 (arguments
11339 '(#:glib-or-gtk? #t
11340 #:configure-flags '("-Dsystemd=false")))
11341 (native-inputs
11342 (list catch2
11343 cmake
11344 `(,glib "bin") ;for glib-mkenums.
11345 `(,gtk+ "bin") ;gtk-update-icon-cache
11346 intltool
11347 itstool
11348 libgtop
11349 polkit
11350 pkg-config))
11351 (inputs
11352 (list gdk-pixbuf ;for loading SVG files.
11353 gtk
11354 gtkmm
11355 libadwaita
11356 (librsvg-for-system)
11357 libxml2
11358 libwnck))
11359 (home-page "https://wiki.gnome.org/Apps/SystemMonitor")
11360 (synopsis "Process viewer and system resource monitor for GNOME")
11361 (description
11362 "GNOME System Monitor is a GNOME process viewer and system monitor with
11363an attractive, easy-to-use interface. It has features, such as a tree view
11364for process dependencies, icons for processes, the ability to hide processes,
11365graphical time histories of CPU/memory/swap usage and the ability to
11366kill/reinice processes.")
11367 (license license:gpl2+)))
11368
11369(define-public python-pyatspi
11370 (package
11371 (name "python-pyatspi")
11372 (version "2.58.1")
11373 (source (origin
11374 (method url-fetch)
11375 (uri (string-append
11376 "mirror://gnome/sources/pyatspi/"
11377 (version-major+minor version)
11378 "/pyatspi-" version ".tar.xz"))
11379 (sha256
11380 (base32
11381 "0dj5n3k02jsg3w96afwrbhj45swdhlqpap02651mh9pr6nchf7rz"))))
11382 (build-system meson-build-system)
11383 (native-inputs (list pkg-config))
11384 (inputs (list python))
11385 (propagated-inputs (list python-pygobject))
11386 (synopsis "Python client bindings for D-Bus AT-SPI")
11387 (home-page "https://wiki.linuxfoundation.org/accessibility\
11388/atk/at-spi/at-spi_on_d-bus")
11389 (description
11390 "This package includes a python client library for the AT-SPI D-Bus
11391accessibility infrastructure.")
11392 (license license:lgpl2.0)
11393 (properties '((upstream-name . "pyatspi")))))
11394
11395(define-public accerciser
11396 (package
11397 (name "accerciser")
11398 (version "3.48.0")
11399 (source (origin
11400 (method git-fetch)
11401 (uri (git-reference
11402 (url "https://gitlab.gnome.org/GNOME/accerciser.git")
11403 (commit version)))
11404 (file-name (git-file-name name version))
11405 (sha256
11406 (base32
11407 "1ddh466im0hxqx0ncxglrif72jfwcdl1ayarw874mp1464wkbc4m"))))
11408 (build-system meson-build-system)
11409 (arguments
11410 (list
11411 #:glib-or-gtk? #t
11412 #:imported-modules (append %meson-build-system-modules
11413 %pyproject-build-system-modules)
11414 #:modules
11415 `((guix build meson-build-system)
11416 ((guix build pyproject-build-system) #:prefix py:)
11417 (guix build utils))
11418 #:phases
11419 #~(modify-phases %standard-phases
11420 (add-after 'unpack 'skip-gnome-post-install
11421 (lambda _
11422 (substitute* "meson.build"
11423 (("gtk_update_icon_cache: true")
11424 "gtk_update_icon_cache: false")
11425 (("update_desktop_database: true")
11426 "update_desktop_database: false"))))
11427 (add-after 'install 'wrap-python
11428 (assoc-ref py:%standard-phases 'wrap))
11429 (add-after 'wrap-python 'wrap-program
11430 (lambda _
11431 (let ((typelib-path (getenv "GI_TYPELIB_PATH")))
11432 (wrap-program (string-append #$output "/bin/accerciser")
11433 `("GI_TYPELIB_PATH" ":" prefix (,typelib-path)))))))))
11434 (native-inputs
11435 (list (list glib "bin")
11436 gettext-minimal
11437 gobject-introspection
11438 pkg-config
11439 yelp-tools))
11440 (inputs
11441 (list appstream
11442 appstream-glib
11443 at-spi2-core
11444 bash-minimal
11445 gdk-pixbuf
11446 glib
11447 gtk+
11448 python
11449 python-dbus
11450 python-pyatspi
11451 python-pycairo
11452 python-pygobject
11453 python-pyxdg))
11454 (synopsis "Accessibility explorer")
11455 (description "This package provides an interactive accessibility explorer
11456for the GNOME desktop.")
11457 (home-page "https://gitlab.gnome.org/GNOME/accerciser")
11458 (license license:bsd-3)))
11459
11460(define-public orca
11461 (package
11462 (name "orca")
11463 (version "48.9")
11464 (source (origin
11465 (method url-fetch)
11466 (uri (string-append
11467 "mirror://gnome/sources/" name "/"
11468 (version-major version) "/"
11469 name "-" version ".tar.xz"))
11470 (sha256
11471 (base32
11472 "0sfs06f66dsibvnp87jshhs7n3f8shkn9x7j3ygpk8409za2n2xy"))
11473 (patches (search-patches "orca-fix-gst-init-check-call.patch"))))
11474 (build-system meson-build-system)
11475 (arguments
11476 '(#:glib-or-gtk? #t
11477 #:phases
11478 (modify-phases %standard-phases
11479 (add-after 'unpack 'skip-gtk-update-icon-cache
11480 (lambda _
11481 (substitute* "meson.build"
11482 (("gtk_update_icon_cache: true")
11483 "gtk_update_icon_cache: false"))))
11484 (add-before 'configure 'qualify-programs
11485 (lambda* (#:key inputs #:allow-other-keys)
11486 (let ((xkbcomp (string-append
11487 (assoc-ref inputs "xkbcomp") "/bin/xkbcomp"))
11488 (pgrep (string-append
11489 (assoc-ref inputs "procps") "/bin/pgrep")))
11490 (substitute* "src/orca/orca_modifier_manager.py"
11491 (("\"xkbcomp\"") (format #f "'~a'" xkbcomp)))
11492 (substitute* "src/orca/orca_bin.py.in"
11493 (("'pgrep -u %s -x orca'")
11494 (format #f "'~a -u %s -x orca'" pgrep))))))
11495 (add-after 'install 'wrap-orca
11496 (lambda* (#:key outputs #:allow-other-keys)
11497 (wrap-program (search-input-file outputs "bin/orca")
11498 `("GI_TYPELIB_PATH" ":" prefix
11499 (,(getenv "GI_TYPELIB_PATH")))
11500 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
11501 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))
11502 `("GUIX_PYTHONPATH" ":" prefix
11503 (,(getenv "GUIX_PYTHONPATH")))))))))
11504 (native-inputs
11505 (list gettext-minimal
11506 itstool
11507 pkg-config
11508 libxml2))
11509 (inputs
11510 (list at-spi2-core
11511 brltty
11512 bash-minimal
11513 gsettings-desktop-schemas
11514 gstreamer
11515 gst-plugins-base
11516 gst-plugins-good
11517 gtk+
11518 liblouis
11519 `(,liblouis "python")
11520 procps ; for pgrep
11521 python
11522 python-dbus
11523 python-pygobject-3.50
11524 python-pyatspi
11525 speech-dispatcher
11526 xkbcomp))
11527 (synopsis
11528 "Screen reader for individuals who are blind or visually impaired")
11529 (home-page "https://wiki.gnome.org/Projects/Orca")
11530 (description
11531 "Orca is a screen reader that provides access to the graphical desktop
11532via speech and refreshable braille. Orca works with applications and toolkits
11533that support the Assistive Technology Service Provider Interface (AT-SPI).")
11534 (license license:lgpl2.1+)))
11535
11536(define-public gspell
11537 (package
11538 (name "gspell")
11539 (version "1.14.2")
11540 (source (origin
11541 (method url-fetch)
11542 (uri (string-append "mirror://gnome/sources/" name "/"
11543 (version-major+minor version) "/"
11544 name "-" version ".tar.xz"))
11545 (sha256
11546 (base32
11547 "0xql3rz6r1qy5hrzx8qvp0c3hwxy0q0c1fynmhdjh4whrjnfbisf"))))
11548 (build-system meson-build-system)
11549 (arguments
11550 (list
11551 #:glib-or-gtk? #t
11552 #:configure-flags #~(list "-Dinstall_tests=false"
11553 ;; Avoid circular dependency.
11554 "-Dgtk_doc=false")
11555 #:phases
11556 #~(modify-phases %standard-phases
11557 (add-after 'unpack 'disable-problematic-tests
11558 (lambda _
11559 (substitute* "tests/unit-tests/test-checker.c"
11560 ;; This test is known to fail with Aspell, as a comment
11561 ;; mentions it. Disable it.
11562 ((".*g_test_add_func.*test_dashes.*") ""))))
11563 (add-before 'check 'pre-check
11564 (lambda* (#:key inputs #:allow-other-keys)
11565 ;; Tests require a running X server.
11566 (system "Xvfb :1 &")
11567 (setenv "DISPLAY" ":1")
11568
11569 ;; For the missing /etc/machine-id.
11570 (setenv "DBUS_FATAL_WARNINGS" "0")
11571
11572 ;; Allow Enchant and its Aspell backend to find the en_US
11573 ;; dictionary.
11574 (setenv "ASPELL_DICT_DIR"
11575 (search-input-directory inputs "/lib/aspell")))))))
11576 (inputs
11577 (list iso-codes/pinned))
11578 (native-inputs
11579 (list `(,glib "bin")
11580 gobject-introspection
11581 pkg-config
11582 vala ;for VAPI, needed by Geary
11583 libxml2
11584
11585 ;; For tests.
11586 aspell-dict-en
11587 xorg-server-for-tests))
11588 (propagated-inputs
11589 ;; Referred by .pc file.
11590 (list enchant
11591 glib
11592 gtk+))
11593 (home-page "https://wiki.gnome.org/Projects/gspell")
11594 (synopsis "GNOME's alternative spell checker")
11595 (description
11596 "gspell provides a flexible API to add spell-checking to a GTK+
11597application. It provides a GObject API, spell-checking to text entries and
11598text views, and buttons to choose the language.")
11599 (license license:gpl2+)))
11600
11601(define-public gnome-planner
11602 (package
11603 (name "gnome-planner")
11604 (version "0.14.92")
11605 (source (origin
11606 (method url-fetch)
11607 (uri (string-append "mirror://gnome/sources/planner/"
11608 (version-major+minor version) "/planner-"
11609 version ".tar.xz"))
11610 (sha256
11611 (base32
11612 "0cyqs1ly6cp96pjw0yjk1r0dshp0c3869wgknxpp97dnbppsg8px"))))
11613 (build-system meson-build-system)
11614 (arguments
11615 (list
11616 #:glib-or-gtk? #t
11617 #:configure-flags
11618 ;; Otherwise, the RUNPATH will lack the final 'planner' path component
11619 ;; (see: <https://gitlab.gnome.org/World/planner/-/issues/274>).
11620 #~(list (string-append "-Dc_link_args=-Wl,-rpath="
11621 #$output "/lib/planner"))
11622 #:phases
11623 #~(modify-phases %standard-phases
11624 (add-after 'unpack 'skip-gtk-update-icon-cache
11625 (lambda _
11626 (substitute* "meson_post_install.sh"
11627 (("gtk-update-icon-cache") (which "true"))))))))
11628 (inputs
11629 (list gconf
11630 glib
11631 gtk+
11632 libxml2
11633 libxslt))
11634 (native-inputs
11635 (list `(,glib "bin") ;for glib-genmarshal, etc.
11636 desktop-file-utils ;for update-desktop-database
11637 gettext-minimal
11638 pkg-config))
11639 (home-page "https://gitlab.gnome.org/World/planner")
11640 (synopsis "Project management software for the GNOME desktop")
11641 (description
11642 "GNOME Planner is a project management tool based on the Work Breakdown
11643Structure (WBS). Its goal is to enable you to easily plan projects. Based on
11644the resources, tasks, and constraints that you define, Planner generates
11645various views into a project. For example, Planner can show a Gantt chart of
11646the project. It can show a detailed summary of tasks including their
11647duration, cost, and current progress. It can also show a report of resource
11648utilization that highlights under-utilized and over-utilized resources. These
11649views can be printed as PDF or PostScript files, or exported to HTML.")
11650 (license license:gpl2+)))
11651
11652(define-public lollypop
11653 (package
11654 (name "lollypop")
11655 (version "1.4.45")
11656 (source
11657 (origin
11658 (method url-fetch)
11659 (uri (string-append "https://adishatz.org/lollypop/"
11660 "lollypop-" version ".tar.xz"))
11661 (sha256
11662 (base32 "0wsqbpnqkq0rinq4yz14g876g61xxilk4fbl1pgrwlf76jfxlpyb"))))
11663 (build-system meson-build-system)
11664 (arguments
11665 (list #:imported-modules (append %meson-build-system-modules
11666 %pyproject-build-system-modules)
11667 #:modules '((guix build meson-build-system)
11668 ((guix build pyproject-build-system) #:prefix py:)
11669 (guix build utils))
11670 #:glib-or-gtk? #t
11671 #:phases
11672 #~(modify-phases %standard-phases
11673 (add-after 'unpack 'disable-gtk-update-icon-cache
11674 (lambda _
11675 (setenv "DESTDIR" "/")))
11676 (add-after 'install 'wrap-program
11677 (lambda* (#:key outputs #:allow-other-keys)
11678 (wrap-program (search-input-file outputs "bin/lollypop")
11679 (list "GI_TYPELIB_PATH" ":" 'prefix
11680 (list (getenv "GI_TYPELIB_PATH"))))))
11681 (add-after 'install 'wrap-python
11682 (assoc-ref py:%standard-phases 'wrap)))))
11683 (native-inputs
11684 (list gettext-minimal
11685 `(,glib "bin") ; For glib-compile-resources
11686 pkg-config))
11687 (inputs
11688 (list bash-minimal
11689 glib-networking
11690 gobject-introspection
11691 gsettings-desktop-schemas
11692 gst-plugins-base
11693 gtk+
11694 libnotify
11695 libsecret
11696 libhandy
11697 libsoup
11698 python
11699 python-beautifulsoup4
11700 python-gst
11701 python-pillow
11702 python-pycairo
11703 python-pygobject
11704 python-pylast
11705 totem-pl-parser))
11706 (propagated-inputs
11707 (list gst-plugins-good ;required to start lollypop
11708 gst-plugins-ugly)) ;required for streaming
11709 (home-page "https://wiki.gnome.org/Apps/Lollypop")
11710 (synopsis "GNOME music playing application")
11711 (description
11712 "Lollypop is a music player designed to play well with GNOME desktop.
11713Lollypop plays audio formats such as mp3, mp4, ogg and flac and gets information
11714from artists and tracks from the web. It also fetches cover artworks
11715automatically and it can stream songs from online music services and charts.")
11716 (license license:gpl3+)))
11717
11718(define-public gnome-video-effects
11719 (package
11720 (name "gnome-video-effects")
11721 (version "0.6.0")
11722 (source (origin
11723 (method url-fetch)
11724 (uri (string-append "mirror://gnome/sources/" name "/"
11725 (version-major+minor version) "/" name "-"
11726 version ".tar.xz"))
11727 (sha256
11728 (base32
11729 "1a68wf9f3z3ss6nwjam55hh60qccpx10png0n8pq6nizdfsaxbnp"))))
11730 (build-system meson-build-system)
11731 (native-inputs
11732 (list gettext-minimal pkg-config))
11733 (home-page "https://wiki.gnome.org/Projects/GnomeVideoEffects")
11734 (synopsis "Video effects for Cheese and other GNOME applications")
11735 (description
11736 "A collection of GStreamer video filters and effects to be used in
11737photo-booth-like software, such as Cheese.")
11738 (license license:gpl2+)))
11739
11740(define-public snapshot
11741 (package
11742 (name "snapshot")
11743 (version "50.0")
11744 (source
11745 (origin
11746 (method git-fetch)
11747 (uri (git-reference
11748 (url "https://gitlab.gnome.org/GNOME/snapshot")
11749 (commit version)))
11750 (sha256
11751 (base32 "0v1239p015qd35s25s62544srh4wn7f2819mkavnng7anxfbjxgk"))))
11752 (arguments
11753 (list
11754 #:glib-or-gtk? #t
11755 #:imported-modules `(,@%meson-build-system-modules
11756 ,@%cargo-build-system-modules)
11757 #:modules `(((guix build cargo-build-system)
11758 #:prefix cargo:)
11759 (guix build meson-build-system)
11760 (guix build utils))
11761 #:phases
11762 #~(modify-phases %standard-phases
11763 (add-after 'unpack 'prepare-for-build
11764 (lambda _
11765 (substitute* "meson.build"
11766 (("gtk_update_icon_cache: true")
11767 "gtk_update_icon_cache: false")
11768 (("update_desktop_database: true")
11769 "update_desktop_database: false")
11770 ;; Fix missing manifest path for tests
11771 (("cargo_release_options,")
11772 "cargo_release_options,
11773'--manifest-path',
11774meson.project_source_root() / 'Cargo.toml',")
11775 (("clippy_options,")
11776 "clippy_options,
11777'--manifest-path',
11778meson.project_source_root() / 'Cargo.toml',"))
11779 (delete-file "Cargo.lock")))
11780 (add-after 'configure 'prepare-cargo-build-system
11781 (lambda args
11782 (for-each (lambda (phase)
11783 (format #t "Running cargo phase: ~a~%" phase)
11784 (apply (assoc-ref cargo:%standard-phases phase)
11785 #:vendor-dir "vendor"
11786 #:cargo-target #$(cargo-triplet)
11787 args))
11788 '(prepare-rust-crates unpack-rust-crates configure
11789 check-for-pregenerated-files
11790 patch-cargo-checksums))))
11791 (add-after 'install 'wrap-program
11792 (lambda _
11793 (let ((prog (string-append #$output "/bin/snapshot"))
11794 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
11795 (wrap-program prog
11796 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
11797 (,gst-plugin-path)))))))))
11798 (build-system meson-build-system)
11799 (native-inputs (cons* gettext-minimal
11800 `(,glib "bin")
11801 pkg-config
11802 rust
11803 `(,rust "cargo")
11804 (or (and=> (%current-target-system)
11805 (compose list make-rust-sysroot))
11806 '())))
11807 (inputs (cons* bash-minimal
11808 glib
11809 libglycin
11810 gst-plugins-bad
11811 gst-plugins-good
11812 `(,gst-plugins-rs "video")
11813 gstreamer
11814 gtk
11815 libadwaita
11816 pipewire
11817 (cargo-inputs 'snapshot)))
11818 (home-page "https://apps.gnome.org/Snapshot")
11819 (synopsis "Take pictures and videos")
11820 (description
11821 "Take pictures and videos on your computer, tablet, or phone.")
11822 (license license:gpl3+)))
11823
11824;;; TODO: Delete when 2027/03 comes.
11825(define-deprecated-package cheese
11826 snapshot)
11827
11828(define-deprecated/public-alias secrets
11829 (@ (gnu packages gnome-circle) secrets))
11830
11831(define-public sound-juicer
11832 (package
11833 (name "sound-juicer")
11834 (version "3.40.0")
11835 (source
11836 (origin
11837 (method url-fetch)
11838 (uri (string-append "mirror://gnome/sources/" name "/"
11839 (version-major+minor version) "/"
11840 name "-" version ".tar.xz"))
11841 (sha256
11842 (base32
11843 "1rhxmvx2mr22zd5p0azc0svi0mbnzcjnh3sasv3b9gli8ds85s1f"))))
11844 (build-system meson-build-system)
11845 (arguments
11846 (list
11847 #:glib-or-gtk? #t
11848 #:phases
11849 #~(modify-phases %standard-phases
11850 (add-after 'unpack 'disable-gtk-update-icon-cache
11851 (lambda _
11852 (substitute* "meson.build"
11853 (("gtk_update_icon_cache: true")
11854 "gtk_update_icon_cache: false"))))
11855 (add-after 'install 'wrap-program
11856 (lambda _
11857 (let ((prog (string-append #$output "/bin/sound-juicer"))
11858 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
11859 (wrap-program prog
11860 `("GST_PLUGIN_SYSTEM_PATH"
11861 ":" prefix (,gst-plugin-path)))))))))
11862 (native-inputs
11863 (list desktop-file-utils
11864 gettext-minimal
11865 `(,glib "bin")
11866 itstool
11867 libxml2
11868 pkg-config
11869 python))
11870 (inputs
11871 (list bash-minimal
11872 brasero
11873 gsettings-desktop-schemas
11874 gst-plugins-base
11875 gst-plugins-good
11876 gstreamer
11877 gtk+
11878 iso-codes/pinned
11879 libcanberra
11880 libdiscid
11881 libmusicbrainz
11882 neon))
11883 (home-page "https://wiki.gnome.org/Apps/SoundJuicer")
11884 (synopsis "Audio music cd ripper")
11885 (description "Sound Juicer extracts audio from compact discs and convert it
11886into audio files that a personal computer or digital audio player can play.
11887It supports ripping to any audio codec supported by a GStreamer plugin, such as
11888mp3, Ogg Vorbis and FLAC")
11889 (license license:gpl2+)))
11890
11891(define-public soundconverter
11892 (package
11893 (name "soundconverter")
11894 (version "4.1.3")
11895 (source
11896 (origin
11897 (method git-fetch)
11898 (uri (git-reference
11899 (url "https://github.com/kassoulet/soundconverter")
11900 (commit version)))
11901 (file-name (git-file-name name version))
11902 (sha256
11903 (base32 "1b0vh86fl4ghng5786vh94nm4p6hffrnch1kwcx2k5gdnsvaja0k"))))
11904 (build-system pyproject-build-system)
11905 (arguments
11906 (list #:test-backend #~'custom
11907 #:test-flags #~(list "tests/test.py")
11908 #:phases
11909 #~(modify-phases %standard-phases
11910 (add-after 'unpack 'disable-failing-test
11911 (lambda _
11912 (substitute* "tests/testcases/discoverer.py"
11913 (("test_not_audio")
11914 "disable_test_not_audio"))))
11915 (add-after 'install 'install-data
11916 (lambda _
11917 (mkdir-p (string-append #$output
11918 "/lib/python3.12/site-packages/data"))
11919 (install-file "data/soundconverter.glade"
11920 (string-append #$output
11921 "/lib/python3.12/site-packages/data/"))
11922 (install-file "data/soundconverter-logo.svg"
11923 (string-append #$output
11924 "/lib/python3.12/site-packages/data/"))))
11925 (add-before 'check 'pre-tests
11926 (lambda _
11927 ;; To fix "Settings schema 'org.soundconverter' is not
11928 ;; installed" error.
11929 (setenv "GSETTINGS_SCHEMA_DIR"
11930 (string-append #$output
11931 "/share/glib-2.0/schemas/"))
11932
11933 ;; A test using GIO expects some sub-directories in the
11934 ;; user home directory to be writable.
11935 (setenv "HOME" (getcwd))
11936
11937 ;; Tests require a running X server.
11938 (system "Xvfb :1 &")
11939 (setenv "DISPLAY" ":1")))
11940 (add-after 'install 'wrap-soundconverter
11941 (lambda _
11942 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))
11943 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
11944 (wrap-program (string-append #$output
11945 "/bin/soundconverter")
11946 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
11947 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
11948 (,gst-plugin-path))
11949 `("GSETTINGS_SCHEMA_DIR" =
11950 (,(string-append #$output
11951 "/share/glib-2.0/schemas"))))))))))
11952 (native-inputs
11953 (list (list glib "bin")
11954 intltool
11955 pkg-config
11956 python-distutils-extra
11957 python-pytest
11958 python-setuptools
11959 xorg-server-for-tests))
11960 (inputs
11961 (list bash-minimal
11962 gsettings-desktop-schemas
11963 gst-libav
11964 gst-plugins-bad
11965 gst-plugins-base
11966 gst-plugins-good
11967 gst-plugins-ugly
11968 gstreamer
11969 gtk+
11970 python
11971 python-pygobject-3.50))
11972 (home-page "https://soundconverter.org/")
11973 (synopsis "Convert between audio formats with a graphical interface")
11974 (description
11975 "SoundConverter supports converting between many audio formats including
11976Opus, Ogg Vorbis, FLAC and more. It supports parallel conversion, and
11977configurable file renaming.")
11978 (license license:gpl3)))
11979
11980(define-public workrave
11981 (package
11982 (name "workrave")
11983 (version "1.10.52")
11984 (source
11985 (origin
11986 (method git-fetch)
11987 (uri (git-reference
11988 (url "https://github.com/rcaelers/workrave")
11989 (commit (string-append "v" (string-map
11990 (match-lambda (#\. #\_) (chr chr))
11991 version)))))
11992 (file-name (git-file-name name version))
11993 (sha256
11994 (base32 "1rp6v9a8xmhjy75wmh7pnd092dn9nrb6wd4gcgr3c866qnpp6zsk"))))
11995 (build-system glib-or-gtk-build-system)
11996 (arguments
11997 ;; The only tests are maintainer tests (in po/), which fail.
11998 `(#:tests? #f))
11999 (inputs (list glib
12000 gtk+
12001 gdk-pixbuf
12002 gtkmm-3
12003 glibmm
12004 libx11
12005 libxtst
12006 dconf
12007 libice
12008 libsm
12009 libxscrnsaver))
12010 (native-inputs (list boost
12011 pkg-config
12012 gettext-minimal
12013 autoconf
12014 autoconf-archive
12015 automake
12016 libtool
12017 intltool
12018 gobject-introspection
12019 python-3
12020 python-jinja2))
12021 (synopsis "Tool to help prevent repetitive strain injury (RSI)")
12022 (description
12023 "Workrave is a program that assists in the recovery and prevention of
12024repetitive strain injury (@dfn{RSI}). The program frequently alerts you to take
12025micro-pauses and rest breaks, and restricts you to your daily limit.")
12026 (home-page "https://www.workrave.org")
12027 (license license:gpl3+)))
12028
12029(define-public ghex
12030 (package
12031 (name "ghex")
12032 (version "46.2")
12033 (source (origin
12034 (method url-fetch)
12035 (uri (string-append "mirror://gnome/sources/ghex/"
12036 (version-major version) "/"
12037 "ghex-" version ".tar.xz"))
12038 (sha256
12039 (base32
12040 "0c8zcsng3925sw3bxffyj4lczna389k7rzv2p0h0v9wpcfipdwm8"))))
12041 (build-system meson-build-system)
12042 (arguments
12043 '(#:glib-or-gtk? #t
12044 #:phases
12045 (modify-phases %standard-phases
12046 (add-after 'unpack 'skip-gtk-update-icon-cache
12047 ;; Don't create 'icon-theme.cache'.
12048 (lambda _
12049 (substitute* "meson.build"
12050 (("gtk_update_icon_cache: true")
12051 "gtk_update_icon_cache: false")))))))
12052 (native-inputs
12053 (list desktop-file-utils ;for 'desktop-file-validate'
12054 gettext-minimal
12055 `(,glib "bin") ;for glib-compile-schemas
12056 gnome-common
12057 pkg-config
12058 yelp-tools))
12059 (inputs
12060 (list at-spi2-core
12061 gtk
12062 libadwaita))
12063 (synopsis "GNOME hexadecimal editor")
12064 (description "The GHex program can view and edit files in two ways:
12065hexadecimal or ASCII. It is useful for editing binary files in general.")
12066 (home-page "https://wiki.gnome.org/Apps/Ghex")
12067 (license license:gpl2)))
12068
12069(define-public libdazzle
12070 (package
12071 (name "libdazzle")
12072 (version "3.44.0")
12073 (source (origin
12074 (method url-fetch)
12075 (uri (string-append "mirror://gnome/sources/libdazzle/"
12076 (version-major+minor version) "/"
12077 "libdazzle-" version ".tar.xz"))
12078 (sha256
12079 (base32
12080 "1blfs61ifv4fywl0wbr1cm3rvmgrv06yiqajbnq0qs72nrgf9lrw"))))
12081 (build-system meson-build-system)
12082 (arguments
12083 `(#:phases
12084 (modify-phases %standard-phases
12085 (add-before 'check 'pre-check
12086 (lambda _
12087 ;; Tests require a running X server.
12088 (system "Xvfb :1 &")
12089 (setenv "DISPLAY" ":1"))))))
12090 (native-inputs
12091 (list `(,glib "bin") ; glib-compile-resources
12092 gobject-introspection
12093 pkg-config
12094 ;; For tests.
12095 xorg-server-for-tests
12096 vala))
12097 (inputs
12098 (list glib
12099 gtk+))
12100 (home-page "https://gitlab.gnome.org/GNOME/libdazzle")
12101 (synopsis "Companion library to GObject and Gtk+")
12102 (description "The libdazzle library is a companion library to GObject and
12103Gtk+. It provides various features that the authors wish were in the
12104underlying library but cannot for various reasons. In most cases, they are
12105wildly out of scope for those libraries. In other cases, they are not quite
12106generic enough to work for everyone.")
12107 (license license:gpl3+)))
12108
12109(define-public evolution
12110 (package
12111 (name "evolution")
12112 (version "3.60.0")
12113 (source (origin
12114 (method url-fetch)
12115 (uri (string-append "mirror://gnome/sources/evolution/"
12116 (version-major+minor version) "/"
12117 "evolution-" version ".tar.xz"))
12118 (sha256
12119 (base32
12120 "1rdm75a8w6xn1vil2npb69n6qdmwdab2fq7y708plflk8j579v8g"))))
12121 (build-system cmake-build-system)
12122 (arguments
12123 (list
12124 #:tests? #f
12125 #:imported-modules `(,@%cmake-build-system-modules
12126 (guix build glib-or-gtk-build-system))
12127 #:modules '((guix build cmake-build-system)
12128 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
12129 (guix build utils))
12130 #:configure-flags
12131 #~(list "-DENABLE_PST_IMPORT=OFF") ;libpst is not packaged
12132 #:phases
12133 #~(modify-phases %standard-phases
12134 ;; The build system attempts to install user interface modules to
12135 ;; the output directory of the "evolution-data-server" package;
12136 ;; patch it to install to the same location under #$output prefix.
12137 (add-after 'unpack 'patch-ui-module-dir
12138 (lambda* (#:key outputs #:allow-other-keys)
12139 (substitute* "src/modules/alarm-notify/CMakeLists.txt"
12140 (("\\$\\{edsuimoduledir\\}")
12141 (string-append
12142 #$output "/lib/evolution-data-server/ui-modules")))
12143 (substitute* "src/modules/rss/camel/CMakeLists.txt"
12144 (("\\$\\{camel_providerdir}")
12145 (string-append
12146 #$output "/lib/evolution-data-server/camel-providers")))))
12147 (add-after 'install 'glib-or-gtk-compile-schemas
12148 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
12149 (add-after 'install 'glib-or-gtk-wrap
12150 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
12151 (native-inputs
12152 (list `(,glib "bin") ;glib-mkenums
12153 intltool
12154 itstool
12155 pkg-config))
12156 (inputs
12157 (list cmark
12158 enchant
12159 evolution-data-server ;must be the same version
12160 gcr-3
12161 gsettings-desktop-schemas
12162 gnome-autoar
12163 gnome-desktop
12164 gspell
12165 highlight
12166 libcanberra
12167 libgweather
12168 libnotify
12169 libsoup
12170 nss
12171 openldap
12172 webkitgtk-for-gtk3
12173 ytnef))
12174 (home-page "https://gitlab.gnome.org/GNOME/evolution")
12175 (synopsis "Manage your email, contacts and schedule")
12176 (description "Evolution is a personal information management application
12177that provides integrated mail, calendaring and address book
12178functionality.")
12179 ;; See COPYING for details.
12180 (license (list license:lgpl2.1 license:lgpl3 ; either one of these
12181 license:openldap2.8 ; addressbook/gui/component/openldap-extract.h
12182 license:lgpl2.1+)))) ; smime/lib/*
12183
12184(define-public gthumb
12185 (package
12186 (name "gthumb")
12187 (version "3.12.10")
12188 (source (origin
12189 (method url-fetch)
12190 (uri (string-append "mirror://gnome/sources/gthumb/"
12191 (version-major+minor version) "/"
12192 "gthumb-" version ".tar.xz"))
12193 (sha256
12194 (base32
12195 "0xac51s5bck5hqf8n2i2fi7l236rwcd9awqvk3bvavydad3388ij"))))
12196 (build-system meson-build-system)
12197 (arguments
12198 (list
12199 #:glib-or-gtk? #t
12200 #:configure-flags
12201 ;; Ensure the RUNPATH contains all installed library locations.
12202 #~(list (string-append "-Dc_link_args=-Wl,-rpath=" #$output
12203 "/lib/gthumb/extensions")
12204 (string-append "-Dcpp_link_args=-Wl,-rpath=" #$output
12205 "/lib/gthumb/extensions"))))
12206 (native-inputs
12207 (list desktop-file-utils ; for update-desktop-database
12208 `(,glib "bin") ; for glib-compile-resources
12209 `(,gtk+ "bin") ; for gtk-update-icon-cache
12210 intltool
12211 itstool
12212 pkg-config
12213 python))
12214 (inputs
12215 (list colord
12216 exiv2
12217 gsettings-desktop-schemas
12218 gstreamer
12219 gtk+
12220 libheif
12221 libjpeg-turbo
12222 libraw
12223 (librsvg-for-system)
12224 libtiff
12225 libwebp))
12226 (home-page "https://gitlab.gnome.org/GNOME/gthumb")
12227 (synopsis "GNOME image viewer and browser")
12228 (description "GThumb is an image viewer, browser, organizer, editor and
12229advanced image management tool")
12230 (license license:gpl2+)))
12231
12232(define-public terminator
12233 (package
12234 (name "terminator")
12235 (version "2.1.6")
12236 (source
12237 (origin
12238 (method url-fetch)
12239 (uri (string-append "https://github.com/gnome-terminator/terminator/"
12240 "releases/download/v" version "/"
12241 name "-" version ".tar.gz"))
12242 (sha256
12243 (base32 "1yncj0jnvfingyrkrb0in0rx12r3g0sakbr26fzhw8r16cb4d7v4"))))
12244 (build-system pyproject-build-system)
12245 (arguments
12246 (list
12247 #:test-flags
12248 #~(list
12249 "--ignore=terminatorlib/"
12250 ;; Some of these tests fail due to dbus-python and python-notify.
12251 "--ignore=tests/test_prefseditor_keybindings.py")
12252 #:imported-modules `((guix build glib-or-gtk-build-system)
12253 ,@%pyproject-build-system-modules)
12254 #:modules `((guix build pyproject-build-system)
12255 ((guix build glib-or-gtk-build-system)
12256 #:prefix glib-or-gtk:)
12257 (guix build utils))
12258 #:phases
12259 #~(modify-phases %standard-phases
12260 (add-after 'unpack 'handle-dbus-python
12261 (lambda _
12262 ;; python-dbus cannot be found but it's really there. See
12263 ;; https://github.com/SpotlightKid/jack-select/issues/2
12264 (substitute* "setup.py"
12265 (("'dbus-python',")
12266 ""))))
12267 (replace 'wrap
12268 (lambda* (#:key inputs outputs #:allow-other-keys)
12269 (wrap-program (string-append #$output "/bin/terminator")
12270 `("GUIX_PYTHONPATH" =
12271 (,(getenv "GUIX_PYTHONPATH")
12272 ,(site-packages inputs outputs)))
12273 `("GI_TYPELIB_PATH" =
12274 (,(getenv "GI_TYPELIB_PATH"))))))
12275 (add-after 'wrap 'glib-or-gtk-wrap
12276 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
12277 (native-inputs
12278 (list gettext-minimal
12279 `(,glib "bin") ;for glib-compile-resources
12280 gobject-introspection
12281 intltool
12282 pkg-config
12283 python-psutil
12284 python-pytest))
12285 (inputs
12286 (list bash-minimal ;for wrap-program
12287 cairo
12288 dbus-glib
12289 gsettings-desktop-schemas
12290 gtk+
12291 python-wrapper
12292 python-dbus
12293 python-notify2
12294 python-pycairo
12295 python-pygobject
12296 vte/gtk+-3))
12297 (propagated-inputs (list python-configobj))
12298 (home-page "https://gnome-terminator.org/")
12299 (synopsis "Store and run multiple GNOME terminals in one window")
12300 (description
12301 "Terminator allows you to run multiple GNOME terminals in a grid and
12302tabs, and it supports drag and drop re-ordering of terminals.")
12303 (license license:gpl2)))
12304
12305(define-public libhandy
12306 (package
12307 (name "libhandy")
12308 (version "1.8.3")
12309 (source
12310 (origin
12311 (method git-fetch)
12312 (uri (git-reference
12313 (url "https://gitlab.gnome.org/GNOME/libhandy")
12314 (commit version)))
12315 (file-name (git-file-name name version))
12316 (sha256
12317 (base32 "0p80py59mg9hjk2pzp0595cv64ankaqdvqsxlhrsgzsfx940r9nc"))))
12318 (build-system meson-build-system)
12319 (arguments
12320 (list #:configure-flags
12321 #~(list "-Dglade_catalog=enabled"
12322 ;; XXX: Generating the documentation fails because the
12323 ;; libhandy.devhelp2 document cannot be created. This seems
12324 ;; to be caused by a problem during the XSL transformation.
12325 "-Dgtk_doc=false")
12326 #:phases
12327 #~(modify-phases %standard-phases
12328 (add-before 'check 'pre-check
12329 (lambda _
12330 ;; Tests require a running X server.
12331 (system "Xvfb :1 &")
12332 (setenv "DISPLAY" ":1"))))))
12333 (inputs (list gtk+ glade3))
12334 (native-inputs
12335 (list gobject-introspection ; for g-ir-scanner
12336 `(,glib "bin")
12337 vala
12338 libxml2
12339 libxslt
12340 docbook-xsl
12341 docbook-xml-4.3
12342 gtk-doc/stable
12343 pkg-config
12344 gettext-minimal
12345
12346 ;; Test suite dependencies.
12347 hicolor-icon-theme
12348 xorg-server-for-tests))
12349 (home-page "https://gitlab.gnome.org/GNOME/libhandy/")
12350 (synopsis "Library full of GTK+ widgets for mobile phones")
12351 (description "The aim of the handy library is to help with developing user
12352interfaces for mobile devices using GTK+. It provides responsive GTK+ widgets
12353for usage on small and big screens.")
12354 (license license:lgpl2.1+)))
12355
12356(define-public libgit2-glib
12357 (package
12358 (name "libgit2-glib")
12359 (version "1.2.1")
12360 (source (origin
12361 (method url-fetch)
12362 (uri (string-append "mirror://gnome/sources/" name "/"
12363 (version-major+minor version) "/"
12364 name "-" version ".tar.xz"))
12365 (sha256
12366 (base32
12367 "0pvqp9r6fj32q6gia9kac6iwrz4x0iwrspy7a63vxcq2j1vklhlp"))))
12368 (build-system meson-build-system)
12369 (native-inputs
12370 (list `(,glib "bin") ;; For glib-mkenums
12371 gobject-introspection
12372 pkg-config
12373 python-pygobject
12374 python-wrapper
12375 vala))
12376 (inputs
12377 (list libssh2))
12378 (propagated-inputs
12379 (list glib libgit2)) ;; In Requires of libgit2-glib.pc.
12380 (synopsis "GLib wrapper around the libgit2 Git access library")
12381 (description "libgit2-glib is a GLib wrapper library around the libgit2 Git
12382access library. It only implements the core plumbing functions, not really the
12383higher level porcelain stuff.")
12384 (home-page "https://wiki.gnome.org/Projects/Libgit2-glib")
12385 (license license:gpl2+)))
12386
12387(define-public gitg
12388 (package
12389 (name "gitg")
12390 (version "50")
12391 (source (origin
12392 (method url-fetch)
12393 (uri (string-append "mirror://gnome/sources/" name "/"
12394 (version-major version) "/"
12395 name "-" version ".tar.xz"))
12396 (sha256
12397 (base32
12398 "0m41bac4x4nn3fiimik224filgnbrrinw0xhp654xk90d6l1c4ik"))))
12399 (build-system meson-build-system)
12400 (arguments
12401 (list
12402 #:glib-or-gtk? #t
12403 #:build-type "release" ; don't look at -Wformat…
12404 #:phases
12405 #~(modify-phases %standard-phases
12406 (add-after 'unpack 'disable-post-install-partially
12407 (lambda _
12408 (substitute* "meson_post_install.py"
12409 (("'python'") ; there are no python sources to compile
12410 (string-append "'" (which "true") "'"))
12411 (("gtk-update-icon-cache") (which "true")))))
12412 (add-after 'unpack 'patch-sources
12413 (lambda _
12414 ;; TODO: Remove when updating to next release (see:
12415 ;; <https://gitlab.gnome.org/GNOME/gitg/-/merge_requests/410>).
12416 (substitute* "gitg/gitg-result-dialog.vala"
12417 (("\\\\u001b") "\x1b"))))
12418 (add-after 'unpack 'fix-test-sources
12419 (lambda _
12420 (substitute* "tests/libgitg/test-commit.vala"
12421 (("/bin/bash") (which "bash")))))
12422 (add-after 'glib-or-gtk-wrap 'wrap-typelib
12423 (lambda* (#:key outputs #:allow-other-keys)
12424 (let ((prog (string-append #$output "/bin/gitg")))
12425 (wrap-program prog
12426 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
12427 (inputs
12428 (list bash-minimal
12429 glib
12430 gpgme
12431 gsettings-desktop-schemas
12432 gspell
12433 gtk+
12434 gtksourceview-4
12435 json-glib
12436 libdazzle
12437 libgee
12438 libgit2-glib
12439 libhandy
12440 libpeas
12441 libsecret
12442 libxml2))
12443 (native-inputs
12444 (list `(,glib "bin")
12445 `(,gtk+ "bin")
12446 gobject-introspection
12447 intltool
12448 pkg-config
12449 python
12450 vala))
12451 (synopsis "Graphical user interface for git")
12452 (description
12453 "gitg is a graphical user interface for git. It aims at being a small,
12454fast and convenient tool to visualize the history of git repositories.
12455Besides visualization, gitg also provides several utilities to manage your
12456repository and commit your work.")
12457 (home-page "https://wiki.gnome.org/Apps/Gitg")
12458 (license license:gpl2+)))
12459
12460(define-public gamin
12461 (package
12462 (name "gamin")
12463 (version "0.1.10")
12464 (source (origin
12465 (method url-fetch)
12466 (uri (string-append "mirror://gnome/sources/" name "/"
12467 (version-major+minor version) "/"
12468 name "-" version ".tar.bz2"))
12469 (sha256
12470 (base32
12471 "02n1zr9y8q9lyczhcz0nxar1vmf8p2mmbw8kq0v43wg21jr4i6d5"))))
12472 (build-system gnu-build-system)
12473 (arguments
12474 `(#:configure-flags `(,(string-append
12475 "CFLAGS=-g -O2"
12476 " -Wno-error=implicit-function-declaration"
12477 " -Wno-error=return-mismatch"))
12478 #:phases
12479 (modify-phases %standard-phases
12480 ;; The 'config.sub' is too old to recognise aarch64.
12481 ,@(if (or (target-aarch64?) (target-riscv64?))
12482 `((add-after 'unpack 'replace-config.sub
12483 (lambda _
12484 (delete-file "config.sub")
12485 (symlink (which "config.sub") "config.sub"))))
12486 '())
12487 (add-after 'unpack 'remove-deprecated-macro
12488 (lambda _
12489 (substitute* '("server/gam_node.c"
12490 "server/gam_subscription.h"
12491 "server/gam_node.h"
12492 "server/gam_subscription.c")
12493 (("G_CONST_RETURN") "const"))
12494 #t))
12495 ;; The configure script runs a test program unconditionally,
12496 ;; without an option to manually set the test result.
12497 ;; Override this test anyway.
12498 ,@(if (%current-target-system)
12499 `((add-after 'bootstrap 'set-have-abstract-sockets
12500 (lambda _
12501 (define in-abstract-sockets-test? #f)
12502 (substitute* "configure"
12503 (("^#### Abstract sockets\n$")
12504 (set! in-abstract-sockets-test? #t)
12505 "#### Abstract sockets\n")
12506 (("^have_abstract_sockets=no\n$")
12507 (set! in-abstract-sockets-test? #f)
12508 ;; ‘Abstract sockets’ appear to be Linux-only.
12509 (string-append "have_abstract_sockets="
12510 ,(if (target-linux?)
12511 "yes"
12512 "no")
12513 "\nif false; then\nif false; then :\n"))
12514 (("^(.*\n)$" line)
12515 (if in-abstract-sockets-test?
12516 "" ; delete
12517 line))))))
12518 '()))))
12519 (inputs
12520 (list glib))
12521 (native-inputs
12522 `(("pkg-config" ,pkg-config)
12523 ,@(if (or (target-aarch64?) (target-riscv64?))
12524 `(("config" ,config))
12525 '())))
12526 (home-page "https://people.gnome.org/~veillard/gamin/")
12527 (synopsis "File alteration monitor")
12528 (description
12529 "Gamin is a file and directory monitoring system defined to be a subset
12530of the FAM (File Alteration Monitor) system. This is a service provided by a
12531library which detects when a file or a directory has been modified.")
12532 (license license:gpl2+)))
12533
12534(define-deprecated/public-alias gnome-mahjongg
12535 (@ (gnu packages gnome-circle) gnome-mahjongg))
12536
12537(define-public gnome-themes-extra
12538 (package
12539 (name "gnome-themes-extra")
12540 (version "3.28")
12541 (source
12542 (origin
12543 (method url-fetch)
12544 (uri (string-append "mirror://gnome/sources/" name "/"
12545 (version-major+minor version) "/" name "-"
12546 version ".tar.xz"))
12547 (sha256
12548 (base32
12549 "06aqg9asq2vqi9wr29bs4v8z2bf4manhbhfghf4nvw01y2zs0jvw"))))
12550 (build-system gnu-build-system)
12551 (arguments
12552 '(#:configure-flags
12553 ;; Don't create 'icon-theme.cache'.
12554 (let* ((coreutils (assoc-ref %build-inputs "coreutils"))
12555 (true (string-append coreutils "/bin/true")))
12556 (list (string-append "GTK_UPDATE_ICON_CACHE=" true)))))
12557 (native-inputs
12558 `(("glib:bin" ,glib "bin")
12559 ("intltool" ,intltool)
12560 ("pkg-config" ,pkg-config)))
12561 (inputs
12562 `(("glib" ,glib)
12563 ("gtk+" ,gtk+)
12564 ("gtk+-2" ,gtk+-2)
12565 ("librsvg" ,(librsvg-for-system))
12566 ("libxml2" ,libxml2)))
12567 (home-page "https://gitlab.gnome.org/GNOME/gnome-themes-extra")
12568 (synopsis "GNOME Extra Themes")
12569 (description "This package provides themes and related elements that don't
12570really fit in other upstream packages. It offers legacy support for GTK+ 2
12571versions of Adwaita, Adwaita-dark and HighContrast themes. It also provides
12572index files needed for Adwaita to be used outside of GNOME.")
12573 (license license:lgpl2.1+)))
12574
12575(define-public gnote
12576 (package
12577 (name "gnote")
12578 (version "48.2")
12579 (source
12580 (origin
12581 (method url-fetch)
12582 (uri (string-append "mirror://gnome/sources/" name "/"
12583 (version-major version) "/"
12584 "gnote-" version ".tar.xz"))
12585 (sha256
12586 (base32 "10f74mkqw0la6vyswj4p3qf988r1ai29l4gfx2wryn76knhni09w"))))
12587 (build-system meson-build-system)
12588 (arguments
12589 `(#:glib-or-gtk? #t
12590 #:phases (modify-phases %standard-phases
12591 (add-after 'unpack 'skip-gtk-update-icon-cache
12592 ;; Don't create 'icon-theme.cache'.
12593 (lambda _
12594 (substitute* "meson.build"
12595 (("gtk_update_icon_cache: true")
12596 "gtk_update_icon_cache: false")))))))
12597 (native-inputs
12598 (list desktop-file-utils
12599 gettext-minimal
12600 `(,glib "bin")
12601 gobject-introspection
12602 itstool
12603 pkg-config))
12604 (inputs
12605 (list glibmm
12606 gsettings-desktop-schemas
12607 gtk
12608 gtkmm
12609 libadwaita
12610 libsecret
12611 `(,util-linux "lib")
12612 libxml2
12613 libxslt))
12614 (synopsis "Note-taking application for the GNOME desktop")
12615 (description "Gnote is a note-taking application written for the GNOME
12616desktop environment.")
12617 (home-page "https://wiki.gnome.org/Apps/Gnote")
12618 (license license:gpl3+)))
12619
12620(define-deprecated/public-alias polari
12621 (@ (gnu packages gnome-circle) polari))
12622
12623(define-public gnome-boxes
12624 (package
12625 (name "gnome-boxes")
12626 (version "50.0")
12627 (source
12628 (origin
12629 (method url-fetch)
12630 (uri (string-append "mirror://gnome/sources/gnome-boxes/"
12631 (version-major version) "/"
12632 "gnome-boxes-" version ".tar.xz"))
12633 (sha256
12634 (base32 "0rrdcw9lll6ix0k259znhf0xq59ym8s5l7wzm5n9940hiphmsspx"))))
12635 (outputs '("out" "debug"))
12636 (build-system meson-build-system)
12637 (arguments
12638 (list #:glib-or-gtk? #t
12639 #:phases #~(modify-phases %standard-phases
12640 (add-after 'unpack 'disable-gtk-update-icon-cache
12641 (lambda _
12642 (substitute* "meson.build"
12643 (("gtk_update_icon_cache: true")
12644 "gtk_update_icon_cache: false"))))
12645 (add-before 'configure 'set-qemu-file-name
12646 (lambda* (#:key inputs #:allow-other-keys)
12647 (substitute* "src/installed-media.vala"
12648 (("qemu-img")
12649 (search-input-file inputs
12650 "/bin/qemu-img"))))))))
12651 (native-inputs
12652 (list desktop-file-utils ;for update-desktop-database
12653 gettext-minimal
12654 `(,glib "bin") ;for glib-compile-resources
12655 itstool
12656 pkg-config
12657 python-minimal
12658 vala))
12659 (inputs
12660 (list glib-networking ;for TLS support
12661 gsettings-desktop-schemas
12662 gtk
12663 gtksourceview-4
12664 json-glib
12665 libarchive
12666 libgudev
12667 libhandy
12668 libosinfo
12669 libportal
12670 libsecret
12671 libsoup
12672 libusb
12673 libvirt
12674 libvirt-glib
12675 libxml2
12676 qemu-minimal ;for qemu-img
12677 sparql-query
12678 tinysparql
12679 webkitgtk-for-gtk3))
12680 (propagated-inputs
12681 ;; Propagating spice-gtk is necessary so that the gnome-desktop-service
12682 ;; type configures the polkit actions necessary for the USB redirection
12683 ;; feature to work when gnome-boxes added as a extra GNOME package.
12684 (list spice-gtk))
12685 (home-page "https://wiki.gnome.org/Apps/Boxes")
12686 (synopsis "View, access, and manage remote and virtual systems")
12687 (description "GNOME Boxes is a simple application to view, access, and
12688manage remote and virtual systems. Note that this application requires the
12689@code{libvirt} and @code{virtlog} daemons to run. Use the command
12690@command{info '(guix) Virtualization Services'} to learn how to configure
12691these services on the Guix System.
12692
12693To make it possible to redirect USB devices as a non-privileged user, some
12694extra configuration is necessary: if you use the
12695@code{gnome-desktop-service-type}, you should add the @code{gnome-boxes}
12696package to the @code{extra-packages} field of the
12697@code{gnome-desktop-configuration}, for example:
12698@lisp
12699(service gnome-desktop-service-type
12700 (gnome-desktop-configuration
12701 (extra-packages (list gnome-boxes gnome-essential-extras))))
12702@end lisp
12703If you do @emph{not} use the @code{gnome-desktop-service-type}, you will need
12704manually extend the @code{polkit-service-type} with the @code{spice-gtk}
12705package, as well as configure the
12706@file{libexec/spice-client-glib-usb-acl-helper} executable of @code{spice-gtk}
12707as setuid, to make it possible to redirect USB devices as a non-privileged
12708user.")
12709 (license (list
12710 ;; For data/icons/empty-boxes.png.
12711 license:cc-by2.0
12712 ;; For all others.
12713 license:lgpl2.0+))))
12714
12715(define-public geary
12716 (package
12717 (name "geary")
12718 (version "44.1")
12719 (source (origin
12720 (method git-fetch)
12721 (uri (git-reference
12722 (url "https://gitlab.gnome.org/GNOME/geary.git")
12723 (commit version)))
12724 (file-name (git-file-name name version))
12725 (sha256
12726 (base32
12727 "1cx1jfaxsbkxm8774wf8n7ss2n73bzgk4yi2f9i3ab698ygh0h68"))))
12728 (build-system meson-build-system)
12729 (arguments
12730 (list #:glib-or-gtk? #t
12731 #:configure-flags
12732 #~(list "-Dprofile=release")
12733 #:phases
12734 #~(modify-phases %standard-phases
12735 (add-after 'unpack 'skip-gtk-update-icon-cache
12736 ;; Don't create 'icon-theme.cache'.
12737 (lambda _
12738 (substitute* "meson.build"
12739 (("gtk_update_icon_cache: true")
12740 "gtk_update_icon_cache: false"))))
12741 (add-before 'check 'setup-home
12742 (lambda _
12743 ;; Tests require a writable HOME.
12744 (setenv "HOME" (getcwd))))
12745 (add-before 'check 'setup-xvfb
12746 (lambda _
12747 (system "Xvfb :1 &")
12748 (setenv "DISPLAY" ":1"))))))
12749 (inputs
12750 (list enchant
12751 folks
12752 gcr-3
12753 glib
12754 gmime
12755 gnome-online-accounts
12756 gsettings-desktop-schemas
12757 gspell
12758 gsound
12759 gtk+
12760 iso-codes/pinned
12761 json-glib
12762 libcanberra
12763 libgee
12764 libhandy
12765 libpeas
12766 libsecret
12767 libstemmer
12768 libunwind
12769 sqlite
12770 webkitgtk-for-gtk3
12771 ytnef))
12772 (native-inputs
12773 (list appstream-glib
12774 cmake-minimal
12775 desktop-file-utils
12776 gettext-minimal
12777 `(,glib "bin")
12778 gnutls ; for certtool
12779 gobject-introspection
12780 itstool
12781 libarchive
12782 (libc-utf8-locales-for-target)
12783 libxml2
12784 pkg-config
12785 python-minimal
12786 vala
12787 xorg-server-for-tests))
12788 (synopsis "GNOME email application built around conversations")
12789 (description
12790 "Geary collects related messages together into conversations,
12791making it easy to find and follow your discussions. Full-text and keyword
12792search makes it easy to find the email you are looking for. Geary's
12793full-featured composer lets you send rich, styled text with images, links, and
12794lists, but also send lightweight, easy to read text messages. Geary
12795automatically picks up your existing GNOME Online Accounts, and adding more is
12796easy. Geary has a clean, fast, modern interface that works like you want it
12797to.")
12798 (home-page "https://wiki.gnome.org/Apps/Geary")
12799 (license (list
12800 ;; geary
12801 license:lgpl2.1+
12802 ;; icons
12803 license:cc-by3.0
12804 license:cc-by-sa3.0
12805 license:public-domain
12806 ;; snowball
12807 license:bsd-2))))
12808
12809(define-public glabels
12810 (package
12811 (name "glabels")
12812 (version "3.4.1")
12813 (source
12814 (origin
12815 (method url-fetch)
12816 (uri (string-append "mirror://gnome/sources/" name "/"
12817 (version-major+minor version) "/"
12818 "glabels-" version ".tar.xz"))
12819 (sha256
12820 (base32 "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q"))))
12821 (build-system glib-or-gtk-build-system)
12822 (native-inputs
12823 `(("gettext" ,gettext-minimal)
12824 ("glib:bin" ,glib "bin")
12825 ("intltool" ,intltool)
12826 ("itstool" ,itstool)
12827 ("pkg-config" ,pkg-config)))
12828 (inputs
12829 (list gtk+ (librsvg-for-system) libxml2))
12830 (arguments
12831 `(#:configure-flags
12832 '("CFLAGS=-fcommon -Wno-error=incompatible-pointer-types")))
12833 (home-page "https://glabels.org/")
12834 (synopsis "Program for creating labels and business cards")
12835 (description
12836 "gLabels is a program for creating labels and business cards. It is
12837designed to work with various laser/ink-jet peel-off label and business
12838card sheets that you’ll find at most office supply stores.")
12839 (license license:gpl3+)))
12840
12841(define-public gnome-latex
12842 (package
12843 (name "gnome-latex")
12844 (version "3.44.0")
12845 (source
12846 (origin
12847 (method url-fetch)
12848 (uri (string-append "mirror://gnome/sources/" name "/"
12849 (version-major+minor version) "/"
12850 "gnome-latex-" version ".tar.xz"))
12851 (sha256
12852 (base32 "0i77m431ilbaprcwcnnzfckr1g9bfc03lslnqw0yvir8pm057gc8"))))
12853 (build-system glib-or-gtk-build-system)
12854 (native-inputs
12855 (list gettext-minimal
12856 `(,glib "bin")
12857 gobject-introspection
12858 gtk-doc/stable
12859 itstool
12860 pkg-config
12861 vala))
12862 (inputs
12863 (list dconf
12864 glib
12865 gspell
12866 libgee
12867 tepl
12868 uchardet))
12869 (arguments
12870 (list
12871 #:configure-flags
12872 #~(list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types")))
12873 (home-page "https://wiki.gnome.org/Apps/GNOME-LaTeX")
12874 (synopsis "LaTeX editor for the GNOME desktop")
12875 (description
12876 "GNOME LaTeX is a LaTeX editor for the GNOME desktop. It has features
12877such as build tools, completion of LaTeX commands, structure navigation,
12878symbol tables, document templates, project management, spell-checking, menus
12879and toolbars.")
12880 (license license:gpl3+)))
12881
12882(define-public setzer
12883 (package
12884 (name "setzer")
12885 (version "66")
12886 (source
12887 (origin
12888 (method git-fetch)
12889 (uri (git-reference
12890 (url "https://github.com/cvfosammmm/Setzer")
12891 (commit (string-append "v" version))))
12892 (file-name (git-file-name name version))
12893 (sha256
12894 (base32 "061zqim3ldhpvl1rc9mqkamf7gb7bsjaaanplsbls2k33w6k1b46"))))
12895 (build-system meson-build-system)
12896 (arguments
12897 (list
12898 #:glib-or-gtk? #t
12899 #:imported-modules (append %meson-build-system-modules
12900 %pyproject-build-system-modules)
12901 #:modules '((guix build meson-build-system)
12902 ((guix build pyproject-build-system) #:prefix py:)
12903 (guix build utils))
12904 #:phases
12905 #~(modify-phases %standard-phases
12906 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
12907 (lambda* (#:key inputs outputs #:allow-other-keys)
12908 (wrap-program (search-input-file outputs "bin/setzer")
12909 `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")
12910 ,(py:site-packages inputs outputs)))
12911 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
12912 (native-inputs
12913 (list gettext-minimal
12914 python))
12915 (inputs
12916 (list bash-minimal
12917 gobject-introspection
12918 gsettings-desktop-schemas
12919 gspell
12920 gtk
12921 gtksourceview
12922 libadwaita
12923 libportal
12924 pango
12925 poppler
12926 python-bibtexparser
12927 python-numpy
12928 python-pdfminer-six
12929 python-pexpect
12930 python-pillow
12931 python-pycairo
12932 python-pygobject
12933 python-pyxdg
12934 webkitgtk
12935 xdg-utils))
12936 (home-page "https://www.cvfosammmm.org/setzer/")
12937 (synopsis "LaTeX editor written in Python with GTK")
12938 (description
12939 "Setzer is a simple yet full-featured LaTeX editor written in Python with
12940GTK. It integrates well with the GNOME desktop environment.")
12941 (license license:gpl3+)))
12942
12943(define-deprecated/public-alias apostrophe
12944 (@ (gnu packages gnome-circle) apostrophe))
12945
12946(define-public libratbag
12947 (package
12948 (name "libratbag")
12949 (version "0.18")
12950 (source
12951 (origin
12952 (method git-fetch)
12953 (uri (git-reference
12954 (url "https://github.com/libratbag/libratbag")
12955 (commit (string-append "v" version))))
12956 (file-name (git-file-name name version))
12957 (sha256
12958 (base32 "09rmzbvh3q996r5vcdiirr56xzzwi5njay26hp50nyk1bq68l1bl"))))
12959 (build-system meson-build-system)
12960 (arguments
12961 `(#:configure-flags
12962 (list "-Dsystemd=false"
12963 "-Dlogind-provider=elogind"
12964 ,@(if (not (package? (this-package-native-input "valgrind")))
12965 `("-Dtests=false") ; Some tests still run.
12966 `()))
12967 #:phases
12968 (modify-phases %standard-phases
12969 (add-after 'install 'wrap
12970 (lambda* (#:key inputs outputs #:allow-other-keys)
12971 (let* ((out (assoc-ref outputs "out"))
12972 (site (string-append
12973 "/lib/python"
12974 ,(version-major+minor (package-version python))
12975 "/site-packages"))
12976 (evdev (string-append
12977 (assoc-ref inputs "python-evdev") site))
12978 (pygo (string-append
12979 (assoc-ref inputs "python-pygobject") site))
12980 (python-wrap
12981 `("GUIX_PYTHONPATH" = (,evdev ,pygo))))
12982 (wrap-program (string-append out "/bin/" "ratbagctl")
12983 python-wrap)
12984 #t))))))
12985 (native-inputs
12986 (append
12987 (list check pkg-config swig-4.0)
12988 (if (member (%current-system) (package-supported-systems valgrind/pinned))
12989 (list valgrind/pinned)
12990 '())))
12991 (inputs
12992 `(("bash" ,bash-minimal) ; for wrap-program
12993 ("glib" ,glib)
12994 ("json-glib" ,json-glib)
12995 ("libevdev" ,libevdev)
12996 ("libsystemd" ,elogind)
12997 ("libunistring" ,libunistring)
12998 ("python" ,python)
12999 ("python-evdev" ,python-evdev)
13000 ("python-pygobject" ,python-pygobject)
13001 ("udev" ,eudev)))
13002 (home-page "https://github.com/libratbag/libratbag")
13003 (synopsis "DBus daemon and utility for configuring gaming mice")
13004 (description "libratbag provides @command{ratbagd}, a DBus daemon to
13005configure input devices, mainly gaming mice. The daemon provides a generic
13006way to access the various features exposed by these mice and abstracts away
13007hardware-specific and kernel-specific quirks. There is also the
13008@command{ratbagctl} command line interface for configuring devices.
13009
13010libratbag currently supports devices from Logitech, Etekcity, GSkill, Roccat,
13011Steelseries.
13012
13013The ratbagd DBus service can be enabled by adding the following service to
13014your operating-system definition:
13015
13016 (simple-service 'ratbagd dbus-root-service-type (list libratbag))")
13017 (license license:expat)))
13018
13019(define-public piper
13020 (package
13021 (name "piper")
13022 (version "0.8")
13023 (source
13024 (origin (method git-fetch)
13025 (uri (git-reference
13026 (url "https://github.com/libratbag/piper")
13027 (commit version)))
13028 (sha256
13029 (base32 "1zkxrgvrg4bdqcj540lgdw35sj41n9cx8zrfhfd3f0y9m0piz7wg"))
13030 (file-name (git-file-name name version))))
13031 (build-system meson-build-system)
13032 (arguments
13033 (list
13034 #:imported-modules (append %meson-build-system-modules
13035 %pyproject-build-system-modules)
13036 #:modules `(((guix build pyproject-build-system) #:prefix py:)
13037 (guix build meson-build-system)
13038 (guix build utils))
13039 #:phases
13040 #~(modify-phases %standard-phases
13041 (add-after 'unpack 'dont-update-gtk-icon-cache
13042 (lambda _
13043 (substitute* "meson.build"
13044 (("gtk_update_icon_cache: true")
13045 "gtk_update_icon_cache: false"))))
13046 (add-after 'unpack 'do-not-require-flake8
13047 (lambda _
13048 (substitute* "meson.build"
13049 (("find_program\\('flake8'" all)
13050 (string-append all ", required : false")))))
13051 (add-after 'install 'wrap-python
13052 (assoc-ref py:%standard-phases 'wrap))
13053 (add-after 'wrap-python 'wrap
13054 (lambda* (#:key inputs outputs #:allow-other-keys)
13055 (wrap-script (search-input-file outputs "bin/piper")
13056 `("GI_TYPELIB_PATH" =
13057 (,(getenv "GI_TYPELIB_PATH")))
13058 `("GUIX_PYTHONPATH" =
13059 (,(getenv "GUIX_PYTHONPATH")
13060 ,(py:site-packages inputs outputs)))))))))
13061 (native-inputs
13062 (list appstream
13063 desktop-file-utils ;for update-desktop-database
13064 gettext-minimal
13065 `(,glib "bin")
13066 gobject-introspection
13067 pkg-config))
13068 (inputs
13069 (list bash-minimal
13070 adwaita-icon-theme
13071 gtk+
13072 guile-3.0 ;for wrap-script
13073 libratbag
13074 python
13075 python-evdev
13076 python-lxml
13077 python-pycairo
13078 python-pygobject))
13079 (home-page "https://github.com/libratbag/piper/")
13080 (synopsis "Configure bindings and LEDs on gaming mice")
13081 (description "Piper is a GTK+ application for configuring gaming mice with
13082onboard configuration for key bindings via libratbag. Piper requires
13083a @command{ratbagd} daemon running with root privileges. It can be run
13084manually as root, but is preferably configured as a DBus service that can
13085launch on demand. This can be configured by enabling the following service,
13086provided there is a DBus service present:
13087
13088 (simple-service 'ratbagd dbus-root-service-type (list libratbag))")
13089 (license license:gpl2)))
13090
13091(define libgxdp-origin
13092 ;; No releases nor tags. Use the latest commit that passes the project CI.
13093 (let ((commit "e6c11f2812cad0a43e847ec97bfc1c67bf50be52")
13094 (revision "0"))
13095 (origin
13096 (method git-fetch)
13097 (uri (git-reference
13098 (url "https://gitlab.gnome.org/GNOME/libgxdp")
13099 (commit commit)))
13100 (file-name (git-file-name "libgxdp"
13101 (git-version "0.0.0" revision commit)))
13102 (sha256
13103 (base32
13104 "1djfmwvcywbkpl9v8cs0b1hhylfd3fbrdk451vd16hwls46nf0v2")))))
13105
13106(define-public xdg-desktop-portal-gnome
13107 (package
13108 (name "xdg-desktop-portal-gnome")
13109 (version "49.0")
13110 (source (origin
13111 (method url-fetch)
13112 (uri (string-append "mirror://gnome/sources/" name "/"
13113 (version-major version) "/"
13114 name "-" version ".tar.xz"))
13115 (sha256
13116 (base32
13117 "1ln4bsdlrz7irbs3zagwmckl31nxfkvi6a4dq04iz4fbz36sy7a0"))
13118 (snippet
13119 #~(begin
13120 (use-modules (guix build utils))
13121 (delete-file-recursively "subprojects")))))
13122 (build-system meson-build-system)
13123 (arguments
13124 (list
13125 #:glib-or-gtk? #t
13126 #:configure-flags #~'("-Dsystemduserunitdir=no")
13127 #:phases
13128 #~(modify-phases %standard-phases
13129 (add-after 'unpack 'unpack-libgxdp
13130 (lambda* (#:key inputs #:allow-other-keys)
13131 (copy-recursively
13132 (dirname (search-input-file inputs
13133 "libgxdp.doap"))
13134 "subprojects/libgxdp"))))))
13135 (inputs
13136 (list gnome-desktop
13137 gsettings-desktop-schemas
13138 libadwaita
13139 libxml2
13140 libgxdp-origin
13141 xdg-desktop-portal
13142 xdg-desktop-portal-gtk))
13143 (native-inputs
13144 (list gettext-minimal
13145 `(,glib "bin")
13146 pkg-config))
13147 (home-page "https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome")
13148 (synopsis "GNOME backend for xdg-desktop-portal")
13149 (description "xdg-desktop-portal-gnome implements a back-end for
13150@command{xdg-desktop-portal} that uses gtk and some more GNOME APIs.")
13151 (license license:lgpl2.1+)))
13152
13153(define-public parlatype
13154 (package
13155 (name "parlatype")
13156 (version "4.3")
13157 (source
13158 (origin
13159 (method git-fetch)
13160 (uri (git-reference
13161 (url "https://github.com/gkarsay/parlatype")
13162 (commit (string-append "v" version))))
13163 (file-name (git-file-name name version))
13164 (sha256
13165 (base32 "167ij050d6qqkg088rv7a4ply0bzfjz0z0arpymrw2vs7bwxd77x"))))
13166 (build-system meson-build-system)
13167 (arguments
13168 (list
13169 #:glib-or-gtk? #t
13170 #:tests? #f ;require internet access
13171 #:configure-flags #~(list "-Dpocketsphinx=true")
13172 #:phases
13173 #~(modify-phases %standard-phases
13174 (add-after 'install 'wrap-parlatype
13175 ;; Add gstreamer plugin provided in this package to system's
13176 ;; plugins.
13177 (lambda _
13178 (let ((gst-plugin-path
13179 (string-append #$output "/lib/gstreamer-1.0/"
13180 ":"
13181 (getenv "GST_PLUGIN_SYSTEM_PATH"))))
13182 (wrap-program (string-append #$output "/bin/parlatype")
13183 `("GST_PLUGIN_SYSTEM_PATH" ":" = (,gst-plugin-path))))))
13184 (add-after 'glib-or-gtk-wrap 'wrap-gdk-pixbuf
13185 ;; This phase is necessary for Parlatype to load SVG icons.
13186 (lambda _
13187 (let ((pixbuf-module-file (getenv "GDK_PIXBUF_MODULE_FILE")))
13188 (wrap-program (string-append #$output "/bin/parlatype")
13189 `("GDK_PIXBUF_MODULE_FILE" = (,pixbuf-module-file)))))))))
13190 (native-inputs
13191 (list appstream-glib
13192 desktop-file-utils ;for desktop-file-validate
13193 gettext-minimal
13194 `(,glib "bin") ;for glib-compile-resources
13195 `(,gtk "bin") ;for gtk-update-icon-cache
13196 pkg-config
13197 yelp-tools))
13198 (inputs
13199 (list bash-minimal
13200 gst-plugins-base
13201 gst-plugins-good
13202 gstreamer
13203 gtk
13204 iso-codes/pinned
13205 libadwaita
13206 pocketsphinx
13207 pulseaudio))
13208 (home-page "https://www.parlatype.org")
13209 (synopsis "GNOME audio player for transcription")
13210 (description "Parlatype is an audio player for the GNOME desktop
13211environment. Its main purpose is the manual transcription of spoken
13212audio files.")
13213 (license license:gpl3+)))
13214
13215(define-public jsonrpc-glib
13216 (package
13217 (name "jsonrpc-glib")
13218 (version "3.44.2")
13219 (source (origin
13220 (method url-fetch)
13221 (uri (string-append "mirror://gnome/sources/" name "/"
13222 (version-major+minor version) "/"
13223 name "-" version ".tar.xz"))
13224 (sha256
13225 (base32
13226 "15kkwyp58hfjra1pfba0lm006fyw801xi9c2nil38kriw6v9cm4n"))))
13227 (build-system meson-build-system)
13228 (arguments
13229 (list
13230 #:configure-flags #~(list "-Denable_gtk_doc=true")))
13231 (inputs
13232 (list glib
13233 json-glib))
13234 (native-inputs
13235 (list gi-docgen
13236 `(,glib "bin") ; for glib-genmarshal, etc.
13237 gobject-introspection
13238 pkg-config
13239 vala))
13240 (home-page "https://gitlab.gnome.org/GNOME/jsonrpc-glib")
13241 (synopsis "JSON-RPC library for GLib")
13242 (description "Jsonrpc-GLib is a library to communicate with JSON-RPC based
13243peers in either a synchronous or asynchronous fashion. It also allows
13244communicating using the GVariant serialization format instead of JSON when
13245both peers support it. You might want that when communicating on a single
13246host to avoid parser overhead and memory-allocator fragmentation.")
13247 (license license:lgpl2.1+)))
13248
13249(define-public gmobile
13250 (package
13251 (name "gmobile")
13252 (version "0.2.1")
13253 (source
13254 (origin
13255 (method git-fetch)
13256 (uri (git-reference
13257 (url "https://gitlab.gnome.org/World/Phosh/gmobile")
13258 (commit (string-append "v" version))))
13259 (file-name (git-file-name "gmobile" version))
13260 (sha256
13261 (base32
13262 "1cnm4vkvgrkxf1nnghs5zc13d6f46h4c57vn54rlcy6q7qjkdr74"))))
13263 (build-system meson-build-system)
13264 (native-inputs
13265 (list `(,glib "bin") ; for glib-compile-resources
13266 gobject-introspection
13267 pkg-config))
13268 (propagated-inputs
13269 (list glib json-glib))
13270 (synopsis "Functions useful in mobile related, glib based projects")
13271 (description "This package provides functions for mobiles.")
13272 (home-page "https://gitlab.gnome.org/World/Phosh/gmobile")
13273 (license license:lgpl2.1+)))
13274
13275(define-public feedbackd
13276 (package
13277 (name "feedbackd")
13278 (version "0.6.0")
13279 (source (origin
13280 (method git-fetch)
13281 (uri (git-reference
13282 (url "https://source.puri.sm/Librem5/feedbackd.git")
13283 (commit (string-append "v" version))))
13284 (file-name (git-file-name name version))
13285 (sha256
13286 (base32
13287 "0gfh965rddmg9glyh0gzkzxi27c7kfdakwrkycc7hg7s68p03xgh"))
13288 (snippet
13289 #~(begin
13290 (use-modules (guix build utils))
13291 (delete-file-recursively "subprojects")))))
13292 (build-system meson-build-system)
13293 (arguments
13294 (list #:phases
13295 #~(modify-phases %standard-phases
13296 (add-after 'unpack 'fix-meson
13297 (lambda _
13298 (substitute* "meson.build"
13299 (("udev.get_variable\\('udevdir'\\)")
13300 "prefix / 'lib' / 'udev'")))))))
13301 (native-inputs
13302 (list `(,glib "bin") gobject-introspection pkg-config umockdev vala))
13303 (inputs
13304 (list dbus gmobile gsound json-glib libgudev))
13305 (propagated-inputs
13306 (list glib)) ; in Requires of libfeedback-0.0.pc
13307 (synopsis "Haptic/visual/audio feedback via DBus")
13308 (description "Feedbackd provides a DBus daemon to act on events to provide
13309haptic, visual and audio feedback. It offers the libfeedbackd library and
13310GObject introspection bindings.")
13311 (home-page "https://source.puri.sm/Librem5/feedbackd")
13312 (license (list license:lgpl2.1+ ; libfeedbackd
13313 license:lgpl3+)))) ; the rest
13314
13315(define-public sysprof
13316 (package
13317 (name "sysprof")
13318 (version "49.0")
13319 (source
13320 (origin
13321 (method url-fetch)
13322 (uri (string-append "mirror://gnome/sources/sysprof/"
13323 (version-major version) "/"
13324 "sysprof-" version ".tar.xz"))
13325 (sha256
13326 (base32 "0y18535lymqv684n8aa2v601d61v6aj8f84690cq8p3q6yb1617z"))))
13327 (build-system meson-build-system)
13328 (arguments
13329 (list
13330 #:configure-flags
13331 #~(list (string-append "-Dsystemdunitdir=" #$output "/share/systemd")
13332 "-Dhelp=true")
13333 #:phases
13334 #~(modify-phases %standard-phases
13335 (add-after 'unpack 'disable-post-install
13336 (lambda _
13337 (substitute* "meson.build"
13338 (("gtk_update_icon_cache: true")
13339 "gtk_update_icon_cache: false")
13340 (("update_desktop_database: true")
13341 "update_desktop_database: false")))))))
13342 (propagated-inputs
13343 ;; Listed in sysprof-4.pc or sysprof-ui-5.pc
13344 (list glib json-glib libadwaita libdex polkit))
13345 (inputs
13346 (list elfutils
13347 glib
13348 gtk
13349 json-glib
13350 libadwaita
13351 libdazzle
13352 libdex
13353 libpanel
13354 libunwind
13355 polkit))
13356 (native-inputs
13357 (list gettext-minimal
13358 `(,glib "bin") ;for gdbus-codegen, etc.
13359 itstool
13360 libxml2
13361 pkg-config))
13362 ;; This home page is so woefully out of date as to be essentially useless.
13363 ;; (home-page "http://www.sysprof.com")
13364 (home-page "https://wiki.gnome.org/Apps/Sysprof")
13365 (synopsis "System-wide performance profiler for GNU/Linux")
13366 (description
13367 "Sysprof performs detailed, accurate, and fast CPU profiling of an entire
13368GNU/Linux system including the kernel and all user-space applications. This
13369helps find the function(s) in which a program spends most of its time.
13370
13371It uses the kernel's built-in @code{ptrace} feature and handles shared
13372libraries. Applications do not need to be recompiled--or even restarted.")
13373 (license license:gpl3+)))
13374
13375(define-public libspelling
13376 (package
13377 (name "libspelling")
13378 (version "0.4.5")
13379 (source (origin
13380 (method git-fetch)
13381 (uri (git-reference
13382 (url "https://gitlab.gnome.org/GNOME/libspelling")
13383 (commit version)))
13384 (file-name (git-file-name name version))
13385 (sha256
13386 (base32 "030s821sb9rsr1ysl79x7id1bsin9idy8z7p85qr9cvw1w3f2s7r"))))
13387 (build-system meson-build-system)
13388 (inputs (list enchant gtk gtksourceview sysprof))
13389 (native-inputs
13390 (list gi-docgen
13391 gobject-introspection
13392 pkg-config
13393 vala
13394 ;; For testing.
13395 aspell aspell-dict-en))
13396 (home-page "https://gitlab.gnome.org/GNOME/libspelling/")
13397 (synopsis "Spell-checking library for GTK 4")
13398 (description "This package provides a spell-checker for
13399GtkTextView widgets.")
13400 (license license:lgpl2.1+)))
13401
13402(define-public gnome-builder
13403 (package
13404 (name "gnome-builder")
13405 (version "50.0")
13406 (source (origin
13407 (method url-fetch)
13408 (uri (string-append "mirror://gnome/sources/" name "/"
13409 (version-major version) "/"
13410 name "-" version ".tar.xz"))
13411 (sha256
13412 (base32
13413 "0iigv4zrb2f32snniz7slrv9lv8bkm4ln03xxmpdnjsg7z8lzma6"))))
13414 (build-system meson-build-system)
13415 (arguments
13416 (list
13417 #:glib-or-gtk? #t ;To wrap binaries and compile schemas
13418 #:configure-flags #~(list "-Dnetwork_tests=false" "-Ddocs=true")
13419 #:phases
13420 #~(modify-phases %standard-phases
13421 (add-after 'unpack 'patch-meson
13422 (lambda* (#:key inputs #:allow-other-keys)
13423 (substitute* "meson.build"
13424 (("gtk_update_icon_cache: true")
13425 "gtk_update_icon_cache: false"))
13426 (substitute* "build-aux/meson/post_install.py"
13427 ;; The post_install script does not seem to respect the
13428 ;; previous setting regarding gtk-update-icon-cache.
13429 (("gtk-update-icon-cache") "true")
13430 (("update-desktop-database") "true"))
13431 ;; This test is failing for unclear reasons.
13432 (substitute* "src/tests/meson.build"
13433 (("test\\('test-shortcuts'")
13434 "# test('test-shortcuts'"))))
13435 (add-before 'build 'set-home
13436 (lambda _
13437 ;; Required for documentation.
13438 (setenv "HOME" (getcwd))))
13439 (add-before 'check 'pre-check
13440 (lambda* (#:key tests? #:allow-other-keys)
13441 (when tests?
13442 (system "Xvfb :1 &")
13443 (setenv "DISPLAY" ":1"))))
13444 (add-after 'glib-or-gtk-wrap 'wrap-typelib
13445 (lambda* (#:key outputs #:allow-other-keys)
13446 (wrap-program (search-input-file outputs "bin/gnome-builder")
13447 `("GI_TYPELIB_PATH" suffix (,(getenv "GI_TYPELIB_PATH")))))))))
13448 (inputs
13449 (list bash-minimal ;for wrap-program
13450 cmark
13451 clang
13452 d-spy
13453 ;; Cyclic modular dependency
13454 (module-ref
13455 (resolve-interface
13456 '(gnu packages text-editors))
13457 'editorconfig-core-c)
13458 flatpak
13459 gom
13460 gtk
13461 json-glib
13462 jsonrpc-glib
13463 libadwaita
13464 libdazzle
13465 libdex
13466 libgit2-glib
13467 libpanel
13468 libpeas-2
13469 libportal
13470 libsoup
13471 libspelling
13472 llvm
13473 libostree
13474 libyaml
13475 python
13476 python-pygobject
13477 sysprof
13478 template-glib
13479 vte
13480 webkitgtk))
13481 (propagated-inputs
13482 (list gtksourceview)) ;needed for settings
13483 (native-inputs
13484 (list desktop-file-utils ;for desktop-file-validate
13485 `(,glib "bin")
13486 gettext-minimal
13487 gi-docgen
13488 pkg-config
13489 python ;for meson scripts
13490 vala
13491 xorg-server-for-tests))
13492 (home-page "https://gitlab.gnome.org/GNOME/gnome-builder/")
13493 (synopsis "Toolsmith for GNOME-based applications")
13494 (description
13495 "Builder aims to be an integrated development environment (IDE) for
13496writing GNOME-based software. It features fuzzy search, auto-completion,
13497a mini code map, documentation browsing, Git integration, an integrated
13498profiler via Sysprof, debugging support, and more.")
13499 (license license:gpl3+)))
13500
13501(define-deprecated/public-alias komikku
13502 (@ (gnu packages gnome-circle) komikku))
13503
13504(define-deprecated/public-alias komikku-servers
13505 (@ (gnu packages gnome-circle) komikku-servers))
13506
13507(define-public gtranslator
13508 (package
13509 (name "gtranslator")
13510 (version "49.0")
13511 (source (origin
13512 (method url-fetch)
13513 (uri (string-append "mirror://gnome/sources/" name "/"
13514 (version-major version) "/"
13515 name "-" version ".tar.xz"))
13516 (sha256
13517 (base32
13518 "1rn1vkf71vkfp2sifdza3v1rs8hv522c37r18b0jfp4xjhh5da7a"))))
13519 (build-system meson-build-system)
13520 (arguments
13521 (list #:build-type "release" ;otherwise it tries to fetch stuff via git
13522 #:glib-or-gtk? #t
13523 #:phases
13524 #~(modify-phases %standard-phases
13525 (add-after 'unpack 'skip-gtk-update-icon-cache
13526 (lambda _
13527 (substitute* "meson.build"
13528 (("gtk_update_icon_cache: true")
13529 "gtk_update_icon_cache: false")
13530 (("update_desktop_database: true")
13531 "update_desktop_database: false")))))))
13532 (native-inputs
13533 (list `(,glib "bin")
13534 gettext-minimal
13535 itstool
13536 pkg-config))
13537 (inputs
13538 (list json-glib
13539 jsonrpc-glib
13540 gettext-minimal
13541 glib
13542 gsettings-desktop-schemas
13543 gspell
13544 libadwaita
13545 libsoup
13546 pango))
13547 (propagated-inputs
13548 (list gtksourceview)) ; required for source view
13549 (home-page "https://wiki.gnome.org/Apps/Gtranslator")
13550 (synopsis "Translation making program")
13551 (description
13552 "Gtranslator is a translation file editor for the GNOME desktop
13553environment. It handles various formats used by gettext and includes
13554useful to navigate and edit translation messages and comments.")
13555 (license license:gpl3+)))
13556
13557(define-public ocrfeeder
13558 (package
13559 (name "ocrfeeder")
13560 (version "0.8.5")
13561 (source
13562 (origin
13563 (method git-fetch)
13564 (uri (git-reference
13565 (url "https://gitlab.gnome.org/GNOME/ocrfeeder")
13566 (commit version)))
13567 (file-name (git-file-name name version))
13568 (sha256
13569 (base32 "11xj5vidvppfd34hrvadz8fljsasljrgq7smfjx7asf88hv79d60"))))
13570 (build-system gnu-build-system)
13571 (arguments
13572 (list
13573 #:phases
13574 #~(modify-phases %standard-phases
13575 (add-after 'unpack 'fix-configure-on-python-3.12
13576 (lambda _
13577 (substitute* "m4/m4_ax_python_module.m4"
13578 (("import imp; imp\\.find_module\\((.*)\\)" all target)
13579 (format #f "import importlib.util; \
13580exit(0 if importlib.util.find_spec(~a) else 1)"
13581 target)))))
13582 (add-after 'install 'wrap-program
13583 (lambda _
13584 (wrap-program (string-append #$output "/bin/ocrfeeder")
13585 `("PYTHONPATH" =
13586 (,(getenv "GUIX_PYTHONPATH")
13587 ,(string-append #$output "/lib/python"
13588 #$(version-major+minor
13589 (package-version python))
13590 "/site-packages")))
13591 `("GI_TYPELIB_PATH" =
13592 (,(getenv "GI_TYPELIB_PATH")))))))))
13593 (native-inputs
13594 (list autoconf
13595 automake
13596 `(,glib "bin") ;for glib-compile-resources
13597 gobject-introspection
13598 `(,gtk+ "bin") ;for gtk-update-icon-cache
13599 intltool
13600 itstool
13601 gnome-common
13602 libxml2
13603 pkg-config
13604 which
13605 yelp-tools))
13606 (inputs
13607 (list bash-minimal ;for wrap-program
13608 enchant
13609 glib
13610 goocanvas
13611 gtk+
13612 gtkspell3
13613 libjpeg-turbo
13614 libtiff
13615 libraw
13616 ocrad
13617 python-wrapper
13618 python-pygobject
13619 python-odfpy
13620 python-pillow
13621 python-pyenchant
13622 python-reportlab
13623 python-sane
13624 sane
13625 tesseract-ocr))
13626 (home-page "https://wiki.gnome.org/Apps/OCRFeeder")
13627 (synopsis "Complete OCR Suite")
13628 (description "OCRFeeder is a complete Optical Character Recognition and
13629Document Analysis and Recognition program.")
13630 (license license:gpl3+)))
13631
13632(define-public libadwaita
13633 (package
13634 (name "libadwaita")
13635 (version "1.8.4")
13636 (source (origin
13637 (method url-fetch)
13638 (uri (string-append "mirror://gnome/sources/libadwaita/"
13639 (version-major+minor version) "/"
13640 "libadwaita-" version ".tar.xz"))
13641 (sha256
13642 (base32
13643 "074j59bz5zgnb7grw3clpwyxickw9268k6fj0980bw8gdxxvfayh"))))
13644 (build-system meson-build-system)
13645 (outputs (list "doc" "out"))
13646 (arguments
13647 (list
13648 #:configure-flags
13649 #~(list "-Ddocumentation=true")
13650 #:phases
13651 #~(modify-phases %standard-phases
13652 (add-before 'check 'pre-check
13653 (lambda* (#:key inputs #:allow-other-keys)
13654 ;; Tests require a running X server.
13655 (system "Xvfb :1 &")
13656 (setenv "DISPLAY" ":1")))
13657 (add-after 'install 'move-html-doc
13658 (lambda _
13659 (for-each mkdir-p
13660 (list (string-append #$output:doc "/share/doc")))
13661 (rename-file
13662 (string-append #$output "/share/doc")
13663 (string-append #$output:doc "/share/doc")))))))
13664 (native-inputs
13665 (list gettext-minimal
13666 gi-docgen
13667 `(,glib "bin")
13668 gobject-introspection
13669 gtk-doc/stable
13670 pkg-config
13671 sassc
13672 vala
13673 xorg-server-for-tests))
13674 (propagated-inputs
13675 (list appstream gtk)) ;libadwaita-1.pc 'Requires' it
13676 (home-page "https://gnome.pages.gitlab.gnome.org/libadwaita/")
13677 (synopsis "Building blocks for GNOME applications")
13678 (description
13679 "@code{libadwaita} offers widgets and objects to build GNOME
13680applications scaling from desktop workstations to mobile phones. It is the
13681successor of @code{libhandy} for GTK4.")
13682 (license license:lgpl2.1+)))
13683
13684(define-public gnome-power-manager
13685 (package
13686 (name "gnome-power-manager")
13687 (version "3.32.0")
13688 (source (origin
13689 (method url-fetch)
13690 (uri (string-append "mirror://gnome/sources/" name "/"
13691 (version-major+minor version) "/"
13692 name "-" version ".tar.xz"))
13693 (sha256
13694 (base32
13695 "0drfn3wcc8l4n07qwv6p0rw2dwcd00hwzda282q62l6sasks2b2g"))))
13696 (build-system meson-build-system)
13697 (inputs
13698 (list upower gtk+ gsettings-desktop-schemas adwaita-icon-theme))
13699 (native-inputs
13700 (list desktop-file-utils
13701 `(,glib "bin") gettext-minimal pkg-config))
13702 (home-page "https://gitlab.gnome.org/GNOME/gnome-power-manager")
13703 (synopsis "Power management daemon for the GNOME desktop")
13704 (description "@code{gnome-power-manager} is a tool for viewing present and
13705historical battery usage and related statistics.")
13706 (license license:gpl2)))
13707
13708(define-public xffm+
13709 (package
13710 (name "xffm+")
13711 (version "0.94")
13712 (source (origin
13713 (method url-fetch)
13714 (uri (string-append "mirror://sourceforge/xffm/xffm+/xffm+-"
13715 version ".tar.bz2"))
13716 (sha256
13717 (base32
13718 "0gwbgmjzlgv9ba95cgaigjnc9njzi7qznhvzp0qrnnlq3nbcm1k1"))))
13719 (build-system cmake-build-system)
13720 (arguments
13721 `(#:tests? #f ; No tests exist
13722 #:configure-flags
13723 (let ((shared-mime-info (assoc-ref %build-inputs "shared-mime-info"))
13724 (out (assoc-ref %outputs "out")))
13725 (list (string-append "-DFREEDESKTOP_GLOBS=" shared-mime-info
13726 "/share/mime/globs")
13727 (string-append "-DFREEDESKTOP_ALIAS=" shared-mime-info
13728 "/share/mime/aliases")
13729 (string-append "-DFREEDESKTOP_ICONS=" shared-mime-info
13730 "/share/mime/generic-icons")
13731 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
13732 (string-append "-DPREFIX_BIN=" out "/bin")))
13733 #:phases
13734 (modify-phases %standard-phases
13735 (add-after 'unpack 'patch-installation-destination
13736 (lambda* (#:key outputs #:allow-other-keys)
13737 (substitute* "CMakeLists.txt"
13738 ;; This is done so we can override.
13739 (("^set.CMAKE_INSTALL_PREFIX") "set(QCMAKE_INSTALL_PREFIX")
13740 ;; This is done so we can override.
13741 (("`set.PREFIX_BIN") "set(QPREFIX_BIN")))))))
13742 (native-inputs
13743 (list cmake-minimal pkg-config intltool gettext-minimal))
13744 (inputs
13745 (list glib gtk+ libx11 libsm libxv libxaw libxcb libxkbfile
13746 shared-mime-info))
13747 (synopsis "File manager")
13748 (description "This package provides a graphical file manager.")
13749 (home-page "http://xffm.org/")
13750 (license license:gpl3+)
13751 (properties '((upstream-name . "xffm")))))
13752
13753(define-public gnome-remote-desktop
13754 (package
13755 (name "gnome-remote-desktop")
13756 (version "49.2")
13757 (source (origin
13758 (method url-fetch)
13759 (uri (string-append "mirror://gnome/sources/" name "/"
13760 (version-major version) "/"
13761 name "-" version ".tar.xz"))
13762 (sha256
13763 (base32
13764 "1b8nv7iacp0xjb74hidbrypli70xzv6i4mpzh0an5qblfhg4xm3k"))))
13765 (build-system meson-build-system)
13766 (arguments
13767 (list #:configure-flags
13768 #~'("-Dsystemd=false"
13769 ;; RDP support requires CUDA (ffnvcodec)
13770 "-Drdp=false"
13771 ;; Enable VNC support
13772 "-Dvnc=true")
13773 #:glib-or-gtk? #t
13774 #:phases
13775 #~(modify-phases %standard-phases
13776 (delete 'check)
13777 (add-after 'install 'check
13778 (assoc-ref %standard-phases
13779 'check))
13780 (add-before 'check 'pre-check
13781 (lambda* (#:key tests? #:allow-other-keys)
13782 (when tests?
13783 (setenv "HOME" "/tmp")
13784 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
13785 (mkdir (getenv "XDG_RUNTIME_DIR"))
13786 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
13787 (setenv "GSETTINGS_SCHEMA_DIR"
13788 (string-append #$output "/share/glib-2.0/schemas"))
13789 ;; Unless enabled by the user, the VNC server will not
13790 ;; start.
13791 (invoke "gsettings"
13792 "set"
13793 "org.gnome.desktop.remote-desktop.vnc"
13794 "enable" "true")
13795 ;; Pipewire is required.
13796 (setenv "PIPEWIRE_DEBUG" "2")
13797 (setenv "PIPEWIRE_LOG" "meson-logs/pipewire.log")
13798 (invoke "pipewire" "--version")
13799 (system "pipewire &")))))))
13800 (inputs
13801 (list cairo
13802 glib
13803 libdrm
13804 libei
13805 libepoxy
13806 libgudev
13807 libnotify
13808 libsecret
13809 ;; Cyclic modular dependency
13810 (module-ref
13811 (resolve-interface
13812 '(gnu packages vnc))
13813 'libvnc)
13814 pipewire
13815 wireplumber
13816 tpm2-tss))
13817 (native-inputs
13818 (list asciidoc
13819 dbus
13820 docbook-xsl
13821 docbook-xml-4.3
13822 gettext-minimal
13823 `(,glib "bin")
13824 itstool
13825 libxml2
13826 libxslt
13827 mutter
13828 pkg-config
13829 python
13830 python-dbus-1.2
13831 python-pygobject
13832 xdg-desktop-portal-gnome))
13833 (home-page "https://gitlab.gnome.org/GNOME/gnome-remote-desktop")
13834 (synopsis "Share GNOME desktop with remote sessions")
13835 (description "This package provides a remote desktop server for GNOME.")
13836 (license license:gpl2+)))
13837
13838(define-public libcall-ui
13839 (package
13840 (name "libcall-ui")
13841 (version "0.2.1")
13842 (source
13843 (origin
13844 (method git-fetch)
13845 (uri (git-reference
13846 (url "https://gitlab.gnome.org/World/Phosh/libcall-ui")
13847 (commit (string-append "v" version))))
13848 (file-name (git-file-name "libcall-ui" version))
13849 (sha256
13850 (base32
13851 "1bzrsrqjbncnck762sfr9a55n0l540bx0850dhjm6lwi0yp7giyc"))
13852 (patches (search-patches "libcall-ui-make-it-installable.patch"))))
13853 (build-system meson-build-system)
13854 (arguments
13855 (list
13856 #:phases
13857 #~(modify-phases %standard-phases
13858 (add-before 'check 'pre-check
13859 (lambda _
13860 (setenv "HOME" (getcwd))
13861 ;; Tests require a running X server.
13862 (system "Xvfb :1 &")
13863 (setenv "DISPLAY" ":1"))))))
13864 (propagated-inputs ; All these in call-ui.pc.
13865 (list glib
13866 gtk
13867 libadwaita
13868 libcallaudio
13869 libhandy))
13870 (native-inputs
13871 (list `(,glib "bin") ; glib-mkenums
13872 pkg-config
13873 xorg-server-for-tests))
13874 (synopsis "Common User Interfaces for call handling")
13875 (description "This package provides common user interfaces to make and
13876receive calls.")
13877 (home-page "https://gitlab.gnome.org/World/Phosh/libcall-ui")
13878 (license license:lgpl2.1+)))
13879
13880(define-public calls
13881 (package
13882 (name "calls")
13883 (version "49.1.1")
13884 (source (origin
13885 (method url-fetch)
13886 (uri (string-append "mirror://gnome/sources/" name "/"
13887 (version-major version) "/"
13888 name "-" version ".tar.xz"))
13889 (sha256
13890 (base32
13891 "1ph5m8rzksn1jmirxnp7xx9937hihsfg6vwavrsm30688kq9z2xf"))
13892 (patches
13893 (search-patches "calls-disable-sip-test.patch"))))
13894 (build-system meson-build-system)
13895 (arguments
13896 (list
13897 #:glib-or-gtk? #t
13898 #:configure-flags #~'("-Dgtk_doc=true")
13899 #:phases
13900 #~(modify-phases %standard-phases
13901 (add-after 'unpack 'disable-problematic-tests
13902 (lambda _
13903 (substitute* "tests/meson.build"
13904 ;; The application test does not work in a Guix container,
13905 ;; because an actual sound card is required to run this
13906 ;; integration test; the following disables it.
13907 (("dbus_run_session.found \\()")
13908 "false"))))
13909 (add-before 'check 'pre-check
13910 (lambda _
13911 (setenv "HOME" (getcwd))
13912 ;; Tests require a running X server.
13913 (system "Xvfb :1 &")
13914 (setenv "DISPLAY" ":1"))))))
13915 (inputs
13916 (list evolution-data-server
13917 feedbackd
13918 folks
13919 glib
13920 gom
13921 gstreamer
13922 gst-plugins-base
13923 gst-plugins-good
13924 gst-plugins-bad
13925 gtk
13926 libcall-ui
13927 libgee
13928 libpeas-2
13929 libadwaita
13930 modem-manager
13931 sofia-sip))
13932 (native-inputs
13933 (list desktop-file-utils ;update-desktop-database
13934 gettext-minimal
13935 `(,glib "bin") ;glib-mkenums
13936 gtk-doc ;gtkdoc-scan
13937 `(,gtk+ "bin") ;gtk-update-icon-cache
13938 pkg-config
13939 python-docutils ;rst2man
13940 vala
13941 xorg-server-for-tests))
13942 (home-page "https://gitlab.gnome.org/GNOME/calls")
13943 (synopsis "Phone dialer and call handler")
13944 (description "Calls can make and answer phone calls using different
13945backends, such as ModemManager for phones and @acronym{SIP, Session Initiation
13946Protocol} for @acronym{VoIP, Voice over @acronym{IP, Internet Protocol}}.")
13947 (license license:gpl3+)))
13948
13949(define-public confy
13950 (package
13951 (name "confy")
13952 (version "0.8.0")
13953 (source (origin
13954 (method git-fetch)
13955 (uri (git-reference
13956 (url "https://git.sr.ht/~fabrixxm/confy")
13957 (commit version)))
13958 (file-name (git-file-name name version))
13959 (sha256
13960 (base32 "0hjj1klndhjmy02lxn15cnid0ydnxi0ki59h4an0zsyaha77s1lm"))))
13961 (build-system meson-build-system)
13962 (arguments
13963 (list #:glib-or-gtk? #t
13964 #:imported-modules (append %meson-build-system-modules
13965 %pyproject-build-system-modules)
13966 #:modules '((guix build meson-build-system)
13967 ((guix build pyproject-build-system) #:prefix py:)
13968 (guix build utils))
13969 #:phases
13970 #~(modify-phases %standard-phases
13971 (add-after 'unpack 'disable-post-install
13972 (lambda _
13973 (substitute* "meson.build"
13974 (("gtk_update_icon_cache: true")
13975 "gtk_update_icon_cache: false")
13976 (("update_desktop_database: true")
13977 "update_desktop_database: false"))))
13978 (add-after 'glib-or-gtk-wrap 'python-and-gi-wrap
13979 (lambda* (#:key inputs outputs #:allow-other-keys)
13980 (wrap-program (search-input-file outputs "bin/confy")
13981 `("GUIX_PYTHONPATH" =
13982 (,(getenv "GUIX_PYTHONPATH")
13983 ,(py:site-packages inputs outputs)))
13984 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
13985 (inputs (list gtk
13986 libadwaita
13987 libnotify
13988 python
13989 python-icalendar
13990 python-pygobject))
13991 (native-inputs (list blueprint-compiler
13992 gettext-minimal
13993 `(,glib "bin")
13994 pkg-config))
13995 (home-page "https://confy.kirgroup.net")
13996 (synopsis "Conference Schedule Viewer")
13997 (description "Confy is a conference schedule viewer for GNOME. It allows
13998you to mark favorite talks and highlights conflicts between favorited talks.")
13999 (license license:gpl3+)))
14000
14001(define-public gtk-frdp
14002 ;; No recent release (see:
14003 ;; <https://gitlab.gnome.org/GNOME/gtk-frdp/-/issues/39>). Use the latest
14004 ;; commit.
14005 (let ((commit "83854a24e31d1c07519f6e4393fe280d3b59e080")
14006 (revision "0"))
14007 (package
14008 (name "gtk-frdp")
14009 ;; https://gitlab.gnome.org/GNOME/gtk-frdp/-/issues/39
14010 (version (git-version "3.37.1" revision commit))
14011 (source
14012 (origin
14013 (method git-fetch)
14014 (uri (git-reference
14015 (url "https://gitlab.gnome.org/GNOME/gtk-frdp")
14016 (commit commit)))
14017 (file-name (git-file-name "gtk-frdp" version))
14018 (sha256
14019 (base32
14020 "1cangyawn69c8vcfgd55k147jblyg8j7kr0mmsc679k422nj5zg9"))))
14021 (build-system meson-build-system)
14022 (arguments
14023 (list #:glib-or-gtk? #t))
14024 (inputs
14025 (list freerdp fuse gtk+))
14026 (native-inputs
14027 (list `(,glib "bin") gobject-introspection pkg-config vala))
14028 (home-page "https://gitlab.gnome.org/GNOME/gtk-frdp")
14029 (synopsis "RDP viewer widget for Gtk")
14030 (description "This library provides a widget to view
14031@acronym{RDP, Remote Desktop Protocol} sessions.")
14032 (license license:gpl3+))))
14033
14034(define gtk-frdp-for-gnome-connections
14035 (let ((commit "6cfdc840159bb349310c3b81cd2df949f1522760")
14036 (revision "1"))
14037 (package
14038 (inherit gtk-frdp)
14039 (version (git-version "45.90" revision commit))
14040 (source
14041 (origin
14042 (method git-fetch)
14043 (uri (git-reference
14044 (url "https://gitlab.gnome.org/GNOME/gtk-frdp")
14045 (commit commit)))
14046 (file-name (git-file-name "gtk-frdp" version))
14047 (sha256
14048 (base32
14049 "1xgilpa2zkcnyi9hvj8yw1db19pz5d1xgvm1pm79mjs4ls8pdn0n")))))))
14050
14051(define-public gnome-connections
14052 (package
14053 (name "gnome-connections")
14054 (version "49.0")
14055 (source (origin
14056 (method url-fetch)
14057 (uri (string-append "mirror://gnome/sources/" name "/"
14058 (version-major version) "/"
14059 name "-" version ".tar.xz"))
14060 (sha256
14061 (base32
14062 "17kk9jra5c6gk75r004ddxzwj9m3dvn23bjz4d3lg4alp9k987rs"))
14063 (snippet
14064 #~(begin
14065 (use-modules (guix build utils))
14066 (delete-file-recursively "subprojects")))))
14067 (build-system meson-build-system)
14068 (arguments
14069 (list
14070 #:glib-or-gtk? #t
14071 #:phases
14072 #~(modify-phases %standard-phases
14073 (add-after 'unpack 'patch-meson
14074 (lambda _
14075 (substitute* "meson.build"
14076 (("gtk_update_icon_cache: true")
14077 "gtk_update_icon_cache: false")
14078 (("update_desktop_database: true")
14079 "update_desktop_database: false"))))
14080 (add-after 'unpack 'disable-onboarding-dialog
14081 (lambda _
14082 (substitute* "src/application.vala"
14083 (("\\(new OnboardingDialog \\(main_window\\)\\).present \\(\\);")
14084 "// Skip the onboarding dialog")))))))
14085 (inputs
14086 (list gtk+ gtk-frdp-for-gnome-connections gtk-vnc libhandy libsecret libxml2))
14087 (native-inputs
14088 (list gettext-minimal
14089 `(,glib "bin")
14090 itstool
14091 pkg-config
14092 vala))
14093 (home-page "https://apps.gnome.org/Connections")
14094 (synopsis "View and use other desktops")
14095 (description "Connections allows the user to connect to different
14096real or virtual machines, using @acronym{VNC, Virtual Network Computing}
14097or @acronym{RDP, Remote Desktop Protocol}.")
14098 (license license:gpl3+)))
14099
14100(define-public lock
14101 (package
14102 (name "lock")
14103 (version "1.1.3")
14104 (source (origin
14105 (method git-fetch)
14106 (uri (git-reference
14107 (url "https://github.com/konstantintutsch/Lock")
14108 (commit (string-append "v" version))))
14109 (file-name (git-file-name name version))
14110 (sha256
14111 (base32 "18xyh7g4qqm2nx9wfd5bxf293dk0ahwr1acj4ypwswasv0isxdf9"))))
14112 (build-system meson-build-system)
14113 (arguments
14114 (list
14115 #:phases
14116 #~(modify-phases %standard-phases
14117 (add-after 'unpack 'disable-gtk-update-icon-cache
14118 (lambda _
14119 (substitute* "meson.build"
14120 (("(gtk_update_icon_cache|update_desktop_database): true" _ key)
14121 (string-append key ": false"))))))))
14122 (inputs (list gpgme
14123 glib
14124 libadwaita))
14125 (native-inputs (list blueprint-compiler
14126 gettext-minimal
14127 gobject-introspection
14128 `(,glib "bin")
14129 pkg-config))
14130 (home-page "https://konstantintutsch.com/Lock")
14131 (synopsis "Graphical front-end for GNU Privacy Guard")
14132 (description "This package provides a graphical frontend for
14133GNU Privacy Guard built with libadwaita.")
14134 (license license:expat)))
14135
14136(define-public gnome-software
14137 (package
14138 (name "gnome-software")
14139 (version "49.3")
14140 (source
14141 (origin
14142 (method url-fetch)
14143 (uri
14144 (string-append "mirror://gnome/sources/"
14145 name "/"
14146 (version-major version) "/"
14147 name "-" version ".tar.xz"))
14148 (sha256 (base32 "004xzx6qm30s66icwqn7xb855klz168swjbb5cvhix5w28pxnipn"))))
14149 (build-system meson-build-system)
14150 (arguments
14151 (list
14152 #:test-options
14153 ;; The plugins test suite requires a D-Bus system session, which
14154 ;; attempts to set its session under /var/run and fails.
14155 #~(list "--no-suite=plugins")
14156 #:glib-or-gtk? #t
14157 #:configure-flags
14158 #~(list "-Dhardcoded_proprietary_webapps=false"
14159 (string-append "-Dc_link_args=-Wl,-rpath=" #$output
14160 "/lib/gnome-software"))
14161 #:phases
14162 #~(modify-phases %standard-phases
14163 (add-after 'unpack 'patch-iso-codes
14164 (lambda _
14165 (with-directory-excursion "src"
14166 (substitute* "./gs-language.c"
14167 (("DATADIR")
14168 (format #f "\"~a/share\"" #$iso-codes))))))
14169 (add-after 'unpack 'disable-gtk-update-icon-cache
14170 (lambda _
14171 (substitute* "meson_post_install.sh"
14172 (("(gtk-update-icon-cache|update-desktop-database)")
14173 "true")))))))
14174 (native-inputs
14175 (list docbook-xsl
14176 gettext-minimal
14177 `(,glib "bin")
14178 gtk-doc/stable
14179 itstool
14180 libglib-testing
14181 libxslt ;for xsltproc
14182 pkg-config
14183 sysprof
14184 valgrind/pinned))
14185 (inputs
14186 (list appstream
14187 flatpak
14188 fwupd
14189 gdk-pixbuf
14190 gtk
14191 json-glib
14192 libadwaita
14193 libgudev
14194 libostree
14195 libsoup-minimal
14196 libxmlb
14197 malcontent
14198 packagekit
14199 polkit))
14200 (synopsis "Graphical software manager for GNOME")
14201 (description "GNOME Software allows you to find and install new
14202applications and system extensions and remove existing installed
14203applications.")
14204 (license license:gpl2+)
14205 (home-page "https://apps.gnome.org/en/Software/")))