Start a development container (which includes NDC agents for testing):
docker compose run --build --rm dev_setup bash
You will need to install some packages:
- The Rust compiler
protobuf-compiler
For development, you may need to install some additional tools such as
nextest. See the Dockerfile.
If the dependencies are correctly installed as above, you should now be able to run
cargo build
From here, you can follow the instructions in <README.md> to set up a working server.
We maintain a Nix Flake that will install all of the project
dependencies required to work on v3-engine.
To use it:
- Install Nix
- Run
nix developin the project root. This starts a new shell which exposes the Nix project dependencies on your$PATH, and can be exited withexit. - Type
echo $IN_NIX_SHELLto confirm you're in a Nix shell. It should print "impure". - Run
which rustcto verify that the Rust compiler is being provided by Nix. You should see a path starting with/nix/store/and ending in/bin/rustc.
We also supply configuration for direnv to allow autoloading the Nix dependencies upon entering the project folder.
To use this:
- Install direnv:
- Install the direnv program
- Add the direnv hook to your shell
- Open a new terminal
cp .envrc.local.example .envrc.local- Run
direnv allow - Nix should now install project dependencies and put them in your
$PATHwhenever you enter the project folder. - Type
echo $IN_NIX_SHELLto confirm you're in a Nix shell. It should print "impure". - Run
which rustcto verify that the Rust compiler is being provided by Nix. You should see a path starting with/nix/store/and ending in/bin/rustc.
When starting the engine, you can use the UNSTABLE_FEATURES env var to enable
work in progress features. Currently available:
enable-boolean-expression-types- allow the newBooleanExpressionTypemetadata kind