No need for overlays.
Instead create own packages and call them via callPackage.
That will keep them simpler and allows dependency injection.
I can follow existing patterns from nixpkgs, etc.
This allows me to easily see which version updates happen between two
store paths (e.g. after updating)
Fetch store paths via `home-manager generations` and run `nvd diff
<old> <new>`