diff options
author | Danny Milosavljevic <dannym@scratchpost.org> | 2017-04-15 19:34:00 +0200 |
---|---|---|
committer | Danny Milosavljevic <dannym@scratchpost.org> | 2017-04-15 19:34:00 +0200 |
commit | abae042ea4d7fc3add0341dc2e04aaa0d7a12646 (patch) | |
tree | 19778d1e3e2bc0d199da4201848e14817218c89c /guix/scripts | |
parent | 8c326cf644b2fda3f33eb8816387ff1bd2acc640 (diff) | |
download | gnu-guix-abae042ea4d7fc3add0341dc2e04aaa0d7a12646.tar gnu-guix-abae042ea4d7fc3add0341dc2e04aaa0d7a12646.tar.gz |
scripts: system: Introduce profile-boot-parameters.
* guix/scripts/system.scm (profile-boot-parameters): New variable.
(reinstall-grub): Use profile-boot-parameters.
(perform-action): Use profile-boot-parameters.
Follow-up to 2e58e05bb68d4b747882cfa2b460b132d456f54a.
Diffstat (limited to 'guix/scripts')
-rw-r--r-- | guix/scripts/system.scm | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index b1a754f92d..3ba420d8e7 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -363,6 +363,24 @@ it atomically, and then run OS's activation script." (date->string (time-utc->date time) "~Y-~m-~d ~H:~M"))) +(define* (profile-boot-parameters #:optional (profile %system-profile) + (numbers (generation-numbers profile))) + "Return a list of 'menu-entry' for the generations of PROFILE specified by +NUMBERS, which is a list of generation numbers." + (define (system->boot-parameters system number time) + (unless-file-not-found + (let* ((file (string-append system "/parameters")) + (params (call-with-input-file file + read-boot-parameters))) + params))) + (let* ((systems (map (cut generation-file-name profile <>) + numbers)) + (times (map (lambda (system) + (unless-file-not-found + (stat:mtime (lstat system)))) + systems))) + (filter-map system->boot-parameters systems numbers times))) + (define* (profile-grub-entries #:optional (profile %system-profile) (numbers (generation-numbers profile))) "Return a list of 'menu-entry' for the generations of PROFILE specified by @@ -438,9 +456,9 @@ open connection to the store." ;; from the actual past values for this generation's entry. (grub-config (grub-configuration (device root-device))) ;; Make the specified system generation the default entry. - (entries (profile-grub-entries %system-profile (list number))) + (entries (profile-boot-parameters %system-profile (list number))) (old-generations (delv number (generation-numbers %system-profile))) - (old-entries (profile-grub-entries %system-profile old-generations)) + (old-entries (profile-boot-parameters %system-profile old-generations)) (grub.cfg (run-with-store store (grub-configuration-file grub-config entries @@ -625,7 +643,7 @@ output when building a system derivation, such as a disk image." (operating-system-bootcfg os (if (eq? 'init action) '() - (profile-grub-entries))))) + (profile-boot-parameters))))) ;; For 'init' and 'reconfigure', always build GRUB.CFG, even if ;; --no-grub is passed, because GRUB.CFG because we then use it as a GC |