• Stars
    star
    249
  • Rank 162,987 (Top 4 %)
  • Language
    TeX
  • License
    MIT License
  • Created about 10 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This repo has moved to https://gitlab.com/pjotrp/guix-notes Notes on Guix

Introduction

Want to get rid of Ruby RVM and/or have a controlled Python environment? These documents tell you how. The Guix solution is simple and at the same time robust.

Unlike apt, rpm, modules, Brew and Docker, GNU Guix allows you deploy software in a reproducible way and have full control over the dependency graph. You can run multiple versions of the same software (say Ruby 1.8.7, 2.1.1 and 2.3.0) with their fixated dependencies and no interference.

The software graph is getting increasingly complex over time. GNU Guix is the one solution that can handle that complexity. Rather than going for ad hoc solutions, such as Docker and Brew, we champion using the right tool for the job.

alt text

Dependency graph for python2-virtualenv. Notice perl5 is required because of openssl.

Useful Guix commands

This is a list of useful Guix commands. The quick path to installation is using the binary tarball.

Add the guix PATH

export PATH=./guix-profile/bin:$PATH

Start the daemon (normally as root)

guix-daemon --build-users-group=guixbuild

Update guix itself

guix package -i guix

List all recommended environment settings

guix package --search-paths

List all python packages (that contain the word 'python')

guix package -A python

Install a version of python using a profile

guix package -p ~/opt/python-2.7.11 -i [email protected]

Now you can run this specific version of Python with

~/opt/python-2.7.11/bin/python -V

Such profiles can be shared with other users on the system!

Show the contents of a package

guix package --show=python2-virtualenv

Install Python2 with virtualenv (yes, you can do that)

guix package -i python2-virtualenv

which installs the binary distribution. If you want to build from source do

guix package -i python2-virtualenv --no-substitutes

and if you want to keep the build directories (so to visit them and see what is happening, especially on error)

guix package -i python2-virtualenv --no-substitutes -K

Find all dependencies

guix gc --references /gnu/store/b896978pyr8bfw5bbqv1d7w24163xpxg-python2-virtualenv-13.1.2

Plot a graph of dependencies

guix package -i graphviz
guix graph --type=references python2-virtualenv |dot -Gsize="10,10" -Gratio=0.7 -Tsvg -Nfontsize=48 > dag.svg

Rendering the figure above.

Validate the contents of the store against the database (there is also an option for repair)

guix gc --verify

List all unused paths (i.e., no longer symlinked) and after remove them

guix gc --list-dead
guix gc --collect-garbage

Spawns a shell or container (similar to Docker) where all declared inputs are available and all environment variables are set

guix environment --{pure,container} pkg

Other information

This repository contains Pjotr's notes on working with GNU Guix. I have gathered install and 'bootstrapping' Guix, hacking Guix packages with Guile and the philosophy of creating a Ruby environment and getting rid of RVM, bundler, virtualenv and the like.

You may want to also read Ricardo's article about Guix on compute clusters and Malcolm's guide.

Enjoy!

Pjotr Prins

More Repositories

1

bioinformatics

Tools for bioinformatics moved to http://git.genenetwork.org/pjotrp/bioinformatics
248
star
2

biolib

BioLib brings together a set of opensource libraries written in C/C++ and makes them available for all Bio* languages
C
37
star
3

nix-no-root

Empowered Nix/Guix without root
Shell
34
star
4

guix

GNU Guix
Scheme
29
star
5

blastxmlparser

Fast big data XML parser and library, written in Ruby
Ruby
17
star
6

rq

Ruby Queue
C
13
star
7

biogems.info

Tools for keeping track of biogems. Moved to https://git.thebird.nl/free/biogems.info
HTML
13
star
8

bioruby-table

Swiss knife of tabular data
Ruby
11
star
9

bigbio

Big data bioinformatics repository
Ruby
11
star
10

bioruby-alignment

TODO: one-line summary of your gem
Ruby
10
star
11

cfruby

