
GNU Guix package definitions for Gov.uk software and systems - jboynyc
https://github.com/alphagov/govuk-guix
======
rmoriz
„There's no one else in GOV.UK that uses Guix to develop“

[https://github.com/alphagov/govuk-
guix/issues/32#issuecommen...](https://github.com/alphagov/govuk-
guix/issues/32#issuecomment-331483255)

~~~
danieldk
From the related discussion:

 _I think it 's important for us to move on in this discussion, so I'm going
to reject this RFC.

This RFC proposes to use the govuk data tool to aid people in getting local
development repo. However, the generation task of govuk data uses govuk-guix,
which is a personal project built by Chris. We, as tech leadership of GOV.UK,
have decided not to add guix to the GOV.UK stack.

There's a lot of value in the example of the guix data tool and this
discussion. We'll make sure that it informs the discussions we're having right
now about work on the GOV.UK developer environment for next quarters._

[https://github.com/alphagov/govuk-
rfcs/pull/101#issuecomment...](https://github.com/alphagov/govuk-
rfcs/pull/101#issuecomment-500828466)

So, it seems to be once person's project and the gov.uk leadership seem to
have rejected Guix. Still a shame though, Guix and Nix are great for
reproducibility and setting up development environments. But I also understand
that they don't want to introduce Guile Scheme, which most of their developers
will not have a background in.

~~~
cutler
Yes, a Ruby port might have had a better chance given the number of Ruby
contractors working for gov.uk.

~~~
firethief
A Ruby port of Guix?

~~~
meitham
As in Linuxbrew, Homebrew of Linux?

~~~
firethief
I have no idea what you're talking about.

I was replying to a comment that, if I understand correctly, was suggesting
"porting" Guix so that packages could be defined in Ruby instead of its native
Guile, for the purposes of maintainability. But I may not have understood
correctly, because I don't see how anyone could think that would improve
maintainability. Hence the question.

~~~
trianglesphere
Homebrew, a pretty dominant command line package manager for mac osx, has its
package definition/install scripts written in ruby.

It doesn't do the functional dependencies aspect well, but it is the package
manager for macs.

~~~
firethief
Oh, I didn't know Homebrew is scripted in Ruby. Thanks, that's the connection
I was missing!

------
flowless
We're trying something similar - to provide a set of curated services with
example deployments for cities or municipalities. We build on NixOS and use
morph for deployment. Services include simple-nixos-mailserver, Redmine,
Sympa, owncloud with LibreOffice Online and many more. If you're working on
something similar or your're interested in helping with this cause feel free
to contact me via email or IRC.

~~~
cheez
I think I know the answer but any reason why a maintained docker image isn't
good enough?

~~~
majewsky
Not GP, but an advantage of a NixOS module is that it has a strongly-typed,
explicit API for configuration options, whereas a Docker image would require
documentation ala "set those 10 env vars" or "give a YAML config file that
looks like this".

~~~
hobofan
And even apart from that, it's really hard to make deterministic build
processes for docker images without something like Nix.

~~~
pknopf
I'd argue that you don't need that kind of determinism from docker images.
It's nice, but we've been just fine without it.

------
rlpb
"anyone stumbling upon these repositories (both inside and outside GOV.UK) may
assume this is needed to build and run GOV.UK"

[https://github.com/alphagov/govuk-
guix/issues/32#issuecommen...](https://github.com/alphagov/govuk-
guix/issues/32#issuecomment-330627857)

~~~
qwerty456127
"Ok. I'll delete these repositories at the end of the day on Monday." (;,;)

~~~
darkwater
GH comment dated Sep 22, 2017. Looks like UK bureaucracy is a bit slow...

------
agumonkey
gov.uk was already brilliant in terms of browsing ergonomics, now they're gone
even higher.

------
gravypod
For software designed to be hosted in a datacenter (rather than distributed to
an end user) is there a reason why Guix is better than some containerization
framework? With things like Nix there's reproduciblity guarantees. With
containers it (appears) simpler to package and reproduciblity ship your
software.

What is Guix's main selling point?

~~~
georgyo
Nix and Guix are extremely similar. Guix is a fork of nix that is rewriting it
to be guile all the way down.

I personally like Nix's syntax better than a lisp, but that is just a
preference.

The core of how they operate is the same. Just look at their build/ci system.

[https://hydra.nixos.org/](https://hydra.nixos.org/)
[https://ci.guix.gnu.org/](https://ci.guix.gnu.org/)

~~~
henryslater
Yeah but if I had the option of Docker or something nix based, why would I not
choose Docker? Particularly as deploying to most Clouds is pretty easy if an
app in already in a Docker Container.

~~~
danieldk
You can easily build Docker images using Nix. Benefits: (1) reproducability,
if you pin to a certain nixpkgs, you always get the same set of packages; (2)
layers don't have to be full filesystem diffs; (3) the image only contains the
computed closure. E.g. I produce Docker images an NLP program with Nix. The
image only contains: glibc, tensorflow, my program, word embeddings, the
model. No other system files or dependencies. Since the image build expression
uses Nix expressions, I can also directly use the same models on my Linux
workstation, Linux servers, macOS, etc. without Docker.

This is a good starting point:

[https://grahamc.com/blog/nix-and-layered-docker-
images](https://grahamc.com/blog/nix-and-layered-docker-images)

------
edward
I've sent them a pull request with some spelling corrections.

[https://github.com/alphagov/govuk-
guix/pull/35/files](https://github.com/alphagov/govuk-guix/pull/35/files)

~~~
Eldt
Thanks for informing us

------
nailer
Can someone familiar with this explain what it is? I've read the guix page and
it's a package manager - so is this a graphical or command line tool to do UK
government stuff (with no screenshots)? Or something else?

~~~
civodul
Guix is a tool for declarative and reproducible software deployment. You can
view it as a package manager, but it's also an OS configuration management
tool, a container image provisioning tool, and more.

Guix 1.0 was released just two months ago. The announcement summarizes what it
can do for you in these areas: [https://guix.gnu.org/blog/2019/gnu-
guix-1.0.0-released/](https://guix.gnu.org/blog/2019/gnu-guix-1.0.0-released/)
.

~~~
nailer
That doesn't answer the question. What do these guix gov UK packages do?

