diff options
author | talyz <kim.lindberger@gmail.com> | 2020-07-18 21:08:54 +0200 |
---|---|---|
committer | talyz <kim.lindberger@gmail.com> | 2020-07-18 21:17:38 +0200 |
commit | e43d9dbe421b2fbcf8122ead213974300457a126 (patch) | |
tree | 0bd75aecd49b524814506ac14496a74ff8e47c60 /elisp.nix | |
parent | a0260daa88fab08c9fe639df26a1570f14fa8825 (diff) | |
download | nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.tar nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.tar.gz nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.tar.bz2 nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.tar.lz nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.tar.xz nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.tar.zst nixlib-e43d9dbe421b2fbcf8122ead213974300457a126.zip |
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.
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) |