All of the criticism here mainly applies to laptop setups it seems, so saying the module is “broken” feels like the wrong end to start from. Acknowledging it is mainly maintained by desktop and server Nvidia users is probably more productive. As a desktop Nvidia user, I can’t relate to most of the issues layed, the defaults work mostly fine for graphical Wayland usage thanks to enabling modesetting, GSP and open kernel modules by default nowadays. Of course, the fact that power management is not enabled by default and standby/hibernate won’t work without it is something you still have to figure out yourself as a desktop user (and the wiki / manual should probably be clearer that enabling powermanagement on Wayland is not optional at all if you do want to use standby).
I agree the videoAcceleration option is… of limited use, as it does not work work for Chromium at all and even Firefox requires a combination of environment variables / configuration to make it work. Long-term, I see the solution for this in the adoption of the Vulkan video APIs, which is a standardized API for hardware accelerated video decoding and encoding that is already supported by both Mesa and Nvidia drivers.
Removing the in-tree module in its entirety would not be an option from my perspective. NixOS is known to be very easy to use out of the box for server and desktop Nvidia users, the fact dual-GPU laptop users are currently missing out does not merit a complete removal. That being said, having an enum of presets to choose from which enable useful defaults depending on server, desktop or laptop use sounds like a great idea!
I’d also note that experimenting with a laptop specific module out-of-tree first is an option too, and it’d be fine mentioning such a module in the NixOS wiki if it becomes stable enough, and you can still consider moving it to nixpkgs or nix-hardware later on. While the nvidia module can’t currently be disabled when nvidia is added to xserver.videoDrivers, it’s implemented in a single module file, so it can be easily disabled through the disabledModules option.