# 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, 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/Libera.chat) is helpful, and it ships with zile (an emacs clone) instead of vi.

GuixSD uses a rolling release, which I would normally 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 are 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 to that.

New and nice things like that make me to feel less grumpy for not liking the other new things. Programming languages are generally getting nicer, too. Obviously I mostly like the things I choose, but there are 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.