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

For reference: GNU Guix is a version of Nix[1] with some additional features like a Guile API. While I'm sure it makes sense in the greater context of a GNU system where everything is happy and Guile-powered, I personally do not really see a reason to use Guix over normal Nix which seems to have a greater mind share and user base.

If you like this approach to package management, you might want to consider trying NixOS[2], which is a distro that uses Nix as its primary package manager. NixOS has a disproportionately high uptake in the Haskell community, so it has a very good selection of Haskell packages--if you're playing around with or actively using Haskell, that could be another bonus for NixOS.

Personally, I think the idea is very cool. I will probably at least try using NixOS for my next laptop--I generally switch distros every time I get a new computer.

[1]: http://nixos.org/nix/ [2]: http://nixos.org/




I'm a huge fan of the nix/guix projects (initially I was super excited to see a guix because I prefer scheme, but actually the Nix language is wonderful). I'm really surprised the Nix package manager doesn't have a bigger following with Mac OS X people (it's a lot more capable than homebrew, and you get binary distribution for free).

One problem I ran into as a ruby guy was building gems that needed to link against a C lib. Part of the beauty of the Nix approach is that it isolates everything. The "proper" solution I guess would be to package gems as Nix packages, but it seems like there probably should be some way to let a utility know the proper build flags for a given lib.


Same here, Nix is exciting. The story with ruby still has some way to go before it is seamless.

For each language they have an adapter that exports the language-specific package manager to nix expressions. cabal, perl, python and ruby are all supported (maybe more). In the case of ruby there is `nix` ruby gem that you can use to generate a .nix expression. Ideally you could amend it to say that nokogiri depends on libxml2 and such. Then your project could have a deps.nix file that you can install. `nix-env -f deps.nix -i`

I'm also exploring different ways to work with my projects. For example creating a custom profile per project that's derived from a project-specific derivation.


I'm not particularly a fan of the idea of static converters to nix expressions, ala cabal2nix. They require someone to run them in the first place, so you don't pick up updates to packages dynamically.

I'd rather we collectively agree on a protocol for installing, updating, querying packages etc, such that each language-specific package manager can talk to others through a daemon and install foreign packages that are required for the projects. It would require a fair amount of work to update each package manager to talk it (optionally), and agree on the semantics and policies of the protocol, but I think the benefits could be huge.

Using Nix/Guix as the basis for such protocol would probably be ideal due to the immutable nature of packages and ability to install side-by-side versions, and that you can specify an identity of a dependency, rather than rely on fuzzy matching of name and version.


I am really excited about both projects, but that's only because I struggle with my current package management system. Corruption is common, dependencies break easily, and the lock around every operation is irritating.

Honestly, the first one (of Nix vs. Guix) that can replace dpkg on my (non-NixOS) system is welcome! For now, having this "unstable" in the default nix channel (http://nixos.org/channels/nixpkgs-unstable) is scary.

Also, the selection of packages in Guix is way too small. 600 advertized, vs. nearly 10000 for nix. Is Firefox even in? (no. Icecat is, whatever that is. Don't ask if Chrome is in.)

Another thing: Guix seems to default to per-user package installation, unlike Nix. http://xkcd.com/1200/ comes to mind. In the case of Nix, "you can steal my cookies, but you cannot list Nix packages I can install!"


>Also, the selection of packages in Guix is way too small.

This is a 0.5 release because there's a lot left to do. There are tons of packages left to write in order to have a good selection of free software. We would love some help.

>Is Firefox even in? (no. Icecat is, whatever that is. Don't ask if Chrome is in.)

GNU Icecat is a fork of Firefox with the nonfree bits removed. Chrome is proprietary so it will absolutely not be part of the GNU distribution. Chromium has licensing issues (and is a nightmare to package, btw: https://twitter.com/spotrh/status/410479218791706624). I don't know of any fully free distro that packages it so I don't think it will be available in Guix.

However, if you do want to use proprietary software, you could always pull packages from other sources that package such things.


> Guix is a version of Nix

Why would I use one and not the other?


Guix replaces the programming language in Nix with one written in Guile, a Scheme implementation that is the official extension language of the GNU project. Guix also contains package definitions for a fully free distribution of the GNU system. If an official, fully free GNU OS sounds awesome to you then you will like Guix.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: