This is the ROS way: add more layers of crap on it until it sorta kinda works sometimes. If you want "reproducible package management", use Debian. ROS1 is already in stock Debian. Some of ROS2 is as well. If you actually want ros to suck less, please package the reset of ROS2, and push it to Debian.
Pretty much yeah, I remember I did some work with ROS2 after 1, and since then I always prefer to build from scratch, cleaner, simpler, and in many cases far better results too.
Any thoughts on Nix for this?
Sometimes (probably most times) you don’t have the privilege of choosing the OS, for example, if you have to use a Jetson SBC you will mostly use the default ubuntu so you can utilize the nvidia drivers for the cuda cores.
There's NixOS for Jetson, fwiw
The packaging is only one of ROS's numerous issues. Just do it yourself.
https://github.com/lopsided98/nix-ros-overlay
Debian is a terrible dependency management solution for adding development dependencies to a workspace (e.g. the same sort of thing npm, cargo, and uv are used for).
As far as I can tell, pixi brings the benefits of these types of dependencies, with native support for multiple languages (python and c++ being the big ones).
ROS uses debian packages today (inside a convoluted wrapper), imo it would be much better if it went all in on pixi instead.