Subject: [PATCH v7 1/3] installer: Offer the CUPS printing service on a dedicated page.

From: Leo Famulari <[email-masked]>
Date: Mon, 27 Dec 2021 17:24:08 -0500

Currently, this page of the installer offers to the user all installer services
that are not of the types 'desktop', 'network-management', or 'networking'.
Concretely, this means that it offers the CUPS printing service, because that
is the only service of a different type defined in the installer.

In later commits, we will add some services of a new type, and we only want them
to be offered when the user is installing a non-graphical system.

At least one of these new services (NTP) is part of %desktop-services. If it
were offered on run-other-services-cbt-page, and the user had configured a
system using %desktop-services, the user could accidentally add NTP to their
services twice, which is an error and would break installation.

So, this commit makes the run-other-services-cbt-page be more specific about
what services to offer. This allows us to later create a new checkbox page that
only runs when %desktop-services is not selected.

* gnu/installer/newt/services.scm (run-other-services-cbt-page): Rename to ...
(run-printing-services-cbt-page): ... new variable, and select only 'document' services.
(run-services-page): Adjust accordingly.
* gnu/installer/tests.scm (choose-services): Adjust accordingly.
---
 gnu/installer/newt/services.scm | 16 +++++++---------
 gnu/installer/tests.scm         |  2 +-
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/gnu/installer/newt/services.scm b/gnu/installer/newt/services.scm
index 1af4e7df2d..b4b5219b20 100644
--- a/gnu/installer/newt/services.scm
+++ b/gnu/installer/newt/services.scm
@@ -68,18 +68,16 @@ (define (run-networking-cbt-page)
         (condition
          (&installer-step-abort)))))))
 
-(define (run-other-services-cbt-page)
-  "Run a page allowing the user to select other services."
+(define (run-printing-services-cbt-page)
+  "Run a page allowing the user to select document services such as CUPS."
   (let ((items (filter (lambda (service)
-                         (not (member (system-service-type service)
-                                      '(desktop
-                                        network-management
-                                        networking))))
+                         (eq? 'document
+                              (system-service-type service)))
                        %system-services)))
     (run-checkbox-tree-page
-     #:info-text (G_ "You can now select other services to run on your \
+     #:info-text (G_ "You can now select the CUPS printing service to run on your \
 system.")
-     #:title (G_ "Other services")
+     #:title (G_ "Printing and document services")
      #:items items
      #:selection (map system-service-recommended? items)
      #:item->text (compose G_ system-service-name)
@@ -123,4 +121,4 @@ (define (run-services-page)
             (if (null? desktop)
                 (list (run-network-management-page))
                 '())
-            (run-other-services-cbt-page))))
+            (run-printing-services-cbt-page))))
diff --git a/gnu/installer/tests.scm b/gnu/installer/tests.scm
index 12d1d91608..5d931149b8 100644
--- a/gnu/installer/tests.scm
+++ b/gnu/installer/tests.scm
@@ -243,7 +243,7 @@ (define desktop-environments '())
      (null? desktop-environments)
      (find choose-network-management-tool? services))
 
-    ((checkbox-list (title "Other services") (text _)
+    ((checkbox-list (title "Printing and document services") (text _)
                     (items ,services))
      (filter choose-other-service? services))))
 
-- 
2.34.0