today i'm unhappy about NixOS because: the GRUB graphical mode straight up crashes on this motherboard. not "cannot boot a kernel", not "errors out", but "crashes attempting to transition out of graphical mode to text mode" (whatever that even means with an EFI framebuffer)

I spent thirty fucking minutes trying to figure out what went wrong. the kernel boots if i extract it from the nix store and use the EFI stub. every option in the GRUB menu crashes. i had to edit it using the EFI text editor (it's a polyglot image which Linux mounts as iso9660 but EFI mounts as FAT32) to enable textmode unconditionally

(interestingly, after this every time i transition between GRUB menus it complains about "not being able to fit glyphs on screen". maybe that's what crashes it? no idea.)

i don't like GRUB. i dislike GRUB to such an extent that my personal laptop boots into the EFI shell and then i manually run a .nsh script that runs my kernel (i would use EFI boot options but Dell broke command line support in EFI boot options on their laptops and haven't managed to fix it for like 5 years). at least it works every time
@whitequark I think you could get around this by using a UKI with built-in kernel parameters inside it. It needs quite a bit of space on the ESP though due to the bundled initramfs.

@lunareclipse well i already put my initrd there so it's not a problem

what i don't want however is to rebuild my kernel just to put the cmdline in it. on an embedded target i could do this with an fdt...

what do you mean by an UKI

@whitequark @lunareclipse it's a boot stub standard, you don't have to rebuild the kernel, just update the stub. I've been using it for a while and is much nicer than having to fiddle with boot manager configs, you just point the firmware at it and that's it. https://uapi-group.org/specifications/specs/unified_kernel_image/
UAPI.5 Unified Kernel Images

UAPI.5 Unified Kernel Images (UKI)# Version Changes 1.0 Initial Release A Unified Kernel Image (UKI) is a combination of an UEFI boot stub program, a Linux kernel image, an optional initrd, and further resources in a single UEFI PE file. This file can either be directly invoked by the UEFI firmware (which is useful in particular in some cloud/Confidential Computing environments) or through a boot loader (which is generally useful to allow multiple kernel versions with interactive or automatic selection of version to boot into).

UAPI Group Specifications
@MissingClara @whitequark @lunareclipse Can confirm that UKIs work like a charm although I'm still using systemd-boot in between which also really gets out of the way! And systemd-ukify bundles the kernel, initrd and cmdline all together and even signs the bundle if you want