installer: Recommend 'ntp-service-type' for non-graphical systems.

We had several bug reports with a root cause of "the clock was
incorrect" from users who used the installer to install a non-graphical
Guix System.

* gnu/installer/services.scm (%system-services): Add the ntp-service-type.
* gnu/installer/newt/services.scm (run-system-administration-cbt-page): New
variable.
(run-services-page): Use run-system-administration-cbt-page when not
installing a desktop.
* gnu/installer/tests.scm (choose-services): Add and use a
choose-misc-service?  procedure.
* gnu/tests/install.scm (installation-target-os-for-gui-tests)<services>: Add
ntp-service-type.
This commit is contained in:
Leo Famulari 2021-04-23 14:50:15 -04:00
parent 029f8d7c12
commit 2842a42b51
No known key found for this signature in database
GPG Key ID: 2646FA30BACA7F08
4 changed files with 44 additions and 3 deletions

View File

@ -3,6 +3,7 @@
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -88,6 +89,27 @@ system.")
(condition
(&installer-step-abort)))))))
(define (run-console-services-cbt-page)
"Run a page to select various system adminstration services for non-graphical
systems."
(let ((items (filter (lambda (service)
(eq? 'administration
(system-service-type service)))
%system-services)))
(run-checkbox-tree-page
#:title (G_ "Console services")
#:info-text (G_ "Select miscellaneous services to run on your \
non-graphical system.")
#:items items
#:selection (map system-service-recommended? items)
#:item->text (compose G_ system-service-name)
#:checkbox-tree-height 5
#:exit-button-callback-procedure
(lambda ()
(raise
(condition
(&installer-step-abort)))))))
(define (run-network-management-page)
"Run a page to select among several network management methods."
(let ((title (G_ "Network management")))
@ -119,6 +141,7 @@ client may be enough for a server.")
(append desktop
(run-networking-cbt-page)
(if (null? desktop)
(list (run-network-management-page))
(cons (run-network-management-page)
(run-console-services-cbt-page))
'())
(run-printing-services-cbt-page))))

View File

@ -3,6 +3,7 @@
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@ -104,6 +105,13 @@
(packages '((specification->package "nss-certs")))
(recommended? #t))
;; Miscellaneous system administration services.
(system-service
(name (G_ "Network time service (NTP), to set the clock automatically"))
(type 'administration)
(recommended? #t)
(snippet '((service ntp-service-type))))
;; Network connectivity management.
(system-service
(name (G_ "NetworkManager network connection manager"))

View File

@ -221,7 +221,11 @@ ROOT-PASSWORD, and USERS."
(choose-network-management-tool?
(lambda (service)
(string-contains service "DHCP")))
(choose-misc-service?
(lambda (service)
(string-contains service "NTP")))
(choose-other-service? (const #f)))
"Converse over PORT to choose services."
(define desktop-environments '())
@ -243,6 +247,11 @@ ROOT-PASSWORD, and USERS."
(null? desktop-environments)
(find choose-network-management-tool? services))
((checkbox-list (title "Console services") (text _)
(items ,services))
(null? desktop-environments)
(filter choose-misc-service? services))
((checkbox-list (title "Printing and document services") (text _)
(items ,services))
(filter choose-other-service? services))))

View File

@ -1685,8 +1685,9 @@ build (current-guix) and then store a couple of full system images.")
(list
(swap-space
(target (uuid "11111111-2222-3333-4444-123456789abc"))))))
(services (cons (service dhcp-client-service-type)
(operating-system-user-services %minimal-os-on-vda)))))
(services (cons* (service dhcp-client-service-type)
(service ntp-service-type)
(operating-system-user-services %minimal-os-on-vda)))))
(define* (installation-target-desktop-os-for-gui-tests
#:key (encrypted? #f))