Feature Request: Centralize external dependencies (for Guix!)

Hey hlissner (and other folks)!

I’m packaging Doom for the Guix package manager. It’s a messy business because currently usages of Doom’s external dependencies (ripgrep, fd, etc) are scattered all over the code, requiring extensive and brittle patching. If they were each defined in one place this would go a lot more smoothly, something like:

(defcustom doom-rg-executable
  (executable-find "rg")
  "Name of the executable to run."
  :type 'string)

Lots of emacs packages do it like this and I imagine you’ll agree it’s good practice anyway.

Note that I am NOT asking you to:

  • do this for emacs package internals or any code other than Doom’s Emacs packages in Guix are all already patched.
  • change any doctor.el files The doctor’s feedback about missing executables is largely meaningless since Emacs package dependencies are patched-in, that’s fine.
  • necessarily do git That would be ideal but it’s seriously everywhere and I understand it might be a pain.

So I’d like to see core the dependencies fd, ripgrep, git centralized as well as any executables in modules (namely zstd in :emacs undo).

What do you think? I’d be willing to do it myself and make a pull request if you’ll accept it, do you have any preferences on how you’d like this done?