This is my NixOS config. I daily-drive NixOS, both on WSL and on a physical computer.
There are certain tools and settings that all of the machines I use have no matter what. Those are defined in the default modules. Then there are mixins for each module system, Home-Manager and NixOS.
Then each machine defines machine-specific things. There shouldn't be too much that is machine-specific, but there may be some.
Defines the interface of defining machines
The top-level file that defines all the machines.
Home-Manager mix-ins. I try to define as much as possible in Home-Manager as it is generally more flexible.
NixOS mix-ins. These define the system-level mix-ins.
The machine-specific definitions. Primarily the hardware, partitions, and kernel configs.