diff --git a/doc/builders/packages/emacs.section.md b/doc/builders/packages/emacs.section.md index e9b89d086d6..b4723a22bb1 100644 --- a/doc/builders/packages/emacs.section.md +++ b/doc/builders/packages/emacs.section.md @@ -2,12 +2,12 @@ ## Configuring Emacs {#sec-emacs-config} -The Emacs package comes with some extra helpers to make it easier to configure. `emacsWithPackages` allows you to manage packages from ELPA. This means that you will not have to install that packages from within Emacs. For instance, if you wanted to use `company` `counsel`, `flycheck`, `ivy`, `magit`, `projectile`, and `use-package` you could use this as a `~/.config/nixpkgs/config.nix` override: +The Emacs package comes with some extra helpers to make it easier to configure. `emacs.pkgs.withPackages` allows you to manage packages from ELPA. This means that you will not have to install that packages from within Emacs. For instance, if you wanted to use `company` `counsel`, `flycheck`, `ivy`, `magit`, `projectile`, and `use-package` you could use this as a `~/.config/nixpkgs/config.nix` override: ```nix { packageOverrides = pkgs: with pkgs; { - myEmacs = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ + myEmacs = emacs.pkgs.withPackages (epkgs: (with epkgs.melpaStablePackages; [ company counsel flycheck @@ -84,7 +84,7 @@ You can install it like any other packages via `nix-env -iA myEmacs`. However, t (projectile-global-mode)) ''; - myEmacs = emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ + myEmacs = emacs.pkgs.withPackages (epkgs: (with epkgs.melpaStablePackages; [ (runCommand "default.el" {} '' mkdir -p $out/share/emacs/site-lisp cp ${myEmacsConfig} $out/share/emacs/site-lisp/default.el @@ -103,14 +103,14 @@ You can install it like any other packages via `nix-env -iA myEmacs`. However, t This provides a fairly full Emacs start file. It will load in addition to the user's presonal config. You can always disable it by passing `-q` to the Emacs command. -Sometimes `emacsWithPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to Melpa Unstable, and the highest for packages manually defined in `pkgs/top-level/emacs-packages.nix`). But you can't control this priorities when some package is installed as a dependency. You can override it on per-package-basis, providing all the required dependencies manually - but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package you can use `overrideScope'`. +Sometimes `emacs.pkgs.withPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to Melpa Unstable, and the highest for packages manually defined in `pkgs/top-level/emacs-packages.nix`). But you can't control this priorities when some package is installed as a dependency. You can override it on per-package-basis, providing all the required dependencies manually - but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package you can use `overrideScope'`. ```nix overrides = self: super: rec { haskell-mode = self.melpaPackages.haskell-mode; ... }; -((emacsPackagesGen emacs).overrideScope' overrides).emacsWithPackages +((emacsPackagesFor emacs).overrideScope' overrides).emacs.pkgs.withPackages (p: with p; [ # here both these package will use haskell-mode of our own choice ghc-mod diff --git a/nixos/modules/services/editors/emacs.xml b/nixos/modules/services/editors/emacs.xml index 302aa1ed7c4..fd99ee9442c 100644 --- a/nixos/modules/services/editors/emacs.xml +++ b/nixos/modules/services/editors/emacs.xml @@ -156,7 +156,7 @@ $ ./result/bin/emacs let myEmacs = pkgs.emacs; - emacsWithPackages = (pkgs.emacsPackagesGen myEmacs).emacsWithPackages; + emacsWithPackages = (pkgs.emacsPackagesFor myEmacs).emacsWithPackages; in emacsWithPackages (epkgs: (with epkgs.melpaStablePackages; [ magit # ; Integrate git <C-x g> @@ -254,10 +254,10 @@ in Querying Emacs packages " -qaP -A emacsPackages.elpaPackages -nix-env -f "" -qaP -A emacsPackages.melpaPackages -nix-env -f "" -qaP -A emacsPackages.melpaStablePackages -nix-env -f "" -qaP -A emacsPackages.orgPackages +nix-env -f "" -qaP -A emacs.pkgs.elpaPackages +nix-env -f "" -qaP -A emacs.pkgs.melpaPackages +nix-env -f "" -qaP -A emacs.pkgs.melpaStablePackages +nix-env -f "" -qaP -A emacs.pkgs.orgPackages ]]> diff --git a/nixos/modules/services/x11/window-managers/exwm.nix b/nixos/modules/services/x11/window-managers/exwm.nix index 88e13f4dbfb..3e97d28d83b 100644 --- a/nixos/modules/services/x11/window-managers/exwm.nix +++ b/nixos/modules/services/x11/window-managers/exwm.nix @@ -48,7 +48,7 @@ in description = '' Extra packages available to Emacs. The value must be a function which receives the attrset defined in - emacsPackages as the sole argument. + emacs.pkgs as the sole argument. ''; }; }; diff --git a/pkgs/applications/editors/emacs-modes/elpa-packages.nix b/pkgs/applications/editors/emacs-modes/elpa-packages.nix index 57f5d7b8594..8b9ad33fce7 100644 --- a/pkgs/applications/editors/emacs-modes/elpa-packages.nix +++ b/pkgs/applications/editors/emacs-modes/elpa-packages.nix @@ -5,7 +5,7 @@ To update the list of packages from MELPA, 1. Run `./update-elpa`. -2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacsPackagesNg.elpaPackages`. +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 diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix index a47688eca7e..93e215753c7 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix @@ -6,8 +6,8 @@ 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 emacsPackages.melpaStablePackages -env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaPackages +env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacs.pkgs..melpaStablePackages +env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacs.pkgs..melpaPackages 3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json` ## Update from overlay diff --git a/pkgs/applications/editors/emacs-modes/org-packages.nix b/pkgs/applications/editors/emacs-modes/org-packages.nix index 1f37cf624f9..b60af0e9334 100644 --- a/pkgs/applications/editors/emacs-modes/org-packages.nix +++ b/pkgs/applications/editors/emacs-modes/org-packages.nix @@ -5,7 +5,7 @@ To update the list of packages from Org (ELPA), 1. Run `./update-org`. -2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacsPackagesNg.orgPackages`. +2. Check for evaluation errors: `nix-instantiate ../../../.. -A emacs.pkgs.orgPackages`. 3. `git commit -m "org-packages $(date -Idate)" -- org-generated.nix` */ diff --git a/pkgs/applications/editors/emacs-modes/update-from-overlay b/pkgs/applications/editors/emacs-modes/update-from-overlay index d65e93e3e4d..886019716d4 100755 --- a/pkgs/applications/editors/emacs-modes/update-from-overlay +++ b/pkgs/applications/editors/emacs-modes/update-from-overlay @@ -8,14 +8,14 @@ export NIXPKGS_ALLOW_BROKEN=1 # You can use this to avoid running lengthy code generation jobs locally curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/elpa/elpa-generated.nix -nix-instantiate ../../../.. -A emacsPackagesNg.elpaPackages --show-trace -git diff --exit-code elpa-generated.nix > /dev/null || git commit -m "emacsPackages.elpa-packages: $(date --iso)" -- elpa-generated.nix +nix-instantiate ../../../.. -A emacs.pkgs.elpaPackages --show-trace +git diff --exit-code elpa-generated.nix > /dev/null || git commit -m "emacs.pkgs.elpa-packages: $(date --iso)" -- elpa-generated.nix curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/org/org-generated.nix -nix-instantiate ../../../.. -A emacsPackagesNg.orgPackages --show-trace -git diff --exit-code org-generated.nix > /dev/null || git commit -m "emacsPackages.org-packages: $(date --iso)" -- org-generated.nix +nix-instantiate ../../../.. -A emacs.pkgs.orgPackages --show-trace +git diff --exit-code org-generated.nix > /dev/null || git commit -m "emacs.pkgs.org-packages: $(date --iso)" -- org-generated.nix curl -s -O https://raw.githubusercontent.com/nix-community/emacs-overlay/master/repos/melpa/recipes-archive-melpa.json -env nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaStablePackages -env nix-instantiate --show-trace ../../../../ -A emacsPackages.melpaPackages -git diff --exit-code recipes-archive-melpa.json > /dev/null || git commit -m "emacsPackages.melpa-packages: $(date --iso)" -- recipes-archive-melpa.json +nix-instantiate --show-trace ../../../../ -A emacs.pkgs.melpaStablePackages +nix-instantiate --show-trace ../../../../ -A emacs.pkgs.melpaPackages +git diff --exit-code recipes-archive-melpa.json > /dev/null || git commit -m "emacs.pkgs.melpa-packages: $(date --iso)" -- recipes-archive-melpa.json diff --git a/pkgs/applications/editors/emacs-modes/updater-emacs.nix b/pkgs/applications/editors/emacs-modes/updater-emacs.nix index b5de993eaa7..bd965c8f128 100644 --- a/pkgs/applications/editors/emacs-modes/updater-emacs.nix +++ b/pkgs/applications/editors/emacs-modes/updater-emacs.nix @@ -1,7 +1,7 @@ let pkgs = import ../../../.. {}; - emacsEnv = (pkgs.emacsPackagesFor pkgs.emacs).emacsWithPackages (epkgs: let + emacsEnv = pkgs.emacs.withPackages (epkgs: let promise = epkgs.trivialBuild { pname = "promise"; diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix index ddd15065663..f34835eaf09 100644 --- a/pkgs/build-support/emacs/wrapper.nix +++ b/pkgs/build-support/emacs/wrapper.nix @@ -2,11 +2,11 @@ # Usage -`emacsWithPackages` takes a single argument: a function from a package +`emacs.pkgs.withPackages` takes a single argument: a function from a package set to a list of packages (the packages that will be available in Emacs). For example, ``` -emacsWithPackages (epkgs: [ epkgs.evil epkgs.magit ]) +emacs.pkgs.withPackages (epkgs: [ epkgs.evil epkgs.magit ]) ``` All the packages in the list should come from the provided package set. It is possible to add any package to the list, but the provided @@ -15,19 +15,19 @@ the correct version of Emacs. # Overriding -`emacsWithPackages` inherits the package set which contains it, so the +`emacs.pkgs.withPackages` inherits the package set which contains it, so the correct way to override the provided package set is to override the -set which contains `emacsWithPackages`. For example, to override -`emacsPackages.emacsWithPackages`, +set which contains `emacs.pkgs.withPackages`. For example, to override +`emacs.pkgs.emacs.pkgs.withPackages`, ``` let customEmacsPackages = - emacsPackages.overrideScope' (self: super: { + emacs.pkgs.overrideScope' (self: super: { # use a custom version of emacs emacs = ...; # use the unstable MELPA version of magit magit = self.melpaPackages.magit; }); -in customEmacsPackages.emacsWithPackages (epkgs: [ epkgs.evil epkgs.magit ]) +in customEmacsPackages.emacs.pkgs.withPackages (epkgs: [ epkgs.evil epkgs.magit ]) ``` */ diff --git a/pkgs/development/tools/cask/default.nix b/pkgs/development/tools/cask/default.nix index 925d10b23b4..ab7a7c0fdff 100644 --- a/pkgs/development/tools/cask/default.nix +++ b/pkgs/development/tools/cask/default.nix @@ -1,14 +1,14 @@ -{ stdenv, fetchurl, python, emacsPackages }: +{ stdenv, fetchurl, python, emacs }: stdenv.mkDerivation rec { pname = "cask"; - inherit (emacsPackages.melpaStablePackages.cask) src version; + inherit (emacs.pkgs.melpaStablePackages.cask) src version; doCheck = true; - nativeBuildInputs = [ emacsPackages.emacs ]; - buildInputs = with emacsPackages; [ + nativeBuildInputs = [ emacs ]; + buildInputs = with emacs.pkgs; [ s f dash ansi ecukes servant ert-runner el-mock noflet ert-async shell-split-string git package-build ] ++ [ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7aefe368368..30787fac2c2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -500,7 +500,7 @@ in mkShell = callPackage ../build-support/mkshell { }; - nixBufferBuilders = import ../build-support/emacs/buffer.nix { inherit (pkgs) lib writeText; inherit (emacsPackages) inherit-local; }; + nixBufferBuilders = import ../build-support/emacs/buffer.nix { inherit (pkgs) lib writeText; inherit (emacs.pkgs) inherit-local; }; nix-gitignore = callPackage ../build-support/nix-gitignore { }; @@ -9788,7 +9788,7 @@ in # package. Wishing we could merge it into one irony package, to avoid this issue, # but its emacs-side expression is autogenerated, and we can't hook into it (other # than peek into its version). - inherit (emacsPackages.melpaStablePackages) irony; + inherit (emacs.pkgs.melpaStablePackages) irony; }; hugs = callPackage ../development/interpreters/hugs { }; @@ -21424,9 +21424,7 @@ in elvis = callPackage ../applications/editors/elvis { }; emacs = emacs27; - emacsPackages = emacs27Packages; emacs-nox = emacs27-nox; - emacsWithPackages = emacsPackages.emacsWithPackages; emacs27 = callPackage ../applications/editors/emacs/27.nix { # use override to enable additional features diff --git a/pkgs/top-level/packages-config.nix b/pkgs/top-level/packages-config.nix index 52ad7aecd28..d0a71c43a96 100644 --- a/pkgs/top-level/packages-config.nix +++ b/pkgs/top-level/packages-config.nix @@ -34,8 +34,8 @@ "nvidiaPackages" "sourceHanPackages" "atomPackages" - "emacs26Packages" - "emacs27Packages" + "emacs26.pkgs" + "emacs27.pkgs" "steamPackages" "ut2004Packages" "zeroadPackages"