summary refs log tree commit diff
path: root/gnu/packages/gnome.scm
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2024-02-16 11:53:43 +0100
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2024-02-23 21:55:19 +0100
commitb51b2191a94504d02e62a358c9160bb1b4c42de2 (patch)
tree79af1391d24ce282624fd2f84bd46bb0fd1dd675 /gnu/packages/gnome.scm
parent622df12ef389c9e91f68ae10c54c043f34828c83 (diff)
downloadguix-b51b2191a94504d02e62a358c9160bb1b4c42de2.tar.gz
gnu: Split gnome into more meta-packages.
* gnu/packages/gnome.scm (gnome-meta-package): New syntax rule.
(gnome-meta-core-services, gnome-meta-core-shell, gnome-meta-core-utilities)
(gnome-essential-extras): New variables.
(gnome): Implement in terms of the former.
Diffstat (limited to 'gnu/packages/gnome.scm')
-rw-r--r--gnu/packages/gnome.scm236
1 files changed, 136 insertions, 100 deletions
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7397148c2b..9778a0b461 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -10154,108 +10154,144 @@ world.")
     (home-page "https://wiki.gnome.org/Apps/Weather")
     (license license:gpl2+)))
 
-(define-public gnome
-  (package
-    (name "gnome")
-    (version (package-version gnome-shell))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments '(#:builder (begin (mkdir %output) #t)))
-    (propagated-inputs
-     `(,@(if (string-prefix? "x86_64" (%current-system))
-             ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
-             ;; only works on x86_64, so exclude it on other architectures.
-             (list eog)
-             '())
-       ,@(list
-          ;; GNOME-Core-OS-Services.
-          accountsservice
-          network-manager
-          packagekit
-          upower
-          ;; GNOME-Core-Shell.
-          adwaita-icon-theme
-          gdm
-          glib-networking
-          gnome-backgrounds
-          gnome-bluetooth
-          gnome-color-manager
-          gnome-control-center
-          gnome-desktop
-          gnome-initial-setup
-          gnome-keyring
-          gnome-menus
-          gnome-session
-          gnome-settings-daemon
-          gnome-shell
-          gnome-shell-extensions
-          gnome-themes-extra
-          gnome-user-docs
-          gnome-user-share
-          gsettings-desktop-schemas
-          gvfs
-          mutter
-          orca
-          rygel
-          sushi
-          ;; GNOME-Core-Utilities.
-          baobab
-          cheese
-          epiphany
-          evince
-          file-roller
-          gnome-calculator
-          gnome-calendar
-          gnome-characters
-          gnome-clocks
-          gnome-console
-          gnome-contacts
-          gnome-disk-utility
-          gnome-font-viewer
-          gnome-maps
-          gnome-music
-          gnome-photos
-          gnome-screenshot
-          gnome-system-monitor
-          gnome-text-editor
-          gnome-weather
-          nautilus
-          simple-scan
-          totem
-          tracker-miners
-          xdg-desktop-portal-gnome
-          yelp
-          ;; Others.
-          gnome-online-accounts
-          hicolor-icon-theme
-
-          ;; Packages not part of GNOME proper but that are needed for a good
-          ;; experience.  See <https://bugs.gnu.org/39646>.
-          ;; XXX: Find out exactly which ones are needed and why.
-          at-spi2-core
-          dbus
-          dconf
-          desktop-file-utils
-          font-abattis-cantarell
-          font-dejavu
-          gnome-default-applications
-          gst-plugins-base
-          gst-plugins-good
-          gucharmap
-          pinentry-gnome3
-          pulseaudio
-          shared-mime-info
-          system-config-printer
-          xdg-user-dirs
-          yelp
-          zenity)))
-    (synopsis "The GNU desktop environment")
-    (home-page "https://www.gnome.org/")
-    (description
-     "GNOME is the graphical desktop for GNU.  It includes a wide variety of
+(define-syntax gnome-meta-package
+  (lambda (x)
+    (syntax-case x ()
+      ((_ field ...)
+       (with-syntax ((base (datum->syntax x 'base)))
+         #'(let ((base
+                  (package
+                    (name #f)      ; we're hidden by default, so don't worry
+                    (version (package-version gnome-shell))
+                    (source #f)
+                    (build-system trivial-build-system)
+                    (arguments
+                     (list #:builder
+                           #~(begin (format (current-warning-port)
+                                            "Building ~a is useless.  \
+Refer to its propagated inputs instead.\n"
+                                            #$(package-name this-package))
+                                    (mkdir #$output))))
+                    (home-page "https://www.gnome.org")
+                    (synopsis "The GNU desktop environment")
+                    (description "\
+GNOME is the graphical desktop for GNU.  It includes a wide variety of
 applications for browsing the web, editing text and images, creating
 documents and diagrams, playing media, scanning, and much more.")
-    (license license:gpl2+)))
+                    (license license:gpl2+)
+                    (properties `((hidden? . #t))))))
+             (package (inherit base)
+                      field ...)))))))
+
+(define-public gnome-meta-core-services
+  (gnome-meta-package
+   (name "gnome-meta-core-services")
+   (propagated-inputs (list accountsservice
+                            network-manager
+                            packagekit
+                            upower))))
+
+(define-public gnome-meta-core-shell
+  (gnome-meta-package
+   (name "gnome-meta-core-shell")
+   (propagated-inputs (list adwaita-icon-theme
+                            gdm
+                            glib-networking
+                            gnome-backgrounds
+                            gnome-bluetooth
+                            gnome-color-manager
+                            gnome-control-center
+                            gnome-desktop
+                            gnome-initial-setup
+                            gnome-keyring
+                            gnome-menus
+                            gnome-session
+                            gnome-settings-daemon
+                            gnome-shell
+                            gnome-shell-extensions
+                            gnome-themes-extra
+                            gnome-user-docs
+                            gnome-user-share
+                            gsettings-desktop-schemas
+                            gvfs
+                            mutter
+                            orca
+                            rygel
+                            sushi))))
+
+(define-public gnome-meta-core-utilities
+  (gnome-meta-package
+   (name "gnome-meta-core-utilities")
+   (propagated-inputs
+    (append
+     ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
+     ;; only works on x86_64, so exclude it on other architectures.
+     (if (string-prefix? "x86_64" (%current-system))
+         (list eog)
+         '())
+     (list baobab
+           cheese
+           epiphany
+           evince
+           file-roller
+           gnome-calculator
+           gnome-calendar
+           gnome-characters
+           gnome-clocks
+           gnome-console
+           gnome-contacts
+           gnome-disk-utility
+           gnome-font-viewer
+           gnome-maps
+           gnome-music
+           gnome-photos
+           gnome-screenshot
+           gnome-system-monitor
+           gnome-text-editor
+           gnome-weather
+           nautilus
+           simple-scan
+           totem
+           tracker-miners
+           xdg-desktop-portal-gnome
+           yelp)))))
+
+(define-public gnome-essential-extras
+  (gnome-meta-package
+   (name "gnome-essential-extras")
+   (propagated-inputs (list at-spi2-core
+                            dbus
+                            dconf
+                            desktop-file-utils
+                            font-abattis-cantarell
+                            font-dejavu
+                            gnome-default-applications
+                            gnome-online-accounts
+                            gst-plugins-base
+                            gst-plugins-good
+                            gucharmap
+                            hicolor-icon-theme
+                            pinentry-gnome3
+                            pulseaudio
+                            shared-mime-info
+                            system-config-printer
+                            xdg-user-dirs
+                            yelp
+                            zenity))
+   (description "This package provides a list of packages required for
+a good GNOME experience, mixed from core dependencies and other implicitly
+relied-on packages.")))
+
+(define-public gnome
+  (gnome-meta-package
+   (name "gnome")
+   (propagated-inputs
+    (append-map package-propagated-inputs
+                (list gnome-meta-core-services
+                      gnome-meta-core-shell
+                      gnome-meta-core-utilities
+                      gnome-essential-extras)))
+   (properties (list))))
 
 (define-public byzanz
   ;; The last stable release of Byzanz was in 2011, but there have been many