about summary refs log tree commit diff
path: root/README.org
blob: 6a1dfd7256f4734c4e373be0aa4914d40e48baab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
* guix-bioinformatics

IMPORTANT: this repository lives at https://git.genenetwork.org/guix-bioinformatics/!
Older packages have been moved to https://git.genenetwork.org/guix-bioinformatics-past/.

Bioinformatics packages for Guix that are used in https://genenetwork.org/ and some other places.
See Guix documentation and [[https://gitlab.com/pjotrp/guix-notes/blob/master/HACKING.org][Guix notes]] for installing and hacking Guix.

See [[https://github.com/franzos/awesome-guix][awesome guix]] for a list of other 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
  ;; example channels.scm
  (list (channel
         (name 'guix-bioinformatics)
         (url "https://git.genenetwork.org/guix-bioinformatics")
         (branch "main")))
#+END_SRC

and run /guix pull/ like normal to update your software. E.g.

#+BEGIN_SRC sh
  guix pull --url=https://codeberg.org/guix/guix -p ~/opt/guix-b0fa1dc --commit=b0fa1dc --channels=channels.scm
#+END_SRC

The channel file actually accesses https://git.genenetwork.org/guix-bioinformatics/tree/.guix-channel which pulls other channels and fixates the hashes. The commit hash b0fa1dc can be found from the guix you want to run with /guix -V/, it speeds up installation and makes it reproducible. Note that the upstream channel may override that version.

The latest channel file that is used by our CI/CD you can find at https://ci.genenetwork.org/channels.scm.

Channels are 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, described [[https://issues.genenetwork.org/topics/guix-profiles][here]].


* Development tips

** Modify the load path

If you want to make changes to the packages in this repo you can set the GUIX_PACKAGE_PATH (or use the -L switch) 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

** Override individual packages

The cheap and 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
: guix build -L ~/guix-rust-past-crates/modules/ -L ~/guix-bioinformatics/ -L ~/guix-past/modules/  --substitute-urls="https://cuirass.genenetwork.org https://ci.guix.gnu.org https://bordeaux.guix.gnu.org https://guix.genenetwork.org" hello

* An important note on AI

The packages in guix-bioinformatics channel are generally written with the help of AI. Only the directory ./gnu/packages contains software that was crafted by hand without the help of AI.
The packages in this directory align with Guix policy and may be upstreamed to guix trunk.

* LICENSE

These package descriptions (so-called Guix expressions) are distributed by the same license as Guix, i.e. GPL3+