I was surprised that this code in dev/user.clj doesn't run at start up:
(ns user) ; user ns is loaded by REPL startup
(println "Evaluating dev/user.clj")
(when-not (resolve 'xxx)
  (def xxx 1)
  (println "defing xxx"))
This worked for me:
(defonce yyy (let [tmp 1] (println (str "deffing yyy as " tmp))
                   tmp))
Something like this was also suggested to me in the clojurians 
 [https://clojurians.slack.com/archives/C053AK3F9/p1683882344251029][Slack] :
(ns user)
(when-not (resolve 'xxx)
  (intern 'user 'xxx 42)
  (prn "!!!"))