Closed inputs
Modules and overlays close over your flake's inputs, not your consumer's. Downstream users are not required to re-declare your internal dependencies, and can still override any input through standard flake mechanisms.
# a module, closed over the
# defining flake's inputs
{ closure-inputs, ... }:
{ ... }:
{
imports = [
closure-inputs.some-helper.modules.flake.default
];
# consumers are not required to declare
# their own dependency on some-helper
}