installer: Add dialog to select networking services.
* gnu/installer/newt/services.scm (run-networking-cbt-page): New procedure. (run-services-page): Call it. * gnu/installer/services.scm (%system-services): Add OpenSSH and Tor. (networking-system-service?): New procedure. * gnu/installer/steps.scm (format-configuration): Add 'networking' and 'ssh' to the service modules.master
parent
75988317b2
commit
7d1030a635
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||||
|
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -44,5 +45,21 @@ choose the one to use on the log-in screen.")
|
||||||
(condition
|
(condition
|
||||||
(&installer-step-abort))))))
|
(&installer-step-abort))))))
|
||||||
|
|
||||||
|
(define (run-networking-cbt-page)
|
||||||
|
"Run a page allowing the user to select networking services."
|
||||||
|
(run-checkbox-tree-page
|
||||||
|
#:info-text (G_ "You can now select networking services to run on your
|
||||||
|
system.")
|
||||||
|
#:title (G_ "Network service")
|
||||||
|
#:items (filter networking-system-service? %system-services)
|
||||||
|
#:item->text system-service-name
|
||||||
|
#:checkbox-tree-height 5
|
||||||
|
#:exit-button-callback-procedure
|
||||||
|
(lambda ()
|
||||||
|
(raise
|
||||||
|
(condition
|
||||||
|
(&installer-step-abort))))))
|
||||||
|
|
||||||
(define (run-services-page)
|
(define (run-services-page)
|
||||||
(run-desktop-environments-cbt-page))
|
(append (run-desktop-environments-cbt-page)
|
||||||
|
(run-networking-cbt-page)))
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
system-service-snippet
|
system-service-snippet
|
||||||
|
|
||||||
desktop-system-service?
|
desktop-system-service?
|
||||||
|
networking-system-service?
|
||||||
|
|
||||||
%system-services
|
%system-services
|
||||||
system-services->configuration))
|
system-services->configuration))
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
system-service make-system-service
|
system-service make-system-service
|
||||||
system-service?
|
system-service?
|
||||||
(name system-service-name) ;string
|
(name system-service-name) ;string
|
||||||
(type system-service-type) ;symbol
|
(type system-service-type) ;'desktop | 'networking
|
||||||
(snippet system-service-snippet)) ;sexp
|
(snippet system-service-snippet)) ;sexp
|
||||||
|
|
||||||
;; This is the list of desktop environments supported as services.
|
;; This is the list of desktop environments supported as services.
|
||||||
|
@ -58,12 +59,26 @@
|
||||||
(snippet '(service mate-desktop-service-type)))
|
(snippet '(service mate-desktop-service-type)))
|
||||||
(desktop-environment
|
(desktop-environment
|
||||||
(name "Enlightenment")
|
(name "Enlightenment")
|
||||||
(snippet '(service enlightenment-desktop-service-type))))))
|
(snippet '(service enlightenment-desktop-service-type)))
|
||||||
|
|
||||||
|
;; Networking.
|
||||||
|
(system-service
|
||||||
|
(name "OpenSSH secure shell daemon (sshd)")
|
||||||
|
(type 'networking)
|
||||||
|
(snippet '(service openssh-service-type)))
|
||||||
|
(system-service
|
||||||
|
(name "Tor anonymous network router")
|
||||||
|
(type 'networking)
|
||||||
|
(snippet '(service tor-service-type))))))
|
||||||
|
|
||||||
(define (desktop-system-service? service)
|
(define (desktop-system-service? service)
|
||||||
"Return true if SERVICE is a desktop environment service."
|
"Return true if SERVICE is a desktop environment service."
|
||||||
(eq? 'desktop (system-service-type service)))
|
(eq? 'desktop (system-service-type service)))
|
||||||
|
|
||||||
|
(define (networking-system-service? service)
|
||||||
|
"Return true if SERVICE is a desktop environment service."
|
||||||
|
(eq? 'networking (system-service-type service)))
|
||||||
|
|
||||||
(define (system-services->configuration services)
|
(define (system-services->configuration services)
|
||||||
"Return the configuration field for SERVICES."
|
"Return the configuration field for SERVICES."
|
||||||
(let* ((snippets (map system-service-snippet services))
|
(let* ((snippets (map system-service-snippet services))
|
||||||
|
|
|
@ -215,7 +215,7 @@ found in RESULTS."
|
||||||
'())))
|
'())))
|
||||||
steps))
|
steps))
|
||||||
(modules '((use-modules (gnu))
|
(modules '((use-modules (gnu))
|
||||||
(use-service-modules desktop))))
|
(use-service-modules desktop networking ssh))))
|
||||||
`(,@modules
|
`(,@modules
|
||||||
()
|
()
|
||||||
(operating-system ,@configuration))))
|
(operating-system ,@configuration))))
|
||||||
|
|
Reference in New Issue