If you use Nix to manage build and runtime dependencies you can be confident that you will always have the correct versions for the branch you are on, and that these will be exactly the same as those versions used in CI.
It is possible to specify any git revision for the dependency and Nix will automatically build it – unless it has already been built by Hydra – in which case the build result will be downloaded instead.
nix develop
The default nix develop
contains build tools, utilities and GHC configured with a global package-db which matches stack.yaml
. This is defined in the devShell
attribute of flake.nix
.
Buildkite
On Buildkite, the project will be built with cabal build
in a particular Nix shell. The Nix shell provisioned is defined by nix/cabal-shell.nix
. If there is a program that is needed by the build or tests, make sure that it is present there.
nix flake lock
nix flake
manages the file flake.lock
.
Updating node backends
cardano-node
Haskell dependencies
These are defined by the resolver
in stack.yaml
.
It points to a file in cardano-haskell/snapshots
.
To bump to a new version:
- Make a copy of the latest snapshot file.
-
Update the dependency revisions to match your chosen version of
cardano-node/cabal.project
. Refer tocabal.project
rather thanstack.yaml
because it is more likely to be correct. -
Check that
extra-deps
are correct and there are no conflicts with those incardano-wallet
. -
Run
./nix/regenerate.sh
(or let Buildkite do it) -
Open a PR on
cardano-haskell
. -
Temporarily the snapshot URL in
cardano-wallet/stack.yaml
to point to the PR branch so that you can test the build.
Tip: The stack.yaml
resolver
file can also refer to a local file path – so you needn’t necessarily open a PR on cardano-haskell
to make a temporary change.
Jörmungandr
Follow the instructions in nix/jormungandr.nix
.