[Bio-packaging] Sharing GNU guix with VMs (in this case KVM)

Pjotr Prins pjotr.public66 at thebird.nl
Tue Oct 13 13:14:08 UTC 2015

Just wanted to share the following:

This is my setup for sharing GUIX from the host with running VMs. GUIX
can be mounted read-only and it is similar to Ricardo's setup on an
HPC compute cluster: http://elephly.net/posts/2015-04-17-gnu-guix.html

On Linux (here Debian Wheezy-backports with a 3.16 Linux kernel) sharing
Guix with host and KVM, start up the VM with something like

  qemu-system-x86_64 -enable-kvm -hda hda.img \
    -m 1024M \
    -smp 2 \
    -redir tcp:2222::22 \
    -fsdev local,security_model=passthrough,id=fsdev0,path=/gnu \
    -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=gnu \
    -fsdev local,security_model=passthrough,id=fsdev1,path=/var/guix \
    -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=guix 

Mount guix directories inside KVM

  ssh -p 2222 localhost

as root:

  mkdir /gnu
  mkdir /var/guix
  mount -t 9p -o trans=virtio,version=9p2000.L gnu /gnu
  mount -t 9p -o trans=virtio,version=9p2000.L guix /var/guix

Now we have GNU Guix visible. Create the root profile - which will
match that on the host

  ln -sf /var/guix/profiles/per-user/root/guix-profile \

The same for other users that need to access a profile, e.g., as a

  ln -sf /var/guix/profiles/per-user/$USER/guix-profile \

The only catch (really) is that all software has to be installed on
the host (which has a running guix-daemon) and VM users need to have a
matching host profile.

A similar exercise can be done with Docker. When I get round to that
I'll post it here (we had it working in Japan during the


More information about the bio-packaging mailing list