projects/guix·blob javascript-team · refs

1242 lines · 50.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Alex Vong <[email protected]>
3;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
4;;; Copyright © 2019 Tobias Geerinckx-Rice <[email protected]>
5;;; Copyright © 2019 Jesse Gibbons <[email protected]>
6;;; Copyright © 2020 Ludovic Courtès <[email protected]>
7;;; Copyright © 2024 Roman Scherer <[email protected]>
8;;; Copyright © 2025, 2026 Mathieu Lirzin <[email protected]>
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages clojure)
26 #:use-module (gnu packages base)
27 #:use-module (gnu packages golang-build)
28 #:use-module (gnu packages golang-check)
29 #:use-module (gnu packages golang-xyz)
30 #:use-module (gnu packages golang)
31 #:use-module (gnu packages guile)
32 #:use-module (gnu packages java)
33 #:use-module (gnu packages maven)
34 #:use-module (gnu packages)
35 #:use-module (guix build-system ant)
36 #:use-module (guix build-system clojure)
37 #:use-module (guix build-system copy)
38 #:use-module (guix build-system go)
39 #:use-module (guix download)
40 #:use-module (guix gexp)
41 #:use-module (guix git-download)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix packages))
44
45(define-public clojure-spec-alpha
46 (package
47 (name "clojure-spec-alpha")
48 (version "0.6.249")
49 (source (origin
50 (method git-fetch)
51 (uri (git-reference
52 (url "https://github.com/clojure/spec.alpha")
53 (commit (string-append "v" version))))
54 (file-name (git-file-name name version))
55 (sha256
56 (base32
57 "1rzy7mjzchsjpwkn3b5vg5hnmsj5h9ljxdjn48j92bgh7vl3k2r5"))))
58 (build-system clojure-build-system)
59 (arguments '(#:source-dirs '("src/main/clojure")
60 #:test-dirs '("src/test/clojure")
61 #:doc-dirs '()))
62 (native-inputs (list clojure-test-check))
63 (synopsis
64 "Clojure library to describe the structure of data and functions")
65 (description
66 "This package can be used to validate data, conform (destructure) data, explain
67invalid data, generate examples that conform to the specs, and automatically
68use generative testing to test functions.
69
70Clojure depends on this library and provides it. Thus it is not recommended
71to add a direct dependency on this package.")
72 (home-page "https://github.com/clojure/spec.alpha")
73 (license license:epl1.0)))
74
75(define-public clojure-core-specs-alpha
76 (package
77 (name "clojure-core-specs-alpha")
78 (version "0.5.81")
79 (source (origin
80 (method git-fetch)
81 (uri (git-reference
82 (url "https://github.com/clojure/core.specs.alpha")
83 (commit (string-append "v" version))))
84 (file-name (git-file-name name version))
85 (sha256
86 (base32
87 "1hy060mb2hxirynkk36plx1rvpj6i2ldn8mvnwfd02wvjvh57dad"))))
88 (build-system clojure-build-system)
89 (arguments '(#:source-dirs '("src/main/clojure")
90 #:test-dirs '()
91 #:doc-dirs '()))
92 (synopsis "Describe clojure.core macros and functions")
93 (description
94 "This package contains specs to describe Clojure core macros and functions.
95
96Clojure depends on this library and provides it. Thus it is not recommended
97to add a direct dependency on this package.")
98 (home-page "https://github.com/clojure/core.specs.alpha")
99 (license license:epl1.0)))
100
101(define-public clojure-java-classpath
102 (package
103 (name "clojure-java-classpath")
104 (version "1.1.1")
105 (source (origin
106 (method git-fetch)
107 (uri (git-reference
108 (url "https://github.com/clojure/java.classpath")
109 (commit (string-append "v" version))))
110 (file-name (git-file-name name version))
111 (sha256
112 (base32
113 "1k34yrx3gmvf46984zdgn2vb98ixf47q1vgh9p78bgmpyhrwzx2z"))))
114 (build-system clojure-build-system)
115 (arguments '(#:source-dirs '("src/main/clojure")
116 #:test-dirs '("src/test/clojure")
117 #:doc-dirs '()))
118 (synopsis "Examine the Java classpath from Clojure programs")
119 (description
120 "This package provides utilities for dealing with the JVM's classpath from
121Clojure.")
122 (home-page "https://github.com/clojure/java.classpath")
123 (license license:epl1.0)))
124
125(define-public clojure-data-generators
126 (package
127 (name "clojure-data-generators")
128 (version "1.1.1")
129 (source (origin
130 (method git-fetch)
131 (uri (git-reference
132 (url "https://github.com/clojure/data.generators")
133 (commit (string-append "v" version))))
134 (file-name (git-file-name name version))
135 (sha256
136 (base32
137 "1ynazp55v15zv5jwz1wh2p8cawjcmn0bwzgfs2dwrp6aq231jafm"))))
138 (build-system clojure-build-system)
139 (arguments '(#:source-dirs '("src/main/clojure")
140 #:test-dirs '("src/test/clojure")
141 #:doc-dirs '()))
142 (synopsis "Generators for random Clojure data")
143 (description
144 "This package contains various functions to generate random clojure data.")
145 (home-page "https://github.com/clojure/data.generators")
146 (license license:epl1.0)))
147
148(define-public clojure-tools-namespace
149 (package
150 (name "clojure-tools-namespace")
151 (version "1.5.1")
152 (source (origin
153 (method git-fetch)
154 (uri (git-reference
155 (url "https://github.com/clojure/tools.namespace")
156 (commit (string-append "v" version))))
157 (file-name (git-file-name name version))
158 (sha256
159 (base32
160 "0j1lz3xnpgvyi0mcg9mjz7hrchf3hwhbhxi2163d739dxdx60s22"))))
161 (build-system clojure-build-system)
162 (arguments '(#:source-dirs '("src/main/clojure")
163 #:test-dirs '("src/test/clojure")
164 #:doc-dirs '()))
165 (propagated-inputs (list clojure-java-classpath
166 clojure-tools-reader))
167 (synopsis "Tools for managing namespaces in Clojure")
168 (description
169 "This package parses ns declarations from source files, extract their
170dependencies, build a graph of namespace dependencies within a project, update
171that graph as files change, and reload files in the correct order.
172
173This is only about namespace dependencies within a single project. It has
174nothing to do with Leiningen, Maven, JAR files, or repositories.")
175 (home-page "https://github.com/clojure/tools.namespace")
176 (license license:epl1.0)))
177
178(define-public clojure-test-generative
179 (package
180 (name "clojure-test-generative")
181 (version "1.1.1")
182 (source (origin
183 (method git-fetch)
184 (uri (git-reference
185 (url "https://github.com/clojure/test.generative")
186 (commit (string-append "v" version))))
187 (file-name (git-file-name name version))
188 (sha256
189 (base32
190 "0lb72cr4s6rgpg18v3jr67ps6wx4p7j7mfzwnfgmm0v8rldlcycf"))))
191 (build-system clojure-build-system)
192 (arguments '(#:source-dirs '("src/main/clojure")
193 #:test-dirs '("src/examples/clojure")
194 #:doc-dirs '()))
195 (propagated-inputs (list clojure-tools-namespace
196 clojure-data-generators))
197 (synopsis "Generative test runner")
198 (description
199 "This package defines generators functions and property based testing macros.")
200 (home-page "https://github.com/clojure/test.generative")
201 (license license:epl1.0)))
202
203(define-public clojure-test-check
204 (package
205 (name "clojure-test-check")
206 (version "1.1.3")
207 (home-page "https://github.com/clojure/test.check")
208 (source (origin
209 (method git-fetch)
210 (uri (git-reference
211 (url home-page)
212 (commit (string-append "v" version))))
213 (file-name (git-file-name name version))
214 (sha256
215 (base32
216 "1j1x80rv0pli3g91wy01panlqbhgf7zqm7jdr2rzjqf2yyksc70n"))))
217 (build-system clojure-build-system)
218 (arguments
219 '(#:source-dirs '("src/main/clojure")
220 #:test-dirs '("src/test/clojure")
221 #:doc-dirs '()))
222 (synopsis "QuickCheck for Clojure")
223 (description "@code{test.check} is a Clojure property-based testing tool
224inspired by QuickCheck. The core idea of @code{test.check} is that instead of
225enumerating expected input and output for unit tests, you write properties
226about your function that should hold true for all inputs. This lets you write
227concise, powerful tests.")
228 (license license:epl1.0)))
229
230(define-public clojure-tools-reader
231 (package
232 (name "clojure-tools-reader")
233 (version "1.6.0")
234 (home-page "https://github.com/clojure/tools.reader")
235 (source (origin
236 (method git-fetch)
237 (uri (git-reference
238 (url home-page)
239 (commit (string-append "v" version))))
240 (file-name (git-file-name name version))
241 (sha256
242 (base32
243 "006zy7dpk678rzawqyqcypccw48bl4b9s4xjrwzhgq8z5s8v6lnd"))))
244 (build-system clojure-build-system)
245 (arguments
246 '(#:doc-dirs '()
247 #:source-dirs '("src/main/clojure")
248 #:test-dirs '("src/test/clojure")
249 #:test-exclude '(clojure.tools.common-tests))) ; Loaded by other tests.
250 (synopsis "Clojure reader written in Clojure")
251 (description "The clojure.tools.reader library offers all functionality
252provided by the Clojure Core reader and more. It adds metadata such as column
253and line numbers not only to lists, but also to symbols, vectors and maps.")
254 (license license:epl1.0)))
255
256(define (package-sources . packages)
257 (map package-source packages))
258
259(define-public clojure
260 (let ((provided-libraries (package-sources clojure-core-specs-alpha
261 clojure-spec-alpha))
262 (test-libraries (package-sources clojure-data-generators
263 clojure-java-classpath
264 clojure-test-check
265 clojure-test-generative
266 clojure-tools-namespace
267 clojure-tools-reader)))
268 (package
269 (name "clojure")
270 (version "1.12.6")
271 (source (let ((name+version (string-append name "-" version)))
272 (origin
273 (method git-fetch)
274 (uri (git-reference
275 (url "https://github.com/clojure/clojure")
276 (commit name+version)))
277 (file-name (string-append name+version "-checkout"))
278 (sha256
279 (base32
280 "0gfdrb5dkvy6vc7fabih7kabwgw9by9xxd5l8msspknql1immqvw")))))
281 (build-system ant-build-system)
282 (arguments
283 `(#:imported-modules ((guix build clojure-utils)
284 (guix build clojure-build-system)
285 ,@%ant-build-system-modules)
286 #:modules ((guix build ant-build-system)
287 ((guix build clojure-build-system) #:prefix clj:)
288 (guix build clojure-utils)
289 (guix build java-utils)
290 (guix build utils)
291 (srfi srfi-26))
292 #:test-target "test"
293 #:phases
294 (modify-phases %standard-phases
295 (add-after 'unpack 'unpack-library-sources
296 (lambda* (#:key inputs #:allow-other-keys)
297 (define (extract-provided-library name)
298 (copy-recursively
299 (string-append (assoc-ref inputs name) "/src/main/clojure")
300 "src/clj/"))
301 (for-each extract-provided-library
302 ',(map origin-actual-file-name provided-libraries))))
303 (add-after 'unpack-library-sources 'fix-manifest-classpath
304 (lambda _
305 (substitute* "build.xml"
306 (("<attribute name=\"Class-Path\" value=\".\"/>") ""))))
307 (add-after 'unpack-library-sources 'clojure-spec-skip-macros
308 ;; Disable spec macro instrumentation when compiling clojure.spec
309 ;; See: https://clojure.atlassian.net/browse/CLJ-2254
310 (lambda _
311 (substitute* "build.xml"
312 (("<sysproperty key=\"java.awt.headless\" value=\"true\"/>")
313 ,(string-join
314 '("<sysproperty key=\"java.awt.headless\" value=\"true\"/>"
315 "<sysproperty key=\"clojure.spec.skip-macros\" value=\"true\"/>\n")
316 "\n")))))
317 (add-after 'unpack-library-sources 'clojure-spec-compile
318 ;; Compile and include clojure.spec.alpha & clojure.core.specs.alpha
319 (lambda _
320 (substitute* "build.xml"
321 (("<arg value=\"clojure.math\"/>")
322 ,(string-join
323 '("<arg value=\"clojure.math\"/>"
324 "<arg value=\"clojure.spec.alpha\"/>"
325 "<arg value=\"clojure.spec.gen.alpha\"/>"
326 "<arg value=\"clojure.spec.test.alpha\"/>"
327 "<arg value=\"clojure.core.specs.alpha\"/>"))))))
328 (add-before 'build 'maven-classpath-properties
329 (lambda* (#:key inputs #:allow-other-keys)
330 (define (source-dir library)
331 (string-append (assoc-ref inputs library) "/src/main/clojure"))
332 (let* ((libraries ',(map origin-actual-file-name test-libraries))
333 (test-classpath (map source-dir libraries)))
334 (with-output-to-file "maven-classpath.properties"
335 (lambda _
336 (display "maven.compile.classpath=\n")
337 (display (string-append "maven.test.classpath="
338 (string-join test-classpath ":")
339 "\n")))))))
340 (add-before 'check 'fix-test-classpath
341 ;; Some java test files need access to compiled classes.
342 (lambda _
343 (substitute* "build.xml"
344 (("javac srcdir=\"\\$\\{jtestsrc\\}\"" cmd)
345 (string-append cmd " classpath=\"${build}\"")))))
346 (add-after 'build 'build-javadoc ant-build-javadoc)
347 (replace 'install (install-jars "./"))
348 (add-after 'install-license-files 'install-doc
349 (cut install-doc #:doc-dirs '("doc/clojure/") <...>))
350 (add-after 'install-doc 'install-javadoc
351 (install-javadoc "target/javadoc/"))
352 (add-after 'reset-gzip-timestamps 'reset-class-timestamps
353 clj:reset-class-timestamps))))
354 (native-inputs (append provided-libraries test-libraries))
355 (home-page "https://clojure.org/")
356 (synopsis "Lisp dialect running on the JVM")
357 (description "Clojure is a dynamic, general-purpose programming language,
358combining the approachability and interactive development of a scripting
359language with an efficient and robust infrastructure for multithreaded
360programming. Clojure is a compiled language, yet remains completely dynamic
361– every feature supported by Clojure is supported at runtime. Clojure
362provides easy access to the Java frameworks, with optional type hints and type
363inference, to ensure that calls to Java can avoid reflection.
364
365Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy
366and a powerful macro system. Clojure is predominantly a functional programming
367language, and features a rich set of immutable, persistent data structures.
368When mutable state is needed, Clojure offers a software transactional memory
369system and reactive Agent system that ensure clean, correct, multithreaded
370designs.")
371 ;; Clojure is licensed under EPL1.0
372 ;; ASM bytecode manipulation library is licensed under BSD-3
373 ;; Guava Murmur3 hash implementation is licensed under APL2.0
374 ;; src/clj/repl.clj is licensed under CPL1.0
375
376 ;; See readme.html or readme.txt for details.
377 (license (list license:epl1.0
378 license:bsd-3
379 license:asl2.0
380 license:cpl1.0)))))
381
382(define-public clojure-tools
383 (package
384 (name "clojure-tools")
385 (version "1.12.4.1618")
386 (source
387 (origin
388 (method url-fetch)
389 (uri (string-append "https://download.clojure.org/install/clojure-tools-"
390 version
391 ".tar.gz"))
392 (sha256 (base32 "08fy3k248sbsrbgl0lq3q4d23vp4chdawy230ardx61sssk9sxhk"))
393 ;; Remove AOT compiled JAR. The other JAR only contains uncompiled
394 ;; Clojure source code.
395 (snippet
396 `(delete-file ,(string-append "clojure-tools-" version ".jar")))))
397 (build-system copy-build-system)
398 (arguments
399 (list #:install-plan #~'(("deps.edn" "lib/clojure/")
400 ("example-deps.edn" "lib/clojure/")
401 ("tools.edn" "lib/clojure/")
402 ("exec.jar" "lib/clojure/libexec/")
403 ("clojure" "bin/")
404 ("clojure.1" "share/man/man1/")
405 ("clj" "bin/")
406 ("clj.1" "share/man/man1/"))
407 #:phases
408 #~(modify-phases %standard-phases
409 (add-before 'install 'fix-paths
410 (lambda _
411 (substitute* "clj"
412 (("BINDIR") (string-append #$output "/bin")))
413 (substitute* "clojure"
414 (("PREFIX") (string-append #$output "/lib/clojure")))))
415 (add-after 'fix-paths 'copy-tools-deps-alpha-jar
416 (lambda* (#:key inputs #:allow-other-keys)
417 (substitute* "clojure"
418 (("\\$install_dir/libexec/clojure-tools-\\$version\\.jar")
419 (let* ((selected (assq-remove! inputs "openjdk"))
420 (input-dirs (map cdr selected))
421 (jars (apply append
422 (map (lambda (dir)
423 (find-files dir "\\.jar$"))
424 input-dirs))))
425 (string-join jars ":"))))))
426 (add-after 'install 'wrap-clojure
427 (lambda* (#:key inputs #:allow-other-keys)
428 (let ((coreutils (assoc-ref inputs "coreutils-minimal"))
429 (jdk (assoc-ref inputs "openjdk")))
430 (wrap-script (string-append #$output "/bin/clojure")
431 ;; Ensure that coreutils and java are accessible.
432 `("PATH" suffix (,(string-append coreutils "/bin")
433 ,(string-append jdk "/bin"))))))))))
434 (inputs (list clojure
435 clojure-tools-deps
436 coreutils-minimal
437 guile-3.0/pinned
438 java-commons-logging-minimal
439 java-slf4j-nop
440 ;; Depend on JDK instead of JRE since common developer tools
441 ;; such as ‘cider-nrepl’ require it.
442 (list openjdk "jdk")))
443 (home-page "https://clojure.org/releases/tools")
444 (synopsis "CLI tools for the Clojure programming language")
445 (description "This package provides the @command{clojure} and
446@command{clj} command line tools that can be used to start a Clojure REPL,
447launch a main or execute any Clojure function.
448
449Dependencies declared in @file{deps.edn} files are resolved and downloaded
450beforehand.
451
452The @command{clj} executable is a readline wrapper around @command{clojure}
453delegating to the @command{rlwrap} optional dependency.")
454 (license license:epl1.0)))
455
456(define-public clojure-algo-generic
457 (package
458 (name "clojure-algo-generic")
459 (version "1.0.1")
460 (source
461 (origin
462 (method git-fetch)
463 (uri (git-reference
464 (url "https://github.com/clojure/algo.generic")
465 (commit (string-append "v" version))))
466 (file-name (git-file-name name version))
467 (sha256
468 (base32 "0i10rxk5jxsw1cm2a8rsq9zgl04173cbpaj02vvc9nb4ig219a8y"))))
469 (build-system clojure-build-system)
470 (arguments
471 '(#:source-dirs '("src/main/clojure/")
472 #:test-dirs '("src/test/clojure/")
473 #:doc-dirs '()
474 #:phases
475 (modify-phases %standard-phases
476 (add-after 'unpack 'fix-import
477 (lambda _
478 (substitute*
479 "src/main/clojure/clojure/algo/generic/math_functions.clj"
480 (("clojure.algo.generic.math-functions")
481 "clojure.algo.generic.math-functions\n(:refer-clojure :exclude [abs])")))))))
482 (synopsis "Generic versions of common functions")
483 (description
484 "Generic versions of commonly used functions, implemented as multimethods
485that can be implemented for any data type.")
486 (home-page "https://github.com/clojure/algo.generic")
487 (license license:epl1.0)))
488
489(define-public clojure-algo-monads
490 (package
491 (name "clojure-algo-monads")
492 (version "0.2.1")
493 (source
494 (origin
495 (method git-fetch)
496 (uri (git-reference
497 (url "https://github.com/clojure/algo.monads")
498 (commit (string-append "v" version))))
499 (file-name (git-file-name name version))
500 (sha256
501 (base32 "1l420fzqr1mw45w1lz6iqx0s61m8w3r3ad8zmsg17cqahnfakh00"))))
502 (build-system clojure-build-system)
503 (arguments
504 '(#:source-dirs '("src/main/clojure/")
505 #:test-dirs '("src/test/clojure/")
506 #:doc-dirs '()))
507 (native-inputs
508 (list clojure-tools-macro))
509 (synopsis
510 "Monad Macros and Definitions")
511 (description
512 "This library contains the most commonly used monads as well as macros for
513defining and using monads and useful monadic functions.")
514 (home-page "https://github.com/clojure/algo.monads")
515 (license license:epl1.0)))
516
517(define-public clojure-core-async
518 (package
519 (name "clojure-core-async")
520 (version "1.9.865")
521 (home-page "https://github.com/clojure/core.async")
522 (source (origin
523 (method git-fetch)
524 (uri (git-reference
525 (url home-page)
526 (commit (string-append "v" version))))
527 (file-name (git-file-name name version))
528 (sha256
529 (base32
530 "15pc2m58fscix85gsiwl9dlvw2x6alvc4qni46rry2sr00nfzd3r"))))
531 (build-system clojure-build-system)
532 (arguments
533 '(#:source-dirs '("src/main/clojure")
534 #:test-dirs '("src/test/clojure")
535 #:doc-dirs '()
536 #:phases
537 (modify-phases %standard-phases
538 ;; Remove ClojureScript code, we are only supporting Clojure for now.
539 (add-after 'unpack 'delete-cljs
540 (lambda _
541 (delete-file-recursively "src/main/clojure/cljs")
542 (delete-file-recursively "src/test/cljs"))))))
543 (propagated-inputs (list clojure-tools-analyzer-jvm))
544 (synopsis "Facilities for async programming and communication in Clojure")
545 (description "The core.async library adds support for asynchronous
546programming using channels to Clojure. It provides facilities for independent
547threads of activity, communicating via queue-like channels inspired by Hoare’s
548work on Communicating Sequential Processes (CSP).")
549 (license license:epl1.0)))
550
551(define-public clojure-core-cache
552 (package
553 (name "clojure-core-cache")
554 (version "1.2.263")
555 (source (origin
556 (method git-fetch)
557 (uri (git-reference
558 (url "https://github.com/clojure/core.cache")
559 (commit (string-append "v" version))))
560 (file-name (git-file-name name version))
561 (sha256
562 (base32
563 "19q81aki8wb120v6jfylwqgf965mwkhrpcsrs5zazjfjv8vq6glx"))))
564 (build-system clojure-build-system)
565 (arguments
566 '(#:source-dirs '("src/main/clojure")
567 #:test-dirs '("src/test/clojure")
568 #:doc-dirs '("docs")))
569 (propagated-inputs (list clojure-data-priority-map))
570 (synopsis "Clojure caching library")
571 (description
572 "Caching library for Clojure implementing various cache strategies such
573as First-in-first-out, Least-recently-used, Least-used, Time-to-live, Naive
574cache and Naive cache backed with soft references.")
575 (home-page "https://github.com/clojure/core.cache")
576 (license license:epl1.0)))
577
578(define-public clojure-core-match
579 (package
580 (name "clojure-core-match")
581 (version "1.1.1")
582 (source (origin
583 (method git-fetch)
584 (uri (git-reference
585 (url "https://github.com/clojure/core.match")
586 (commit (string-append "v" version))))
587 (file-name (git-file-name name version))
588 (sha256
589 (base32
590 "09kijs81js7iy810qkzn7fi996gmf7bmlm2ax571zy0yr38i2hbr"))))
591 (build-system clojure-build-system)
592 (arguments
593 '(#:source-dirs '("src/main/clojure")
594 #:test-dirs '("src/test/clojure")
595 #:doc-dirs '()))
596 (synopsis "Optimized pattern matching for Clojure")
597 (description
598 "An optimized pattern matching library for Clojure.
599It supports Clojure 1.5.1 and later as well as ClojureScript.")
600 (home-page "https://github.com/clojure/core.match")
601 (license license:epl1.0)))
602
603(define-public clojure-core-memoize
604 (package
605 (name "clojure-core-memoize")
606 (version "1.2.281")
607 (source (origin
608 (method git-fetch)
609 (uri (git-reference
610 (url "https://github.com/clojure/core.memoize")
611 (commit (string-append "v" version))))
612 (file-name (git-file-name name version))
613 (sha256
614 (base32
615 "0bnlqs7m69svhfadwy46wgc88j9ma9fhdk4586b4xxppamj6c5j4"))))
616 (build-system clojure-build-system)
617 (arguments
618 '(#:source-dirs '("src/main/clojure")
619 #:test-dirs '("src/test/clojure")
620 #:doc-dirs '("docs")))
621 (propagated-inputs (list clojure-core-cache))
622 (synopsis "Memoization framework for Clojure")
623 (description
624 "A manipulable, pluggable, memoization framework for Clojure implementing
625some common memoization caching strategies, such as First-in-first-out,
626Least-recently-used, Least-used and Time-to-live.")
627 (home-page "https://github.com/clojure/core.memoize")
628 (license license:epl1.0)))
629
630(define-public clojure-data-codec
631 (package
632 (name "clojure-data-codec")
633 (version "0.2.1")
634 (home-page "https://github.com/clojure/data.codec")
635 (source (origin
636 (method git-fetch)
637 (uri (git-reference
638 (url home-page)
639 (commit (string-append "v" version))))
640 (file-name (git-file-name name version))
641 (sha256
642 (base32
643 "1wxqwkbpaxjchh03lwy3ngyx6dwv7x7l1qhac42dl6bg213izil5"))))
644 (build-system clojure-build-system)
645 (arguments
646 '(#:source-dirs '("src/main/clojure")
647 #:test-dirs '("src/test/clojure")
648 #:doc-dirs '()))
649 (native-inputs (list java-commons-codec
650 clojure-test-check))
651 (synopsis "Native codec implementations for Clojure")
652 (description "Native codec implementations for Clojure. Currently only
653base64 has been implemented. Implements the standard base64 encoding
654character set, but does not yet support automatic fixed line-length encoding.
655All operations work on either byte arrays or Input/OutputStreams. Performance
656is on par with Java implementations, e.g., Apache commons-codec.")
657 (license license:epl1.0)))
658
659(define-public clojure-data-csv
660 (package
661 (name "clojure-data-csv")
662 (version "1.1.1")
663 (home-page "https://github.com/clojure/data.csv")
664 (source (origin
665 (method git-fetch)
666 (uri (git-reference
667 (url home-page)
668 (commit (string-append "v" version))))
669 (file-name (git-file-name name version))
670 (sha256
671 (base32
672 "1i43qzjn29a0xb3q54sfrn8f77nmxd0v0fn9361as07yclh8jzif"))))
673 (build-system clojure-build-system)
674 (arguments
675 '(#:source-dirs '("src/main/clojure")
676 #:test-dirs '("src/test/clojure")
677 #:doc-dirs '()))
678 (synopsis "Clojure library for reading and writing CSV data")
679 (description "@code{data.csv} is a Clojure library for reading and writing
680CSV data. @code{data.csv} follows the RFC4180 specification but is more
681relaxed.")
682 (license license:epl1.0)))
683
684(define-public clojure-data-json
685 (package
686 (name "clojure-data-json")
687 (version "2.5.2")
688 (home-page "https://github.com/clojure/data.json")
689 (source (origin
690 (method git-fetch)
691 (uri (git-reference
692 (url home-page)
693 (commit (string-append "v" version))))
694 (file-name (git-file-name name version))
695 (sha256
696 (base32
697 "0xkcd6h5g7yhr839wci6dsynmbijj9r5mrrj70gx849mkhj98411"))))
698 (build-system clojure-build-system)
699 (arguments
700 '(#:source-dirs '("src/main/clojure")
701 #:test-dirs '("src/test/clojure")
702 #:doc-dirs '()))
703 (native-inputs (list clojure-test-check))
704 (synopsis "Clojure library for reading and writing JSON data")
705 (description "@code{data.json} is a Clojure library for reading and
706writing JSON data. @code{data.xml} is compliant with the JSON spec and has no
707external dependencies")
708 (license license:epl1.0)))
709
710(define-public clojure-data-priority-map
711 (package
712 (name "clojure-data-priority-map")
713 (version "1.2.1")
714 (source (origin
715 (method git-fetch)
716 (uri (git-reference
717 (url "https://github.com/clojure/data.priority-map")
718 (commit (string-append "v" version))))
719 (file-name (git-file-name name version))
720 (sha256
721 (base32
722 "0yswqr6855n0rg0mfmjfdx0npzasm654m7sz4x0wl13grwgg220k"))))
723 (build-system clojure-build-system)
724 (arguments
725 '(#:source-dirs '("src/main/clojure")
726 #:test-dirs '("src/test/clojure")
727 #:doc-dirs '()))
728 (synopsis "Priority map implementation in Clojure")
729 (description
730 "A priority map is very similar to a sorted map, but whereas a sorted map
731produces a sequence of the entries sorted by key, a priority map produces the
732entries sorted by value. In addition to supporting all the functions a sorted
733map supports, a priority map can also be thought of as a queue of [item
734priority] pairs. To support usage as a versatile priority queue, priority
735maps also support conj/peek/pop operations.")
736 (home-page "https://github.com/clojure/data.priority-map")
737 (license license:epl1.0)))
738
739(define-public clojure-data-xml
740 (package
741 (name "clojure-data-xml")
742 (version "0.2.0-alpha11")
743 (home-page "https://github.com/clojure/data.xml")
744 (source (origin
745 (method git-fetch)
746 (uri (git-reference
747 (url home-page)
748 (commit (string-append "v" version))))
749 (file-name (git-file-name name version))
750 (sha256
751 (base32
752 "0k7hq3s4zbk0ryhgycivl1dk22fzh60522a57az8ykmixhqjxwhg"))))
753 (build-system clojure-build-system)
754 (arguments
755 '(#:source-dirs '("src/main/clojure")
756 #:test-dirs '("src/test/clojure" "src/test/resources")
757 #:doc-dirs '()
758 #:phases
759 (modify-phases %standard-phases
760 (add-before 'build 'delete-cljs-tests
761 (lambda _
762 (delete-file "src/test/resources/clojure/data/xml/cljs_repl_nashorn.clj")
763 (delete-file "src/test/resources/clojure/data/xml/cljs_testsuite.clj")
764 (delete-file "src/test/clojure/clojure/data/xml/test_cljs.clj"))))))
765 (propagated-inputs (list clojure-data-codec))
766 (synopsis "Clojure library for reading and writing XML data")
767 (description "@code{data.xml} is a Clojure library for reading and writing
768XML data. @code{data.xml} has the following features:
769
770Parses XML documents into Clojure data structures
771Emits XML from Clojure data structures
772No additional dependencies if using JDK >= 1.6
773Uses StAX internally
774lazy - should allow parsing and emitting of large XML documents")
775 (license license:epl1.0)))
776
777(define-public clojure-data-zip
778 (package
779 (name "clojure-data-zip")
780 (version "1.1.1")
781 (home-page "https://github.com/clojure/data.zip")
782 (source
783 (origin
784 (method git-fetch)
785 (uri (git-reference
786 (url home-page)
787 (commit (string-append "v" version))))
788 (file-name (git-file-name name version))
789 (sha256
790 (base32 "0l13xs0jlv2cyh3rqdp1f5r0jsff9p1h7dh49112xxrkcvzck876"))))
791 (build-system clojure-build-system)
792 (arguments
793 '(#:source-dirs '("src/main/clojure")
794 #:test-dirs '("src/test/clojure")
795 #:doc-dirs '()))
796 (synopsis
797 "Clojure library for filtering trees, and XML trees in particular")
798 (description
799 "@code{data.zip} is a Clojure library for filtering trees using the zipper
800abstraction.")
801 (license license:epl1.0)))
802
803(define-public clojure-instaparse
804 (let ((version "1.4.12"))
805 (package
806 (name "clojure-instaparse")
807 (version version)
808 (source (origin
809 (method git-fetch)
810 (uri (git-reference
811 (url "https://github.com/Engelberg/instaparse")
812 (commit (string-append "v" version))))
813 (file-name (git-file-name name version))
814 (sha256
815 (base32
816 "1xdiwsv1dc8mvrmvgs4xdqk3z6ddsammc6brhcb771yhimx8jjcr"))))
817 (build-system clojure-build-system)
818 (arguments
819 '(;; Disabled AOT, because of failing test: No implementation of
820 ;; method: :conj-flat of protocol:
821 ;; #'instaparse.auto-flatten-seq/ConjFlat found for class:
822 ;; instaparse.auto_flatten_seq.AutoFlattenSeq
823 #:aot-exclude '(#:all)
824 #:doc-dirs '("docs/")
825 #:phases
826 (modify-phases %standard-phases
827 (add-after 'unpack 'fix-import
828 (lambda _
829 (substitute*
830 "test/instaparse/defparser_test.cljc"
831 (("AssertionError")
832 "Exception")))))))
833 (synopsis "No grammar left behind")
834 (description
835 "Instaparse aims to be the simplest way to build parsers in Clojure.
836
837@itemize
838@item Turns @emph{standard EBNF or ABNF notation} for context-free grammars
839into an executable parser that takes a string as an input and produces a parse
840tree for that string.
841
842@item @dfn{No Grammar Left Behind}: Works for @emph{any} context-free grammar,
843including @emph{left-recursive}, @emph{right-recursive}, and @emph{ambiguous}
844grammars.
845
846@item Extends the power of context-free grammars with PEG-like syntax for
847lookahead and negative lookahead.
848
849@item Supports both of Clojure's most popular tree formats (hiccup and enlive)
850as output targets
851
852@item Detailed reporting of parse errors.
853
854@item Optionally produces lazy sequence of all parses (especially useful for
855diagnosing and debugging ambiguous grammars).
856
857@item ``Total parsing'' mode where leftover string is embedded in the parse
858tree.
859
860@item Optional combinator library for building grammars programmatically.
861
862@item Performant.
863@end itemize")
864 (home-page "https://github.com/Engelberg/instaparse")
865 (license license:epl1.0))))
866
867(define-public clojure-tools-analyzer
868 (package
869 (name "clojure-tools-analyzer")
870 (version "1.2.2")
871 (home-page "https://github.com/clojure/tools.analyzer")
872 (source (origin
873 (method git-fetch)
874 (uri (git-reference
875 (url home-page)
876 (commit (string-append "v" version))))
877 (file-name (git-file-name name version))
878 (sha256
879 (base32
880 "07cxphrmd6a3clnalrdqxlyin8l0lw0xhjy2rh9gaizxfv5c23jp"))))
881 (build-system clojure-build-system)
882 (arguments
883 '(#:source-dirs '("src/main/clojure")
884 #:test-dirs '("src/test/clojure")
885 #:doc-dirs '()))
886 (synopsis "Analyzer for Clojure code")
887 (description "Analyzer for Clojure code, written in Clojure, which
888produces an abstract syntax tree in the EDN ( Extensible Data Notation)
889format.")
890 (license license:epl1.0)))
891
892(define-public clojure-tools-analyzer-jvm
893 (package
894 (name "clojure-tools-analyzer-jvm")
895 (version "1.3.4")
896 (home-page "https://github.com/clojure/tools.analyzer.jvm")
897 (source (origin
898 (method git-fetch)
899 (uri (git-reference
900 (url home-page)
901 (commit (string-append "v" version))))
902 (file-name (git-file-name name version))
903 (sha256
904 (base32
905 "0pk9z8zf9bgzj0wi98yx130l7570arnxfsg9508g1jvq83djpn21"))))
906 (build-system clojure-build-system)
907 (arguments
908 '(#:source-dirs '("src/main/clojure")
909 #:test-dirs '("src/test/clojure")
910 #:doc-dirs '("docs")))
911 (propagated-inputs (list clojure-tools-analyzer
912 clojure-tools-reader
913 clojure-core-memoize
914 java-asm))
915 (synopsis "Analyzer for Clojure code targeting the JVM")
916 (description "Analyzer for Clojure code, written on top of
917tools.analyzer, providing additional JVM-specific passes.")
918 (license license:epl1.0)))
919
920(define-public clojure-tools-macro
921 (package
922 (name "clojure-tools-macro")
923 (version "0.2.2")
924 (source
925 (origin
926 (method git-fetch)
927 (uri (git-reference
928 (url "https://github.com/clojure/tools.macro")
929 (commit (string-append "v" version))))
930 (file-name (git-file-name name version))
931 (sha256
932 (base32 "09xxp5vpf86akmn95mvjmd34a1pc48cjxbp6q4lvi3q8rhpkjfd5"))))
933 (build-system clojure-build-system)
934 (arguments
935 '(#:source-dirs '("src/main/clojure/")
936 #:test-dirs '("src/test/clojure/")
937 #:doc-dirs '()))
938 (synopsis "Utilities for macro writers")
939 (description "Tools for writing macros.")
940 (home-page "https://github.com/clojure/tools.macro")
941 (license license:epl1.0)))
942
943(define-public clojure-tools-cli
944 (package
945 (name "clojure-tools-cli")
946 (version "1.4.256")
947 (home-page "https://github.com/clojure/tools.cli")
948 (source (origin
949 (method git-fetch)
950 (uri (git-reference
951 (url home-page)
952 (commit (string-append "v" version))))
953 (file-name (git-file-name name version))
954 (sha256
955 (base32 "1kr1cpypzgzh8pkih5qamsaq8c96jfpcvmn9f330sic2shb53m55"))))
956 (build-system clojure-build-system)
957 (arguments
958 '(#:source-dirs '("src/main/clojure/")
959 #:test-dirs '("src/test/clojure/")
960 #:doc-dirs '()))
961 (synopsis "Clojure library for working with command-line arguments")
962 (description
963 "The @code{tools.cli} library provides Clojure programmers with tools to
964work with command-line arguments.")
965 (license license:epl1.0)))
966
967(define-public clojure-tools-deps-edn
968 (package
969 (name "clojure-tools-deps-edn")
970 (version "0.9.57")
971 (home-page "https://github.com/clojure/tools.deps.edn")
972 (source (origin
973 (method git-fetch)
974 (uri (git-reference
975 (url home-page)
976 (commit (string-append "v" version))))
977 (file-name (git-file-name name version))
978 (sha256
979 (base32
980 "0q0dy3rylqvcmgp14xqr84j5qgsr0j4v4yiap29gz5y20xklhi3v"))))
981 (build-system clojure-build-system)
982 (arguments
983 `(#:source-dirs '("src/main/clojure" "src/main/resources")
984 #:test-dirs '("src/test/clojure")
985 #:doc-dirs '()
986 #:phases
987 (modify-phases %standard-phases
988 (add-before 'build 'reference-clojure-jar-input
989 ;; Use static clojure jar from build input at runtime by default.
990 (lambda* (#:key inputs #:allow-other-keys)
991 (substitute* "src/main/resources/clojure/tools/deps/deps.edn"
992 (("org\\.clojure/clojure.*$")
993 (string-append "org.clojure/clojure {:local/root \""
994 (assoc-ref inputs "clojure")
995 "/share/java/clojure.jar\"}"))))))))
996 (synopsis "Reader for @file{deps.edn}")
997 (description "This package provides support for reading and manipulating
998@file{deps.edn} files and data structures. It can be used in scenarios where
999the @code{tools.deps} library is not needed for dep expansion.")
1000 (license license:epl1.0)))
1001
1002(define-public clojure-tools-deps
1003 (package
1004 (name "clojure-tools-deps")
1005 (version "0.31.1646")
1006 (home-page "https://github.com/clojure/tools.deps")
1007 (source (origin
1008 (method git-fetch)
1009 (uri (git-reference
1010 (url home-page)
1011 (commit (string-append "v" version))))
1012 (file-name (git-file-name name version))
1013 (sha256
1014 (base32
1015 "16yp2vg5cm83b85pg0dnb5pjn97wdqi5czz4nmzs8jlwb0jl4385"))))
1016 (build-system clojure-build-system)
1017 (arguments
1018 `(#:source-dirs '("src/main/clojure" "src/main/resources")
1019 #:test-dirs '("src/test/clojure")
1020 #:doc-dirs '()
1021 ;; FIXME: Could not initialize class
1022 ;; org.eclipse.aether.transport.http.SslSocketFactory
1023 #:tests? #f))
1024 (propagated-inputs (list clojure-tools-gitlibs
1025 clojure-tools-cli
1026 clojure-tools-deps-edn
1027 clojure-data-xml
1028 maven-mima-extensions-mhc4
1029 maven-mima-extensions-mmr
1030 maven-mima-runtime-standalone-static))
1031 (synopsis "Clojure library supporting clojure-tools")
1032 (description "This package provides a functional API for transitive
1033dependency graph expansion and the creation of classpaths.")
1034 (license license:epl1.0)))
1035
1036(define-public clojure-tools-deps-alpha
1037 ;; this was superseded by clojure-tools-deps
1038 ;; https://github.com/clojure/tools.deps.alpha
1039 ;; Keeping it to give downstream packages a chance to upgrade
1040 (package
1041 (name "clojure-tools-deps-alpha")
1042 (version "0.15.1254")
1043 (home-page "https://github.com/clojure/tools.deps.alpha")
1044 (source (origin
1045 (method git-fetch)
1046 (uri (git-reference
1047 (url home-page)
1048 (commit (string-append "v" version))))
1049 (file-name (git-file-name name version))
1050 (sha256
1051 (base32
1052 "17zvizzw637az7facwipsrg9b1kjci03aycg6w5pnjpg6b6nd5m6"))))
1053 (build-system clojure-build-system)
1054 (arguments
1055 `(#:source-dirs '("src/main/clojure" "src/main/resources")
1056 #:test-dirs '("src/test/clojure")
1057 #:doc-dirs '()
1058 ;; FIXME: Could not initialize class org.eclipse.aether.transport.http.SslSocketFactory
1059 #:tests? #f
1060 #:phases
1061 (modify-phases %standard-phases
1062 ;; FIXME: Currently, the S3 transporter depends on ClojureScript,
1063 ;; which is very difficult to package due to dependencies on Java
1064 ;; libraries with non-standard build systems. Instead of actually
1065 ;; packaging these libraries, we just remove the S3 transporter that
1066 ;; depends on them.
1067 (add-after 'unpack 'remove-s3-transporter
1068 (lambda _
1069 (for-each delete-file
1070 (list
1071 (string-append
1072 "src/main/clojure/clojure/"
1073 "tools/deps/alpha/util/s3_aws_client.clj")
1074 (string-append
1075 "src/main/clojure/clojure/"
1076 "tools/deps/alpha/util/s3_transporter.clj")
1077 (string-append
1078 "src/test/clojure/clojure/"
1079 "tools/deps/alpha/util/test_s3_transporter.clj")))
1080 (substitute*
1081 "src/main/clojure/clojure/tools/deps/alpha/util/maven.clj"
1082 (("clojure.tools.deps.alpha.util.s3-transporter")
1083 "")))))))
1084 (propagated-inputs (list maven-resolver-api
1085 maven-resolver-spi
1086 maven-resolver-impl
1087 maven-resolver-util
1088 maven-resolver-connector-basic
1089 maven-resolver-provider
1090 maven-core
1091 maven-resolver-transport-http
1092 maven-resolver-transport-file
1093 clojure-tools-gitlibs
1094 clojure-tools-cli
1095 clojure-data-xml))
1096 (synopsis "Clojure library supporting clojure-tools")
1097 (description "This package provides a functional API for transitive
1098dependency graph expansion and the creation of classpaths.")
1099 (license license:epl1.0)))
1100
1101(define-public clojure-tools-gitlibs
1102 (package
1103 (name "clojure-tools-gitlibs")
1104 (version "2.6.217")
1105 (home-page "https://github.com/clojure/tools.gitlibs")
1106 (source (origin
1107 (method git-fetch)
1108 (uri (git-reference
1109 (url home-page)
1110 (commit (string-append "v" version))))
1111 (file-name (git-file-name name version))
1112 (sha256
1113 (base32
1114 "0g04h9pap8ydj8hc8lzhb5b2brf2d4giy7hmy8j5lbgibq98fd8n"))))
1115 (build-system clojure-build-system)
1116 (arguments
1117 '(#:source-dirs '("src/main/clojure")
1118 #:test-dirs '("src/test/clojure")
1119 #:doc-dirs '()
1120 ;; Tests attempt to clone git repositories from the internet.
1121 #:tests? #f))
1122 (synopsis "Retrieve, cache, and programmatically access git libraries")
1123 (description "To access git dependencies (for example, via
1124@code{tools.deps}), one must download git directories and working trees as
1125indicated by git SHAs. This library provides this functionality and also
1126keeps a cache of git directories and working trees that can be reused.")
1127 (license license:epl1.0)))
1128
1129(define-public clojure-tools-logging
1130 (package
1131 (name "clojure-tools-logging")
1132 (version "1.3.1")
1133 (home-page "https://github.com/clojure/tools.logging")
1134 (source (origin
1135 (method git-fetch)
1136 (uri (git-reference
1137 (url home-page)
1138 (commit (string-append "v" version))))
1139 (file-name (git-file-name name version))
1140 (sha256
1141 (base32
1142 "1jdk7b6zm73m7nki76123ik6px9rl5g5wb06298v34h56qyck8lr"))))
1143 (build-system clojure-build-system)
1144 (arguments
1145 '(#:doc-dirs '()
1146 #:source-dirs '("src/main/clojure")
1147 #:test-dirs '("src/test/clojure")
1148 #:phases
1149 (modify-phases %standard-phases
1150 ;; These tests should throw a ClassCastException, but they don't
1151 ;; under AOT. Adjust them :/
1152 (add-after 'unpack 'disable-failing-tests
1153 (lambda _
1154 (substitute* (string-append "src/test/clojure/clojure/tools"
1155 "/logging/test_readable.clj")
1156 (((string-append "\\(thrown\\? ClassCastException \\(logf "
1157 ":debug \\(Exception\\.\\)\\)\\)"))
1158 "(nil? (logf :debug (Exception.)))"))
1159 (substitute* "src/test/clojure/clojure/tools/test_logging.clj"
1160 (((string-append "\\(thrown\\? ClassCastException \\(logf "
1161 ":debug \\(Exception\\.\\)\\)\\)"))
1162 "(nil? (logf :debug (Exception.)))")))))))
1163 (native-inputs
1164 (list java-commons-logging-minimal
1165 java-log4j-1.2-api
1166 java-log4j-api
1167 java-log4j-core
1168 java-slf4j-api
1169 java-slf4j-simple))
1170 (synopsis "Clojure logging library")
1171 (description "Logging macros which delegate to a specific logging
1172implementation, selected at runtime when the clojure.tools.logging namespace
1173is first loaded.")
1174 (license license:epl1.0)))
1175
1176(define-public http-kit
1177 (package
1178 (name "http-kit")
1179 (version "2.8.1")
1180 (source (origin
1181 (method git-fetch)
1182 (uri (git-reference
1183 (url "https://github.com/http-kit/http-kit")
1184 (commit (string-append "v" version))))
1185 (file-name (git-file-name name version))
1186 (sha256
1187 (base32
1188 "1fqfl7a7ygfw43xjmmlwrl55xbz34qxpzc8230bpqvjh9n417h74"))))
1189 (build-system clojure-build-system)
1190 (arguments
1191 '(#:java-source-dirs '("src/java")
1192 #:source-dirs '("src")
1193 #:doc-dirs '()
1194 #:tests? #f)) ;XXX: too many unpackaged dependencies
1195 (synopsis
1196 "High-performance, event-driven HTTP client and server for Clojure")
1197 (description "This package provides a minimalist, event-driven,
1198high-performance Clojure HTTP client and server library with WebSocket and
1199asynchronous support.")
1200 (home-page "https://github.com/http-kit/http-kit")
1201 (license license:asl2.0)))
1202
1203(define-public let-go
1204 (package
1205 (name "let-go")
1206 (version "1.7.4")
1207 (source
1208 (origin
1209 (method git-fetch)
1210 (uri (git-reference
1211 (url "https://github.com/nooga/let-go")
1212 (commit (string-append "v" version))))
1213 (file-name (git-file-name name version))
1214 (sha256
1215 (base32 "139a129fw3w9a4bcfgms60ll90vy2vmqinbmjn44zmgx4fr2adif"))))
1216 (build-system go-build-system)
1217 (arguments
1218 (list
1219 #:go go-1.26
1220 #:install-source? #f
1221 #:import-path "github.com/nooga/let-go"))
1222 (native-inputs
1223 (list go-github-com-davecgh-go-spew
1224 go-github-com-alimpfard-line
1225 go-github-com-hashicorp-go-uuid
1226 go-github-com-kr-pretty
1227 go-github-com-pmezard-go-difflib
1228 go-github-com-stretchr-testify
1229 go-github-com-zeebo-bencode
1230 go-golang-org-x-sys
1231 go-gopkg-in-check-v1
1232 go-gopkg-in-yaml-v3))
1233 (home-page "https://nooga.github.io/let-go")
1234 (synopsis "Clojure dialect written in Go")
1235 (description
1236 "let-go is a Clojure dialect with a bytecode compiler and a stack virtual
1237machine, written in the Go programming language.
1238
1239It is not a drop-in replacement for Clojure JVM. It does not load JARs and
1240does not aim to. Most idiomatic Clojure code runs unmodified, but a real
1241project with library dependencies will need adjustments.")
1242 (license license:expat)))