If you would like to contribute to the project, there’s a few things you should know, to assist your development efforts and make the pull request workflow easier on everyone

Running locally

To test your changes locally, we recommend pip installing the local changes - this ensures the build process is also working fine. While in the top level directory, you can run

pip install -e  ./


python develop

To install the project. This creates a .pth link from your python installation to your ev3sim directory. This means any changes made will immediately take effect. Note that this will remove your existing install of stable ev3sim (if installed via pip), so be aware of this.

Linting code

Pull requests are linted with black. To run black locally to fix any formatting errors you’ve made, run the following:

black --config pyproject.toml .

Building with Nix

The Nix package manager can be used to create reproducible builds on Linux and Mac.


First install Nix with experimental Flakes support.

curl -L | sh
. /home/$USER/.nix-profile/etc/profile.d/

nix-env -iA nixpkgs.nixUnstable
mkdir -p ~/.config/nix
echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf

Then set up the binary cache for faster builds.

nix-env -iA cachix -f
cachix use melbournehighschoolrobotics


To build installers for Windows:

nix build ".#windows"

To build for Linux:

nix build ".#linux"