• Stars
    star
    141
  • Rank 259,971 (Top 6 %)
  • Language
    Emacs Lisp
  • License
    GNU General Publi...
  • Created over 10 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Emacs interface for GNU Guix package manager

-*- mode: org -*-

About

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.

If you are Evil user, note that Evil Collection provide key bindings for Emacs-Guix.

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 Guix System)
    • packages
    • services
    • package licenses
    • package and service locations
    • /gnu/store items
  • Magit-like popup interface for all Emacs-Guix and 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).

http://i.imgur.com/gRcu14n.png

(alect-light theme is used there).

Installation

Emacs-Guix can be installed using Guix, from MELPA, or it can be used from a git checkout. Note that it is not recommended to mix several installations (in particular, Guix and MELPA), as it may lead to incompatibilities in the source (.scm) and compiled (.go) Guile files (see issue 21).

Guix

Just use:

guix package -i emacs-guix

MELPA

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

IMPORTANT NOTE for non-Guix-System users

If you installed Guix using Binary Installation method, most likely your environment (in particular, GUILE_LOAD_PATH) does not know where Guile modules of Guix and its dependencies are placed (they are somewhere in the store). But these Guile modules are needed for Emacs-Guix, so…

… if (during using Emacs-Guix) you encounter errors about missing modules, undefined variables, other strange errors from Guile REPL, or if you see unexpectedly small amount of Guix packages, you may try the following workaround for this problem:

  • Install guix and guile into your user profile:
    guix package -i guile guix
        

    This guarantees that all Guile modules required by Guix will be available for external programs (in particular, for Guile and Emacs-Guix).

  • Make sure your system uses Guix environment, i.e., check that your ~/.bash_profile contains lines like these:
    source "$HOME/.guix-profile/etc/profile"
    source "$HOME/.config/guix/current/etc/profile"
        

    Note, that the “current” profile should be sourced the last. Thus the latest guix (fetched by guix pull) will have a priority.

If you still have a problem after the above steps, feel free to open an issue about it.

Usage

M-x guix is the entry point for the available features.

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

  • Show packages and their definitions:
    M-x guix-all-packages
    M-x guix-installed-user-packages
    M-x guix-installed-system-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
        
    M-x guix-package-locations
    M-x guix-find-package-definition
        
  • Show profiles and profile generations:
    M-x guix-profiles
    M-x guix-generations
    M-x guix-system-generations
        
  • Show services and their definitions:
    M-x guix-all-services
    M-x guix-services-by-name
    M-x guix-services-by-regexp
    M-x guix-services-by-location
        
    M-x guix-service-locations
    M-x guix-find-service-definition
        
  • Show store items:
    M-x guix-store-live-items
    M-x guix-store-dead-items
    M-x guix-store-failures
    M-x guix-store-item-referrers
    M-x guix-store-item-references
    M-x guix-store-item-requisites
    M-x guix-store-item-derivers
        
  • Show/browse package licenses:
    M-x guix-licenses
    M-x guix-browse-license-url
    M-x guix-find-license-definition
        
  • Magit-like interface:
    M-x guix
        
  • Miscellaneous commands:
    M-x guix-help
    M-x guix-about
    M-x guix-pull
    M-x guix-prettify-mode
    M-x guix-build-log-mode
    M-x guix-devel-mode
        

More Repositories

1

bui.el

Buffer interface library for Emacs
Emacs Lisp
114
star
2

alect-themes

Configurable custom themes for GNU Emacs
Emacs Lisp
106
star
3

mwim.el

Move to the beginning/end of line, code or comment
Emacs Lisp
81
star
4

guix-config

My config for GuixSD
Scheme
71
star
5

stumpwm-config

My configuration files for StumpWM
Common Lisp
71
star
6

aurel

Search, vote for and download AUR packages from Emacs
Emacs Lisp
52
star
7

systemd-user-units

My systemd user units for managing X sessions
31
star
8

dim.el

Change mode-line names of major/minor modes
Emacs Lisp
25
star
9

config

My "dot" (configuration) files
Scheme
22
star
10

emacs-config

My ".emacs"
Emacs Lisp
19
star
11

shepherd-config

My Shepherd user services
Scheme
17
star
12

ducpel

Logic game for Emacs
Emacs Lisp
17
star
13

org-ref-prettify.el

Minor mode for prettifying org-ref citation links
Emacs Lisp
14
star
14

guile-daemon

Evaluate code in a running Guile process
Scheme
13
star
15

make-color.el

"Pick" a color the hard way (Emacs package)
Emacs Lisp
13
star
16

shift-number.el

Increase/decrease the number at point
Emacs Lisp
12
star
17

xdpyprobe

Check connection to X server DISPLAY
C
9
star
18

debpaste.el

Emacs client for http://paste.debian.net/
Emacs Lisp
7
star
19

build-farm.el

Interface for Hydra and Cuirass (Nix and Guix build farms)
Emacs Lisp
7
star
20

guile-xosd

Guile bindings for libxosd
C
5
star
21

emms-state.el

Display track info in the mode line
Emacs Lisp
5
star
22

pretty-sha-path.el

Prettify Guix/Nix store paths in Emacs
Emacs Lisp
5
star
23

imenus.el

Imenu for multiple buffers
Emacs Lisp
4
star
24

point-pos.el

Save and restore point positions
Emacs Lisp
4
star
25

date-at-point.el

Add 'date' thing to 'thing-at-point' function
Emacs Lisp
3
star
26

emacs-utils

(OBSOLETE) My additional functions for Emacs
Emacs Lisp
3
star
27

dvorak-layouts.el

Input methods for the dvorak system layout
Emacs Lisp
3
star
28

guile-config

My guile modules and scripts
Scheme
2
star
29

xdaemon

Run X server as a daemon
Scheme
1
star
30

guile-daemon-config

My configuration for Guile-Daemon
Scheme
1
star
31

stumpwm-logo

My attempt to make the logo for StumpWM
1
star
32

shell-config

My shell configuration and scripts
Shell
1
star
33

my-guix

my guix configuration file(s) <https://www.gnu.org/software/guix/>
Scheme
1
star
34

pathify.el

Symlink your scripts into a PATH directory
Emacs Lisp
1
star