Browse Source

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.
gn-latest-20200428
Ludovic Courtès 6 years ago
parent
commit
6d49355d8b
2 changed files with 9 additions and 1 deletions
  1. +6
    -1
      gnu/build/activation.scm
  2. +3
    -0
      guix/scripts/system.scm

+ 6
- 1
gnu/build/activation.scm View 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.


+ 3
- 0
guix/scripts/system.scm View 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 ...'.


Loading…
Cancel
Save