From d20c9d7a881e5693f549fb8eecea861fa83e8b32 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Wed, 24 Aug 2022 08:37:44 +0800 Subject: [PATCH 1/2] emacs: Set recurseIntoAttrs on package set In the past the motivation to not recurse into Emacs packages was that it added quite a lot of packages to the evalution and they were so fast to build locally that substituting them from a binary cache didn't make sense. With native compilation this equation has changed drastically, build times are much longer and build closures are larger so the utility of having cached packages has gone way up. Additionally, it looks to me like Emacs is the only ecosystem in nixpkgs to ever care about evaluation performance like this. Every other extensible editor ecosystem has recurseIntoAttrs set to true on their respective package sets. --- pkgs/applications/editors/emacs/generic.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/emacs/generic.nix b/pkgs/applications/editors/emacs/generic.nix index 1f49c3c23af0..4243ad47a243 100644 --- a/pkgs/applications/editors/emacs/generic.nix +++ b/pkgs/applications/editors/emacs/generic.nix @@ -11,7 +11,7 @@ , libtiff, librsvg, libwebp, gconf, libxml2, imagemagick, gnutls, libselinux , alsa-lib, cairo, acl, gpm, AppKit, GSS, ImageIO, m17n_lib, libotf , sigtool, jansson, harfbuzz, sqlite, nixosTests -, dontRecurseIntoAttrs, emacsPackagesFor +, recurseIntoAttrs, emacsPackagesFor , libgccjit, targetPlatform, makeWrapper # native-comp params , fetchFromSavannah , systemd ? null @@ -216,7 +216,7 @@ let emacs = stdenv.mkDerivation (lib.optionalAttrs nativeComp { passthru = { inherit nativeComp; - pkgs = dontRecurseIntoAttrs (emacsPackagesFor emacs); + pkgs = recurseIntoAttrs (emacsPackagesFor emacs); tests = { inherit (nixosTests) emacs-daemon; }; }; From 3071f2debcb61a7211705325b52569e45af94223 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Wed, 24 Aug 2022 08:44:12 +0800 Subject: [PATCH 2/2] emacs: Move emacsPackages alias from aliases.nix to all-packages.nix This alias should live in aliases.nix but that would cause Hydra not to evaluate/build the packages. To be honest I don't particularly like this change, but it seems the most practical way forward to get Hydra to build Emacs packages. --- pkgs/top-level/aliases.nix | 1 - pkgs/top-level/all-packages.nix | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 0358d6d80999..cc7428064931 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -384,7 +384,6 @@ mapAliases ({ emacs28Packages = emacs28.pkgs; # Added 2021-10-04 emacs28WithPackages = emacs28.pkgs.withPackages; # Added 2021-10-04 emacsNativeComp = emacs28NativeComp; # Added 2022-06-08 - emacsPackages = emacs.pkgs; # Added 2020-12-18 emacsPackagesGen = throw "'emacsPackagesGen' has been renamed to/replaced by 'emacsPackagesFor'"; # Converted to throw 2022-02-22 emacsPackagesNg = emacs.pkgs; # Added 2019-08-07 emacsPackagesNgFor = emacsPackagesFor; # Added 2019-08-07 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7e9df668d10d..fb45ce8a1cbd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27007,6 +27007,9 @@ with pkgs; pkgs' = pkgs; # default pkgs used for bootstrapping the emacs package set }; + # This alias should live in aliases.nix but that would cause Hydra not to evaluate/build the packages. + emacsPackages = emacs.pkgs; + inherit (gnome) empathy; enhanced-ctorrent = callPackage ../applications/networking/enhanced-ctorrent { };