Foreign packages in GNU Guix
Examples from Ruby gems, Python modules and R/CRAN
GNU Guix allows creating higher level abstractions. This means you can have a short and elegant way to describe any source package. We added support for Ruby gems and Python modules to GNU Guix. We think the process of adding them is interesting for others who would like to support their language and or software stack.
The GNU software packaging project is packaging done right. Ruby deployment with rubygems used to be pretty good, years ago, but over time it has turned into a nightmare of dependencies. Tools like RVM, rbenv and bundler try to bring some level of control for running multiple versions of Ruby and gems, but over the last years they are showing their limitations clearly.
So when should you look at GNU Guix? You should look at Guix when you
are serious about software deployment need to handle multiple versions of Ruby or gems want clear isolation of dependencies want clean separation of gems want a reproducible environment
GNU Guix allows you to define a software package once with all its dependencies. Every time you install the package it gets reproduced exactly with its exact dependency graph, all the way down to glibc. See this figure. Whether you are a sysadmin who needs to deploy an exact Rails stack or you are a developer and need to support user environment, GNU Guix is the solution you require. Use cases are
test gems using multiple versions of Ruby install concurrent rubies with or without linked openssl support run minimal ruby to be exposed to the web update ruby in production and roll-back after a problem run multiple versions of the same gem against one ruby run multiple versions of openssl dependencies
Use your imagination. The point is that you control the full dependency graph. Always. You can even give users rights to install and share software because the underlying system is ‘immutable’. Existing graphs can not be overwritten by others.
GNU Guix is a next generation software package installer with a range of features, including sane dependency handling, transactional and reproducible installs which can be rolled back. In short, GNU Guix has resolved the fundamental problems of software deployment and management. GNU Guix also should play well with Docker and VMs.