From e43d9dbe421b2fbcf8122ead213974300457a126 Mon Sep 17 00:00:00 2001 From: talyz Date: Sat, 18 Jul 2020 21:08:54 +0200 Subject: Add option use-package-always-ensure behavior When `use-package-always-ensure` is set to `t`, `:ensure` defaults to `t`. This adds the `alwaysEnsure` argument to `emacsWithPackagesFromUsePackage` which, if set to true, emulates this behavior. --- elisp.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'elisp.nix') 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) -- cgit 1.4.1