CFRuby project
Ruby
8
star
12

bioruby-gff3-plugin

GFF3 plugin for BioRuby - allows parsing big data GFF3
Ruby
7
star
13

once-only

Execute scripts only once when input is unchanged
Ruby
7
star
14

rqtl

R/qtl mapping software
C
6
star
15

NA-BioRuby.org

New age BioRuby website
Ruby
6
star
16

bioruby-rdf

Bioinformatics parsing and filtering data for triple-stores
Ruby
5
star
17

EMBOSS-biolib

Git import of EMBOSS CVS repository for Biolib
C
5
star
18

deploy

Pjotr's deployment tools
Ruby
4
star
19

sparql-racket

Racket Sparql module
4
star
20

bioruby-logger-plugin

BioRuby logger
Ruby
4
star
21

bioruby-pipeline

TODO: one-line summary of your gem
Ruby
4
star
22

rqtl-mqm

R/QTL with MQM support
R
4
star
23

cmake-support

CMake scripts for BioLib and ASciLib
Shell
4
star
24

linux-at-university-of-tennessee

Using Linux at the University of Tennessee
4
star
25

qnorm

High performance quantile normalization (for BioLib)
C
3
star
26

bioruby-exominer

Mining publications for gene names
Ruby
3
star
27

yaj

Pilot project for Biohackathon 2017
Python
3
star
28

ascilib

A science library - SWIG mappings
Shell
3
star
29

libsequence

The libsequence library (for BioLib)
C++
2
star
30

ruby-odgi

Ruby bindings for ODGI
Scheme
2
star
31

genfrag

TDF predictor - copy of Rubyforge site
Ruby
2
star
32

bio-locus

Bio-locus
Ruby
2
star
33

biotools

A set of tools and filters
Ruby
2
star
34

bionix

Bio packages for the Nix package system
Shell
2
star
35

heyu-run

Heyu/X10 electrical appliances runner and state-machine that can run on OpenWRT wifi routers
CoffeeScript
2
star
36

bioruby-affy

TODO: one-line summary of your gem
Ruby
2
star
37

qtl

MQM
C++
2
star
38

biolib_hpc

High performance computing for Big Data
D
2
star
39

Scalability

Scalability tests
Shell
2
star
40

gemma-annotate

Annotation tools for GEMMA
Ruby
2
star
41

biolib_staden_io_lib

Biolib: Git copy of the SVN repository hosted as sourceforge
C
2
star
42

Cross-language-interfacing

Testing cross-language interfaces
Java
2
star
43

biopp

A reference repository of the Bio++ project (no history)
C++
2
star
44

orgtexer

Mixing Org mode with LaTeX
TeX
2
star
45

Panorama-talk

1
star
46

bio---numcalc

Trial repository for numcalc
C++
1
star
47

Pjotr-s-Debian-packages

Shell
1
star
48

regressiontest

Tools for regression testing
Ruby
1
star
49

guix-relocate

Moved to
D
1
star
50

bioruby-foo

TODO: one-line summary of your gem
1
star
51

samtools

SAM tools repository for BioLib
C
1
star
52

lepra2

Lepra2 Rails app.
Ruby
1
star
53

rq.deb

Debian package for rq (Ruby Queue)
1
star
54

OSM

Openstreetmap tools and styles
Shell
1
star
55

BioNode

BioNode Debian based VM tools
1
star
56

ptodo

Command line todo organizer (interacts with remind and org-mode)
Ruby
1
star
57

bioruby-core-plugin

Bioruby core plugin - adds/replaces core functionality
1
star
58

bioruby-qtlHD

TODO: one-line summary of your gem
Ruby
1
star
59

racket-bibtex

Bibtex mangler in Racket (uses Pandoc json)
TeX
1
star
60

bioruby-support

Supporting files and scripts for the Bioruby project
Ruby
1
star
61

swig2doc

Convert SWIG generated to documentation
C
1
star
62

guix-relocatable-binary-packages

Moved to
Shell
1
star