govuk-guix
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