Dear Nim community,
After a longer break, I have restarted my work with Nim with some experiments into vibe coding.
My first attempt in this direction is a build tool called bau (short for "Baumeister" - build master). After a few evenings of work, I got to a first working state and would be interested in your feedback so I have a chance to either shelve it or develop it into something useful.
The project is hosted at https://github.com/bitstormFA/bau and can be installed with 'nimble install bau'.
Some features worth metioning are:
- One project file for common Nim workflows: build, run, test, check, docs, formatting, linting, dependency sync, and CI checks.
- Named profiles keep development and release compiler settings explicit.
- Build fingerprints track source files, compiler flags, platform, toolchain, and profile so unchanged targets can be skipped.
- Multiple targets and workspaces allow a repository to build more than one executable or member project from the same command style.
- Atlas integration provides dependency syncing for Git, local path, and package dependencies declared in bau.toml.
- TOML lockfiles, dependency patching, trusted/blocked dependency policy, and workspace defaults help make multi-package repositories more reproducible.
- Feature flags, optional dependencies, cached build-script directives, and dependency catalogs make variant builds explicit.
- Task inputs/outputs, local or shared output caching, dry runs, metadata, affected-change analysis, and graph/query commands make project automation easier to inspect.
- Dependency verification, toolchain checks, and structured metadata help keep CI and editor integrations reproducible.
- Project scaffolding creates a basic binary or library layout with tests and default profiles.
- Nimble conversion turns existing .nimble package metadata, targets, dependencies, features, literal tasks, and hooks into a reviewable bau.toml.
- An MCP mode exposes real Bau build, test, docs, conversion, dependency, metadata, graph, affected, cache, and status operations to compatible tools.