Use emacs-overlay directly, not as overlay
Slight hack to avoid instantiating an additional nixpkgs unnecessarily.
This commit is contained in:
parent
0dd5a3d425
commit
c8b82d46ba
2 changed files with 18 additions and 9 deletions
21
flake.nix
21
flake.nix
|
|
@ -30,6 +30,13 @@
|
|||
outputs = { doomemacs, nixpkgs, emacs-overlay, ... }: let
|
||||
systems = [ "x86_64-linux" ];
|
||||
perSystemPackages = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
|
||||
# Hack to avoid pkgs.extend having to instantiate an additional nixpkgs.
|
||||
#
|
||||
# We need emacsPackagesFor from the overlay, but neither the overlay itself
|
||||
# (it only uses "super", not "self") nor us actually needs anything overlaid
|
||||
# on nixpkgs. So we can call the overlay and pass emacsPackagesFor through
|
||||
# directly instead of having pkgs.callPackage do it.
|
||||
emacsPackagesForFromOverlay = pkgs: (emacs-overlay.overlays.package {} pkgs).emacsPackagesFor;
|
||||
in {
|
||||
packages = perSystemPackages (pkgs:
|
||||
let
|
||||
|
|
@ -38,25 +45,25 @@
|
|||
# TODO: drop after NixOS 24.05 release.
|
||||
emacs = pkgs.emacs29;
|
||||
doomLocalDir = "~/.local/share/nix-doom-unstraightened";
|
||||
emacsPackagesFor = emacsPackagesForFromOverlay pkgs;
|
||||
};
|
||||
pkgsWithEmacsOverlay = pkgs.extend emacs-overlay.overlays.package;
|
||||
in {
|
||||
# Current Doom + NixOS 23.11 requires emacs-overlay: Doom pins
|
||||
# emacs-fish-completion, which moved from gitlab to github recently
|
||||
# enough stable nixpkgs pulls it from the wrong source.
|
||||
doom-minimal = (pkgsWithEmacsOverlay.callPackages ./doom.nix (common // { doomDir = ./doomdirs/minimal; })).doomEmacs;
|
||||
doom-full = (pkgsWithEmacsOverlay.callPackages ./doom.nix (common // { full = true; doomDir = ./doomdirs/minimal; })).doomEmacs;
|
||||
doom-example = (pkgsWithEmacsOverlay.callPackages ./doom.nix (common // { doomDir = ./doomdirs/example; })).doomEmacs;
|
||||
doom-example-without-loader = (pkgsWithEmacsOverlay.callPackages ./doom.nix (common // {
|
||||
doom-minimal = (pkgs.callPackages ./doom.nix (common // { doomDir = ./doomdirs/minimal; })).doomEmacs;
|
||||
doom-full = (pkgs.callPackages ./doom.nix (common // { full = true; doomDir = ./doomdirs/minimal; })).doomEmacs;
|
||||
doom-example = (pkgs.callPackages ./doom.nix (common // { doomDir = ./doomdirs/example; })).doomEmacs;
|
||||
doom-example-without-loader = (pkgs.callPackages ./doom.nix (common // {
|
||||
doomDir = ./doomdirs/example;
|
||||
profileName = "";
|
||||
})).doomEmacs;
|
||||
});
|
||||
overlays.default = final: prev:
|
||||
let
|
||||
pkgs = final.extend emacs-overlay.overlays.package;
|
||||
callPackages = args: (pkgs.callPackages ./doom.nix ({
|
||||
callPackages = args: (final.callPackages ./doom.nix ({
|
||||
doomSource = doomemacs;
|
||||
emacsPackagesFor = emacsPackagesForFromOverlay final;
|
||||
} // args));
|
||||
in {
|
||||
doomEmacs = args: (callPackages args).doomEmacs;
|
||||
|
|
|
|||
|
|
@ -99,8 +99,10 @@ in {
|
|||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
(let
|
||||
doomPackages = (pkgs.extend emacsOverlay).callPackages ./doom.nix {
|
||||
inherit doomSource;
|
||||
# Hack to avoid pkgs.extend (see flake.nix).
|
||||
emacsPackagesFor = (emacsOverlay {} pkgs).emacsPackagesFor;
|
||||
doomPackages = pkgs.callPackages ./doom.nix {
|
||||
inherit doomSource emacsPackagesFor;
|
||||
inherit (cfg) emacs doomDir doomLocalDir profileName noProfileHack;
|
||||
};
|
||||
in
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue