activation: Honor $GUIX_NEW_SYSTEM for use by 'guix system reconfigure'.
authorLudovic Courtès <ludo@gnu.org>
Fri, 12 Sep 2014 15:41:06 +0000 (17:41 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 12 Sep 2014 20:13:52 +0000 (22:13 +0200)
* gnu/build/activation.scm (activate-current-system): Honor
  $GUIX_NEW_SYSTEM by default.
* guix/scripts/system.scm (switch-to-system): Set $GUIX_NEW_SYSTEM
  before loading SCRIPT.

gnu/build/activation.scm
guix/scripts/system.scm

index 04dd19f..16805b9 100644 (file)
@@ -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.
index 7c0dde9..056c8e6 100644 (file)
@@ -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 ...'.