Integrate with bob
https://github.com/benchkram/bob
A few things to note:
- The audience of bob seems to be non-nix users who want the reproducibility of nix without having to write anything themselves.
- Asking the maintainers to consider native nix-integration is likely to conflict with the above.
- The YAML format of bob adds an unnecessary level of indirection. An alternative is unlikely to be gained (see the above two points).
- Bob doesn't actually build anything per se. The same functionality it offers can be achieved internally with runnables - with the only exception being handling dependencies.
Philosophically, I think we might be at odds with what bob is doing, so this friction might make integration harder than some other potential tools out there.
I think your points are all very valid.
I'd have hoped that the integration would be somewhat easier.
When I was creating a branch for this last week that marked the start of a more detailed thought process, I realized that we also can have the desired on-ramp in a different format.
What we want:
- a DAG runner that has an excellent UX
- a possibility to write stuff naively in yaml and already onboaring into reproducability (while also gradually adopting Nix for derivations and config)
The biggest discrete jump is going from:
go build ...
go test ...
To:
mkDerivation { /* ... */ }
But this is also the red pill.
For the time being, this has been superseded and aproximated further by #118.
That doesn't implement a DAG. But it does implement some degree of graduality in onboarding from a more familiar interface (here: Justfile/Makefile, there: yaml).
It also opens a relatively straight forward migration path to "lift up" Justfile definitions "into the Nix", by satisfying the nascent (still just a collateral of #119) Standard "task" interface.