about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix')
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix b/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix
new file mode 100644
index 000000000000..034b698137b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs-modes/elpa-packages.nix
@@ -0,0 +1,65 @@
+/*
+
+# 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 { }