I don't really like
flake-parts
orflakelight
. I think that part of this is sheer brutalism (I don't mind writing bare Nix) but part of it is a desire to not rely on flakes which don't carry their own weight, following Wirth's principle for compilers.
How can you say this and still use flake-utils? All it does is manage your systems. You can write your own one-liner for that
eachSystem = f: lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
Where systems
is automatically supplied as a flake input (I think), or you can supply your own list of systems to support.
You can then use it like this:
devShells = eachSystem (pkgs: {
default = # your devshell
}
You can of course modify eachSystem
to have more function parameters other than pkgs
.
See this blog which initially inspired me not to use flake-utils
Only fair that i share my abomination
Have a look at stylix (my settings uses this module)