Presumably that is a reference to not having a graphical boot menu, so you can’t get to the boot entry selection and therefore “can’t” roll back.
This is a half-truth, and NixOS is no worse than other OSes in this regard.
Most headless machines still have some way to access your boot menu, albeit sometimes an awkward way. Worst case you can use GRUB, which supports working over the serial port.
For an rpi that’s all completely moot anyway because you can just connect a monitor over HDMI if push comes to shove.
Anyway, if you can successfully boot, and are keeping your config in git, you can trivially just redeploy the previous commit, so it’s hard to get NixOS so borked you need rollback at boot time. At least once you’re in maintenance mode and have disconnected the monitor.
No, but personally I tend to avoid it because docker adds another layer of semi-“package”-management which needs to be maintained separately.
NixOS eventually becomes streamlined enough that the additional maintenance overhead feels annoying, especially because you can achieve almost everything docker can do through nix+systemd, making a container runtime feel completely superfluous.
Unlike other distros writing downstream packages is so completely trivial that you really notice when you’re not using distro tooling for something where you absolutely could.
That’s not to say you can’t use docker. In the intermediate term it’s probably a good idea. It takes a while to learn nix, and this can really help tide you over.
If you have zero programming experience, good luck.
It looks like you have some though. The learning curve is steep, understanding systemd can be helpful, as can knowing roughly what basic packages are and do.
But if you’ve packaged up your own docker containers with reasonable knowledge of what you’re doing, I think you’ll be just fine.
I’d still recommend getting a NixOS installation on a second machine that actually has a monitor and keyboard most of the time, so you can make use of
nixos-rebuild build-vm as well as its remote deployment features (or those of deploy-rs).