diff options
author | Daniel Fullmer <danielrf12@gmail.com> | 2020-06-14 13:16:30 -0400 |
---|---|---|
committer | Daniel Fullmer <danielrf12@gmail.com> | 2020-06-15 20:22:45 -0400 |
commit | 7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad (patch) | |
tree | 932e95b975e4ae6e0ce5c027a0cae4388abff10e /nixos/modules/system | |
parent | d6d07f262b171bb1e415e1a06c52288af056a98d (diff) | |
download | nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.tar nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.tar.gz nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.tar.bz2 nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.tar.lz nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.tar.xz nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.tar.zst nixlib-7e3519a7cf273e80c0b055158e9bd2d5ea1c11ad.zip |
nixos/systemd-boot: update bootloader if needed
Diffstat (limited to 'nixos/modules/system')
-rw-r--r-- | nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py index f48a085ce57a..788b2014cedf 100644 --- a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py +++ b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py @@ -197,6 +197,22 @@ def main(): subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "install"]) else: subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "--no-variables", "install"]) + else: + # Update bootloader to latest if needed + systemd_version = subprocess.check_output(["@systemd@/bin/bootctl", "--version"], universal_newlines=True).split()[1] + sdboot_status = subprocess.check_output(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "status"], universal_newlines=True) + + # See status_binaries() in systemd bootctl.c for code which generates this + m = re.search("^\W+File:.*/EFI/(BOOT|systemd)/.*\.efi \(systemd-boot (\d+)\)$", + sdboot_status, re.IGNORECASE | re.MULTILINE) + if m is None: + print("could not find any previously installed systemd-boot") + else: + sdboot_version = m.group(2) + if systemd_version > sdboot_version: + print("updating systemd-boot from %s to %s" % (sdboot_version, systemd_version)) + subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "update"]) + mkdir_p("@efiSysMountPoint@/efi/nixos") mkdir_p("@efiSysMountPoint@/loader/entries") |