GNU Guix 1.0

by brendynon 5/2/19, 12:20 PMwith 126 comments
by vbrandlon 5/2/19, 5:24 PM

I'd love to use Guix (or Nix for that matter) as my day-to-day system but (and correct me, if I'm wrong) the package maintainer story is a bit off putting for me. From what I've understood, packages are maintained in a public git repository (GitHub [0] for Nix and savannah.gnu.org [1] for Guix), which might be great if there are enough people submitting updates, but at least for critical system components there should be clearly defined maintainers to make sure all security patches are applied in time.

Also I'm not sure how I feel about a core part of my potential operating system being hosted by a now Microsoft-owned company. On the other hand GitHub might be more reliable and better fit to server a huge amount of users than savannah...

[0]: https://github.com/NixOS/nixpkgs

[1]: https://git.savannah.gnu.org/cgit/guix.git/

by joemccall86on 5/2/19, 1:03 PM

Looks like a neat concept. Would anyone here with experience managing this in production care to comment? Seems like it could be interesting if you need to reproduce the exact same software/OS on several machines as deliverables.

by dmos62on 5/2/19, 12:58 PM

This seems like a large piece of software. I'm interested in the purely functional, portable package manager aspect. I can see that it has [0] a lot of packages that are a pain to build on my Slackware system (or even to download prebuilt) because of the awesome number of dependencies. Downloading mpv and its dependencies takes quite a bit of time, for example. If anyone has experience with using guix this way, I'd be interested.

[0] https://www.gnu.org/software/guix/packages

by opanon 5/2/19, 2:21 PM

I've been using the Guix system since early 2018. It's a lot of fun. I've put off some of the more complicated stuff (from a user's perspective) like packaging new things, but it's managed to stay my daily driver just fine.

by davexuniton 5/2/19, 1:29 PM

I haven't been active for a couple of years, but I've contributed my fair share of packages and features since 2013 that I'm proud to see have made it all the way to 1.0. Congrats, Guix team!

by akavelon 5/2/19, 6:19 PM

As a person with ~intermediate knowledge of Nix/NixOS and only knowing Guix from a distance yet:

- I don't see a word about GuixSD there - what's the status of this? Is it also 1.0 now?

- (How) can I pin my whole config to a particular commit of the package set/channel, and only update gradually? I'm kinda having trouble finding out how to do this in NixOS

- Can I package non-libre software for Guix? Are there third-party non-libre package sets/channels? I know GNU proper doesn't want me to do this, and I'm sympathetic, but not ready for the jump. What's the situation for me in practice?

- Can I replace kernel with L4Linux? I tried to do that in NixOS but gave up because of complexity.

- Does GNU mirror/archive all package sources used by Guix somewhere? If github is sunset by MS, can I still build an OS from a 2018 snapshot?

- What's the multi-user story? In Nix it's complicated.

- Does Guix have something like Nix's home-manager?

TIA!

by merricksbon 5/2/19, 3:04 PM

Recent Guix discussions:

Guix: An advanced operating system (4 months ago, 313 points, 168 comments) https://news.ycombinator.com/item?id=18902823

Software Heritage and GNU Guix join forces to enable long term reproducibility (13 days ago, 168 points, 7 comments) https://news.ycombinator.com/item?id=19699031

by the_dukeon 5/2/19, 2:26 PM

Could someone provide a good comparison to Nix?

As in:

- What differentiates the two?

- What are respective drawbacks / advantages?

- How usable are they? How painful is the manual creation of packages?

by chrisweeklyon 5/2/19, 8:36 PM

For those (like me) learning of Guix for the first time:

>"About GNU Guix

GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the kernel Linux, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language."

Sounds pretty amazing!

by geokonon 5/2/19, 2:31 PM

Is there a GUI/TUI for it? Like something akin to aptitude or at the very least muon?

And does GUIX/Nix has something similar to Recommended/Suggested packages in Ubuntu/Debian land? Or is each package an all-or-nothing kind of deal?

by LargoLasskhyfvon 5/2/19, 11:35 PM

But...has it USE Flags like Gentoo's Portage?

And variable CFLAGS and CXXFLAGS for explicitely choosing to optimize whichever way i see fit, instead of using something generic? Individually, on a per package base? Like described here for example:

https://wiki.gentoo.org/wiki/Complete_Handbook/Building_the_...

https://wiki.gentoo.org/wiki/Safe_CFLAGS

by _ofdwon 5/2/19, 12:55 PM

How does one pronounce "guix", anyways? Is it "goo-icks"?

by NateEagon 5/3/19, 11:16 AM

I've been intrigued by nix then guix for several years now, but have yet to give either one a test run.

I understand some of the technical differences, but can anyone explain the implications of the license differences to me?

I know that NixOS is X11/MIT licensed, and that as a GNU project Guix is AGPL.

In practice, if I wanted to use Guix as a base system for hosting a proprietary SaaS website, would there be issues with that? Either way, is there an easier-to-read summary than the license itself anywhere?

by shpxon 5/2/19, 1:05 PM

Guix doesn't package proprietary software.

by echohack5on 5/2/19, 2:51 PM

The hardest thing to understand here about Guix is exactly what it does, because there's only 3 tools out there that operate like this (that I'm aware of, at least):

- GNU Guix

- NixOS

- Chef Habitat

These three tools have some common themes but ultimately accomplish different end goals.

Some common things:

- They all provide a package manager that exists outside of the regular scope of your operating system.

- They all bundle together your compiled application code AND configuration code AND runtime dependencies into one package, making it easy to just run your application.

Some differences:

Nix. [Edit: It was pointed out that the package manager Nix, is separate from NixOS, and this package manager can be run on any operation system). (https://nixos.org/) (https://github.com/NixOS)

GNU Guix has a larger focus on reproducibility and archival properties of software. In other words, Guix uses it's ability to run software independently of your operating system as a way of ensuring authentic, realistic, and 100% portable applications. Guix wants to build your application FIRST, and ignore whatever problems your OS might present to you. It lets you build a development environment in a "clean-room" with the environment command. It also lets you write those configurations and environments using Guile programming interfaces and the Scheme programming language, which is super powerful. (https://www.gnu.org/software/guix/) (https://github.com/pjotrp/guix)

Chef Habitat is very similar to GNU Guix, except it also works for Windows packages. It's primary goal is so that you can build and deploy your applications completely independently of the constraints of your operating system or runtime environment. Just like GNU Guix, this makes it super awesome to take old applications that are "stuck" on old operating system environments and quickly port them to whatever modern OS or runtime format you wish. Like GNU Guix, it has a chrooted clean-room environment called the Studio and uses Bash/Powershell to allow you to build packages. Chef Habitat diverges from GNU Guix in that it provides a runtime process supervisor that has auto-update / continuous delivery capabilities, and also provides a gossip protocol so that applications can talk to each other and do things like leader election automatically. (https://habitat.sh) (https://github.com/habitat-sh/)

Overall, I think most people will be confused when they approach these tools because they've never used anything like them before. But once you get your hands in them you'll realize how awesome they really are.

by dmanon 5/2/19, 7:25 PM

Any pointers/tutorial on how to get a gnome desktop up and running using guix?

by pjmlpon 5/2/19, 6:28 PM

I don't have any use for it, but it gets brownie points for its use of Scheme.

by berbecon 5/2/19, 4:37 PM

Does the logo look similar to the female reproductive system to anyone?