Setting up your Plutus development environment
Last updated
Last updated
This guide will cover setting up the environment for writing and compiling Plutus scripts. It does not include any of the development components such as the PAB. The guide is written for the Ubuntu OS but uses Nix (as favoured by IOG) so it should be easily replicated on other systems.
To set up a Plutus environment, we need a cabal.project
file that will specify the dependencies required to develop Plutus scripts. It is important to note that both the and repositories are constantly under development with new releases. Combined with releases of cardano-node and cardano-wallet, this may cause various complications with regard to compatibility between the components.
Therefore, we will use the following repository as a reference, which seems to be a stable and reasonably up-to-date way to get started: . Besides providing us with the cabal.project
template, it also contains various Plutus scripts which serve as a good reference when learning.
In particular, the cabal.project
file specifies a commit in the plutus-apps
repository along with its compatible versions of dependencies such as cardano-node
and cardano-wallet
that we can use to build our nix-shell
and start writing and compiling Plutus scripts.
Here are step-by-step instructions on how to get started:
Install Nix: the Package Manager from (after installation we need to reload the terminal session or open a new one in order to have nix
in our $PATH
).
Configure Nix cache: Add the following lines to /etc/nix/nix.conf
(from ):
After editing the Nix configuration file nix.conf
, we need to restart the Nix daemon to apply the changes. We can send a SIGKILL signal to trigger a restart:
Clone the plutus-apps
repository: :
Clone the plutus-scripts
repository as well: :
Find the plutus-apps
commit hash from its plutus-scripts/cabal.project
file
Checkout to the specified commit inside plutus-apps
, e.g.:
Enter a nix-shell
from inside the plutus-apps
repository: nix-shell
(for verbose output nix-shell -vvv
). With verbose output, we should see some cache references in the output if we correctly configured the cache config, e.g.:
Now that we are inside a Nix shell created from the plutus-apps
repo, navigate back to plutus-scripts
directory where cabal.project
is located and run cabal update
:
We should now be able to run cabal build
- this will compile all the script examples from the plutus-scripts
repository which means your development environment works - you can compile Plutus scripts!
We should also be able to use cabal repl
which gives you an interactive GHCi REPL in which you can use PlutusTx.
Before that, we will go over the project files cabal.project
and plutus-scripts.cabal
.