{ pkgs, lib, ... }: let kernelBundle = pkgs.linuxAndFirmware.latest; in { boot = { loader.raspberry-pi.firmwarePackage = kernelBundle.raspberrypifw; kernelPackages = kernelBundle.linuxPackages_rpi5; }; hardware.raspberry-pi.config = { all = { # [all] conditional filter, https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters options = { # https://www.raspberrypi.com/documentation/computers/config_txt.html#enable_uart # in conjunction with `console=serial0,115200` in kernel command line (`cmdline.txt`) # creates a serial console, accessible using GPIOs 14 and 15 (pins # 8 and 10 on the 40-pin header) enable_uart = { enable = true; value = true; }; # https://www.raspberrypi.com/documentation/computers/config_txt.html#uart_2ndstage # enable debug logging to the UART, also automatically enables # UART logging in `start.elf` uart_2ndstage = { enable = true; value = true; }; }; # Base DTB parameters # https://github.com/raspberrypi/linux/blob/a1d3defcca200077e1e382fe049ca613d16efd2b/arch/arm/boot/dts/overlays/README#L132 base-dt-params = { # https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#enable-pcie pciex1 = { enable = true; value = "on"; }; # PCIe Gen 3.0 # https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#pcie-gen-3-0 pciex1_gen = { enable = true; value = "3"; }; }; }; }; }