Contributing to Nox
Build the build
system itself.
How the repository is structured, how to self-host Nox, and where new behavior belongs.
Start with Cargo, then self-host.
cargo build --release
cargo test --all-targets
cargo run -- setup build
cargo run -- build buildThe repository's own nox.build declares the Nox executable. Once Cargo bootstraps it, Nox can configure, build, test, and install itself.
Keep the graph language agnostic.
Parser changes belong in the project parser. Duplicate names, missing dependencies, cycles, and ordering belong in graph validation. Compiler invocation, artifact naming, and tool detection belong in executor and toolchain boundaries. Task shell behavior belongs in the noxfile task module.
Update every contract.
model -> parser -> executor
-> toolchain/state -> tests -> docsAdd the model variant, parser recognition, action generation, artifact path, setup tool state, integration test, and syntax documentation together. Avoid adding language assumptions to graph traversal.
Make behavior observable.
Add argument handling and dispatch, help output, command documentation, README usage when appropriate, and integration tests. Commands that mutate files or execute processes should return errors rather than printing false success.
Reproduce the tool environment.
nix develop
nix fmt
nix flake checkThe flake provides the development shell, package, formatter, and checks. Use it when validating changes that depend on declared compilers or formatting tools.