I'm trying to make my Emacs configuration more reproducible, in part by creating variables with paths to packages, directories which depend on what machine I'm on:
(if my/laptop-p
(progn
...
(defvar my/mu4e-dir "/usr/share/emacs/site-lisp/mu4e"
"Location of local `mu4e' files installed by system package manager")
...
))
Here, my/laptop-p
tests if (equal (system-name) "my-thinkpad")
.
This system works well, so that for the relevant example of mu4e
(which is apparently quite tricky to set up in straight.el ) I can use:
(use-package mu4e
:straight
(:local-repo my/mu4e-dir
:type built-in)
...
)
The package loads and the configuration works fine.
But doing straight-freeze-versions
gives:
straight--dir: Wrong type argument: stringp, my/mu4e-dir
This can be fixed by replacing my/mu4e-dir
with the string "/usr/share/emacs/site-lisp/mu4e"
, but I'd like to avoid this if I can.
Is there a way I can keep using my defined variable my/mu4e-dir
instead of the full path name?
https://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html
As a side note, it would be better to set your variable like so:
The way you're doing it in your example seems inverted.