Subject: [PATCH gnome-team v4 1/7] gnu: Split gnome into more meta-packages.

From: Liliana Marie Prikler <[email-masked]>
Date: Fri, 16 Feb 2024 11:53:43 +0100

* 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.
---
 gnu/packages/gnome.scm | 179 ++++++++++++++++++++++++-----------------
 1 file changed, 105 insertions(+), 74 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7397148c2b..4fde75f612 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -10154,52 +10154,76 @@ (define-public gnome-weather
     (home-page "https://wiki.gnome.org/Apps/Weather")
     (license license:gpl2+)))
 
-(define-public gnome
+(define-syntax-rule (gnome-meta-package %name propagate)
   (package
-    (name "gnome")
+    (name %name)
     (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
+    (arguments
+     (list #:builder
+           #~(begin
+               (format (current-warning-port)
+                       "Building ~a is useless.  \
+Refer to its propagated inputs instead.\n"
+                       #$name)
+               (mkdir #$output))))
+    (propagated-inputs propagate)
+    (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+)
+    (properties `((hidden? . #t)))))
+
+(define-public gnome-meta-core-services
+  (gnome-meta-package
+   "gnome-meta-core-services"
+   (list accountsservice
+         network-manager
+         packagekit
+         upower)))
+
+(define-public gnome-meta-core-shell
+  (gnome-meta-package
+   "gnome-meta-core-shell"
+   (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
+   "gnome-meta-core-utilities"
+   (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
@@ -10224,38 +10248,45 @@ (define-public gnome
           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
-applications for browsing the web, editing text and images, creating
-documents and diagrams, playing media, scanning, and much more.")
-    (license license:gpl2+)))
+          yelp))))
+
+(define-public gnome-essential-extras
+  (package
+    (inherit
+     (gnome-meta-package
+      "gnome-essential-extras"
+      (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
+  (package
+    (inherit (gnome-meta-package "gnome"
+                                 (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

base-commit: 622df12ef389c9e91f68ae10c54c043f34828c83
-- 
2.41.0