bazel_8: init at 8.4.1
The setup is based on bazel 5,6,7 in nixpkgs but is significantly
different codeline-wise. There's a bit less patching, all patches
are via patch files and other small tweaks.
## Bazel 8 build
With 8.4.1 bazel dist archive is enough for air-gapped build removing
the need for FODs or `src-deps.json`, and in turn we no longer need
existing `bazel` binary to bootstrap the build.
`enableNixHacks` patch is removed, `bazel-examples` repo is used
as `passthru.tests` (cpp, java, rust) via new `bazel_8/build-support`
helpers.
`sed` patches are converted to patch files, overall amount of patching
is reduced, if there'd be need for more it can be added with links
to upstream issues or patches, ideally with a regression `passthru.tests`
item.
Amount of patching may potentially be reduced further, this needs
more feedback using this.
Overall using Bazel on NixOS remains tricky, for non-packaged repos
it may still be most practical to use FHS + extra hacks and patches,
maybe even straight up using Bazelisk and upstream pre-built binaries
in FHS.
## buildBazelPackage support
`pkgs/build-support/build-bazel-package/default.nix` is fairly big
with a set of tweaks that may not be necessary with recent Bazel
or may have better alternatives. More work is needed to figure
out compatibility with `bazel_8` or other things to unify with `bazel_8`
helpers.
## bazel_8/build-support
Here are fairly minimalistic helpers to aid building Bazel packages
using Bazel 8 features. For now only testes on `bazel-examples` repo.
`patching.nix`: just a helper to inject patches into Bazel external
dependencies
`bazelDerivation`: helps to compose Bazel commandline and consume
`repository_cache`, `vendor_dir`, `registry` all related to external
dependencies management
`bazelPackage`: two-stage derivation similar to `buildBazelPackage`,
having options for `repository_cache` (pure fetches) or `vendor_dir`
(unpacked fetches, further patchable)