* guix-bioinformatics Bioinformatics packages for GNU Guix that are used in https://genenetwork.org/ and some other places. See [[https://gitlab.com/pjotrp/guix-notes/blob/master/HACKING.org][Guix notes]] for installing and hacking GNU Guix. Other channels of bioinformatics interest can be found at 1. https://github.com/BIMSBbioinfo 2. https://github.com/UMCUGenetics/guix-additions 3. https://github.com/ekg/guix-genomics Also see [[http://git.genenetwork.org/pjotrp/guix-notes/src/branch/master/CHANNELS.org][Guix notes]] for a list of channels. To easily use the packages from this repo, simply add it to your `channels` list in ~/.config/guix/channels.scm as described [[https://guix.gnu.org/manual/en/html_node/Channels.html][here]]: #+BEGIN_SRC scheme (list (channel (name 'gn-bioinformatics) (url "https://git.genenetwork.org/guix-bioinformatics/guix-bioinformatics.git") (branch "master"))) #+END_SRC and run /guix pull/ like normal to update your software. This is the recommended way to use the software from this repository and the code snippets in this README assume you have done so. In order to maintain stability, the guix-bioinformatics channel depends on a specific commit of upstream Guix. So, it is recommended to isolate use of the guix-bioinformatics channel in a separate /guix pull/ profile. That is described [[https://issues.genenetwork.org/topics/guix-profiles][here]]. If you want to make changes to the packages in this repo you can set the GUIX_PACKAGE_PATH to point to the root of this directory before running Guix. E.g. #+BEGIN_SRC bash git clone https://git.genenetwork.org/guix-bioinformatics/guix-bioinformatics.git git clone https://gitlab.inria.fr/guix-hpc/guix-past.git export GUIX_PACKAGE_PATH=$PWD/guix-bioinformatics/:$PWD/guix-past/modules guix package -A cwl #+END_SRC or using a checked out Guix repo with : env GUIX_PACKAGE_PATH=$genenetwork/guix-bioinformatics/ ./pre-inst-env guix package -A cwl Some (or most) of these package definitions should make it upstream into the GNU Guix repository when tested and stable. * Slurm and munge Install slurm with #+BEGIN_SRC bash guix pull guix package -i slurm-llnl ~/.guix-profile/sbin/slurmd -C -D ClusterName=(null) NodeName=selinunte CPUs=4 Boards=1 SocketsPerBoard=1 CoresPerSocket=2 ThreadsPerCore=2 RealMemory=7890 TmpDisk=29909 #+END_SRC * Common Workflow Language (CWL) /Note that CWL moved into Guix master!/ Install the common workflow language tool cwltool from this repo with #+BEGIN_SRC bash guix pull export PATH=$HOME/.config/guix/current/bin/guix:$PATH ~/guix-bioinformatics$ env GUIX_PACKAGE_PATH=.:../guix-past/modules/ ~/.config/guix/current/bin/guix package -i cwl-runner -p ~/opt/CWL The following package will be installed: cwl-runner 1.0 The following derivations will be built: /gnu/store/ld59374zr45rbqanh7ccfi2wa4d5x4yl-cwl-runner-1.0.drv /gnu/store/86j15mxj5zp3k3sjimhqhb6zsj19azsf-python-schema-salad-7.0.20200811075006.drv /gnu/store/0q2ls0is3253r4gx6hs7kmvlcz412lh1-schema-salad-7.0.20200811075006.tar.gz.drv /gnu/store/myj1365ph687ynahjhg6zqslrmd6zpjq-cwltool-3.0.20201117141248.drv source ~/opt/CWL/etc/profile cwltool --version /gnu/store/50mncjcgc8vmq5dfrh0pb82avbzy8c4r-cwltool-3.0.20201117141248/bin/.cwltool-real 3.0 #+END_SRC To run CWL definitions you can install tools in a Guix environment (avoiding Docker). Say you need mafft in a workflow #+begin_src sh ~/guix-bioinformatics$ env GUIX_PACKAGE_PATH=.:../guix-past/modules/ ~/.config/guix/current/bin/guix environment \ guix --ad-hoc cwl-runner mafft #+end_src in the new shell you should be able to find both CWL and MAFFT: #+begin_src sh ls $GUIX_ENVIRONMENT/bin/cwl* /gnu/store/bhfc5rk29s38w9kgcl4zmcdlh369y9f9-profile/bin/cwl-runner /gnu/store/bhfc5rk29s38w9kgcl4zmcdlh369y9f9-profile/bin/cwltool ls $GUIX_ENVIRONMENT/bin/mafft /gnu/store/bhfc5rk29s38w9kgcl4zmcdlh369y9f9-profile/bin/mafft #+end_src The paths can be loaded into the shell with : source $GUIX_ENVIRONMENT/etc/profile * Module system For those who think they need modules: install the module environment with #+BEGIN_SRC bash guix pull guix package -i environment-modules modulecmd --version VERSION=3.2.10 DATE=2012-12-21 #+END_SRC Note that GNU Guix supercedes module functionality! * Development tips ** Override individual packages The cheerful way of overriding a version of a package: #+BEGIN_SRC scheme (use-modules (guix) (gnu packages emacs)) (package (inherit emacs) (name "emacs-snapshot") (source "/path/to/some-file-or-directory.tar.gz")) #+END_SRC and then run: : guix package --install-from-file=that-file.scm * Substitute server We run our own substitution server. Add the key to your machine as root with : guix archive --authorize < tux02-guix-substitutions-public-key.txt * LICENSE These package descriptions (so-called Guix expressions) are distributed by the same license as GNU Guix, i.e. GPL3+