Yeah, you have to define this stuff somewhere. But changing from one to another is simple.
This is my audio setup right now:
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
I will just keep rolling this until it constrains me somehow and then I will revisit it and improve it to fit my needs.
If you like NixOS, this is not a big burden really. Otherwise you are probably better off with some other dist, as you mentioned.
I don't see it as a big tradeoff, but that's because I like this way of doing things.