GNU Guix 1.1.0 released
We are pleased to announce the release of GNU Guix version 1.1.0!
The release comes with ISO-9660 installation
a virtual machine
and with tarballs to install the package manager on top of your
GNU/Linux distro, either from
Guix users can update by running
If you wonder what installing Guix System is like, this video gives an overview of the guided installation process:
There are more “getting started” videos.
It’s been 11 months since the previous release, during which 201 people
contributed code and packages. This is a long time for a release, which
is in part due to the fact that bug fixes and new features are
continuously delivered to our users via
guix pull. However, a
number of improvements, in particular in the installer, will greatly
improve the experience of first-time users.
It’s hard to summarize more than 14,000 commits! Here are some highlights as far as tooling is concerned:
- The new
guix deploytool allows you to deploy several machines at once, be it remote machines over SSH or machines at a virtual private server (VPS).
- Channel authors can now write news entries for their users, which
are readily readable using
guix pull --news. As a result, if you were already using Guix, you’ve probably already read these news!
- The new
guix system describecommand tells you which commits of which channels were used to deploy your system, and also contains a link to your operating system configuration file. Precise provenance tracking that gives users and admins the ability to know exactly what changed between two different system instances! This feature builds upon the new
guix packhas improved support for generating Singularity and Docker images, notably with the
- There’s a new
guix time-machinecommand that does what you would expect :-), and it nicely benefits from improved Software Heritage integration through
guix challengecan now show diffs on the fly—one of the outcomes of the recent Reproducible Build Summit.
- Guix can now publish and download lzip-compressed substitutes, which significantly reduces bandwidth requirement.
guix systemsupports a
--targetoption providing some support for the cross-compilation of complete systems. More on that in this FOSDEM talk.
- Guix now runs on Guile 3, which improves performance.
- The manual now includes a "cookbook" that contains tutorials and explorations of topics not covered by the manual alone.
On the distro side:
- The big change is that the package dependency graph is rooted in a reduced set of “binary seeds”—a huge step towards a fully auditable bootstrap. There’s more to come soon!
- The graphical installer for Guix System benefited from many bug fixes and improvements. Following the bugs found in 1.0.0, we developed an automated testing framework for the installer itself. Continuous integration runs automated tests of the installer for different configurations (encrypted root, non-encrypted root, with or without a desktop environment, etc.).
- 3,514 packages were added, for a total of more than 13K packages. 3,368 packages were upgraded. The distribution comes with GNU libc 2.29, GCC 9.3, GNOME 3.32, MATE 1.24.0, Xfce 4.14.0, Linux-libre 5.4.28, and LibreOffice 188.8.131.52 to name a few.
- 19 new services were added, notably providing support for running NFS servers, configuring the nftables firewall, or even a high-level Web service like Patchwork.
- Build systems for Node, Julia, and Qt were added, making it easier to
write package definitions for these ecosystems. In addition there is a
copy-build-systemthat does what you might expect.
At the programming interface level and under the hood, many things changed as well, notably:
- The new
with-build-handlerform allows us to better support dynamic dependencies as introduced by grafts. More on that in a future post, but suffice to say that it fixes a longstanding user interface and performance issue.
(guix remote)supports remote execution of Scheme code as G-expressions after having first built and deployed any code it relies on. This capability was key to allowing code sharing between
guix deploy, which operates on remote hosts, and
guix system reconfigure. Similarly, there’s a new
eval/containerprocedure to run code in an automatically-provisioned container.
- The new
lower-gexpprocedure returns a low-level intermediate representation of a G-expression.
gexp->derivationare expressed in terms of
with-parametersform allows you, for instance, to pin objects such as packages to a specific system or cross-compilation target.
- Performance was improved for common low-level operations.
That’s a long list! The
lists additional noteworthy changes and bug fixes you may be interested
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.