Package, service and system definitions using GNU Guix for software and systems related to GOV.UK. Personal project.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

This repository contains Guix package, service and system definitions for software and systems specifically related to GOV.UK.

Getting started

See doc/ for a full list of prerequisites and steps. The most reliable way to run the included scripts is via the included govuk script. The bin directory can be added to your PATH for easy access, for example:

export PATH="$PATH:$PWD/bin"

Local Development

You can use govuk-guix to run GOV.UK services on your computer, for example, to start a system with the Short URL Manager, Specialist Publisher and any of their dependencies, you would run:

govuk system start short-url-manager specialist-publisher

To find out more, read the documentation on local development.

Local Data

You can use govuk-guix to list and load data downloaded through the replication scripts in the govuk-puppet repository, for example, to load the data for the short-url-manager service, you would run:

govuk data load short-url-manager

To find out more, read the documentation on local data.

Why Guix?

GNU Guix (abbreviated to Guix) (IPA: ɡiːks) is a package manager, and associated free software distribution, for the GNU system.

Guix is a state of the art package manager, providing many features, such as reproducible build environments, unprivileged package management, transparent source/binary deployment and per-user profiles.

The design and low level mechanisms of Guix come from the Nix package manager, on top of which Guix provides a hackable set of tooling using Guile.

This project leverages Guix, building on top of its tooling to provide packages, services and systems relevant to GOV.UK.


When developing locally, you may find it useful to use a local copy of GNU Guix, this can be done by setting the GDS_GNU_GUIX_MODULE_PATH environment variable, for example:

export GDS_GNU_GUIX_MODULE_PATH="../gnu-guix"


To replace the package source for the guix package within the govuk-guix repository, you can set the GDS_GNU_GUIX_PATH environment variable.

export GDS_GNU_GUIX_PATH="../gnu-guix"