NixOS on ARM: Rock 5 B

4 Likes

I can’t comment on the EDK2 port for RK3588 platforms but I really recommend using U-Boot instead. With the RK3588 platform, we are at a point where we can dd U-Boot on an SD card (only takes ~8MB of space), boot a NixOS ISO (24.05 and later) and install NixOS on an NVMe drive like one does on an Intel/AMD computer.

Only caveat being that HDMI out works only on Linux v6.13 and later so if you prefer not to use a serial console, you need an ISO with Linux v6.13 and later.

May I ask why you recommend u-boot over uefi?

I’m using uefi on a FriendlyElec NanoPi R6C and a FriendlyElec CM3588 NAS and find systemd-boot more convenient than extlinux.

The Collabora developers who are behind the effort to upstream support for RK3588 are contributing their changes to U-Boot, not EDK2. Also because U-Boot is the preferred choice of bootloader on non-server ARM boards and therefore receives some good-enough support from vendors sometimes.

Last time I installed NixOS on the Rock5B I also tried going with EDK2. However it does not ship the right devuce trees for the mainline kernel. The maintainers also said they are not planning to do so, officially only supporting the BSP kernel. As I also could not figure out how to install a custom kernel I just gave up.

I would great though to have a tutorial for installing with mainline uboot + mainline Linux. The wiki has a page on in, but it seems a bit outdated, as it mainly points to some custom forks and flakes.

1 Like

There’s good news on the kernel side: Mainline 6.13 has the right device tree, so there’s no need for custom kernel any more. That’s why we recommend to set boot.kernelPackages = pkgs.linuxPackages_latest; in the post.

4 Likes