Should I have known this “normally” or is this feature hidden somewhere deep in documentation?
(Just asking because I often find it a challenge to find something in the docs, maybe I’m just searching wrong?)
I guess that the ... in the param list also has to do with this in some way, probably only covers builtins or something though?
_module.args is not documented properly. I am only aware of it, because I am using flakes, and needed some way to pass my inputs through and therefore dug some flake related code, where _module.args was mentioned as a better alternative for the documented but flake specific way of doing it. Sadly this mention was only in a comment.
The ... in the argument set, just means “accept any other argument that is passed in”.
{ foo }: foo would only work if called with an attribute set that contains onlyfoo. { foo, ... }: foo though would be callable with any attribute set that contains at leastfoo.
And yeah, I also started reading this while learning flakes, they just make it so much more obvious how it all works, so figuring out where to start reading is much easier.