Common GUIX Commands

Back to GUIX Tutorials

Searching Packages

guix search 

With the recutils package installed, the search results can be filtered to only show certain fields per package like so:

guix search  | recsel -p name,synopsis

You can request information for a specific package by name like so:

guix show 

NOTE: The location field of a package definition tells you where its source code can be found. You can use this information to import that package into another package definition (e.g., in a guix.scm file) by translating the location field into a Scheme module name.

Example:

$ guix show clojure-tools
name: clojure-tools
version: 1.11.1.1413
outputs:
+ out: everything
systems: x86_64-linux
dependencies: clojure-tools-deps@0.18.1354 clojure@1.11.1 java-commons-logging-minimal@1.2 rlwrap@0.46.1
location: gnu/packages/clojure.scm:204:2
homepage: https://clojure.org/releases/tools
license: EPL 1.0
synopsis: CLI tools for the Clojure programming language
description: The Clojure command line tools can be used to start a Clojure repl, use Clojure and Java libraries, and
+ start Clojure programs.

From here, you can convert the location field value of gnu/packages/clojure.scm to the Scheme module named (gnu packages clojure). From it, you would import the clojure-tools symbol in order to add its package definition to your own (e.g., in the inputs, native-inputs, or propagated-inputs fields).

Installing Packages

guix install 

Example:

guix install gdal

Checking for Pre-built Binaries

The guix weather command will check the substitute servers to see if a pre-built binary exists currently for the requested package(s). If so, it reports which substitute servers currently have those binaries. It doesn't actually install anything. This is a good command to run before trying to install or upgrade a potentially expensive-to-build package (e.g., ungoogled-chromium, qgis, texlive, wine). If guix weather reports that no pre-built binaries are currently hosted on the substitute servers, you might want to skip installing/upgrading that package now and try again later.

guix weather 

Updating Packagse

guix pull        # pull the latest revision of Guix
guix upgrade     # upgrade packages to their latest version

List Installed Packages

guix package --list-installed

List Channels

guix describe

Development Environment

To run a Development Shell inside of a container, and with the container able to access the host's networking, run:

guix shell --container --network   

# Example
guix shell --container --network gdal

# Shortened flags
guix shell -CN gdal

Common Environments

Simple

guix shell -CN bash coreutils nss-certs openssh git which less htop curl

Clojure

guix shell -CN openjdk clojure-tools

Python

guix shell -CN python python-numpy python-scipy -- python3

R

guix shell -CN r