diff --git a/modules/rosenthal/bootloader/limine.scm b/modules/rosenthal/bootloader/limine.scm index bf63290..6f85ec5 100644 --- a/modules/rosenthal/bootloader/limine.scm +++ b/modules/rosenthal/bootloader/limine.scm @@ -36,10 +36,10 @@ old-entries)) (define labels - (map-in-order menu-entry-label menu-entries)) + (map menu-entry-label menu-entries)) (define ukify-args - (map-in-order menu-entry->ukify-args menu-entries)) + (map menu-entry->ukify-args menu-entries)) (program-file "install-limine" (with-imported-modules diff --git a/modules/rosenthal/bootloader/uki.scm b/modules/rosenthal/bootloader/uki.scm index deb6814..14b3e38 100644 --- a/modules/rosenthal/bootloader/uki.scm +++ b/modules/rosenthal/bootloader/uki.scm @@ -26,7 +26,25 @@ #~(list "--os-release" #$label "--linux" #$linux "--initrd" #$initrd - "--cmdline" (string-join (list #$@arguments)) + "--cmdline" + (string-join + (map (lambda (arg) + ;; Use absolute references to avoid stale system generation + ;; status. + (if (or (string-prefix? "gnu.system=" arg) + (string-prefix? "gnu.load=" arg)) + (let* ((split-arg (string-split arg #\=)) + (option (car split-arg)) + (value (cadr split-arg))) + (string-join + (list option + (catch #t + (lambda () + (readlink value)) + (const value))) + "=")) + arg)) + (list #$@arguments))) "--stub" #$(file-append systemd-stub "/libexec/" (systemd-stub-name)))))