diff --git a/build-helpers/print-deps.el b/build-helpers/print-deps.el new file mode 100644 index 0000000..63957a8 --- /dev/null +++ b/build-helpers/print-deps.el @@ -0,0 +1,14 @@ +(require 'package) + +(with-temp-buffer + (setq default-directory (car command-line-args-left)) + (dired-mode) + ;; Ignore dependency extraction errors because it fails for repos not + ;; containing a "proper" package (no -pkg.el, no file with the right magic + ;; header). These seem common enough to be not worth allowlisting. + (let ((reqs (with-demoted-errors "Extracting dependencies: %s" + (package-desc-reqs (package-dir-info))))) + (princ + (json-encode + (mapcar #'car (seq-remove (lambda (p) (apply #'package-built-in-p p)) + reqs)))))) diff --git a/doom.nix b/doom.nix index 2efc842..0234a3b 100644 --- a/doom.nix +++ b/doom.nix @@ -202,19 +202,9 @@ let } // optionalAttrs (p ? recipe.branch) { ref = p.recipe.branch; } // optionalAttrs (p ? recipe.depth) { shallow = p.recipe.depth == 1; } ); - # Ignore dependency extraction errors because it fails for repos not - # containing a "proper" package (no -pkg.el, no file with the right magic - # header). These seem common enough to be not worth allowlisting. reqfile = runCommand "${name}-deps" { } '' - ${lib.getExe emacs} -Q --batch --eval \ - "(progn - (require 'package) - (with-temp-buffer - (setq default-directory \"${src}\") - (dired-mode) - (let ((reqs (with-demoted-errors \"Extracting dependencies: %s\" (package-desc-reqs (package-dir-info))))) - (princ (json-encode (mapcar #'car (seq-remove (lambda (p) (apply #'package-built-in-p p)) reqs)))))))" \ - > $out + ${lib.getExe emacs} -Q --batch --script \ + ${./build-helpers/print-deps.el} ${src} > $out ''; reqjson = lib.importJSON reqfile; # json-encode encodes the empty list as null (nil), not [].