This repository contains Guix package, service and system definitions for software and systems specifically related to [[https://www.gov.uk/][GOV.UK]].
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]].
[[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.
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