summary refs log tree commit diff
path: root/gnu/installer/newt/services.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/installer/newt/services.scm')
-rw-r--r--gnu/installer/newt/services.scm37
1 files changed, 32 insertions, 5 deletions
diff --git a/gnu/installer/newt/services.scm b/gnu/installer/newt/services.scm
index 6bcb6244ae..10c19115ca 100644
--- a/gnu/installer/newt/services.scm
+++ b/gnu/installer/newt/services.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,11 +33,33 @@
 environments."
   (run-checkbox-tree-page
    #:info-text (G_ "Please select the desktop(s) environment(s) you wish to \
-install. If you select multiple desktops environments, we will be able to \
-choose the one to use on the log-in screen with F1.")
+install. If you select multiple desktops environments, you will be able to \
+choose the one to use on the log-in screen.")
    #:title (G_ "Desktop environment")
-   #:items %desktop-environments
-   #:item->text desktop-environment-name
+   #:items (filter desktop-system-service? %system-services)
+   #:item->text system-service-name               ;no i18n for DE names
+   #:checkbox-tree-height 5
+   #:exit-button-callback-procedure
+   (lambda ()
+     (raise
+      (condition
+       (&installer-step-abort))))))
+
+(define (run-networking-cbt-page network-management?)
+  "Run a page allowing the user to select networking services.  When
+NETWORK-MANAGEMENT? is true, include network management services like
+NetworkManager."
+  (run-checkbox-tree-page
+   #:info-text (G_ "You can now select networking services to run on your \
+system.")
+   #:title (G_ "Network service")
+   #:items (filter (let ((types (if network-management?
+                                    '(network-management networking)
+                                    '(networking))))
+                     (lambda (service)
+                       (memq (system-service-type service) types)))
+                   %system-services)
+   #:item->text (compose G_ system-service-name)
    #:checkbox-tree-height 5
    #:exit-button-callback-procedure
    (lambda ()
@@ -45,4 +68,8 @@ choose the one to use on the log-in screen with F1.")
        (&installer-step-abort))))))
 
 (define (run-services-page)
-  (run-desktop-environments-cbt-page))
+  (let ((desktop (run-desktop-environments-cbt-page)))
+    ;; When the user did not select any desktop services, and thus didn't get
+    ;; '%desktop-services', offer network management services.
+    (append desktop
+            (run-networking-cbt-page (null? desktop)))))