M gnu/build/activation.scm => gnu/build/activation.scm +6 -1
@@ 236,8 236,13 @@ copy SOURCE to TARGET."
"Return the '--system' argument passed on the kernel command line."
(find-long-option "--system" (linux-command-line)))
-(define* (activate-current-system #:optional (system (boot-time-system)))
+(define* (activate-current-system
+ #:optional (system (or (getenv "GUIX_NEW_SYSTEM")
+ (boot-time-system))))
"Atomically make SYSTEM the current system."
+ ;; The 'GUIX_NEW_SYSTEM' environment variable is used as a way for 'guix
+ ;; system reconfigure' to pass the file name of the new system.
+
(format #t "making '~a' the current system...~%" system)
;; Atomically make SYSTEM current.
M guix/scripts/system.scm => guix/scripts/system.scm +3 -0
@@ 199,6 199,9 @@ it atomically, and then run OS's activation script."
;; The activation script may change $PATH, among others, so protect
;; against that.
(return (save-environment-excursion
+ ;; Tell 'activate-current-system' what the new system is.
+ (setenv "GUIX_NEW_SYSTEM" system)
+
(primitive-load (derivation->output-path script))))
;; TODO: Run 'deco reload ...'.