We introduce a few new mechanism in this commit:
flake-parts is used to wire things together.
./all-parts.nix looks for and imports all flake-part.nix files. This
makes it easier to co-locate the parts next to the targeted code.
We introduce a `modules` flake output to hold all modules. For example
instead of `nixosModules`, use `modules.nixos`.
In ./nixos we enforce a 1:1 mapping between the module filenames and the
attribute. For example ./nixos/mixins/telegraf.nix will translate to
`modules.nixos.mixins-telegraf`.
flake-compat ensures that the default.nix and flake.nix are in sync and have the same outputs.