Daily generations of Elpa.
Daily generations of Melpa & Melpa stable attribute sets.
This overlay provides fresh versions of EXWM and dependencies. This is updated daily.
This overlay also provides two versions (latest from git) for Emacs. These are updated daily.
These attributes are named emacsGit
and emacsUnstable
.
emacsGit
is built from the latest master
branch and emacsUnstable
is built from the latest tag.
Emacs from git is not guaranteed stable and may break your setup at any time, if it breaks you get to keep both pieces.
The feature/native-comp
branch is also provided under the attribute emacsGcc
.
This is to be considered highly experimental.
We also provide two attributes named emacsGit-nox
and emacsUnstable-nox
if you wish to have Emacs built without X dependencies.
This overlay comes with extra functions to generate an Emacs closure
from various types of dependency declaration. (These are abstractions
on top of emacsWithPackages
.)
For example, emacsWithPackagesFromUsePackage
adds packages which are required in a user’s config via use-package
:
{
environment.systemPackages = [
(emacsWithPackagesFromUsePackage {
config = builtins.readFile ./emacs.el;
# Package is optional, defaults to pkgs.emacs
package = pkgs.emacsGit;
# By default emacsWithPackagesFromUsePackage will only pull in packages with `:ensure t`.
# Setting alwaysEnsure to true emulates `use-package-always-ensure` and pulls in all use-package references.
alwaysEnsure = true;
# Optionally provide extra packages not in the configuration file
extraEmacsPackages = epkgs: [
epkgs.cask
];
# Optionally override derivations
override = epkgs: epkgs // {
weechat = epkgs.melpaPackages.weechat.overrideAttrs(old: {
patches = [ ./weechat-el.patch ];
});
};
})
];
}
Similarly, emacsWithPackagesFromPackageRequires
adds packages which
are declared in a .el
package file’s Package-Requires
header, which
can be handy for CI purposes:
...
let
emacsForCI = pkgs.emacsWithPackagesFromPackageRequires {
packageElisp = builtins.readFile ./flycheck.el;
extraEmacsPackages = epkgs: [
epkgs.package-lint
];
};
pkgs.mkShell {
buildInputs = [ emacsForCI ];
}
One way, and probably the most convenient way to pull in this overlay is by just fetching the tarball of latest master on rebuild.
This has side-effects if packages breaks or things like that you may want to be in control of which revision of the overlay you run.
Adding the overlay this way will extend your Emacs packages set to contain
the latest EXWM and dependencies from their respective master and make the
package emacsGit
available. These of course change quite rapidly and will
cause compilation time.
{
nixpkgs.overlays = [
(import (builtins.fetchTarball {
url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz;
}))
];
}
#nixos-emacs
on freenode