Nice! We’re currently doing something like this for Leiningen
;; project.clj
(require '[clojure.edn :as edn])
(def +deps+ (-> "deps.edn" slurp edn/read-string))
(defn deps->vec [deps]
(vec (map (fn [[dep {:keys [:mvn/version exclusions]}]]
(cond-> [dep version]
exclusions (conj :exclusions exclusions)))
deps)))
(def dependencies
(deps->vec (:deps +deps+)))
(def dev-dependencies
(deps->vec (get-in +deps+ [:aliases :dev :extra-deps])))
(def source-paths
(vec (:paths +deps+)))
(defproject my-project "1.0.0"
:dependencies ~dependencies
:source-paths ~source-paths
:profiles
{:dev
{:dependencies ~dev-dependencies}})