Live data from Hacker News

GNU Guix 0.8.1

savannah.gnu.org

1–10 of 41 posts

Re: GNU Guix 0.8.1

#2
Version 0.8.1 of GNU's purely functional package manager Guix has been released.

The project develops, at the same time, GNU GSD (Guix System Distribution), a GNU operating system.

GNU GSD is an avant-garde GNU system utilizing Guix as its package manager, and the similarly Guile/Scheme based dmd as its init system.

Re: GNU Guix 0.8.1

#4
Awesome to see this here! I've been using Nix/Nixos (which Guix is heavily based on) on my personal laptop for several months now. I'll never look back from the purely declarative system configuration - I finally feel like I have full control of my machine's state.

It looks like Guix provides a significantly more expressive interface with Scheme than Nixos does with Nix expressions. IIRC, there's also better integration with the system (Nixos auto-generates plenty of bash), which will surely accelerate development / debugging.

Does anyone here have Guix experience to share?

Re: GNU Guix 0.8.1

#5
post #4

Awesome to see this here! I've been using Nix/Nixos (which Guix is heavily based on) on my personal laptop for several months now. I'll never look back from the purely declarative system configuration - I finally feel like I have full control of my machine's state. It looks like Guix provides a significantly more expressive interface with Scheme than Nixos does with Nix expressions. IIRC, there's also better integrat…

My experince is running it in a VM and getting really strange scheme-like errors from guix command-line-tool, then giving up. I think I managed to install it once to a virutal-harddrive, but then grub2 was a disaster and the "system" did not boot. Oh well.

Re: GNU Guix 0.8.1

#6
post #3

Could someone explain in a simple way, why this is better that using, for example, apt-get ?

apt-get can not install the same package/software in many different versions, there is always some package conflicts happening and you cant describe the state of your desired system with any "apt-get" language. You must script your desired state manually or use puppet or chef or whatever, which will perform the steps/tasks that you desire on your system using multitude of software and languages.

With guix gsd and nixos, the package manager is the configuration manager. The package manager is not just package manager, its not just apt-get, it is also puppet/chef/salt, and a distribution-maker or manager. I believe with guix you could make your own distribution (software collection) in the same descriptive language as making packages. You cant do that with apt or any debian tools.

Re: GNU Guix 0.8.1

#7
post #3

Could someone explain in a simple way, why this is better that using, for example, apt-get ?

Don't know about Guix, it seems to be inspired by/similar to Nix. As far as I understand, the advantage of Nix is that it's a stateless description of the system, so the advantages are:

* you can describe a tree of dependencies using any version of the package you want, and can easily rollback to a previous tree if an update broke it

* because you describe a tree of packages, you're actually describing the complete state of the system, there's no leftovers from previous installations which make it work by chance

* as a result you can easily partially alter (and rollback) or move nix configurations from one machine to the next

Essentially nix (and guix?) merges package management and configuration management in a stateless and declarative, easily audited and customised, manner.

Re: GNU Guix 0.8.1

#8
post #3

Could someone explain in a simple way, why this is better that using, for example, apt-get ?

Guix is based on Nix, so the following applies to both.

apt-get allows at most one version of a package to be installed at a time; if you want two versions, you need to ask the maintainers to split the package into two. Guix doesn't suffer this problem; packages are given an ID based on a hash of their contents and dependencies, so two versions will happily sit side-by-side. An "update" is treated more like installing a separate package.

If two applications depend on two different versions of some library, you can't install both applications. In Guix you can, since each can use the version it needs.

apt-get affects the whole system. All users are affected by a change; if some other user installs/removes/updates a package, you have to just deal with it. In Guix, every user gets a "profile" package, which can depend on anything they like. Installing/removing/updating packages just creates a new version of your profile, with its dependencies added/removed/changed according to what you asked for.

apt-get is stateful: the contents of /usr, /etc, etc. are changed as packages are installed/removed. Guix is immutable: packages live in their own read-only directories, so nothing can break them after installation.

apt-get can't roll back: packages can't be down-graded, all kinds of actions are taken by pre/post install scripts which can't be undone, etc. Since Guix is immutable, "rolling back" just means going back to the old selection of packages; ie. installing the old version of the profile package.

Re: GNU Guix 0.8.1

#9
post #3

Could someone explain in a simple way, why this is better that using, for example, apt-get ?

Both Guix and Nixos allow your system to be defined declaratively. This means that the details of reproducing your system state, given a declarative configuration, are fully handled by Guix/Nixos. So, if you like, you can consider the mapping between declarations and systems a pure function (i.e. you always get the same startup state for a given config). It's not hard to see how this could be valuable when deploying many servers (reproducability), getting out of dependency hell / failed upgrades (perfect rollbacks), bug reporting (just append the config that fully describes your system!), etc...

I've also found that the increasing entropy caused by stateful alternatives (e.g. apt-get) eventually becomes impossible to manage. This is entirely due to hidden state that grows in complexity over time. Eventually, things break in a way that nobody on StackOverflow has seen before, and you're SOL. In the declarative world, everything specific to your setup is required to be defined upfront, in one central place. This provides you with a much better chance of understanding your system as it evolves.

(Your account name makes me think you've appreciated functional programming data structures at some point. In not surprisingly, the benefits of immutability and declarative style in programming languages seem to carry over to configuration management.)

Re: GNU Guix 0.8.1

#10
post #2

Version 0.8.1 of GNU's purely functional package manager Guix has been released. The project develops, at the same time, GNU GSD (Guix System Distribution), a GNU operating system. GNU GSD is an avant-garde GNU system utilizing Guix as its package manager, and the similarly Guile/Scheme based dmd as its init system.

First of all: Guix (and Nix) seems like really interesting projects, I'm just not there yet that I'm going to nuke what I know and love for it.

I probably will one day, but not right now.

But: I'm not sure you're doing your work any justice by labelling it "avant-garde". I think you risk looking "weird" or more dangerous than you need to and might detract people from looking into it.

Post reply on HN