I have begun a new project recently, with the goal of creating a generic repository that can serve as a good basis for nixos configurations. Since flakes are coming down the pipe, the whole project is designed using them. This makes it trivial to pin nixpkgs to any version or even declare multiple versions of nixpkgs as inputs (not to mention any other flakes). In addition, any package definitions, modules, overlays, and even whole system configurations can be trivially shared between flakes.
The README.md should be able to get you up and running super quick. There are some useful links to learn more about flakes there as well. One of the design goals is to allow for incremental adoption, so you really can just drop in your current configuration right away, and slowly port it to match the modular structure the project defines. In addition the
shell.nix pulls in an experimental build of nix with flakes support so there is virtually no setup to try it out!
I think it’d be a good idea to have a standardized repository structure for NixOS. Using flakes future proofs the effort and makes things that were once difficult or tedious much easier.
In addition, reusable configuration snippets can live in this template, providing a good starting point for newbies to get up and running with NixOS with a fully functional system in mere moments. Check out the profiles directory for some examples.
Nothing is set in stone (including the name), so if you have any good suggestions please let me hear them. Also, depending on the reception, I am thinking about opening an rfc to potentially include this flake as part of the NixOS organization on GitHub and possibly add it to the flake registry for easy access.
I’ve also written a brief list of the advantages in a separate thread.