From 9aeb8e3dee32254a19a68971f26e214c7b717e5b Mon Sep 17 00:00:00 2001 From: Janneke Nieuwenhuizen Date: Tue, 15 Oct 2024 23:27:17 +0200 Subject: installer: Add dry-run? This allows running the installer without root privileges. Do something like ./pre-inst-env guix repl ,use (guix) ,use (gnu installer) (installer-program #:dry-run? #t) ,build $1 => "/gnu/store/...-installer-program" and run /gnu/store/...-installer-program * gnu/installer/newt.scm (locale-page): Add #:dry-run? parameter. (keymap-page): Likewise. * gnu/installer/newt/keymap.scm (run-keymap-page): Likewise. * gnu/installer/steps.scm (run-installer-steps): Likewise. Use it to skip writing to socket. * gnu/installer/newt/final.scm (run-final-page): Rename to... (run-final-page-install): ...this. (dry-run-final-page, run-final-page): New procedures. * gnu/installer/parted.scm (bootloader-configuration): Cater for empty user partitions. * gnu/installer/utils.scm (dry-run-command): New procedure. * gnu/installer.scm (compute-locale-step): Add #:dry-run? parameter. Use it to avoid actually applying locale. (compute-keymap-step): Add dry-run? parameter. Pass it to keymap-page. (installer-program): Add #:dry-run? parameter. If #:true avoid writing to /proc, use dry-run-command, skip sync and reboot, and pass dry-run? to... (installer-steps): ...here. Add #:dry-run? parameter. Use it to disable skip network, substitutes, partitioning pages, and pass it to... compute-locale-step, compute-keymap-step, and final-page. Change-Id: I0ff4c3b0a0c69539af617c27ba37654beed44619 --- gnu/installer/newt/final.scm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'gnu/installer/newt/final.scm') diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm index 9f950a0551..c4e53f6d79 100644 --- a/gnu/installer/newt/final.scm +++ b/gnu/installer/newt/final.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018, 2020 Mathieu Othacehe ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2024 Janneke Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -106,7 +107,7 @@ a specific step, or restart the installer.")) (newt-resume) install-ok?)) -(define (run-final-page result prev-steps) +(define (run-final-page-install result prev-steps) (define (wait-for-clients) (unless (null? (current-clients)) (installer-log-line "waiting with clients before starting final step") @@ -133,3 +134,20 @@ a specific step, or restart the installer.")) (if install-ok? (run-install-success-page) (run-install-failed-page)))) + +(define (dry-run-final-page result prev-steps) + (installer-log-line "proceeding with final step -- dry-run") + (let* ((configuration (format-configuration prev-steps result)) + (user-partitions (result-step result 'partition)) + (locale (result-step result 'locale)) + (users (result-step result 'user)) + (file (configuration->file configuration)) + (install-ok? (run-config-display-page #:locale locale))) + (if install-ok? + (run-install-success-page) + (run-install-failed-page)))) + +(define (run-final-page result prev-steps dry-run?) + (if dry-run? + (dry-run-final-page result prev-steps) + (run-final-page-install result prev-steps))) -- cgit v1.2.3