Emacs: Difference between revisions
imported>Appetrosyan Added discussion of the different branches |
imported>Appetrosyan Added formatting. |
||
Line 13: | Line 13: | ||
* potential for reproducible portable literate configurations | * potential for reproducible portable literate configurations | ||
Emacs, much like NixOS can rebuild and re-fetch all of its packages based on its initialisation file alone, if one chooses to use an extension called {{ic|(use-package)}}. Such a configuration file can be version controlled and used in all compatible operating systems. Certain issues are possible, when mixing different versions of Emacs, in particular a configuration file tailored towards emacs with native compilation, may misbehave on non-native compiling versions, unless only the emacs lisp code is shared between them. | {{tip|Emacs, much like NixOS can rebuild and re-fetch all of its packages based on its initialisation file alone, if one chooses to use an extension called {{ic|(use-package)}}. Such a configuration file can be version controlled and used in all compatible operating systems.}} Certain issues are possible, when mixing different versions of Emacs, in particular a configuration file tailored towards emacs with native compilation, may misbehave on non-native compiling versions, unless only the emacs lisp code is shared between them. | ||
==== Unstable branches ==== | ==== Unstable branches ==== |
Revision as of 13:00, 17 July 2021
For reference use the emacs chapter in the nixos manual.
About
Emacs is an interactive graphical emacs lisp interpreter that comes with many applications, but is primarily used as a text and code editor. It has one of the largest repositories of packages of any similar code editor such as vim
or its fork neovim
.
Features
Emacs is often valued as a general purpose programming environment. Its power comes from its
- Extensibility
- Automatic self-documenting behaviour
- Flexibility
- Syntax awareness
- language server protocol support
- potential for reproducible portable literate configurations
Certain issues are possible, when mixing different versions of Emacs, in particular a configuration file tailored towards emacs with native compilation, may misbehave on non-native compiling versions, unless only the emacs lisp code is shared between them.
Unstable branches
As of July 2021, the Nix community offers 7 variants of GNU Emacs as overlays: emacsGit, emacsGcc, emacsPgtk, emacsPgtkGcc, emacsUnstable, emacsGit-nox, and emacsUnstable-nox.
Pure GTK
Offers better integration with wayland compositors, in particular, there's better support for sharing the kill ring contents with the system clipboard.
GCC
Branches offer a means for automatic, asynchronous native compilation of emacs lisp into native code, that is then transparently used whenver the original versions of the functions are requested.
Installation
Emacs overlay
For installing one of the unstable branches of emacs, add the following lines to /etc/nixos/configuration.nix
(replace emacsPgtkGcc with the variant of your choice).
configuration.nix
{
services.emacs.package = pkgs.emacsPgtkGcc;
nixpkgs.overlays = [
(import (builtins.fetchGit {
url = "https://github.com/nix-community/emacs-overlay.git";
ref = "master";
rev = "bfc8f6edcb7bcf3cf24e4a7199b3f6fed96aaecf"; # change the revision
}))
];
environment.systemPackages = with pkgs; [
emacsPgtkGcc
];
}