From 97a069609f16f64a7291933d56d4c5818f4a0e00 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sun, 4 Aug 2019 21:44:07 +0100 Subject: emacs-packages: Add overriding capability to emacsPackagesNg This allows overriding the individual package sets composing emacsPackagesNg. Example: ``` myEmacsPackages = emacsPackagesNg.override { melpaPackages = {}; }; ``` --- .../editors/emacs-modes/elpa-packages.nix | 2 +- .../editors/emacs-modes/org-packages.nix | 2 +- pkgs/top-level/emacs-packages.nix | 47 ++++++++++------------ 3 files changed, 24 insertions(+), 27 deletions(-) (limited to 'pkgs') diff --git a/pkgs/applications/editors/emacs-modes/elpa-packages.nix b/pkgs/applications/editors/emacs-modes/elpa-packages.nix index 9c08e91af41e0..e7ed5a32b652e 100644 --- a/pkgs/applications/editors/emacs-modes/elpa-packages.nix +++ b/pkgs/applications/editors/emacs-modes/elpa-packages.nix @@ -50,4 +50,4 @@ self: elpaPackages = super // overrides; - in elpaPackages // { inherit elpaBuild elpaPackages; } + in elpaPackages // { inherit elpaBuild; } diff --git a/pkgs/applications/editors/emacs-modes/org-packages.nix b/pkgs/applications/editors/emacs-modes/org-packages.nix index 46b90a52a0913..d3ad7fa4093c0 100644 --- a/pkgs/applications/editors/emacs-modes/org-packages.nix +++ b/pkgs/applications/editors/emacs-modes/org-packages.nix @@ -28,4 +28,4 @@ self: orgPackages = super // overrides; - in orgPackages // { inherit orgPackages; } + in orgPackages diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 5732e47bf9c21..f8484793299b4 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; + }) +) {}) -- cgit 1.4.1