Raspberry Pi 3 documentation

I have been trying to configure a raspberry pi 3(B+) and I keep bumping on documentation on the wiki that is not working and probably outdated. I want to fix the documentation, but finding out how things actually work proves difficult.

For example the wiki has the following entry for audio support:NixOS on ARM/Raspberry Pi 3 - NixOS Wiki, but changing boot.loader.raspberryPi.firmwareConfig does not actually change the /boot/config.txt even though the raspberry pi module is enabled with u-boot.

There is a more or less stale issue mentioning this (/boot/config.txt related questions for Raspberry Pi · Issue #67792 · NixOS/nixpkgs · GitHub) but there is no movement there. A few PR’s have been openened/merged for Raspberry Pi in general and I think some of those changes may have changed the default behavior.

So what I am looking for in order to improve the wiki:

  • A working configuration running on a Raspberry Pi 3(B+)
  • How the bootloader currently works (multiple options?)
  • How to set config.txt values

The Raspberry Pi 3 is currently the only officially supported raspberry pi, so let’s try to fix the docs!

I recently started using NixOS for a headless Raspberry Pi 3 setup at work.
It’s mostly based on this blog post.
I have written down instructions and created configs which work fairly reproducible.
The trick seems to be to create the swap file before the first nixos-rebuild. If the config is fairly large, the memory seems to run out and the rebuild crashes silently.
Also boot.kernelPackages should be set to pkgs.linuxPackages_rpi3 for bluetooth to work.

Should I edit the wiki with my findings?

I didn’t yet find out why boot.loader.raspberryPi.firmwareConfig doesn’t work
According to the code it should.
In my case no /boot/config is generated at all.