~ruther/guix-local

6d49355d8b69869ba46c7ca6a98eafc5dc6c4c64 — Ludovic Courtès 11 years ago ddfc2fd
activation: Honor $GUIX_NEW_SYSTEM for use by 'guix system reconfigure'.

* 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.
2 files changed, 9 insertions(+), 1 deletions(-)

M gnu/build/activation.scm
M guix/scripts/system.scm
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 ...'.