* Title Emacs UI for Guix. * Abstract Guix¹ is purely functional package manger for GNU system. Guix, in addition to standard package management features, supports transactional upgrades and roll-backs, unprivileged package management. Package.el is a simple package manager for GNU Emacs², which downloads and installs the Elisp packages from different package archives. This project "Emacs UI for Guix" (or guix.el) aims to create an User Interface (UI) for Guix above GNU Emacs analogous to Emacs package.el. Guix.el provides an easy interface for guix command line to build, install, upgrade, rollback and create packages for GNU system. * Content This package (guix.el) will include a interface that lets the user to 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 from the Emacs. guix.el provides an easy key bindings (similar to Package.el for Emacs) for guix command line operations. This package interacts with guix in the background and tries to hide the complexity of command line options/arguments of guix. The command `guix-describe-package' 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. User can install or uninstall packages via 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 key bindings will be available in the `*Guix Packages*' buffer: `h' Print a short message which summarizes available key bindings and their meanings (`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 of Package.el. `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'). Download the archive contents again and recomputes the package list. `R' Roll back to the previous generation of the profile (`guix-roll-back'). This undo the last transaction. `g' Rebuild the tabulated list of packages that have been downloaded previously. See `r' (guix pull) to check package updates. For example, user can install a package by typing `i' on the line listing that package, followed by `x'. User can also use the command `M-x guix-package-install' and `M-x guix-package-remove' to install/remove a package. * Timeline of the development. ** Before April 21: - Getting familiar with guix concepts and code base - Study Emacs Package.el implementation. - Adding new package to guix. ** April 20 – May 23: - Start on guix.el coding. - Initial work on Elisp interface of guix function calls. - Finalizing on guix.el implementation concepts that includes how to interact with guix from Emacs. ** May 24 – July 15: - Implementation of glue code between Elisp and Guix. - Work towards primary usable implementation of guix.el. ** July 16 – July 24: - Code cleanup - Fixing initial reported bugs. - Preparing for submission of mid term evaluation ** June 27th Mid term evaluation ** June 28 – July 15: - Further changes to improve code functionality. - Refactoring code if required. - Writing tests ** July 15 – July 25: - Start working on documentation to meet GNU documentation standards. - Fixing remaining bugs. - Code cleanup ** July 26 - August 11 - reserved time left for unexpected delays. - During whole period I will be communicating with mentor in guix IRC channel. * Links ¹ http://www.gnu.org/software/guix/ ² http://www.gnu.org/software/emacs/