about summary refs log tree commit diff
path: root/elisp.nix
diff options
context:
space:
mode:
authortalyz <kim.lindberger@gmail.com>2020-07-18 21:08:54 +0200
committertalyz <kim.lindberger@gmail.com>2020-07-18 21:17:38 +0200
commite43d9dbe421b2fbcf8122ead213974300457a126 (patch)
tree0bd75aecd49b524814506ac14496a74ff8e47c60 /elisp.nix
parenta0260daa88fab08c9fe639df26a1570f14fa8825 (diff)
downloadnixlib-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.nix10
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)