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 develop
in 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_SHELL
to confirm you're in a Nix shell. It should print "impure". - Run
which rustc
to 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
$PATH
whenever you enter the project folder. - Type
echo $IN_NIX_SHELL
to confirm you're in a Nix shell. It should print "impure". - Run
which rustc
to 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 newBooleanExpressionType
metadata kind