Is there any possibility/interest in integrating deps.edn with https://guix.gnu.org/? As a functional package manager, Guix seems to be relatively in-line with Clojure principles. There are a few advantages that I can think of to a guix integration. First, Guix allows an application/library to define dependencies on non-jvm components. Second, because packaging is a solved (ish) problem in Guix, many of the problems with Uberjars, such as diffuclty of embedding a JVM/JRE can be avoided. Finally, because Guix allows for more complex pacakge definitions than deps.edn, clojure code can (and currently is) automatically compiled by Guix upon installation. However, there is one major drawback to this integration. guix (at least in officially endorsed package channels) requires that all packages be built from source using a Guix build system. However, Clojurescript (which is depended on by many Clojure libraries via core.async) depends on many Google java libraries which are currently cumbersome to build from source in an automated fashion. Because of this, I have chosen to submit the clojure-tools package to an unofficial third-party package channel for now. I think, assuming we can overcome this build requirement (this is a one time cost), a Guix integration could be a major advantage for Clojure. Ideally, this would work in a similar manner to gitdeps, where a dep map could be specified like {my-guix-dep {:guix/package clojure-my-guix-dep}}
.
I’m a little unclear if you are looking to make something available in guix or if you are looking to use guix as a source of dependencies, or both and what problem you’re trying to solve by doing so
If your are looking to establish interest in a feature or integration it’s best to ask at https://ask.clojure.org to gather votes. An important thing to keep in mind is how deps.edn dependencies are used, which is to gather paths to put on the classpath. If guix mostly holds non classpath things then it’s probably not useful to include
I'm mostly interested in using guix as a dependency source. Guix packages many java libraries (and some clojure libraries, despite the above issues with building CLJS) that use the class path. The idea behind guix integration is that a classpath library in guix could be packaged to have a dependency on a non-classpath package.
I will make a post about this on Ask Clojure as soon as I have a chance.
Hi! I am setting up a CI pipeline on buddy.works. This uses Docker containers. I am wondering if tools.deps depends on Maven to be installed. If not, how can I control where the jars are placed during installation?
@hadilsabbagh18 you don't have to install mvn. I believe tools.deps supports :mvn/local-repo
Correct on both counts
Thank you very much @borkdude and @alexmiller!!