Updating Dependencies

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 to cabal.project rather than stack.yaml because it is more likely to be correct.
  • Check that extra-deps are correct and there are no conflicts with those in cardano-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.