straight-freeze-version gives `straight--dir: Wrong type argument:`

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?

1 points · 1 comments · view on lemmy.world

1 Comments

nv-elisp@alien.top · 1 pts · 2y

Is there a way I can keep using my defined variable

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:

(defvar my/mu4e-dir
  (cond ((my/laptop-p) "path/to/it")
      ;;etc

The way you're doing it in your example seems inverted.