What is the most idiomatic way to have babashka download clojure tools?
as a preparation step?
this has been asked recently, let me check
Context: I'm facing a weird issue where I'm assembling a docker image containing an app written in babashka, and in CI, running tests inside the container fail with
[2025-11-17T16:03:22.160Z] + bb run-tests
[2025-11-17T16:03:22.160Z] Clojure tools not yet in expected location: /.deps.clj/1.12.3.1577/ClojureTools/clojure-tools-1.12.3.1577.jar
[2025-11-17T16:03:22.160Z] Exception in thread "main" java.io.FileNotFoundException: /.deps.clj/1.12.3.1577/ClojureTools/TRANSACTION_START (No such file or directory)
[2025-11-17T16:03:22.160Z] at java.base@25/java.io.FileOutputStream.open0(Native Method)
[2025-11-17T16:03:22.160Z] at java.base@25/java.io.FileOutputStream.open(FileOutputStream.java:255)
[2025-11-17T16:03:22.160Z] at java.base@25/java.io.FileOutputStream.(FileOutputStream.java:210)
[2025-11-17T16:03:22.160Z] at clojure.java.io$fn__11661.invokeStatic(io.clj:233)
[2025-11-17T16:03:22.160Z] at clojure.java.io$fn__11661.invoke(io.clj:233)
[2025-11-17T16:03:22.160Z] at clojure.java.io$fn__11585$G__11567__11592.invoke(io.clj:72)
[2025-11-17T16:03:22.160Z] at clojure.java.io$fn__11635.invokeStatic(io.clj:169)
[2025-11-17T16:03:22.160Z] at clojure.java.io$fn__11635.invoke(io.clj:169)
[2025-11-17T16:03:22.160Z] at clojure.java.io$fn__11598$G__11563__11605.invoke(io.clj:72)
[2025-11-17T16:03:22.160Z] at clojure.java.io$writer.invokeStatic(io.clj:122)
[2025-11-17T16:03:22.160Z] at clojure.java.io$writer.doInvoke(io.clj:107)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.invoke(RestFn.java:413)
[2025-11-17T16:03:22.160Z] at clojure.lang.AFn.applyToHelper(AFn.java:154)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.applyTo(RestFn.java:135)
[2025-11-17T16:03:22.160Z] at clojure.core$apply.invokeStatic(core.clj:669)
[2025-11-17T16:03:22.160Z] at clojure.core$spit.invokeStatic(core.clj:7101)
[2025-11-17T16:03:22.160Z] at clojure.core$spit.doInvoke(core.clj:7101)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.invoke(RestFn.java:428)
[2025-11-17T16:03:22.160Z] at borkdude.deps$clojure_tools_install_BANG_.invokeStatic(deps.clj:573)
[2025-11-17T16:03:22.160Z] at borkdude.deps$_main$fn__14312.invoke(deps.clj:954)
[2025-11-17T16:03:22.160Z] at borkdude.deps$_main.invokeStatic(deps.clj:954)
[2025-11-17T16:03:22.160Z] at borkdude.deps$_main.doInvoke(deps.clj:912)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.applyTo(RestFn.java:140)
[2025-11-17T16:03:22.160Z] at clojure.core$apply.invokeStatic(core.clj:667)
[2025-11-17T16:03:22.160Z] at babashka.impl.deps$add_deps$fn__28947$fn__28948.invoke(deps.clj:113)
[2025-11-17T16:03:22.160Z] at clojure.lang.AFn.applyToHelper(AFn.java:152)
[2025-11-17T16:03:22.160Z] at clojure.lang.AFn.applyTo(AFn.java:144)
[2025-11-17T16:03:22.160Z] at clojure.core$apply.invokeStatic(core.clj:667)
[2025-11-17T16:03:22.160Z] at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1990)
[2025-11-17T16:03:22.160Z] at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1990)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.invoke(RestFn.java:428)
[2025-11-17T16:03:22.160Z] at babashka.impl.deps$add_deps$fn__28947.invoke(deps.clj:113)
[2025-11-17T16:03:22.160Z] at babashka.impl.deps$add_deps.invokeStatic(deps.clj:113)
[2025-11-17T16:03:22.160Z] at babashka.main$exec$fn__34478.invoke(main.clj:913)
[2025-11-17T16:03:22.160Z] at clojure.lang.AFn.applyToHelper(AFn.java:152)
[2025-11-17T16:03:22.160Z] at clojure.lang.AFn.applyTo(AFn.java:144)
[2025-11-17T16:03:22.160Z] at clojure.core$apply.invokeStatic(core.clj:667)
[2025-11-17T16:03:22.160Z] at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1990)
[2025-11-17T16:03:22.160Z] at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1990)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.invoke(RestFn.java:428)
[2025-11-17T16:03:22.160Z] at babashka.main$exec.invokeStatic(main.clj:864)
[2025-11-17T16:03:22.160Z] at babashka.main$main.invokeStatic(main.clj:1263)
[2025-11-17T16:03:22.160Z] at babashka.main$main.doInvoke(main.clj:1206)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.applyTo(RestFn.java:140)
[2025-11-17T16:03:22.160Z] at clojure.core$apply.invokeStatic(core.clj:667)
[2025-11-17T16:03:22.160Z] at babashka.main$_main.invokeStatic(main.clj:1275)
[2025-11-17T16:03:22.160Z] at babashka.main$_main.doInvoke(main.clj:1267)
[2025-11-17T16:03:22.160Z] at clojure.lang.RestFn.applyTo(RestFn.java:140)
[2025-11-17T16:03:22.160Z] at babashka.main.main(Unknown Source)
[2025-11-17T16:03:22.160Z] at java.base@25/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
script returned exit code 1 check out this thread: https://clojurians.slack.com/archives/CLX41ASCS/p1759329108318409?thread_ts=1759328038.183459&cid=CLX41ASCS
Thank you