UP | HOME

GuixSD

GuixSD is a Guix-based software distribution; Guix is a package manager, similar to Nix, but which uses Guile for configuration. In this approach Guix is rather close to Emacs, but uses Scheme instead of ELisp, making it even nicer.

As it happens with other nice and interesting things, years passed between the first time I've heard of it and skimmed the docs, even though I liked it then, and the time when I've finally installed it – on a VM for now. Maybe it's not a bad thing, since it probably was in a worse shape back then.

As in Nix, there are global and per-user package stores and environments (where one can set specific package versions – say, for development). I haven't tried NixOS, and probably it's similar there, but fancy system-related things include system generations, which allow you to roll back to an older version of the system (what should be neat in combination with btrfs snapshots for data partitions) and a system-wide configuration file, where the whole system is defined: packages, users, services and their configurations, mount options, keyboard layout, timezone – pretty much everything that usually goes into /etc. Updating it leads to a new system generation, but it also can be shared, or a new liveCD/installer can be generated using such a configuration! And it's all in Scheme. It also has its own init system, shepherd, whose services are defined in Scheme, too! There actually are service types, and then services themselves.

Its documentation is very nice (it uses info, and an info viewer is running on the second console during installation; it's great to have docs at hand during such a process), the IRC channel (#guix@freenode) is helpful, and it ships with zile (an emacs clone) instead of vi.

GuixSD uses a rolling release, what I'd typically avoid, but the system generations partially solve its issues (though perhaps would still rather pick Debian stable for a server). I didn't really use it apart from poking yet, but apparently guix import can relatively easily import packages from a variety of repositories (gnu, pypi, gem, cpan, cran, nix, hackage, elpa), and there's plenty of packages (fairly recent versions, even) already. There's also an emacs interface to guix, a libre kernel, shepherd supports VMs (à la jails). Just a lot of nice things in a single system.

Some use it as a primary system already; I'm not brave enough, yet looking forward for that.

Less than a year ago Let's Encrypt launched, making TLS more usable; GNU Taler (a payment system by Inria and GNU) should launch this year, and finally make online payments secure and nice; btrfs gets included (or even used) by default in GNU/Linux distributions; plenty of things are getting better, making me to feel less grumpy for not liking the other new things, such as new versions of web browsers, current web design trends, all those social things, etc. Programming languages are generally getting nicer, too. Obviously I mostly like the things I choose, but there's plenty of things which are far from satisfactory still; sometimes I'm picturing a better environment that may exist someday, and apparently GuixSD will be in that picture now.