We want to build guix from source but not create native packages for all the dependencies. Therefore we will use [GNU Stow](https://www.gnu.org/software/stow/) to install the files to `/usr/local/stow` and then symlink them to `/usr/local`. http://cdimage.ubuntu.com/releases/21.04/release/ For this, on Ubuntu 21.04, we need to install some packages: ```shell sudo apt update sudo apt install git stow autoconf autopoint make g++ gettext pkg-config po4a texinfo help2man guile-3.0 guile-3.0-dev libtasn1-6-dev guile-git guile-json guile-sqlite3 guile-gcrypt guile-lzlib ``` We need to compile gnutls from source to build the guile3.0 bindings (make took 38 minutes) ```shell cd /usr/local/src wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz.sig gpg --verify gnutls-3.6.16.tar.xz.sig tar xf ../gnutls-3.6.16.tar.xz cd gnutls-3.6.16 ./configure --with-included-libtasn1 \ --with-included-unistring \ --without-p11-kit \ --disable-dependency-tracking \ --with-guile-site-dir=/usr/local/share/guile/site/3.0 \ --with-guile-site-ccache-dir=/usr/local/lib/guile/3.0/site-ccache \ --with-guile-extension-dir=/usr/local/lib/guile/3.0/extensions make sudo make install prefix=/usr/local/stow/gnutls-3.6.16 cd /usr/local/stow sudo stow gnutls-3.6.16 ``` guile-zlib is actually too old, so we build it from source (make took 43 seconds) ```shell cd /usr/local/src git clone https://notabug.org/guile-zlib/guile-zlib cd guile-zlib git checkout v0.1.0 autoreconf -vfi GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0:$GUILE_LOAD_PATH ./configure make sudo make install prefix=/usr/local/stow/guile-zlib-0.1.0 ct /usr/local/stow sudo stow guile-zlib-0.1.0 ``` Then we can get started with Guix itself ```shell git clone https://git.savannah.gnu.org/git/guix.git cd guix ./bootstrap GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0:$GUILE_LOAD_PATH ./configure --with-courage GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0:$GUILE_LOAD_PATH make ```