Contribute to the code

Follow the steps below to set up your development environment to get started working on new features for Incus.

Install Incus from source

To build the dependencies, follow the instructions in Install Incus from source.

Add your fork as a remote

After setting up your build environment, add your GitHub fork as a remote:

git remote add myfork git@github.com:<your_username>/incus.git
git remote update

Then switch to it:

git checkout myfork/main

Build Incus

Finally, you should be able to run make inside the repository and build your fork of the project.

At this point, you most likely want to create a new branch for your changes on your fork:

git checkout -b [name_of_your_new_branch]
git push myfork [name_of_your_new_branch]

Important notes for new Incus contributors

  • Persistent data is stored in the INCUS_DIR directory, which is generated by incus admin init. The INCUS_DIR defaults to /var/lib/incus.

  • As you develop, you may want to change the INCUS_DIR for your fork of Incus so as to avoid version conflicts.

  • Binaries compiled from your source will be generated in the $(go env GOPATH)/bin directory by default.

    • You will need to explicitly invoke these binaries (not the global incusd you may have installed) when testing your changes.

    • You may choose to create an alias in your ~/.bashrc to call these binaries with the appropriate flags more conveniently.

  • If you have a systemd service configured to run the Incus daemon from a previous installation of Incus, you may want to disable it to avoid version conflicts.