I’ve been working on my configuration for a while now using flakes. I can already understand the appeal of flake-parts, and my configuration has always been spread out across multiple files according to specific features. ATM I don’t really have any good modules to share, but what’s your opinion?

  • adept
    link
    fedilink
    English
    arrow-up
    2
    ·
    19 hours ago

    I don’t really like flake-parts or flakelight. 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