summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorturtton <top.gear7509@turtton.net>2024-07-13 11:57:07 +0900
committerJörg Thalheim <joerg@thalheim.io>2024-07-13 09:20:13 +0200
commitbe20b91547931e07c542739050a412058e1582eb (patch)
treebf7886baeff5a93a27b6701f7b42d76494b1f9a0
parent3a81f510936f3cf091280ba17de8c7445276f96f (diff)
nixos/systemd-boot-builder: fix installed_match regex
Fix regular expression used to get bootloader versions from bootctl status. This avoids problems that occur in minor environments like mine. References: #296563
-rw-r--r--nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py11
1 files changed, 10 insertions, 1 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 71ef8695c2d8..0d8763e97154 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
@@ -314,7 +314,16 @@ def install_bootloader(args: argparse.Namespace) -> None:
).stdout
# See status_binaries() in systemd bootctl.c for code which generates this
- installed_match = re.search(r"^\W+File:.*/EFI/(?:BOOT|systemd)/.*\.efi \(systemd-boot ([\d.]+[^)]*)\)$",
+ # Matches
+ # Available Boot Loaders on ESP:
+ # ESP: /boot (/dev/disk/by-partuuid/9b39b4c4-c48b-4ebf-bfea-a56b2395b7e0)
+ # File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 255.2)
+ # But also:
+ # Available Boot Loaders on ESP:
+ # ESP: /boot (/dev/disk/by-partuuid/9b39b4c4-c48b-4ebf-bfea-a56b2395b7e0)
+ # File: ├─/EFI/systemd/HashTool.efi
+ # └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 255.2)
+ installed_match = re.search(r"^\W+.*/EFI/(?:BOOT|systemd)/.*\.efi \(systemd-boot ([\d.]+[^)]*)\)$",
installed_out, re.IGNORECASE | re.MULTILINE)
available_match = re.search(r"^\((.*)\)$", available_out)