Files
postgrest/nix/UPGRADE.md
T
Wolfgang Walther 3b1373ec02 chore: update the nix upgrade docs
These have been outdated for a while, not only because we're now using
flake.nix, but also in various other places.

Resolves #4816
2026-04-20 19:29:26 +00:00

2.0 KiB

Checklist for upgrading Nix dependencies

The Nix dependencies of PostgREST should be updated regularly, in most cases it should be a very simple operation.

# Update pinned version of Nixpkgs
nix-shell --run postgrest-nixpkgs-upgrade

# Verify that everything builds
nix-build

The following checklist guides you through the complete process in more detail.

Upgrade the pinned version of nixpkgs

The pinned version of nixpkgs is defined in flake.nix. To upgrade it, you can use a small utility script defined in nix/tools/nixpkgsTools.nix:

# From the root of the repository, enter nix-shell
nix-shell

# Run the utility script to pin the latest revision in main
postgrest-nixpkgs-upgrade

# Exit the nix-shell with Ctrl-d

Review overlays

Check whether the individual overlays are still required.

Build everything

Using the PostgREST binary Nix cache is recommended. Install Cachix and run cachix use postgrest.

Run nix-build in the root directory of the project to build all PostgREST artifacts. This might take a long time, e.g. when our static GHC version needs to be rebuilt due to changes to some underlying package. If there are any errors, this is probably due to one of our patches. Try to fix them and re-run nix-build until everything builds.

Update the PostgREST binary cache

If you have access to the PostgREST cachix project, you can push the artifacts that you built locally to the binary cache. This will accelerate the CI builds and tests, sometimes dramatically. This might sometimes even be required to avoid build timeouts in CI.

You'll need to login with your token with cachix authtoken <token>.

To push all new artifacts to Cachix, run:

nix-shell --run postgrest-push-cachix

The postgrest-push-cachix command will query the nix-store to list all dependencies and build artifacts of PostgREST. It will then push everything that is not yet cached to the binary cache.