Find a file
Alex Kost dbdb8d13e9 Add GNU Build System infrastructure
* autogen.sh: New file.
* configure.ac: New file.
* Makefile.am: New file.
* scheme/Makefile.am: New file.
* elisp/local.mk: New file.
* INSTALL: New file.
2016-11-14 12:19:13 +03:00
doc doc: Adjust for the standalone Emacs-Guix 2016-11-14 12:19:13 +03:00
elisp Add GNU Build System infrastructure 2016-11-14 12:19:13 +03:00
scheme Add GNU Build System infrastructure 2016-11-14 12:19:13 +03:00
.gitignore Initial commit 2014-07-16 09:49:41 +04:00
autogen.sh Add GNU Build System infrastructure 2016-11-14 12:19:13 +03:00
configure.ac Add GNU Build System infrastructure 2016-11-14 12:19:13 +03:00
COPYING Initial commit 2014-07-16 09:49:41 +04:00
INSTALL Add GNU Build System infrastructure 2016-11-14 12:19:13 +03:00
Makefile.am Add GNU Build System infrastructure 2016-11-14 12:19:13 +03:00
README.org Last commit 2014-09-04 01:20:13 +04:00

This repository is dead: "guix.el" is a part of GNU Guix now (since Guix 0.8).

About

guix.el provides Emacs interface for Guix package manager.

It is possible to search for, install, upgrade and remove Guix packages. Also you can get information about generations.

Screenshot: http://i.imgur.com/gRcu14n.png (alect-light theme is used).

Requirements

  • Guix: if you didn't guix pull after <2014-08-20 Wed>, do it before using "guix.el", because the earlier snapshots are not fully supported;
  • Emacs 24.3 or above;
  • Geiser as this package use it for interacting with guile process.

Installation

Automatic

If you use Quelpa, you can install the package like this:

(quelpa '(guix :fetcher github :repo "alezost/guix.el" :files ("*.el" "*.scm")))

Manual

For the manual installation, clone the repo, add the directory to the load-path and add some autoloads for the interactive commands:

(add-to-list 'load-path "/path/to/guix-dir")
(autoload 'guix-search-by-name "guix" nil t)
(autoload 'guix-search-by-regexp "guix" nil t)
(autoload 'guix-installed-packages "guix" nil t)
(autoload 'guix-obsolete-packages "guix" nil t)
(autoload 'guix-all-available-packages "guix" nil t)
(autoload 'guix-newest-available-packages "guix" nil t)
(autoload 'guix-generations "guix" nil t)

Usage

Note: The first start of Guix REPL may take a long time, so be patient and do not press C-g. If you want to disable auto-compilation, use the following setting (it is not necessary):

(setq guix-guile-program '("guile" "--no-auto-compile"))
  • To list packages, use the following commands:

    M-x guix-all-available-packages
    M-x guix-newest-available-packages
    M-x guix-installed-packages
    M-x guix-obsolete-packages
    
  • To list generations, use:

    M-x guix-generations
    

    With numeric prefix, show so many last generations.

  • To search for packages, use:

    M-x guix-search-by-regexp
    

    By default "name", "synopsis" and "description" of the packages will be searched. This behavior can be changed with guix-search-params variable.

  • To get packages by name, use:

    M-x guix-search-by-name
    

Information about the packages and generations may be displayed in 2 types of buffers: "list" and "info". The following keys are available in the both buffer types by default:

  • l / r go backward/forward by the history of the displayed results (this history is similar to the history of the Emacs help or Info modes);
  • g refresh current information;
  • C-c C-z go to the Guix REPL;
  • h or ? describe current mode to see all available bindings.

Hint: If you need several "list" or "info" buffers, you can simlpy M-x clone-buffer them, and each buffer will have its own history.

Warning: Name/version pairs cannot be used to identify Guix packages (because a name is not necessarily unique), so guix.el uses special identifiers that live only during a guile session, so if the Guix REPL was restarted, you may want to revert "list" buffer (by pressing g).

"List" buffer

Default key bindings available for both "package-list" and "generation-list" buffers:

  • m mark the current entry;
  • M mark all entries;
  • u unmark the current entry;
  • DEL unmark backward;
  • U unmark all entries;
  • S sort entries by a specified column.

A "package-list" buffer additionally provides the following bindings:

  • RET "describe" marked packages (display available information in a "package-info" buffer);
  • i mark a package for installation (with prefix, prompt for output(s) to install);
  • d mark a package for deletion;
  • ^ mark a package for upgrading;
  • x execute actions on marked packages.

A "generation-list" buffer additionally provides the following bindings:

  • RET list packages installed in the current generation;
  • i "describe" marked generations (display available information in a "generation-info" buffer).

"Info" buffer

"Info" buffer contains some buttons (as usual you may use TAB / S-TAB to move between buttons) which can be used to:

  • (in a "package-info" buffer)

    • install/remove a package;
    • jump to a package location;
    • browse home page of a package;
    • describe packages from "Inputs" fields.
  • (in a "generation-info" buffer)

    • remove a generation;
    • list packages installed in a generation;
    • jump to a generation directory.