GUIX Tutorials

Back to Tutorials

Related Pages

Common GUIX Commands

Why GUIX?

GUIX offers developers and system admins a solution to one of the most vexing issues: how to get `` to run on my machine/VM?

GUIX performs this through three major features that removes this headache from your workflow:

1. GUIX ensures that each software program/tool (a "package") is installed in an isolated store to avoid mucking with the rest of your system. Each package is installed in a byte-reproducible manner.

2. Packages are defined in a functional configuration language (Guile Scheme), which means packages are themselves inputs and outputs of the configuration.

3. The same configuration language can be used to configure Developer environments, Containers (to be run shared and run on OCI-compliant container runners, including Kubernetes), and System configurations for VMs.

Amazing! How can I add this to my Project workflow?

Step 1. Install GUIX on your Machine/VM

 _     _                  
| |   (_)_ __  _   ___  __
| |   | | '_ \| | | \ \/ /
| |___| | | | | |_| |>  < 
|_____|_|_| |_|\__,_/_/\_\

wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
chmod +x guix-install.sh
sudo ./guix-install.sh

Some distributions of GNU/Linux already have a guix package available via their package manager. If this is the case, you can also use this option. For example, Ubuntu is a distribution containing a guix package. You can install it with this command:

sudo apt install guix

__        ___           _                        __ __        ______  _     ____  
\ \      / (_)_ __   __| | _____      _____     / / \ \      / / ___|| |   |___ \ 
 \ \ /\ / /| | '_ \ / _` |/ _ \ \ /\ / / __|   / /   \ \ /\ / /\___ \| |     __) |
  \ V  V / | | | | | (_| | (_) \ V  V /\__ \  / /     \ V  V /  ___) | |___ / __/ 
   \_/\_/  |_|_| |_|\__,_|\___/ \_/\_/ |___/ /_/       \_/\_/  |____/|_____|_____|

Installation instructions [System Crafters]

 __  __               ___  ____   __  __   __  _    ____  __  ____  
|  \/  | __ _  ___   / _ \/ ___|  \ \/ /  / / / \  |  _ \|  \/  \ \ 
| |\/| |/ _` |/ __| | | | \___ \   \  /  | | / _ \ | |_) | |\/| || |
| |  | | (_| | (__  | |_| |___) |  /  \  | |/ ___ \|  _ <| |  | || |
|_|  |_|\__,_|\___|  \___/|____/  /_/\_\ | /_/   \_\_| \_\_|  |_|| |
                                          \_\                   /_/ 

Mac Installation Instructions

Step 2. Add GUIX to your Clojure project

Add the following files to the root of your project directory:

guix.scm
dev-shell.sh
channels.scm

Make `dev-shell.sh` executable

chmod +x dev-shell.sh

Step 3. Modify guix.scm to match your project.

Be sure to include your project's name, version, synopsis, and description.

Step 4. Set up your Developer Environment with one command

./dev-shell.sh

This will create a Developer Shell with Clojure, Java, cURL, etc. No need to spend 30 minutes hunting down the correct install script!

How can I learn more about how to LISP all the way down?

Guides

Managing Software the Guix Way (GNU Guix Reference Manual)

Video Tutorials

Craft Your System with GNU GUIX [YouTube Playlist]

Conference Talks

GUIX: Unifying provisioning, deployment and package management in the age of containers [FOSDEM 2020]