nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix
Terje Larsen 0e56639342
emacs: do not use project package from elpa for emacs >= 28
The `project` package bundled with Emacs 28 is newer than the one
provided by GNU ELPA. This may or may not change in the future.

For now it is definitely the case and since the package is under heavy
development a lot of features are missing in the one on GNU ELPA which in
turn is newer than the one that comes bundled with Emacs 27.
2021-03-09 19:15:18 +01:00

66 lines
1.5 KiB
Nix

/*
# Updating
To update the list of packages from MELPA,
1. Run `./update-elpa`.
2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacs.pkgs.elpaPackages`.
3. `git commit -m "elpa-packages $(date -Idate)" -- elpa-generated.nix`
## Update from overlay
Alternatively, run the following command:
./update-from-overlay
It will update both melpa and elpa packages using
https://github.com/nix-community/emacs-overlay. It's almost
instantenous and formats commits for you.
*/
{ lib, stdenv, texinfo, writeText }:
self: let
markBroken = pkg: pkg.override {
elpaBuild = args: self.elpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
});
};
elpaBuild = import ../../../build-support/emacs/elpa.nix {
inherit lib stdenv texinfo writeText;
inherit (self) emacs;
};
generateElpa = lib.makeOverridable ({
generated ? ./elpa-generated.nix
}: let
imported = import generated {
inherit (self) callPackage;
};
super = removeAttrs imported [ "dash" ];
overrides = {
rcirc-menu = markBroken super.rcirc-menu; # Missing file header
cl-lib = null; # builtin
tle = null; # builtin
advice = null; # builtin
seq = if lib.versionAtLeast self.emacs.version "27"
then null
else super.seq;
project = if lib.versionAtLeast self.emacs.version "28"
then null
else super.project;
};
elpaPackages = super // overrides;
in elpaPackages // { inherit elpaBuild; });
in generateElpa { }