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?