projects/guix·blob java-team · refs

1001 lines · 35.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2017 Nikita <[email protected]>
3;;; Copyright © 2018 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2019 Efraim Flashner <[email protected]>
5;;; Copyright © 2022 florhizome <[email protected]>
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages cinnamon)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix git-download)
27 #:use-module (guix gexp)
28 #:use-module (guix build utils)
29 #:use-module (guix utils)
30 #:use-module (guix build-system copy)
31 #:use-module (guix build-system gnu)
32 #:use-module (guix build-system meson)
33 #:use-module (guix build-system pyproject)
34 #:use-module (guix build-system trivial)
35 #:use-module (gnu packages)
36 #:use-module (gnu packages admin)
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages base)
39 #:use-module (gnu packages bash)
40 #:use-module (gnu packages bootstrap)
41 #:use-module (gnu packages compression)
42 #:use-module (gnu packages cups)
43 #:use-module (gnu packages docbook)
44 #:use-module (gnu packages freedesktop)
45 #:use-module (gnu packages gcc)
46 #:use-module (gnu packages gettext)
47 #:use-module (gnu packages ghostscript)
48 #:use-module (gnu packages gl)
49 #:use-module (gnu packages glib)
50 #:use-module (gnu packages gstreamer)
51 #:use-module (gnu packages gtk)
52 #:use-module (gnu packages gnome)
53 #:use-module (gnu packages gnuzilla)
54 #:use-module (gnu packages ibus)
55 #:use-module (gnu packages iso-codes)
56 #:use-module (gnu packages kerberos)
57 #:use-module (gnu packages libcanberra)
58 #:use-module (gnu packages linux)
59 #:use-module (gnu packages nss)
60 #:use-module (gnu packages password-utils)
61 #:use-module (gnu packages perl)
62 #:use-module (gnu packages pkg-config)
63 #:use-module (gnu packages photo)
64 #:use-module (gnu packages polkit)
65 #:use-module (gnu packages pulseaudio)
66 #:use-module (gnu packages python)
67 #:use-module (gnu packages python-build)
68 #:use-module (gnu packages python-web)
69 #:use-module (gnu packages python-xyz)
70 #:use-module (gnu packages readline)
71 #:use-module (gnu packages samba)
72 #:use-module (gnu packages time)
73 #:use-module (gnu packages tls)
74 #:use-module (gnu packages web)
75 #:use-module (gnu packages window-management)
76 #:use-module (gnu packages xdisorg)
77 #:use-module (gnu packages xml)
78 #:use-module (gnu packages xorg))
79
80(define-public libadapta
81 (package
82 (name "libadapta")
83 (version "1.5.0")
84 (source (origin
85 (method git-fetch)
86 (uri (git-reference
87 (url "https://github.com/xapp-project/libadapta")
88 (commit version)))
89 (file-name (git-file-name name version))
90 (sha256
91 (base32
92 "07zl1wswvqqxana1x59dxhpbm2biqn06jr5z0qvg03hdyh7isp2d"))))
93 (build-system meson-build-system)
94 (arguments
95 `(#:phases
96 (modify-phases %standard-phases
97 (add-before 'check 'pre-check
98 (lambda* (#:key inputs #:allow-other-keys)
99 ;; Tests require a running X server.
100 (system "Xvfb :1 &")
101 (setenv "DISPLAY" ":1"))))))
102 (native-inputs
103 (list gettext-minimal
104 `(,glib "bin")
105 gobject-introspection
106 gtk-doc/stable
107 pkg-config
108 sassc
109 vala
110 xorg-server-for-tests))
111 (propagated-inputs
112 (list appstream gtk))
113 (home-page "https://github.com/xapp-project/libadapta")
114 (synopsis "Building blocks for GTK-based applications")
115 (description
116 "@code{libadapta} is a soft fork of @code{libadwaita}, providing support
117for theming and features used in desktop environments outside of GNOME.")
118 (license license:lgpl2.1+)))
119
120(define-public libxapp
121 (package
122 (name "libxapp")
123 (version "3.2.2")
124 (source (origin
125 (method git-fetch)
126 (uri (git-reference
127 (url "https://github.com/linuxmint/xapp/")
128 (commit version)))
129 (file-name (git-file-name name version))
130 (sha256
131 (base32
132 "1gvg6i0mg3hd8brz3di3qnx59h20sr8rs6maqkxab8p4msn8hlf5"))))
133 (build-system meson-build-system)
134 (arguments
135 (list
136 #:modules
137 `((guix build meson-build-system)
138 (guix build utils)
139 ((guix build pyproject-build-system) #:prefix py:))
140 #:imported-modules
141 (append %meson-build-system-modules
142 %pyproject-build-system-modules)
143 #:configure-flags
144 #~(list (string-append
145 "-Dpy-overrides-dir="
146 (py:site-packages %build-inputs %outputs) "/gi/overrides"))
147 #:phases
148 #~(modify-phases %standard-phases
149 (add-before 'configure 'set-gtk-module-path
150 (lambda* (#:key inputs outputs #:allow-other-keys)
151 (define (string-quote str)
152 (format #f "'~a'" str))
153 (substitute* "libxapp/meson.build"
154 (("gtk3_dep\\.get_variable[(]pkgconfig: 'libdir'[)]")
155 (string-quote (string-append #$output "/lib"))))
156
157 (substitute* "scripts/pastebin"
158 (("'nc'")
159 (string-quote (search-input-file inputs "/bin/nc"))))
160 (substitute* "scripts/upload-system-info"
161 (("'inxi'")
162 (string-quote (search-input-file inputs "/bin/inxi")))
163 (("'/usr/bin/pastebin'")
164 (string-quote (string-append #$output "/bin/pastebin")))
165 (("'xdg-open'")
166 (string-quote (search-input-file inputs
167 "/bin/xdg-open")))))))))
168 (inputs
169 (list dbus
170 glib ; for gio
171 gtk+
172 inxi-minimal ; used by upload-system-info
173 libdbusmenu
174 libgnomekbd
175 netcat ; used by pastebin
176 xdg-utils)) ; used by upload-system-info
177 (native-inputs
178 (list gettext-minimal
179 `(,glib "bin") ; for glib-mkenums
180 gobject-introspection
181 pkg-config
182 python
183 python-pygobject
184 vala))
185 (home-page "https://github.com/linuxmint/xapp")
186 (synopsis "Library for traditional GTK applications")
187 (description
188 "The libxapp package contains the components which are common to multiple
189GTK desktop environments (Cinnamon, MATE and Xfce) and required to implement
190cross-DE solutions.")
191 (license license:lgpl3+)))
192
193(define-public python-xapp
194 (package
195 (name "python-xapp")
196 (version "3.0.3")
197 (source
198 (origin
199 (method git-fetch)
200 (uri (git-reference
201 (url "https://github.com/linuxmint/python3-xapp")
202 (commit version)))
203 (file-name (git-file-name name version))
204 (sha256
205 (base32 "0prs8cvj70wsmzwdx12impmkfhk9ydw4r88cpz2zz0sl5776d7i8"))))
206 (build-system meson-build-system)
207 (arguments (list #:tests? #f)) ; no tests provided
208 (native-inputs
209 (list gobject-introspection
210 intltool
211 python-wrapper))
212 (inputs
213 (list libxapp))
214 (propagated-inputs
215 (list python-configobj
216 python-distutils-extra
217 python-pycairo
218 python-pygobject
219 python-pyinotify
220 python-pyxdg
221 python-setproctitle
222 python-setuptools
223 python-unidecode
224 python-xdg-base-dirs
225 python-xlib))
226 (home-page "https://github.com/linuxmint/python3-xapp")
227 (synopsis "Python 3 XApp library")
228 (description
229 "Provides Python 3 bindings for libxapp, including a toolkit to build and
230persist XApp settings windows using GSettings.")
231 (license license:lgpl2.0+)))
232
233(define-public timezonemap
234 (package
235 (name "timezonemap")
236 (version "0.4.5.4")
237 (source (origin
238 (method git-fetch)
239 (uri (git-reference
240 (url "https://codeberg.org/dashea/timezonemap")
241 (commit version)))
242 (file-name (git-file-name name version))
243 (sha256
244 (base32 "0fkyqqyl4fwq3yz347ha69wiljz5bv1w4jg9mvz6xj20zhmzc1yw"))))
245 (build-system gnu-build-system)
246 (native-inputs (list autoconf
247 automake
248 `(,glib "bin")
249 gobject-introspection
250 libtool
251 pkg-config))
252 (inputs (list gtk+ libsoup json-glib librsvg))
253 (home-page "https://codeberg.org/dashea/timezonemap/")
254 (synopsis "Standalone copy of GNOME 3.0's datetime panel")
255 (description "This package provides a standalone copy of the datetime
256panel used in GNOME 3.0's control center.")
257 (license license:gpl2+)))
258
259(define-public cjs
260 (package
261 (name "cjs")
262 (version "128.1")
263 (source (origin
264 (method git-fetch)
265 (uri (git-reference
266 (url "https://github.com/linuxmint/cjs")
267 (commit version)))
268 (file-name (git-file-name name version))
269 (sha256
270 (base32
271 "1dcaw0ij8nm5xmpbdbvalm12c9iw6mwq3nj34m9h17qfl4a37730"))
272 (modules '((guix build utils)))
273 (snippet
274 '(begin
275 (substitute* "installed-tests/scripts/testCommandLine.sh"
276 (("Valentín") "")
277 (("☭") ""))))))
278 (build-system meson-build-system)
279 (arguments
280 '(#:configure-flags '("-Dinstalled_tests=false")
281 #:phases
282 (modify-phases %standard-phases
283 (add-before 'check 'pre-check
284 (lambda _
285 ;; The test suite requires a running X server.
286 (system "Xvfb :1 &")
287 (setenv "DISPLAY" ":1")
288
289 ;; For the missing /etc/machine-id.
290 (setenv "DBUS_FATAL_WARNINGS" "0")))
291 (add-after 'install 'wrap-gi
292 (lambda* (#:key inputs outputs #:allow-other-keys)
293 (wrap-program (string-append (assoc-ref outputs "out")
294 "/bin/cjs")
295 `("GI_TYPELIB_PATH" suffix
296 (,(dirname
297 (search-input-file
298 inputs
299 "lib/girepository-1.0/GObject-2.0.typelib"))
300 ,(dirname
301 (search-input-file
302 inputs
303 "lib/girepository-1.0/GIRepository-2.0.typelib"))))))))))
304 (native-inputs
305 (list `(,glib "bin") ;for glib-compile-resources
306 pkg-config
307 libxml2
308 ;; For testing
309 dbus
310 dconf ;required to properly store settings
311 util-linux
312 xorg-server-for-tests))
313 (propagated-inputs
314 ;; These are all in the Requires.private field of cjs-1.0.pc.
315 ;; Check the version of mozjs required in meson.build.
316 (list cairo gobject-introspection mozjs-128))
317 (inputs
318 (list gtk+ readline))
319 (synopsis "Javascript bindings for Cinnamon")
320 (home-page "https://github.com/linuxmint/cjs/")
321 (description
322 "CJS is a javascript binding for Cinnamon, forked from GJS.")
323 (license license:gpl2+)))
324
325(define-public cinnamon-control-center
326 (package
327 (name "cinnamon-control-center")
328 (version "6.6.0")
329 (source
330 (origin
331 (method git-fetch)
332 (uri (git-reference
333 (url "https://github.com/linuxmint/cinnamon-control-center")
334 (commit version)))
335 (file-name (git-file-name name version))
336 (sha256
337 (base32
338 "1425fq7nbaf46ch133mf555spl96k664rgd7w802x22v66sz0d2f"))))
339 (build-system meson-build-system)
340 (arguments
341 (list
342 #:glib-or-gtk? #t
343 #:phases
344 #~(modify-phases %standard-phases
345 (add-before 'configure 'patch-paths
346 (lambda* (#:key inputs #:allow-other-keys)
347 (substitute* '("panels/network/net-device-mobile.c"
348 "panels/network/connection-editor/net-connection-editor.c")
349 (("\"nm-connection-editor")
350 (string-append "\"" (search-input-file
351 inputs "bin/nm-connection-editor"))))))
352 (add-after 'unpack 'skip-gtk-update-icon-cache
353 ;; Don't create 'icon-theme.cache'.
354 (lambda _
355 (substitute* "meson.build"
356 (("gtk_update_icon_cache: true")
357 "gtk_update_icon_cache: false"))))
358 (replace 'check
359 (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
360 (when tests?
361 ;; Tests require a running X server.
362 (system "Xvfb :1 &")
363 (setenv "DISPLAY" ":1")
364 ;; For the missing /var/lib/dbus/machine-id
365 (setenv "DBUS_FATAL_WARNINGS" "0")
366 (setenv "NO_AT_BRIDGE" "1")
367 (setenv "HOME" "/tmp")
368 (setenv "XDG_RUNTIME_DIR" (string-append (getcwd) "/runtime-dir"))
369 (mkdir (getenv "XDG_RUNTIME_DIR"))
370 (chmod (getenv "XDG_RUNTIME_DIR") #o700)
371 (setenv "MESON_TESTTHREADS"
372 (if parallel-tests?
373 (number->string (parallel-job-count))
374 "1"))
375 (invoke "dbus-run-session" "--"
376 "meson" "test" "-t" "0")))))))
377 (native-inputs
378 (list docbook-xsl
379 gettext-minimal
380 `(,glib "bin") ;for glib-mkenums, etc.
381 libxslt
382 pkg-config
383 python
384 python-dbusmock
385 xorg-server-for-tests
386 setxkbmap))
387 (inputs
388 (list accountsservice
389 cinnamon-desktop
390 cinnamon-menus
391 cinnamon-session
392 cinnamon-settings-daemon
393 colord-gtk
394 cups
395 dconf
396 gcr
397 gnome-bluetooth
398 gnome-online-accounts
399 gnutls
400 grilo
401 gsound
402 ibus
403 iso-codes
404 json-glib
405 libadwaita
406 libgnomekbd
407 libgudev
408 libgtop
409 libnma
410 libnotify
411 libpwquality
412 (librsvg-for-system) ;for loading SVG files
413 libsecret
414 libsoup
415 libxml2
416 libwacom
417 mesa
418 mit-krb5
419 modem-manager
420 network-manager-applet
421 polkit
422 pulseaudio
423 samba
424 tecla
425 tzdata
426 udisks
427 upower))
428 (synopsis "Utilities to configure the GNOME desktop")
429 (home-page "https://www.gnome.org/")
430 (description
431 "This package contains configuration applets for the GNOME desktop,
432allowing to set accessibility configuration, desktop fonts, keyboard and mouse
433properties, sound setup, desktop theme and background, user interface
434properties, screen resolution, and other GNOME parameters.")
435 (license license:gpl2+)))
436
437(define-public cinnamon-desktop
438 (package
439 (name "cinnamon-desktop")
440 (version "6.6.2")
441 (source (origin
442 (method git-fetch)
443 (uri (git-reference
444 (url "https://github.com/linuxmint/cinnamon-desktop")
445 (commit version)))
446 (file-name (git-file-name name version))
447 (sha256
448 (base32
449 "0fd217w90j7kaxh7w6w7ajp6ca31wiv594564h0gbfnam7shki81"))))
450 (build-system meson-build-system)
451 (arguments
452 (list
453 #:glib-or-gtk? #true
454 #:configure-flags #~(list "-Dalsa=true")))
455 (inputs
456 (list accountsservice
457 alsa-lib
458 eudev
459 glib
460 gnome-common
461 gtk+
462 iso-codes
463 libxrandr
464 libxext
465 pulseaudio
466 xkeyboard-config))
467 (propagated-inputs (list libxkbfile))
468 (native-inputs
469 (list gettext-minimal
470 `(,glib "bin") ;glib-gettextize
471 gobject-introspection
472 pkg-config))
473 (home-page "https://github.com/linuxmint/cinnamon-desktop/")
474 (synopsis "Library for the Cinnamon Desktop")
475 (description
476 "The cinnamon-desktop package contains the libcinnamon-desktop library,
477as well as some desktop-wide documents.")
478 (license (list license:gpl2+ license:lgpl2.0+
479 license:expat)))) ;display-name.c , edid-parse.c
480
481(define-public cinnamon-menus
482 (package
483 (name "cinnamon-menus")
484 (version "6.6.0")
485 (source
486 (origin
487 (method git-fetch)
488 (uri (git-reference
489 (url "https://github.com/linuxmint/cinnamon-menus")
490 (commit version)))
491 (file-name (git-file-name name version))
492 (sha256
493 (base32
494 "080dsaar27cfwn4ilhzd5vjcl4hbn4dvr9kqr9b44ik6acy1cf5y"))))
495 (build-system meson-build-system)
496 (inputs (list glib))
497 (native-inputs
498 (list gettext-minimal gobject-introspection pkg-config))
499 (synopsis "Menu support for Cinnamon desktop")
500 (description "Cinnamon Menus contains the libcinnamon-menu library,
501the layout configuration files for the Cinnamon menu, as well as a simple
502menu editor.")
503 (home-page "https://github.com/linuxmint/cinnamon-menus")
504 (license license:lgpl2.0+)))
505
506(define-public cinnamon-screensaver
507 (package
508 (name "cinnamon-screensaver")
509 (version "6.6.1")
510 (source (origin
511 (method git-fetch)
512 (uri (git-reference
513 (url "https://github.com/linuxmint/cinnamon-screensaver")
514 (commit version)))
515 (file-name (git-file-name name version))
516 (sha256
517 (base32 "1n8fg4p036v3wgx21pxxcjwn620nfjg2fplznc5jfknwi9qggb9l"))))
518 (build-system meson-build-system)
519 (inputs (list gtk+
520 linux-pam
521 xdotool))
522 (native-inputs
523 (list gettext-minimal `(,glib "bin") gobject-introspection pkg-config))
524 (home-page "https://github.com/linuxmint/cinnamon-screensaver")
525 (synopsis "Cinnamon Screensaver")
526 (description "This package provides the Cinnamon screen locker and
527screensaver program.")
528 (license license:gpl2+)))
529
530(define-public cinnamon-session
531 (package
532 (name "cinnamon-session")
533 (version "6.6.4")
534 (source (origin
535 (method git-fetch)
536 (uri (git-reference
537 (url "https://github.com/linuxmint/cinnamon-session")
538 (commit version)))
539 (file-name (git-file-name name version))
540 (sha256
541 (base32 "0kb10aq1m1pyignqhl56svs68a2za1fq0wc38pklpxnh2nsgw7mg"))))
542 (build-system meson-build-system)
543 (inputs (list cinnamon-desktop
544 glib
545 gtk+
546 libcanberra
547 libgnomekbd
548 libsm
549 libxapp
550 libxkbfile
551 xtrans))
552 (native-inputs
553 (list gettext-minimal `(,glib "bin") gobject-introspection pkg-config))
554 (home-page "https://github.com/linuxmint/cinnamon-session")
555 (synopsis "Cinnamon session manager")
556 (description "his package contains the Cinnamon session manager,
557as well as a configuration program to choose applications starting on login.")
558 (license license:gpl2+)))
559
560(define-public cinnamon-settings-daemon
561 (package
562 (name "cinnamon-settings-daemon")
563 (version "6.6.4")
564 (source
565 (origin
566 (method git-fetch)
567 (uri (git-reference
568 (url "https://github.com/linuxmint/cinnamon-settings-daemon")
569 (commit version)))
570 (file-name (git-file-name name version))
571 (sha256
572 (base32
573 "0mng9wx0a64gwfb7hjxfxxc865kkwav20rf6sjhas2xzszvd7nnd"))))
574 (build-system meson-build-system)
575 (arguments
576 (list
577 #:glib-or-gtk? #t
578 #:configure-flags
579 #~(list ;; Otherwise, the RUNPATH will lack the final path component.
580 (string-append "-Dc_link_args=-Wl,-rpath=" #$output
581 "/lib/cinnamon-settings-daemon-3.0:"
582 ;; Also add NSS because for some reason Meson
583 ;; > 0.60 does not add it automatically (XXX).
584 (search-input-directory %build-inputs "lib/nss")))
585 #:phases
586 #~(modify-phases %standard-phases
587 (add-before 'configure 'set-baobab-file-name
588 (lambda* (#:key inputs #:allow-other-keys)
589 ;; Hard-code the file name of Baobab instead of looking
590 ;; it up in $PATH. This ensures users get the "Examine"
591 ;; button in the low disk space notification of CDM even
592 ;; if they don't have Cinnamon in their main profile.
593 (substitute* "plugins/housekeeping/csd-disk-space.c"
594 (("g_find_program_in_path \\(DISK_SPACE_ANALYZER\\)")
595 (format #f "g_strdup (~s)"
596 (search-input-file inputs "bin/baobab"))))))
597 (add-after 'unpack 'skip-update-icon-cache
598 (lambda _
599 (substitute* "install-scripts/meson_update_icon_cache.py"
600 (("gtk-update-icon-cache") "true")))))))
601 (native-inputs
602 (list docbook-xml-4.2
603 docbook-xsl
604 gettext-minimal
605 `(,glib "bin") ;for glib-mkenums
606 libxslt
607 perl
608 pkg-config))
609 (inputs
610 (list alsa-lib
611 baobab
612 cinnamon-desktop
613 colord
614 cups
615 gcr
616 geoclue
617 geocode-glib
618 gsettings-desktop-schemas
619 lcms
620 libcanberra
621 libgnomekbd
622 libgudev
623 libgweather
624 libnotify
625 (librsvg-for-system)
626 libwacom
627 libx11
628 libxtst
629 modem-manager
630 network-manager
631 nss
632 polkit
633 pulseaudio
634 upower
635 wayland
636 xf86-input-wacom))
637 (home-page "https://github.com/linuxmint/cinnamon-settings-daemon")
638 (synopsis "Cinnamon settings daemon")
639 (description
640 "This package contains the daemon responsible for setting the various
641parameters of a Cinnamon session and the applications that run under it. It
642handles settings such keyboard layout, shortcuts, and accessibility, clipboard
643settings, themes, mouse settings, and startup of other daemons.")
644 (license license:gpl2+)))
645
646(define-public cinnamon-translations
647 (package
648 (name "cinnamon-translations")
649 (version "6.6.2")
650 (source (origin
651 (method git-fetch)
652 (uri (git-reference
653 (url "https://github.com/linuxmint/cinnamon-translations")
654 (commit version)))
655 (file-name (git-file-name name version))
656 (sha256
657 (base32 "0kmiqlhk4243pqcsg7d45dvs439dap040gwfpm9xn56hibsicz0c"))))
658 (build-system copy-build-system)
659 (arguments
660 (list
661 #:install-plan #~`(("usr/share/locale" "share/locale"))
662 #:phases #~(modify-phases %standard-phases
663 (add-before 'install 'build
664 (lambda _ (invoke "make"))))))
665 (native-inputs (list gettext-minimal gnu-make))
666 (home-page "https://github.com/linuxmint/cinnamon-translations")
667 (synopsis "Translations for cinnamon")
668 (description "This package provides translation files for cinnamon and
669related packages.")
670 (license license:gpl2+)))
671
672(define-public cinnamon
673 (package
674 (name "cinnamon")
675 (version "6.6.8")
676 (source (origin
677 (method git-fetch)
678 (uri (git-reference
679 (url "https://github.com/linuxmint/cinnamon")
680 (commit version)))
681 (file-name (git-file-name name version))
682 (sha256
683 (base32
684 "0g3n9aiyidi2fhjh8h3i2lb3gpif5kr2igsmzjvjzlvqapcyf8q7"))))
685 (build-system meson-build-system)
686 (arguments
687 (list
688 #:glib-or-gtk? #true
689 #:imported-modules `((guix build python-build-system)
690 ,@%meson-build-system-modules)
691 #:phases
692 #~(modify-phases %standard-phases
693 (add-after 'unpack 'patch-install
694 (lambda* (#:key inputs #:allow-other-keys)
695 (substitute* "meson.build"
696 (("install_dir: '/',") "install_dir: prefix,"))
697 (substitute* "install-scripts/meson_update_icon_cache.py"
698 (("gtk-update-icon-cache") "true"))
699 (substitute* (append (find-files "files/usr/bin")
700 (find-files "files/usr/share" "\\.py$"))
701 ((".*octopi.*") "")
702 (("\"gsettings")
703 (string-append "\""
704 (search-input-file inputs "bin/gsettings")))
705 (("/usr/bin/passwd") "passwd")
706 (("/usr/bin/([a-z_-]*)" all command)
707 (if (string-prefix? "cinnamon" command)
708 (string-append #$output "/bin/" command)
709 (search-input-file inputs
710 (string-append "/bin/" command))))
711 (("/usr/share") (string-append #$output "/share")))
712 (rename-file "files/usr/bin" "files/bin")
713 (rename-file "files/usr/share" "files/share")
714 (rmdir "files/usr")
715 (substitute* "files/share/cinnamon/cinnamon-settings/bin/capi.py"
716 (("(f?)\"/usr/lib/([^\"]*)\"" all f lib)
717 (string-append f "\"/run/current-system/profile/lib/" lib "\","
718 f "\"/usr/lib/" lib "\"")))))
719 (add-after 'install 'add-install-to-pythonpath
720 (@@ (guix build python-build-system) add-install-to-pythonpath))
721 (add-after 'add-install-to-pythonpath 'wrap-for-python
722 (@@ (guix build python-build-system) wrap))
723 (add-after 'wrap-for-python 'wrap-gi
724 (lambda _
725 (define gi-typelib-path (getenv "GI_TYPELIB_PATH"))
726 (for-each
727 (lambda (program)
728 (unless (wrapped-program? program)
729 (wrap-program program
730 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
731 (find-files (string-append #$output "/bin"))))))))
732 (inputs (list cinnamon-control-center
733 cinnamon-desktop
734 cinnamon-menus
735 cjs
736 cups-minimal
737 gcr-3
738 gsound
739 gstreamer
740 libgnomekbd
741 libnotify
742 libsecret
743 libxapp
744 network-manager
745 muffin
746 polkit
747 python-wrapper
748 python-dbus
749 python-libsass
750 python-pam
751 python-pycairo
752 python-pexpect
753 python-pillow
754 python-psutil
755 python-pytz
756 python-pygobject
757 python-requests
758 python-setproctitle
759 python-tinycss2
760 python-xapp
761 python-xlrd
762 timezonemap
763 xdg-utils))
764 (native-inputs (list gettext-minimal
765 `(,glib "bin")
766 gobject-introspection
767 intltool
768 pkg-config))
769 (home-page "https://github.com/linuxmint/cinnamon/")
770 (synopsis "Graphical desktop environment")
771 (description
772 "Cinnamon is a desktop environment reminiscent of ye olde GNOME 2,
773with its underlying technology forked from modern GNOME.")
774 (license (list license:gpl2+))))
775
776(define-public muffin
777 (package
778 (name "muffin")
779 (version "6.6.3")
780 (source (origin
781 (method git-fetch)
782 (uri (git-reference
783 (url "https://github.com/linuxmint/muffin")
784 (commit version)))
785 (file-name (git-file-name name version))
786 (sha256
787 (base32
788 "1rf53mal8fzin3wnv1pfg3vvwd4i17mhk550j8zdp7b20qygmliw"))))
789 (build-system meson-build-system)
790 (arguments
791 (list
792 #:modules '((guix build meson-build-system)
793 (guix build utils)
794 (ice-9 match))
795 #:glib-or-gtk? #t
796 #:configure-flags
797 #~(list
798 ;; Otherwise, the RUNPATH will lack the final path component.
799 (string-append "-Dc_link_args=-Wl,-rpath="
800 #$output "/lib,-rpath="
801 #$output "/lib/muffin")
802 ;; Don't install tests.
803 "-Dinstalled_tests=false"
804 ;; The following flags are needed for the bundled clutter
805 (string-append "-Dxwayland_path="
806 (search-input-file %build-inputs "bin/Xwayland"))
807 ;; the remaining flags are needed for the bundled cogl
808 (string-append "-Dopengl_libname="
809 (search-input-file %build-inputs "lib/libGL.so"))
810 (string-append "-Dgles2_libname="
811 (search-input-file %build-inputs "lib/libGLESv2.so"))
812 "-Degl_device=true" ;false by default
813 "-Dwayland_eglstream=true" ;false by default
814 )
815 #:test-options #~(list "--verbose")
816 #:phases
817 #~(modify-phases %standard-phases
818 (add-after 'unpack 'set-SOURCE_DIR
819 (lambda _
820 ;; Just to make our life easier later.
821 (setenv "SOURCE_DIR" (getcwd))))
822 (add-after 'unpack 'use-RUNPATH-instead-of-RPATH
823 (lambda _
824 ;; The build system disables RUNPATH in favor of RPATH to work
825 ;; around a peculiarity of their CI system. Ignore that.
826 (substitute* "meson.build"
827 (("disable-new-dtags")
828 "enable-new-dtags"))))
829 (add-after 'unpack 'patch-dlopen-calls
830 (lambda* (#:key inputs #:allow-other-keys)
831 (substitute* "src/wayland/meta-wayland-egl-stream.c"
832 (("libnvidia-egl-wayland.so.1")
833 (search-input-file inputs "lib/libnvidia-egl-wayland.so.1")))))
834 (add-before 'configure 'set-udev-dir
835 (lambda _
836 (setenv "PKG_CONFIG_UDEV_UDEVDIR"
837 (string-append #$output "/lib/udev")))))))
838 (native-inputs
839 (list desktop-file-utils ;for update-desktop-database
840 `(,glib "bin") ;for glib-compile-schemas, etc.
841 gettext-minimal
842 gobject-introspection
843 pkg-config
844 xvfb-run
845 wayland-protocols
846 ;; For tests.
847 ;; Warnings are configured to be fatal during the tests; add an icon
848 ;; theme to please libxcursor.
849 adwaita-icon-theme
850 libei
851 libxcursor ;for XCURSOR_PATH
852 pipewire
853 python
854 python-dbus
855 python-dbusmock
856 wireplumber-minimal))
857 (propagated-inputs
858 (list gsettings-desktop-schemas
859 at-spi2-core
860 cairo
861 eudev
862 gdk-pixbuf
863 glib
864 gtk+
865 graphene
866 json-glib
867 libinput
868 libx11
869 libxcomposite
870 libxcvt
871 libxdamage
872 libxext
873 libxfixes
874 libxkbcommon
875 libxml2
876 libxrandr
877 mesa
878 pango
879 xinput))
880 (inputs
881 (list colord
882 egl-wayland ;for wayland-eglstream-protocols
883 elogind
884 cinnamon-desktop
885 libcanberra
886 libdisplay-info
887 libgudev
888 libice
889 libsm
890 libwacom
891 libxkbfile
892 libxrandr
893 libxtst
894 pipewire
895 startup-notification
896 sysprof
897 upower
898 xkeyboard-config
899 xorg-server-xwayland))
900 (home-page "https://github.com/linuxmint/muffin")
901 (synopsis "Window and compositing manager")
902 (description
903 "Muffin is a fork of Mutter, specifically adapted to work as the
904window manager for the Cinnamon desktop environment.")
905 (license license:gpl2+)))
906
907(define-public nemo
908 (package
909 (name "nemo")
910 (version "6.6.4")
911 (source
912 (origin
913 (method git-fetch)
914 (uri
915 (git-reference
916 (url "https://github.com/linuxmint/nemo")
917 (commit version)))
918 (file-name (git-file-name name version))
919 (sha256
920 (base32 "00iq5jibqrx081b3c5pqa5ha3r3cs1d45l70q4fjfndbdnmyk2hx"))))
921 (build-system meson-build-system)
922 (arguments
923 (list
924 #:glib-or-gtk? #true
925 #:tests? #false ;tests stall
926 #:phases
927 #~(modify-phases %standard-phases
928 (add-after 'patch-source-shebangs 'adjust-prefix
929 (lambda _
930 (substitute* "meson.build"
931 (("'data_dir")
932 (string-append "'" #$output "/share")))))
933 (add-before 'check 'pre-check
934 (lambda _
935 (system "Xvfb :1 &")
936 (setenv "DISPLAY" ":1")
937 (setenv "HOME" "/tmp") ;some tests require a writable HOME
938 (setenv "XDG_DATA_DIRS"
939 (string-append (getenv "XDG_DATA_DIRS")
940 ":" #$output "/share")))))))
941 (native-inputs
942 (list gettext-minimal
943 (list glib "bin")
944 gobject-introspection
945 (list gtk+ "bin")
946 intltool
947 pkg-config
948 xorg-server-for-tests))
949 (inputs
950 (list at-spi2-core
951 cinnamon-desktop
952 exempi
953 gsettings-desktop-schemas
954 gtk+
955 json-glib
956 libexif
957 libgnomekbd
958 libgsf
959 libnotify
960 libx11
961 libxapp
962 libxkbfile
963 libxml2
964 xkeyboard-config))
965 (home-page "https://github.com/linuxmint/nemo")
966 (synopsis "File browser for Cinnamon")
967 (description
968 "Nemo is the file manager for the Cinnamon desktop environment.")
969 (properties '((lint-hidden-cpe-vendors . ("nvidia"))))
970 (license license:expat)))
971
972(define-public cinnamon-meta-shell
973 (package
974 (name "cinnamon-meta-shell")
975 (version (package-version cinnamon))
976 (source #f)
977 (build-system trivial-build-system)
978 (arguments
979 (list #:builder
980 #~(begin (format (current-warning-port)
981 "Building ~a is useless. \
982Refer to its propagated inputs instead.\n"
983 #$(package-name this-package))
984 (mkdir #$output))))
985 (propagated-inputs (list cinnamon
986 cinnamon-control-center
987 cinnamon-desktop
988 cinnamon-menus
989 cinnamon-screensaver
990 cinnamon-session
991 cinnamon-settings-daemon
992 cinnamon-translations
993 cjs
994 muffin
995 nemo))
996 (home-page "https://projects.linuxmint.com/cinnamon/")
997 (synopsis "Graphical desktop environment")
998 (description
999 "Cinnamon is a desktop environment reminiscent of ye olde GNOME 2,
1000with its underlying technology forked from modern GNOME.")
1001 (license license:gpl2+)))