summaryrefslogtreecommitdiff
path: root/topics/building-a-guix-pack-for-sharing.gmi
blob: b82e81b95d5690075ee9ad08aa09d5725f868f7b (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
# Building a ~guix pack~ for Environment Sharing

## Motivation

Sometimes, you might
* not have access to guix where you want to deploy
* not be able to run a guix shell (due to space constraints on the /gnu/store partition, etc)
* not be able to create a guix profile (due to space constraints on the /gnu/store partition, etc)
but you still need to have a similar environment for running your application.

In such cases, ~guix pack~ can come in handy.

I will use the process I used for
=> gnqc_py https://gitlab.com/fredmanglis/gnqc_py
for demonstration

> guix pack -RR -S /mybin=bin -S /mylib=lib \
>     -L /home/frederick/genenetwork/guix-bioinformatics \
>     python redis mariadb genenetwork-qc

* The `-RR` option ensures `guix pack` produces relocatable[1] binaries
* The `-S` adds the symbolic links to the pack[1]
* The `-L`[2] option adds the ~guix-bioinformatics~ directory to the front of the module load path

We then add python, redis, mariadb, and genenework-qc packages (and their dependencies) to the pack.

## Footnotes

=> [1] https://guix.gnu.org/manual/en/html_node/Invoking-guix-pack.html
=> [2] https://www.gnu.org/software/guile/manual/guile.html#Command_002dline-Options