govuk-guix icon indicating copy to clipboard operation
govuk-guix copied to clipboard

Package, service and system definitions using GNU Guix for software and systems related to GOV.UK.

#+BEGIN_QUOTE

  • 🚨 Deprecated

This repository is no longer maintained and should not be used.

We now [[https://github.com/alphagov/govuk-docker][use Docker for local development]]. For more context, see [[https://github.com/alphagov/govuk-rfcs/blob/main/rfc-106-docker-for-local-development.md][GOV.UK RFC-106]]. #+END_QUOTE


  • Getting started

See [[doc/installation.md][doc/installation.md]] for a full list of [[doc/installation.md#prerequisites][prerequisites]] and [[doc/installation.md#steps][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:

#+BEGIN_SRC shell export PATH="$PATH:$PWD/bin" #+END_SRC

** 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:

#+BEGIN_SRC shell govuk system start short-url-manager specialist-publisher #+END_SRC

To find out more, read the documentation on [[doc/local-development.md][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:

#+BEGIN_SRC shell govuk data load short-url-manager #+END_SRC

To find out more, read the documentation on [[doc/local-data.md][local data]].

  • Why Guix?

[[http://www.gnu.org/software/guix/][GNU Guix]] (abbreviated to Guix) (IPA: /ɡiːks/) is a package manager, and associated free software distribution, for the [[http://www.gnu.org/gnu/gnu.html][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.

  • Hacking

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:

#+BEGIN_SRC shell export GDS_GNU_GUIX_MODULE_PATH="../gnu-guix" #+END_SRC

The value of GDS_GNU_GUIX_MODULE_PATH will be prepended to the GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH.

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

#+BEGIN_SRC shell export GDS_GNU_GUIX_PATH="../gnu-guix" #+END_SRC