I am just setting up my NixOS config for the first time, and I know that it will be fairly complex. I know it will only be possible and scalable if I have sane conventions.
I have read a number of example configs, but there does not seem to be consistent conventions between them of where to store custom option declarations, how to handle enabling/disabling modules, etc. They all work, but they do it in different ways.
Are there any official or unofficial conventions/style guides to NixOS config structure, and where can I find them?
For example, should I make a lib
directory where I put modules that are easily portable and reusable in other people’s configs? When should I break modules up into smaller ones? Etc. These are things that I hope to be addressed.
Unfortunately, nothing is standard. So I would say, across all the configs you looked at, which had a file and module structure that you understood? I’d follow that then.
My config has a users and hosts dir, to distinguish home manager and nixos configs. Inside each is the list of users and hosts configuration files. In addition, there is a modules folder that holds modules that are common among different users/hosts.