summary refs log tree commit diff
path: root/pkgs/top-level/emacs-packages.nix
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2019-08-04 21:44:07 +0100
committeradisbladis <adisbladis@gmail.com>2019-08-07 18:04:22 +0100
commit97a069609f16f64a7291933d56d4c5818f4a0e00 (patch)
treeebd36fd15f0bf4c428b585e8d756887c9d137c7b /pkgs/top-level/emacs-packages.nix
parentd490bcdf0fb5f02499cce77a6b862a4a5ea616a2 (diff)
downloadnixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.tar
nixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.tar.gz
nixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.tar.bz2
nixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.tar.lz
nixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.tar.xz
nixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.tar.zst
nixpkgs-97a069609f16f64a7291933d56d4c5818f4a0e00.zip
emacs-packages: Add overriding capability to emacsPackagesNg
This allows overriding the individual package sets composing
emacsPackagesNg.

Example:
```
myEmacsPackages = emacsPackagesNg.override {
  melpaPackages = {};
};
```
Diffstat (limited to 'pkgs/top-level/emacs-packages.nix')
-rw-r--r--pkgs/top-level/emacs-packages.nix47
1 files changed, 22 insertions, 25 deletions
diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix
index 5732e47bf9c..f8484793299 100644
--- a/pkgs/top-level/emacs-packages.nix
+++ b/pkgs/top-level/emacs-packages.nix
@@ -46,7 +46,7 @@ with lib.licenses;
 
 let
 
-  elpaPackages = import ../applications/editors/emacs-modes/elpa-packages.nix {
+  mkElpaPackages = import ../applications/editors/emacs-modes/elpa-packages.nix {
     inherit lib stdenv texinfo;
   };
 
@@ -54,28 +54,16 @@ let
   melpaGeneric = import ../applications/editors/emacs-modes/melpa-packages.nix {
     inherit external lib pkgs;
   };
+  mkMelpaStablePackages = melpaGeneric "stable";
+  mkMelpaPackages = melpaGeneric "unstable";
 
-  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 { };
+  mkOrgPackages = import ../applications/editors/emacs-modes/org-packages.nix { };
 
   emacsWithPackages = import ../build-support/emacs/wrapper.nix {
     inherit lib lndir makeWrapper stdenv runCommand;
   };
 
-  packagesFun = self: with self; {
-
-    inherit emacs melpaBuild trivialBuild;
-
-    emacsWithPackages = emacsWithPackages self;
-
-    ## START HERE
+  mkManualPackages = self: with self; {
 
     elisp-ffi = melpaBuild rec {
       pname = "elisp-ffi";
@@ -221,11 +209,20 @@ let
 
   };
 
-in lib.makeScope newScope (self:
-  removeAttrs ({}
-  // elpaPackages self
-  // melpaStablePackages self
-  // melpaPackages self
-  // orgPackages self
-  // packagesFun self) [ "override" "overrideDerivation" ]
-)
+in lib.makeScope newScope (self: lib.makeOverridable ({
+  elpaPackages ? mkElpaPackages self
+  , melpaStablePackages ? mkMelpaStablePackages self
+  , melpaPackages ? mkMelpaPackages self
+  , orgPackages ? mkOrgPackages self
+  , manualPackages ? mkManualPackages self
+}: ({}
+  // elpaPackages // { inherit elpaPackages; }
+  // melpaStablePackages // { inherit melpaStablePackages; }
+  // melpaPackages // { inherit melpaPackages; }
+  // orgPackages // { inherit orgPackages; }
+  // manualPackages
+  // {
+    inherit emacs melpaBuild trivialBuild;
+    emacsWithPackages = emacsWithPackages self;
+  })
+) {})