summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2019-08-03 20:48:11 +0100
committeradisbladis <adisbladis@gmail.com>2019-08-07 18:04:19 +0100
commit47d3b98b4b3f52e862fe62186ec5dcbb0a233202 (patch)
tree0296b97a6b51ea631c16c915c79792099fd6119d /pkgs
parent891122697121ac52a250bcfca891fd2bd4b19c70 (diff)
downloadnixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.tar
nixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.tar.gz
nixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.tar.bz2
nixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.tar.lz
nixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.tar.xz
nixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.tar.zst
nixpkgs-47d3b98b4b3f52e862fe62186ec5dcbb0a233202.zip
melpa-packages: Add ability to ovveride melpa JSON archive location
This enables using the melpa json generator in an overlay
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-packages.nix482
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix235
-rw-r--r--pkgs/top-level/emacs-packages.nix30
3 files changed, 281 insertions, 466 deletions
diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
index 7f8ac548653..5f05d3b2695 100644
--- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
@@ -12,124 +12,115 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
 
 */
 
-{ lib, external }:
+{ lib, external }: variant: self: let
 
-self:
-
-  let
-    inherit (import ./libgenerated.nix lib self) melpaDerivation;
-    imported = lib.listToAttrs (map (melpaDerivation "unstable")
-                                    (lib.importJSON ./recipes-archive-melpa.json));
-    super = builtins.removeAttrs imported [
-      "swbuff-x" # required dependency swbuff is missing
-    ];
-
-    dontConfigure = pkg: pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        configureScript = "true";
-      });
+  dontConfigure = pkg: if pkg != null then pkg.override (args: {
+    melpaBuild = drv: args.melpaBuild (drv // {
+      configureScript = "true";
     });
+  }) else null;
 
-    markBroken = pkg: pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        meta = (drv.meta or {}) // { broken = true; };
-      });
+  markBroken = pkg: if pkg != null then pkg.override (args: {
+    melpaBuild = drv: args.melpaBuild (drv // {
+      meta = (drv.meta or {}) // { broken = true; };
     });
+  }) else null;
 
