nixosTests.limine.bios: init

This patch adds a NixOS test for Limine on BIOS systems. It also fixes
some formatting in `nixos/lib/make-disk-image.nix`.

Signed-off-by: John Titor <50095635+JohnRTitor@users.noreply.github.com>
This commit is contained in:
sanana 2025-03-19 22:52:38 +03:00 committed by Masum Reza
parent 95355b4d94
commit c156a809e3
4 changed files with 53 additions and 12 deletions

View file

@ -742,6 +742,15 @@ let
''
) config.boot.loader.grub.devices
)}
${
let
limine = config.boot.loader.limine;
in
lib.optionalString (limine.enable && limine.biosSupport && limine.biosDevice != "/dev/vda") ''
mkdir -p "$(dirname ${limine.biosDevice})"
ln -s /dev/vda ${limine.biosDevice}
''
}
# Set up core system link, bootloader (sd-boot, GRUB, uboot, etc.), etc.

View file

@ -1159,6 +1159,9 @@ in
`useBootLoader` useless. You might want to disable one of those options.
'';
# Install Limine on the bootloader device
boot.loader.limine.biosDevice = cfg.bootLoaderDevice;
# In UEFI boot, we use a EFI-only partition table layout, thus GRUB will fail when trying to install
# legacy and UEFI. In order to avoid this, we have to put "nodev" to force UEFI-only installs.
# Otherwise, we set the proper bootloader device for this.

View file

@ -0,0 +1,28 @@
{ lib, ... }:
{
name = "bios";
meta.maintainers = with lib.maintainers; [
lzcunt
phip1611
programmerlexi
];
meta.platforms = [
"i686-linux"
"x86_64-linux"
];
nodes.machine =
{ ... }:
{
virtualisation.useBootLoader = true;
virtualisation.useBootPartition = true;
boot.loader.limine.enable = true;
boot.loader.limine.efiSupport = false;
boot.loader.timeout = 0;
};
testScript = ''
machine.start()
with subtest('Machine boots correctly'):
machine.wait_for_unit('multi-user.target')
'';
}

View file

@ -3,6 +3,7 @@
...
}:
{
bios = runTest ./bios.nix;
checksum = runTest ./checksum.nix;
secureBoot = runTest ./secure-boot.nix;
specialisations = runTest ./specialisations.nix;