linux/common-config: enable EFI on supported platforms

Currently, is it possible for stdenv.hostPlatform.isEfi to be true but
the kernel to have no EFI support. This mainly occurs on armv6l and
causes systemd in initrd to fail to build because it attempts to include
the non-existent efivarfs module in the initrd.

To fix this, automatically enable CONFIG_EFI on platforms where isEfi is
true. An alternative would be to make isEfi false on armv6l, but EFI is
in fact usable on that platform.

To prove this, I successfully booted NixOS on a Raspberry Pi Zero using
systemd-boot and U-Boot's EFI support. I confirmed that efivarfs works
as well.
This commit is contained in:
Ben Wolsieffer
2025-04-28 21:21:19 -04:00
parent 61f968627e
commit 3aff7b471c

View File

@@ -1165,6 +1165,7 @@ let
DVB_DYNAMIC_MINORS = option yes; # we use udev
EFI = lib.mkIf stdenv.hostPlatform.isEfi yes;
EFI_STUB = yes; # EFI bootloader in the bzImage itself
EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER = whenOlder "6.2" (whenAtLeast "5.8" yes); # initrd kernel parameter for EFI