I have abandoned my attempt to build a custom kernel, and instead tried to use a similar kernel config to the one used by Armbian, and by comparing I found a few settings that were baked in instead of included as modules. By using this config and recompiling the kernel I managed to fix the NVMe detection problem:
{
boot.kernelPackages = pkgs.linuxPackages_5_10;
boot.kernelPatches = [{
name = "pcie-rockchip-config.patch";
patch = null;
extraConfig = ''
LOCALVERSION_AUTO n
COMPILE_TEST y
NVME_CORE y
BLK_DEV_NVME y
NVME_MULTIPATH y
PCIE_ROCKCHIP y
PCIE_ROCKCHIP_HOST y
PCIE_ROCKCHIP_EP y
ROCKCHIP_THERMAL y
ROCKCHIP_LVDS y
ROCKCHIP_MBOX y
DEVFREQ_EVENT_ROCKCHIP_DFI y
ROCKCHIP_SARADC y
PHY_ROCKCHIP_DP y
PHY_ROCKCHIP_INNO_HDMI y
PHY_ROCKCHIP_INNO_USB3 y
PHY_ROCKCHIP_PCIE y
PHY_ROCKCHIP_USB y
'';
}];
}