module.args still needs them for the builder, but I can finally put to
rest the doubts I had about writing things like `name = "breezewiki";`
in a module into which I could damn well pass that variable.
This interface was getting ridiculous.
`app-template` gets released infrequently enough that keeping a static
`chart.nix` is a small tradeoff for the previous lunacy of passing a
whole derivation tree in through the flake.
`mkDerivation` doesn't have to be assigned beforehand; it can just be
passed two attrsets. I only realized this after writing out its
signature in the documentation.
Also, the example flake in the documentation doesn't use nixpkgs,
so I removed it.
It doesn't make sense for `kubeVersions` to be an _input_ to the module,
i.e., one provided by the Haumea loader. Let it be passed inside the
foldler instead, like `apiVersions`.
En passant, I realized it's as easy to expose apiVersions to user input;
maybe one'd want to specify APIs not installed by this flake.
They were good enough for corralling my disorganized thoughts,
but they hardly rise to the quality befitting their name.
Comments and documentation will suffice.
Wrong check for module-has-extraObjects. `module ? extra` is always
true and leads to failure when evaulating `module.extra.outPath`.
I also missed an `inherit apiVersions` and had to retrofit the
accumulator to include debug output to find that out.
`apiVersions` gave me a headache while writing the foldl so I made it
a separate input.
Now the service modules have this signature, without my having to
change any code in the modules themselves:
{charts, etc, ...} -> [apiVersion] -> {out, extra}
Two imperfections have come to bite me simultaneously:
- I wanted strict ordering of services but implemented it very sloppily.
- The flake builders represent implementation leakage. I want to present
a clean interface to users, not "first, you must evaluate these
twenty-eight variables".
So now I'm fixing too many things at once. Luckily it's hard to lose
things in Git.