-    overrides = {
-      # Expects bash to be at /bin/bash
-      ac-rtags = markBroken super.ac-rtags;
+  generateMelpa = lib.makeOverridable ({
+    archiveJson ? ./recipes-archive-melpa.json
+  }: let
 
-      # upstream issue: mismatched filename
-      ack-menu = markBroken super.ack-menu;
+    inherit (import ./libgenerated.nix lib self) melpaDerivation;
+    super = lib.listToAttrs (map (melpaDerivation variant) (lib.importJSON archiveJson));
 
-      airline-themes = super.airline-themes.override {
-        inherit (self.melpaPackages) powerline;
-      };
+    generic = import ./melpa-generic.nix;
 
-      # upstream issue: missing file header
-      bufshow = markBroken super.bufshow;
+    overrides = rec {
+      shared = {
+        # Expects bash to be at /bin/bash
+        ac-rtags = markBroken super.ac-rtags;
 
-      # part of a larger package
-      caml = dontConfigure super.caml;
+        airline-themes = super.airline-themes.override {
+          inherit (self.melpaPackages) powerline;
+        };
 
-      # Expects bash to be at /bin/bash
-      company-rtags = markBroken super.company-rtags;
+        # upstream issue: missing file header
+        bufshow = markBroken super.bufshow;
 
-      easy-kill-extras = super.easy-kill-extras.override {
-        inherit (self.melpaPackages) easy-kill;
-      };
+        # part of a larger package
+        caml = dontConfigure super.caml;
 
-      editorconfig = super.editorconfig.overrideAttrs (attrs: {
-        propagatedUserEnvPkgs = [ external.editorconfig-core-c ];
-      });
+        # Expects bash to be at /bin/bash
+        company-rtags = markBroken super.company-rtags;
 
-      egg = super.egg.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        easy-kill-extras = super.easy-kill-extras.override {
+          inherit (self.melpaPackages) easy-kill;
+        };
 
-      # upstream issue: missing file header
-      elmine = markBroken super.elmine;
+        # upstream issue: missing file header
+        elmine = markBroken super.elmine;
 
-      ess-R-data-view = super.ess-R-data-view.override {
-        inherit (self.melpaPackages) ess ctable popup;
-      };
+        evil-magit = super.evil-magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      evil-magit = super.evil-magit.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        ess-R-data-view = super.ess-R-data-view.override {
+          inherit (self.melpaPackages) ess ctable popup;
+        };
 
-      # missing dependencies
-      evil-search-highlight-persist = super.evil-search-highlight-persist.overrideAttrs (attrs: {
-        packageRequires = with self; [ evil highlight ];
-      });
+        # Expects bash to be at /bin/bash
+        flycheck-rtags = markBroken super.flycheck-rtags;
 
-      # Expects bash to be at /bin/bash
-      flycheck-rtags = markBroken super.flycheck-rtags;
+        # build timeout
+        graphene = markBroken super.graphene;
 
-      forge = super.forge.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # Build same version as Haskell package
+        hindent = super.hindent.overrideAttrs (attrs: {
+          version = external.hindent.version;
+          src = external.hindent.src;
+          packageRequires = [ self.haskell-mode ];
+          propagatedUserEnvPkgs = [ external.hindent ];
+        });
 
-      # build timeout
-      graphene = markBroken super.graphene;
+        # upstream issue: missing file header
+        ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
 
-      # upstream issue: mismatched filename
-      helm-lobsters = markBroken super.helm-lobsters;
+        # upstream issue: missing file header
+        initsplit = markBroken super.initsplit;
 
-      # Expects bash to be at /bin/bash
-      helm-rtags = markBroken super.helm-rtags;
+        # tries to write a log file to $HOME
+        insert-shebang = super.insert-shebang.overrideAttrs (attrs: {
+          HOME = "/tmp";
+        });
 
-      # Build same version as Haskell package
-      hindent = super.hindent.overrideAttrs (attrs: {
-        version = external.hindent.version;
-        src = external.hindent.src;
-        packageRequires = [ self.haskell-mode ];
-        propagatedUserEnvPkgs = [ external.hindent ];
-      });
+        # Expects bash to be at /bin/bash
+        ivy-rtags = markBroken super.ivy-rtags;
 
-      # upstream issue: missing file header
-      ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
+        # upstream issue: missing file header
+        jsfmt = markBroken super.jsfmt;
 
-      # upstream issue: missing file header
-      initsplit = super.initsplit;
+        # upstream issue: missing file header
+        maxframe = markBroken super.maxframe;
 
-      # tries to write a log file to $HOME
-      insert-shebang = super.insert-shebang.overrideAttrs (attrs: {
-        HOME = "/tmp";
-      });
+        magit = super.magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # Expects bash to be at /bin/bash
-      ivy-rtags = markBroken super.ivy-rtags;
+        magit-todos = super.magit-todos.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
-      jsfmt = markBroken super.jsfmt;
+        magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
       kubernetes = super.kubernetes.overrideAttrs (attrs: {
         # searches for Git at build time
@@ -138,169 +129,224 @@ self:
       });
 
       # upstream issue: missing file header
-      maxframe = markBroken super.maxframe;
+        mhc = super.mhc.override {
+          inherit (self.melpaPackages) calfw;
+        };
 
-      magit =
-        super.magit.overrideAttrs (attrs: {
-          # searches for Git at build time
+        # missing .NET
+        nemerle = markBroken super.nemerle;
+
+        # part of a larger package
+        notmuch = dontConfigure super.notmuch;
+
+        # missing OCaml
+        ocp-indent = markBroken super.ocp-indent;
+
+        # upstream issue: missing file header
+        qiita = markBroken super.qiita;
+
+        # upstream issue: missing file header
+        speech-tagger = markBroken super.speech-tagger;
+
+        # upstream issue: missing file header
+        stgit = markBroken super.stgit;
+
+        # upstream issue: missing file header
+        tawny-mode = markBroken super.tawny-mode;
+
+        # upstream issue: missing file header
+        textmate = markBroken super.textmate;
+
+        # missing OCaml
+        utop = markBroken super.utop;
+
+        vdiff-magit = super.vdiff-magit.overrideAttrs (attrs: {
           nativeBuildInputs =
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
 
-      magit-annex = super.magit-annex.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing file header
+        voca-builder = markBroken super.voca-builder;
+
+        # upstream issue: missing file header
+        window-numbering = markBroken super.window-numbering;
+
+        # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
+        _0blayout = super."0blayout";
+        _0xc = super."0xc";
+        _2048-game = super."2048-game";
+        _4clojure = super."4clojure";
+        at = super."@";
+        desktop-plus = super."desktop+";
+        ghub-plus = super."ghub+";
+        git-gutter-plus = super."git-gutter+";
+        git-gutter-fringe-plus = super."git-gutter-fringe+";
+        ido-completing-read-plus = super."ido-completing-read+";
+        image-plus = super."image+";
+        image-dired-plus = super."image-dired+";
+        markdown-mode-plus = super."markdown-mode+";
+        package-plus = super."package+";
+        rect-plus = super."rect+";
+        term-plus = super."term+";
+        term-plus-key-intercept = super."term+key-intercept";
+        term-plus-mux = super."term+mux";
+        xml-plus = super."xml+";
+      };
 
-      magit-gitflow = super.magit-gitflow.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+      stable = {
+        # part of a larger package
+        # upstream issue: missing package version
+        cmake-mode = markBroken (dontConfigure super.cmake-mode);
 
-      magithub = super.magithub.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing file header
+        connection = markBroken super.connection;
 
-      magit-svn = super.magit-svn.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing file header
+        dictionary = markBroken super.dictionary;
 
-      magit-todos = super.magit-todos.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # missing git
+        egg = markBroken super.egg;
 
-      magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing dependency redshank
+        emr = markBroken super.emr;
 
-      mhc = super.mhc.override {
-        inherit (self.melpaPackages) calfw;
-      };
+        # upstream issue: doesn't build
+        eterm-256color = markBroken super.eterm-256color;
 
-      # missing .NET
-      nemerle = markBroken super.nemerle;
+        # upstream issue: missing dependency highlight
+        evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
 
-      # part of a larger package
-      notmuch = dontConfigure super.notmuch;
+        # upstream issue: missing dependency highlight
+        floobits  = markBroken super.floobits;
 
-      # missing OCaml
-      ocp-indent = markBroken super.ocp-indent;
+        # missing OCaml
+        flycheck-ocaml = markBroken super.flycheck-ocaml;
 
-      orgit =
-        (super.orgit.overrideAttrs (attrs: {
-          # searches for Git at build time
-          nativeBuildInputs =
-            (attrs.nativeBuildInputs or []) ++ [ external.git ];
-         }));
+        # upstream issue: missing dependency
+        fold-dwim-org = markBroken super.fold-dwim-org;
 
-      # tries to write to $HOME
-      php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
-        HOME = "/tmp";
-      });
+        # build timeout
+        graphene = markBroken super.graphene;
 
-      # upstream issue: mismatched filename
-      processing-snippets = markBroken super.processing-snippets;
+        # Expects bash to be at /bin/bash
+        helm-rtags = markBroken super.helm-rtags;
 
-      # upstream issue: missing file header
-      qiita = markBroken super.qiita;
+        # upstream issue: missing file header
+        link = markBroken super.link;
 
-      racer = super.racer.overrideAttrs (attrs: {
-        postPatch = attrs.postPatch or "" + ''
-          substituteInPlace racer.el \
-            --replace /usr/local/src/rust/src ${external.rustPlatform.rustcSrc}
-        '';
-      });
+        # missing OCaml
+        merlin = markBroken super.merlin;
 
-      # upstream issue: missing file footer
-      seoul256-theme = markBroken super.seoul256-theme;
+        # upstream issue: missing file header
+        po-mode = markBroken super.po-mode;
 
-      spaceline = super.spaceline.override {
-        inherit (self.melpaPackages) powerline;
+        # upstream issue: truncated file
+        powershell = markBroken super.powershell;
       };
 
-      # upstream issue: missing file header
-      speech-tagger = markBroken super.speech-tagger;
+      unstable = shared // {
+        # upstream issue: mismatched filename
+        ack-menu = markBroken super.ack-menu;
 
-      # upstream issue: missing file header
-      stgit = markBroken super.stgit;
+        editorconfig = super.editorconfig.overrideAttrs (attrs: {
+          propagatedUserEnvPkgs = [ external.editorconfig-core-c ];
+        });
 
-      # upstream issue: missing file header
-      tawny-mode = markBroken super.tawny-mode;
+        egg = super.egg.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
-      textmate = markBroken super.textmate;
+        # missing dependencies
+        evil-search-highlight-persist = super.evil-search-highlight-persist.overrideAttrs (attrs: {
+          packageRequires = with self; [ evil highlight ];
+        });
 
-      treemacs-magit = super.treemacs-magit.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        forge = super.forge.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
+
+        # upstream issue: mismatched filename
+        helm-lobsters = markBroken super.helm-lobsters;
 
-      # missing OCaml
-      utop = markBroken super.utop;
+        # Expects bash to be at /bin/bash
+        helm-rtags = markBroken super.helm-rtags;
 
-      vdiff-magit =
-        (super.vdiff-magit.overrideAttrs (attrs: {
+        magit-annex = super.magit-annex.overrideAttrs (attrs: {
+          # searches for Git at build time
           nativeBuildInputs =
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
-        }));
+        });
 
-      # upstream issue: missing file header
-      voca-builder = markBroken super.voca-builder;
+        magit-gitflow = super.magit-gitflow.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
-      window-numbering = markBroken super.window-numbering;
-
-      w3m = super.w3m.override (args: {
-        melpaBuild = drv: args.melpaBuild (drv // {
-          prePatch =
-            let w3m = "${lib.getBin external.w3m}/bin/w3m"; in ''
-              substituteInPlace w3m.el \
-                --replace 'defcustom w3m-command nil' \
-                          'defcustom w3m-command "${w3m}"'
-            '';
+        magithub = super.magithub.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
-      });
 
-      # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
-      _0blayout = super."0blayout";
-      _0xc = super."0xc";
-      _2048-game = super."2048-game";
-      _4clojure = super."4clojure";
-      at = super."@";
-      desktop-plus = super."desktop+";
-      # filesets-plus = super."filesets+";
-      ghub-plus = super."ghub+";
-      git-gutter-plus = super."git-gutter+";
-      git-gutter-fringe-plus = super."git-gutter-fringe+";
-      ido-completing-read-plus = super."ido-completing-read+";
-      image-plus = super."image+";
-      image-dired-plus = super."image-dired+";
-      markdown-mode-plus = super."markdown-mode+";
-      package-plus = super."package+";
-      rect-plus = super."rect+";
-      term-plus = super."term+";
-      term-plus-key-intercept = super."term+key-intercept";
-      term-plus-mux = super."term+mux";
-      xml-plus = super."xml+";
+        magit-svn = super.magit-svn.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
+
+        orgit =
+          (super.orgit.overrideAttrs (attrs: {
+            # searches for Git at build time
+            nativeBuildInputs =
+              (attrs.nativeBuildInputs or []) ++ [ external.git ];
+           }));
+
+        # tries to write to $HOME
+        php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
+          HOME = "/tmp";
+        });
+
+        # upstream issue: mismatched filename
+        processing-snippets = markBroken super.processing-snippets;
+
+        racer = super.racer.overrideAttrs (attrs: {
+          postPatch = attrs.postPatch or "" + ''
+            substituteInPlace racer.el \
+              --replace /usr/local/src/rust/src ${external.rustPlatform.rustcSrc}
+          '';
+        });
+
+        # upstream issue: missing file footer
+        seoul256-theme = markBroken super.seoul256-theme;
+
+        spaceline = super.spaceline.override {
+          inherit (self.melpaPackages) powerline;
+        };
 
+        treemacs-magit = super.treemacs-magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
+
+        w3m = super.w3m.override (args: {
+          melpaBuild = drv: args.melpaBuild (drv // {
+            prePatch =
+              let w3m = "${lib.getBin external.w3m}/bin/w3m"; in ''
+                substituteInPlace w3m.el \
+                  --replace 'defcustom w3m-command nil' \
+                            'defcustom w3m-command "${w3m}"'
+              '';
+          });
+        });
+      };
     };
 
-    melpaPackages =
-      removeAttrs (super // overrides)
-      [
-        "show-marks"  # missing dependency: fm
-        "lenlen-theme"  # missing dependency: color-theme-solarized
-      ];
-  in
-    melpaPackages // { inherit melpaPackages; }
+  in super // overrides."${variant}");
+
+in generateMelpa { }
diff --git a/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix
deleted file mode 100644
index 8f52f2d3489..00000000000
--- a/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
-
-# Updating
-
-To update the list of packages from MELPA,
-
-
-1. Run ./update-melpa
-2. Check for evaluation errors:
-env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaStablePackages
-env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaPackages
-3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
-
-*/
-
-{ lib, external }:
-
-self:
-
-  let
-    inherit (import ./libgenerated.nix lib self) melpaDerivation;
-    imported = lib.listToAttrs (map (melpaDerivation "stable")
-                                    (lib.importJSON ./recipes-archive-melpa.json));
-    super = imported;
-
-    dontConfigure = pkg: pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        configureScript = "true";
-      });
-    });
-
-    markBroken = pkg: if pkg != null then pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        meta = (drv.meta or {}) // { broken = true; };
-      });
-    }) else null;
-
-    overrides = {
-      # Expects bash to be at /bin/bash
-      ac-rtags = markBroken super.ac-rtags;
-
-      airline-themes = super.airline-themes.override {
-        inherit (self.melpaPackages) powerline;
-      };
-
-      # upstream issue: missing file header
-      bufshow = markBroken super.bufshow;
-
-      # part of a larger package
-      caml = dontConfigure super.caml;
-
-      # part of a larger package
-      # upstream issue: missing package version
-      cmake-mode = markBroken (dontConfigure super.cmake-mode);
-
-      # Expects bash to be at /bin/bash
-      company-rtags = markBroken super.company-rtags;
-
-      # upstream issue: missing file header
-      connection = markBroken super.connection;
-
-      # upstream issue: missing file header
-      dictionary = markBroken super.dictionary;
-
-      easy-kill-extras = super.easy-kill-extras.override {
-        inherit (self.melpaPackages) easy-kill;
-      };
-
-      # missing git
-      egg = markBroken super.egg;
-
-      # upstream issue: missing file header
-      elmine = markBroken super.elmine;
-
-      # upstream issue: missing dependency redshank
-      emr = markBroken super.emr;
-
-      ess-R-data-view = super.ess-R-data-view.override {
-        inherit (self.melpaPackages) ess ctable popup;
-      };
-
-      # upstream issue: doesn't build
-      eterm-256color = markBroken super.eterm-256color;
-
-      # upstream issue: missing dependency highlight
-      evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
-
-      # upstream issue: missing dependency highlight
-      floobits  = markBroken super.floobits;
-
-      # missing OCaml
-      flycheck-ocaml = markBroken super.flycheck-ocaml;
-
-      # Expects bash to be at /bin/bash
-      flycheck-rtags = markBroken super.flycheck-rtags;
-
-      # upstream issue: missing dependency
-      fold-dwim-org = markBroken super.fold-dwim-org;
-
-      # build timeout
-      graphene = markBroken super.graphene;
-
-      # Expects bash to be at /bin/bash
-      helm-rtags = markBroken super.helm-rtags;
-
-      # Build same version as Haskell package
-      hindent = super.hindent.overrideAttrs (attrs: {
-        version = external.hindent.version;
-        src = external.hindent.src;
-        packageRequires = [ self.haskell-mode ];
-        propagatedUserEnvPkgs = [ external.hindent ];
-      });
-
-      # upstream issue: missing file header
-      ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
-
-      # upstream issue: missing file header
-      initsplit = markBroken super.initsplit;
-
-      # upstream issue: recipe fails
-      insert-shebang = markBroken super.insert-shebang;
-
-      # Expects bash to be at /bin/bash
-      ivy-rtags = markBroken super.ivy-rtags;
-
-      # upstream issue: missing file header
-      jsfmt = markBroken super.jsfmt;
-
-      # upstream issue: missing file header
-      link = markBroken super.link;
-
-      # upstream issue: missing file header
-      maxframe = markBroken super.maxframe;
-
-      magit =
-        (super.magit.override {
-          # version of magit-popup needs to match magit
-          # https://github.com/magit/magit/issues/3286
-          inherit (self.melpaStablePackages) magit-popup;
-        }).overrideAttrs (attrs: {
-          # searches for Git at build time
-          nativeBuildInputs =
-            (attrs.nativeBuildInputs or []) ++ [ external.git ];
-        });
-
-      magit-todos = super.magit-todos.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
-
-      magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
-
-      # missing OCaml
-      merlin = markBroken super.merlin;
-
-      mhc = super.mhc.override {
-        inherit (self.melpaPackages) calfw;
-      };
-
-      # missing .NET
-      nemerle = markBroken super.nemerle;
-
-      # part of a larger package
-      notmuch = dontConfigure super.notmuch;
-
-      # missing OCaml
-      ocp-indent = markBroken super.ocp-indent;
-
-      # upstream issue: missing file header
-      po-mode = markBroken super.po-mode;
-
-      # upstream issue: truncated file
-      powershell = markBroken super.powershell;
-
-      # upstream issue: missing file header
-      qiita = markBroken super.qiita;
-
-      # upstream issue: missing file header
-      speech-tagger = markBroken super.speech-tagger;
-
-      # upstream issue: missing file header
-      stgit = markBroken super.stgit;
-
-      # upstream issue: missing file header
-      tawny-mode = markBroken super.tawny-mode;
-
-      # upstream issue: missing file header
-      textmate = markBroken super.textmate;
-
-      # missing OCaml
-      utop = markBroken super.utop;
-
-      vdiff-magit =
-        (super.vdiff-magit.overrideAttrs (attrs: {
-          nativeBuildInputs =
-            (attrs.nativeBuildInputs or []) ++ [ external.git ];
-        }));
-
-      # upstream issue: missing file header
-      voca-builder = markBroken super.voca-builder;
-
-      # upstream issue: missing file header
-      window-numbering = markBroken super.window-numbering;
-
-      # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
-      _0blayout = super."0blayout";
-      _0xc = super."0xc";
-      _2048-game = super."2048-game";
-      _4clojure = super."4clojure";
-      at = super."@";
-      desktop-plus = super."desktop+";
-      ghub-plus = super."ghub+";
-      git-gutter-plus = super."git-gutter+";
-      git-gutter-fringe-plus = super."git-gutter-fringe+";
-      ido-completing-read-plus = super."ido-completing-read+";
-      image-plus = super."image+";
-      image-dired-plus = super."image-dired+";
-      markdown-mode-plus = super."markdown-mode+";
-      package-plus = super."package+";
-      rect-plus = super."rect+";
-      term-plus = super."term+";
-      term-plus-key-intercept = super."term+key-intercept";
-      term-plus-mux = super."term+mux";
-      xml-plus = super."xml+";
-
-    };
-
-    melpaStablePackages = super // overrides;
-  in
-    melpaStablePackages // { inherit melpaStablePackages; }
diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix
index e1b93954448..23e00708949 100644
--- a/pkgs/top-level/emacs-packages.nix
+++ b/pkgs/top-level/emacs-packages.nix
@@ -49,13 +49,18 @@ let
     inherit lib stdenv texinfo;
   };
 
-  melpaStablePackages = import ../applications/editors/emacs-modes/melpa-stable-packages.nix {
+  # Contains both melpa stable & unstable
+  melpaGeneric = import ../applications/editors/emacs-modes/melpa-packages.nix {
     inherit external lib;
   };
 
-  melpaPackages = import ../applications/editors/emacs-modes/melpa-packages.nix {
-    inherit external lib;
-  };
+  melpaStablePackages = self: let
+    m = melpaGeneric "stable" self;
+  in {melpaStablePackages = m;} // m;
+
+  melpaPackages = self: let
+    m = melpaGeneric "unstable" self;
+  in {melpaPackages = m;} // m;
 
   orgPackages = import ../applications/editors/emacs-modes/org-packages.nix { };
 
@@ -455,12 +460,11 @@ let
 
   };
 
-in
-  lib.makeScope newScope (self:
-    {}
-    // elpaPackages self
-    // melpaStablePackages self
-    // melpaPackages self
-    // orgPackages self
-    // packagesFun self
-  )
+in lib.makeScope newScope (self:
+  removeAttrs ({}
+  // elpaPackages self
+  // melpaStablePackages self
+  // melpaPackages self
+  // orgPackages self
+  // packagesFun self) [ "override" "overrideDerivation" ]
+)