Guix package manager for build environments

Christopher who is a guy who knows, is very excited about this. I don’t understand fully why yet but posting here to share and discuss any implications for Safe and Safe apps.

Maybe it’s a way to smooth distribution of Safe via Linux distros? I’m not sure, but it seems worth understanding. Can anyone comment or shed more light? Thanks.

Interesting thread:

2 Likes

It seems to be 2 things.

  1. A programmable OS, fully configured from a single file and with transactional upgrades (don’t apply partial upgrades)
  2. A “package manager” that can be install on existing OSs

Bit like Nix but apparently more features and forces free software only.

3 Likes

Thanks David, I hear about it and read a bit every so often but haven’t managed to put it in a box so it hasn’t stuck. Reading the thread it looks like it has potential in the areas of:

  1. an alternative to containers for publishing code that can build on any system (by including a ‘guix.scm’ file:

Ship every FOSS project with a “guix.scm” file.

These can be used to set up dev environments with
“guix environment -l guix.scm”

Projects built using Guix as a dev environment are free from the “binary-black-box-container-only” plague, healthier for user freedom!

  1. a much easier way to distribute software across distros, partly because packaging is easier with the first feature and partly because the Guix package manager, soon to be part of Debian, should be available in many distros.

I’m not sure how realistic that is but it does sound much better than the existing packaging maintainer process. Maybe there are downsides too though.

If anyone has experience with creating a ‘guix.scm’ please let us know how it went and how useful it can be, also any drawbacks.

I read on the thread about it being restricted to FOSS but then somebody replied that’s a default rather than a restriction.

I guess for Safe cargo is pretty good, but a ‘guix.scm’ might make it trivial to provide the initial build environment. That’s what I’m thinking Christopher is saying. I’ll ask if he has a moment to comment.

Reading a bit about guix environment CLI (here) I think it all looks very simple, much easier than I expected, so long as your build dependencies are already packaged for Guix. Short term that might be a blocker, needs checking, but if it takes off this could be good.

3 Likes

Great to see this on the radar, I like the idea of guix/nix but my experiments so far have not felt simple enough as a workflow. I probably didn’t give it enough time to get used to it though, maybe one day it’ll stick.

Bitcoin has an option to build with guix. Some reading which shows the considerations that go into it:

https://github.com/bitcoin/bitcoin/blob/019aa248d931c6069f30935e9f8bdc77e945ffe7/contrib/guix/README.md

https://github.com/bitcoin/bitcoin/pull/15277

2 Likes