Hi All…is there a way to direct bb on where to install the clojure-tools? I get this message during a docker build
Clojure tools not yet in expected location: /root/.deps.clj/1.12.0.1488/ClojureTools/clojure-tools-1.12.0.1488.jar
and then again during CI run
Clojure tools not yet in expected location: /github/home/.deps.clj/1.12.0.1488/ClojureTools/clojure-tools-1.12.0.1488.jar
and ideally I could optimize this to some path accessible to both. I do have a bb.edn if that helps.Yes, you can configure this. See: https://github.com/borkdude/deps.clj?tab=readme-ov-file#environment-variables
Thank you…i was looking in the book…i didnt check the README
This is the deps.clj readme. deps.clj is the project that is integrated in bb that deals with dependencies
Ah, ok…well I feel even better for missing it 😉
of course, happy to help to you
I try to RTFM before asking, so ty for helping me
Mise + Babaska = 🚀
I've been using https://asdf-vm.com/ to great effect, and I would recommend it too. Has anyone used both mise and asdf that would be willing to comment on the differences?
I used asdf for about two years, and mise for about one year. I'd say mise is a pure upgrade over asdf: 1. I don't miss any of the nice parts of asfd 2. I find mise's subcommand structure less confusing than asdf 3. Mise feels faster
@teodorlu Thanks for the comparison! I’ll have to try out mise. As for performance, asdf was rewritten in Go, so I think it’s much faster than when it was in bash.
Ah — my experience was from when it was still in bash — so maybe I wouldn't feel the need to change if I tried it again today.
> I haven't found a nice way of pip installing the right packages yet though
bb pip-install could possibly be a babashka task required by bb dev?
That's a good idea 😄
Re. pip installing the right pip packages, direnv lets you stack dependency tooling. My .envrc for one python project looks like this...
use flake . --impure
layout pipenv
So you could replace that first line with the mise equivalent? Though I see from the mise docs that they prefer you don't use direnv....
... for a different (clojurescript) project I'm using a flake shell hook to run 'yarn install --dev' when I navigate to that directory. That would work either? See this section in mise docs that looks like it should do it for you... https://mise.jdx.dev/hooks.htmlOoo postinstall sounds about right
Since it replaces direnv,.maybe they clash
Maybe I've been living under a rock but what is Mise? I did a google search but got a lots of hits for different things and could not decide which one it might be.
Mise is a "dev tool manager". It bundles some niceties like managing environment variables, system dependencies and tasks. https://mise.jdx.dev/dev-tools/
To manage the version of bb ?
Yep
And JVM, Python, Node, etc
I'm using nix flakes and direnv for this. I love it, until I have to edit a flake and am reminded how poorly I understand the cryptic syntax... Wish guix had a bit more traction, but nix has the mindshare and nixpkgs
Personally, I wish we'd have a "Rustup for Clojure" — for installing Java, clj, bb, kondo, clojure-lsp, bbin. "Installing all the things" has been a source of friction when introducing Clojure to new people.
Perhaps Mise is the pragmatic choice! Though then I have to keep track of tool versions.
> Though then I have to keep track of tool versions.
mise supports "latest" as version, too. for the yolo crowd ;)
right, I could technically check in a .mise.toml with latest references!
For Clojure tools, my general impression is that due to backwards compatibility, I don't need to bother as much with exact versions. I've had the tools I mentioned above installed as latest with brew for years, and not felt the need to do otherwise.
@post972 — which tools do you put in your .mise.toml?
I guess that's what I was asking. Normally for BB being on the latest has always worked haha. So I just use brew
But it's an interesting idea, mise is doing what direnv does but for binary versions, it's a cool concept.
It's probably more a win for other stacks than clojure (we have a few with vendor-specific embedded C toolchains and supporting ruby test tooling), but being able to checkout a project, type direnv allow and have everything you need setup, or pulling a project repo and having updated dev tooling installed without polluting your global environment is magic. The good kind 🙂
Also in a heavily regulated industry (we're medical devices) having those details controlled at repo level gives you the added bonus of streamlining some of the regulatory accountancy (you're obliged to control and document the versions of all tools used to generate and test released binaries -- fun, fun, fun)
Oh, it also replaces direnv and has a make like task runner?
@teodorlu My tools section in current project looks like this
[tools]
java = "24"
python = "3.13.2"
node = "22"
babashka = "latest"I also have all my environment variables in Mise as well as _.python.venv = { path = "venv", create = true } , which handles creation and activation of Python virtual environments.
In my ~/.zshrc I have eval "$(mise activate zsh)" which makes it so that Mise automatically sets up my PATH and installs dependencies whenever I cd into a Mise project. All I need to do is cd project; bb dev and I'm up and running 😁. Alternatively cd project; mise bb dev works the same, for those who like to keep their shell pristine.
I haven't found a nice way of pip installing the right packages yet though, so the green path for onboarding (with no preinstalled Java, Python, Node, Clojure or Babashka) looks like:
1. Set up mise.local.toml with personal config
2. pip install -r requirements.txt
3. bb dev