flake-parts

Compose flakes with the (NixOS) module system.

Testimonials:

yeah.. powerful stuff
I cannot tell you how freeing the flake-modules concept is
fucking hell
I feel like a hipster using it too

Learn more:

GitHub

Options Reference

ChangeLog

Integrations:

Write your own integration

For a general introduction to modules, you can read Writing Modules in the NixOS manual, though it goes into NixOS specifics quite quickly. Instead of services.<name>.*, etc, we have our own options.

Writing modules in a distributed ecosystem can be a bit different. If you're inclined to write to some other module's options, consider whether those will be loaded and whether your integration idea is always desirable. If it's not always desirable, consider splitting it off into an extra module, e.g. flakeModules.someOther. Otherwise check if it's loaded: lib.optionalAttrs (options?some.other.option). You can ask @roberth on GitHub.