From 3d3d95b13b71d0eab3dbf97381601a990d639310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Vask=C3=B3?= Date: Sun, 1 Nov 2020 09:49:50 +0100 Subject: [PATCH] hmModule: `emacsPackagesOverlay` option --- modules/home-manager.nix | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/home-manager.nix b/modules/home-manager.nix index e546e4b..3f70ca3 100644 --- a/modules/home-manager.nix +++ b/modules/home-manager.nix @@ -3,6 +3,12 @@ let cfg = config.programs.doom-emacs; inherit (lib) literalExample mkEnableOption mkIf mkOption types; + overlayType = lib.mkOptionType { + name = "overlay"; + description = "Emacs packages overlay"; + check = lib.isFunction; + merge = lib.mergeOneOption; + }; in { options.programs.doom-emacs = { @@ -51,6 +57,24 @@ in default = pkgs.emacs; example = literalExample "pkgs.emacs"; }; + emacsPackagesOverlay = mkOption { + description = '' + Overlay to customize emacs (elisp) dependencies. + + As inputs are gathered dynamically, this is the only way to hook into + package customization. + ''; + type = with types; overlayType; + default = self: super: { }; + defaultText = "self: super { }"; + example = literalExample '' + self: super: { + magit-delta = super.magit-delta.overrideAttrs (esuper: { + buildInputs = esuper.buildInputs ++ [ pkgs.git ]; + }); + }; + ''; + }; package = mkOption { internal = true; }; @@ -61,7 +85,7 @@ in emacs = pkgs.callPackage self { extraPackages = (epkgs: cfg.extraPackages); emacsPackages = pkgs.emacsPackagesFor cfg.emacsPackage; - inherit (cfg) doomPrivateDir extraConfig; + inherit (cfg) doomPrivateDir extraConfig emacsPackagesOverlay; dependencyOverrides = inputs; }; in