Guix is an advanced package manager and Linux distribution. It uses a declarative configuration to reliably manage all aspects of the system. It's entirely Free Software so users have control over their computing environment.
It can be used in two ways:
- Guix as a package manager:
Guix is a package manager that can be used on top of an existing Linux installation. This means any package in Guix can be installed, completely isolated from the system. It also brings reproducible configuration of home and development environments.
- Guix as a Linux distribution:
Guix is a complete Linux distribution that's configured declaratively. All aspects of the hardware, system and services can be configured reproducibly and reliably. This brings certainty to how users deploy and manage their Linux desktops and servers.
Why people love Guix
Guix is a global community of users that love practical software freedom. Our user survey showed the diverse reasons people use and love Guix. Maybe their comments will give you some idea of whether you'd love Guix as well:
- User-focused Free Software
Guix is a Free Softwareproject developed under the umbrella of the GNU project. Every package in Guix is free to run, copy, distribute, study, change and improve.
Freedom! The four software freedoms, plus freedom from side-effects.
- A friendly and helpful community
Guix is created and used by a global community of volunteers, anyone can get involved. It aims to be a healthy and collaborative group that welcomes anyone, making Guix fun to be part of.
Community (people) by far, focus on free software, Scheme, reproducibility, flexibility. Guix is one of the hidden gems of the free software world.
- Lisp and Guile joy
Guix is written in Guile, a Scheme that's a dialect of Lisp. It brings the capabilities and expressiveness that a full programming language enables while being adaptable and minimal.
Scheme! That Guix fits my preference for declarative, functional and minimalist computing! And it’s friendly and helpful community, of course!
- Reliable declarative configuration
Everything in Guix uses declarative configuration. Whether installing some applications into a home environment, or an entire operating system with all it's services.
The declarative Guile approach is amazing. The fact that it's transactional and can reproduce the same configuration with just a few files is a lifesaver to me
- Versatile and configurable
Guix can be installed and used as a graphical desktop or server configurations. It's used in diverse ways, including by science teams using High Performance Computing for research. It's versatility means it can also be deployed remotely into cloud or hosting environments.
...allowed me to run some exotic guix packages on foreign systems, and guix system is really cool in general, tons of packages, the best gnu certified distro in general.
- Reproducible workflows
Guix delivers reproducibility, meaning that given the same inputs it will achieve the same outputs. The benefit of this is that it's easy to configure because it's predictable. In fact with Guix you can even travel back in time!
I love that I can specify a fully reproducible environment for scientific work, and it's great that the user can modify build options and specify alternate versions of dependencies when needed.
- Source first verification
Every package and service in Guix can be built by users so they can verify their system is trustworthy. The project aims for the whole of the distribution to be bootstrappable from source code, providing confidence that there aren't any backdoors. Users don't have to build everything by hand, it provides pre-built binary packages.
I like how powerful it is when it comes to package management, and it showcases bootstrappability and reproducibility at it's finest. It's fun to package stuff for Guix and nice to have packages added for other people to enjoy as well.
- Transactional reliability
Guix uses a transaction every time there's a change or update to configuration. It tracks each generation of the system so if there's any problem it's easy to rollback to a previously known good state. It's easy and safe to make changes, in the knowledge that any mistake can be recovered from.
What I love first and foremost about Guix is the transactional aspect of software management. If something goes wrong, I can just roll back an entire list of packages to their previous version. To me this goes hand in hand with build reproducibility which is another aspect of Guix that I value a lot: the fact that it's thriving for bit-reproducible packages across time. When I first came across the idea of functional package management, I chose Guix over Nix because of its free-software-first approach.
- Rolling release
Guix uses a rolling release to deliver the latest stable versions of software to users. Users can choose to add additional channels, or publish their own to achieve maximum versatility.
Getting the latest version of free software in a declarative way, and being able to add/update packages myself.
- Composable development environments
Guix shell is a flexible approach for creating development environments. It provides mechanisms for caching the environment so that restarting the environment (e.g. for a CI build) are fast. For complex use-cases applications, services and environments can be composed and built up like lego bricks.
Guix provides a powerful, reliable, and trustworthy foundation for my software development work. The ability to easily manage dependencies and modify packages without unintended consequences lowers the friction in development of my own software and contribution to projects that I depend on.
Join the Community and Learn more
If you'd like to explore Guix more then there are lots of communities to join
See the Guix help page for resources such as the manual, videos and cookbook.