Monday, July 6, 2015

GNU Guix for easily managing bioinformatics software ( or any other software )

We are using GNU Guix to manage bioinformatics software that are installed on our HPC and also on the individual machines. By now, there are 54 bionformatics related packages in Guix repository, and the number is growing. The list includes many NGS related software such as samtools, bowtie, STAR, sra-tools etc. The full list is here:

Why use Guix ?
GNU Guix is a package managing tool, that can build from source with dependencies, set up user environments and can upgrade/downgrade installed packages.

- Easy to install and maintain packaged software. One line on the terminal can update or install a package.
- Guix creates an isolated yet shared environment. Each piece of software is installed in /gnu/store and does not alter global state and the user profiles link to this directory.
- User profiles are independent from each other. You can even create a specific user profile per project and this helps with reproducibility.
- Guix can be used in an HPC environment or individual machines connected to the same network (described here)

How to install software using Guix
If you have GNU Guix set up, installing pre-packaged software is super easy. And we have most of the popular tools already packaged. For example, below is how to install samtools.

guix package -i samtools

Setting up GNU Guix is also easy. Just follow the instructions provided by Ricardo Wurmus (who packaged most of the bioinformatics software for Guix by the way)

How to contribute Guix and/or Guix bioinformatics packages.
The suggested way to contribute to upstream is to use a git checkout, make changes there, create a patch with git format-patch and send that to (
There's also a contribution page:
Luckily, getting started with development is relatively simple:
  • git clone git://
  • if you already have guix do guix environment guix to load up everything you need to build guix from source
  • ./bootstrap./configure (point --localstatedir to /var to make it use the same state as your binary installation of guix), make
  • edit package modules in gnu/packages/
  • run ./pre-inst-env guix lint to find common problems (pre-inst-env makes guix use the packages in the local directory)
  • build the new package with ./pre-inst-env guix build my-package
  • if everything works fine: commit and create a patch with git format-patch -1
  • send the file to the mailing list for review


  1. FWIW your link is blank...???

    1. Yes, we are aware. we are working on it to get it back online