I appreciate that RPi is trying to make the ecosystem more accessible for newcomers - but not at the cost of power users, please!
I happen to have been experimenting with this for the past few weeks, and the most persistent issue was getting wi-fi to work correctly. It's quite a common issue, with any number of hacks. I offer my own network-config below, though I've only tested it with provisioning Ubuntu Server on the RPis so far (I have two 3B+s).
network:
version: 2
renderer: networkd
wifis:
wlan0:
regulatory-domain: "AU"
dhcp4: true
dhcp6: false
optional: false
access-points:
"<access-point-name>":
password: "<password>"
The important parts are:1. The renderer, as the default is NetworkManager, which doesn't work correctly with RPis (at least on Ubuntu Server). It may work with RPiOS, but I haven't tested it yet.
2. The regulatory domain, the lack of which is what disables wi-fi in the first place. I forget how much testing I did with the format, but I believe it must be uppercase (I don't remember about quoting the string, however).
3. Disabling IPv6 may be relevant, though unlikely. It was just in a working configurations I found; I just haven't had time to confirm it. The relevant line in my user-data file is as follows:
bootcmd:
- sysctl net.ipv6.conf.all.disable_ipv6=1
The rest of the configuration is standard, though I purposefully made the wi-fi non-optional so I could confirm that wi-fi worked (my only Internet at the moment is through my iPhone hotspot, which was another source of issues, but that's a whole other story).NB. According to someone else, the imager has the respective command line options for user-data and network-config, which I didn't know.
It's the little paper cuts like this that really hurt on a platform who's original aims were to target the education market, there is still a mountain of tutorials online advising to drop in that file for wifi setup.
Cannot emphasize this enough. People with barely enough knowledge (“script kiddies” so to speak) are configuring and using RPi’s. They just want to follow the tutorial and get it working so they can do what they really want. (Eg image processing or run their 3D printer.) Nothing against this kind of user. I help them when, but…
This creates a situation where “the wrong tutorial” problem is unnecessarily easy to stumble on.
rpi-imager --cli
Has really expanded options over the previous versions.
Including:
--first-run-script <first-run-script> --cloudinit-userdata <cloudinit-userdata> --cloudinit-networkconfig <cloudinit-networkconfig>
Though it doesn't support the old simple config text file, presumably most of that is replaced by cloudinit network config.
I am guessing this is available in the Windows version. I am seeing this from the macOS binary.
Thanks anyway for digging into the source, really appreciated!
Conveniently for me, they keep releasing things right as I start to have an interest in using that thing.
https://github.com/nix-community/nixos-generators
They let you produce SD-card images with custom NixOS'es.
Very useful when you want an exact software layout, and exact system settings, like what user accounts and SSH keys to include, what systemd services should run, what directories should be tmpfs, and how to interact with the local network using avahi.
Raspberry Pi continues to show that its real value is in continuous software and community support.
Even if their hardware isn't the greatest value, the software always shines.