Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I've been intrigued by Guix for a while; mainly because I like the idea of Nix but was very turned off by its language, when I was exposed to it through a job I had.

One thing I liked about Nix was that it was possible to use its packaging and tools without actually using the NixOS. An old employer used this instead of Docker for managing build distribution. Can the Guix stuff be used the same way?



> An old employer used this instead of Docker for managing build distribution. Can the Guix stuff be used the same way?

Yes, and, Guix is actually a "meta" package manager that understands other packages like Python PIPs and Node NPM packages, so you can define all of that in one build config file.


Wait, this is a big deal. Will it work with any package manager or only things that it explicitly supports?

One thing that has become a persistent headache for me with Nix is trying to get reproducible builds with Julia, due to the fact that the package manager doesn't have direct integration with Nix, and `nix build` purposefully restricts network access. I'd happily move to Guix if they have an elegant way to deal with this.


Since it's all just Guile Scheme, a full programming language, you can extend it in any way you want, and use the Scheme libraries you want, doing whatever network access you please.


The builder is sandboxed, the whole model goes out the window otherwise.

Also, I really doubt Guix moves the needle much here. It can't make Julia magically more reproducible without effectively doing the same techniques you'd have to use in Nix.


You can use Guix as a package manager on top of another Linux distro. I used Guix on Ubuntu for several years.


Ok I'll give it a try. I like Lispy things.

One thing I liked about nix in this capacity was the "nix-shell" facility, which could be used to create a whole hermetic dev environment with all the right versions of things and all the right environment variables set up, etc. Similar to similar uses of docker but more integrated with the rest of the system -- not as "sealed off" from the rest of the distribution, e.g. I could still use my emacs config inside it, etc.


Guix can create reproducible development environments that are "sealed off" from the rest of the distribution. It's called Guix shell and it's very flexible:

* Guix Shell https://www.futurile.net/2023/04/29/guix-shell-virtual-envir...

I did two specific posts about using it for 'development' environments. You can also 'fix' the environment (think a git hash) and use the declarative configuration to share it with others:

* https://www.futurile.net/2023/04/30/guix-reproducible-dev-en...

* https://www.futurile.net/2023/10/17/guix-time-travel-dev-env...

Hope they help - if you have a play and get stuck the mailing list is really good and I posted about the Meetup further up.


Yes, see `guix pack` with its various backends.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: