installer: Actually reboot when the user presses "Reboot."

* gnu/installer/newt/final.scm (run-install-success-page): Return
'success.
* gnu/installer.scm (installer-program): Check the result of the 'final
step and reboot upon success.
This commit is contained in:
Ludovic Courtès 2019-04-26 14:08:39 +02:00
parent 9529f7850e
commit 98f035482f
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 19 additions and 5 deletions

View file

@ -314,6 +314,7 @@ (define installer-builder
guile-json guile-git guix)
(with-imported-modules `(,@(source-module-closure
`(,@modules
(gnu services herd)
(guix build utils))
#:select? module-to-import?)
((guix config) => ,(make-config.scm)))
@ -363,10 +364,20 @@ (define installer-builder
(catch #t
(lambda ()
(run-installer-steps
#:rewind-strategy 'menu
#:menu-proc (installer-menu-page current-installer)
#:steps steps))
(define results
(run-installer-steps
#:rewind-strategy 'menu
#:menu-proc (installer-menu-page current-installer)
#:steps steps))
(match (result-step results 'final)
('success
;; We did it! Let's reboot!
(sync)
(stop-service 'root))
(_ ;installation failed
;; TODO: Honor the result of 'run-install-failed-page'.
#f)))
(const #f)
(lambda (key . args)
(let ((error-file "/tmp/last-installer-error"))

View file

@ -56,7 +56,10 @@ (define (run-install-success-page)
(G_ "Reboot")
(G_ "Congratulations! Installation is now complete. \
You may remove the device containing the installation image and \
press the button to reboot.")))
press the button to reboot."))
;; Return success so that the installer happily reboots.
'success)
(define (run-install-failed-page)
(choice-window