wigust / guix.el

Emacs interface for GNU Guix package manager

Home Page:https://alezost.github.io/guix.el/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

-*- mode: org -*-


Emacs-Guix (aka guix.el) provides various features and tools for GNU Guix package manager.

It allows you to manage your Guix profile(s) from Emacs: to install, upgrade and remove packages, to switch and remove profile generations, to display all available info about packages and to do many other things.

This README provides only a basic overview on Emacs-Guix, for a full and detailed description, see the info manual that comes with it.

In short, Emacs-Guix provides the following features:

  • Interface for:
    • profiles
    • profile generations (including system generations for GuixSD)
    • packages
    • package licenses
    • package locations
    • Hydra build farm
  • Magit-like popup interface for all guix shell commands (M-x guix).
  • Modes to view logs of package builds (guix-build-log-mode and guix-build-log-minor-mode).
  • Minor mode to “prettify” store file names (to replace hash parts with “…”).
  • Shell completions for all guix commands and options (for M-x shell and M-x eshell).
  • Minor mode with additional functionality for scheme-mode to work with Guix .scm files, particularly with package modules (guix-devel-mode).

On the following screenshot you can see one of the mentioned features, namely: “list” and “info” interface for Guix packages (this screenshot was made for an early version of Emacs-Guix, the interface has slightly changed since then).


(alect-light theme is used there).


Emacs-Guix can be installed using Guix, from MELPA, or it can be used from a git checkout.


Just use:

guix package -i emacs-guix


If you added “melpa” or “melpa-stable” archives to package-archives as it is described on the MELPA Getting Started page, you can install “emacs-guix” using M-x package-install or M-x list-packages commands.

Git checkout

Also you can clone this git repository and use Emacs-Guix from this git checkout (see the info manual for details).

Finally, if you have the git checkout, you can install Guix package for the current commit of Emacs-Guix using guix.scm file:

guix package --install-from-file=guix.scm


Call M-x guix-help to get a summary of all available commands. Here is an incomplete list of them:

  • To show packages:
    M-x guix-all-available-packages
    M-x guix-newest-available-packages
    M-x guix-installed-user-packages
    M-x guix-installed-system-packages
    M-x guix-obsolete-packages
    M-x guix-packages-by-name
    M-x guix-packages-by-license
    M-x guix-packages-by-location
    M-x guix-package-from-file
    M-x guix-search-by-name
    M-x guix-search-by-regexp
  • To show profile generations:
    M-x guix-generations
    M-x guix-last-generations
    M-x guix-generations-by-time
    M-x guix-system-generations
    M-x guix-last-system-generations
    M-x guix-system-generations-by-time
  • To show/browse package licenses:
    M-x guix-licenses
    M-x guix-browse-license-url
    M-x guix-find-license-definition
  • To show/find package locations:
    M-x guix-locations
    M-x guix-find-location
    M-x guix-edit
  • Magit-like interface:
    M-x guix
  • To show Hydra builds and jobsets:
    M-x guix-hydra-latest-builds
    M-x guix-hydra-queued-builds
    M-x guix-hydra-jobsets
  • Miscellaneous commands:
    M-x guix-pull
    M-x guix-prettify-mode
    M-x guix-build-log-mode
    M-x guix-devel-mode


Emacs interface for GNU Guix package manager


License:GNU General Public License v3.0


Language:Emacs Lisp 80.9%Language:Scheme 16.4%Language:Makefile 1.7%Language:M4 1.0%Language:Shell 0.0%