Here's my (tentative) plan of this project: This package (guix.el) will include a facility that lets you easily install (by name or by expression), remove, upgrade, and roll back packages. Of course, guix.el can also list the available and/or installed packages. The command `guix-describe-package' (I haven't come up with a good key binding yet) can prompt for the name of a package, and display a help buffer describing the package. The buffer includes the name, version, source, dependencies, home page, license(s) and other descriptions of the package. `M-x guix-list-packages' will bring up a buffer named `*Guix Packages*' with a list of all packages. You can install or uninstall packages via this buffer. *Note my attached image for the prototype of this buffer. The `*Guix Packages*' buffer will list all the packages that Guix knows about, one on each line, with the following information: * The package name (e.g., `emacs'). * The package's version number (e.g., `24.3'). * The package's status (installed/available). * A short description of the package. The following commands will be available in the `*Guix Packages*' buffer: `h' Print a short message summarizing how to use guix.el (`guix-quick-help'). `?' `' Display a help buffer for the package on the current line (`guix-describe-package'), similar to the help window displayed by the `C-h P' command. `i' Mark the package on the current line for installation (`guix-mark-install'). If the package status is `available', this adds an `I' character to the start of the line; typing `x' (see below) will download and install the package. `d' Mark the package on the current line for deletion (`guix-mark-delete'). If the package status is `installed', this adds a `D' character to the start of the line; typing `x' (see below) will delete the package. `u' Remove any installation or deletion mark previously added to the current line by an `i' or `d' command. `U' Mark all package with a newer available version for “upgrading” (`guix-mark-upgrades'). This places an installation mark on the new available versions, and a deletion mark on the old installed versions. `x' Download and install all packages marked with `i', and their dependencies; also, delete all packages marked with `d' (`guix-execute'). This also removes the marks. `r' Refresh the package list (`guix-refresh'). This recomputes the package list. `R' Roll back to the previous generation of the profile (`guix-roll-back'). This undo the last transaction. (Do we need a "roll back" mark?) For example, you can install a package by typing `i' on the line listing that package, followed by `x'. One can also use the command `M-x guix-package-install' and `M-x guix-package-remove' to install/remove a package. Any comments?