I haven't applied clean architecture with Clojure, but I'm working on a Python codebase that uses dependency injection intensively. It works, but I personally feel the pain every time I create a mock.
Although the clean architecture book mentioned vertical-slice architecture and added a new chapter about packaging by technical layers versus by features, clean practitioners seem to prefer packaging by layers, which should be approached with caution. I don't remember if the book mentions pushing I/O to the edges, or the imperative shell pattern, which would allow pure functions to cover more logic instead of having a service layer that interleaves I/O and logic.