diff options
Diffstat (limited to 'elisp.nix')
-rw-r--r-- | elisp.nix | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/elisp.nix b/elisp.nix index ec330c6ce4ad..269c40e691ba 100644 --- a/elisp.nix +++ b/elisp.nix @@ -9,19 +9,25 @@ let parse = pkgs.callPackage ./parse.nix {}; in { config, + alwaysEnsure ? false, # emulate `use-package-always-ensure` behavior extraEmacsPackages ? epkgs: [], package ? pkgs.emacs, override ? (epkgs: epkgs) }: let - packages = parse.parsePackagesFromUsePackage config; + packages = parse.parsePackagesFromUsePackage config alwaysEnsure; emacsPackages = pkgs.emacsPackagesGen package; emacsWithPackages = emacsPackages.emacsWithPackages; + mkPackageError = name: + let + errorFun = if alwaysEnsure then builtins.trace else throw; + in + errorFun "Emacs package ${name}, declared wanted with use-package, not found." null; in emacsWithPackages (epkgs: let overridden = override epkgs; - usePkgs = builtins.map (name: overridden.${name}) packages; + usePkgs = map (name: overridden.${name} or (mkPackageError name)) packages; extraPkgs = extraEmacsPackages overridden; in [ overridden.use-package ] ++ usePkgs ++ extraPkgs) |