gnu: emacs-consult: Fix grammar.
[jackhill/guix/guix.git] / gnu / packages / rust-apps.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
3 ;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
4 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
5 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
6 ;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
7 ;;; Copyright © 2020 Mark H Weaver <mhw@netris.org>
8 ;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
9 ;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
10 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
11 ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.ccom>
12 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
13 ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
14 ;;;
15 ;;; This file is part of GNU Guix.
16 ;;;
17 ;;; GNU Guix is free software; you can redistribute it and/or modify it
18 ;;; under the terms of the GNU General Public License as published by
19 ;;; the Free Software Foundation; either version 3 of the License, or (at
20 ;;; your option) any later version.
21 ;;;
22 ;;; GNU Guix is distributed in the hope that it will be useful, but
23 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 ;;; GNU General Public License for more details.
26 ;;;
27 ;;; You should have received a copy of the GNU General Public License
28 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
29
30 (define-module (gnu packages rust-apps)
31 #:use-module ((guix licenses) #:prefix license:)
32 #:use-module (guix build-system cargo)
33 #:use-module (guix download)
34 #:use-module (guix packages)
35 #:use-module (gnu packages compression)
36 #:use-module (gnu packages crates-io)
37 #:use-module (gnu packages crates-graphics)
38 #:use-module (gnu packages documentation)
39 #:use-module (gnu packages fontutils)
40 #:use-module (gnu packages gtk)
41 #:use-module (gnu packages jemalloc)
42 #:use-module (gnu packages pcre)
43 #:use-module (gnu packages pkg-config)
44 #:use-module (gnu packages python-xyz)
45 #:use-module (gnu packages tls)
46 #:use-module (gnu packages version-control))
47
48 (define-public agate
49 (package
50 (name "agate")
51 (version "2.5.2")
52 (source
53 (origin
54 (method url-fetch)
55 (uri (crate-uri "agate" version))
56 (file-name (string-append name "-" version ".tar.gz"))
57 (sha256
58 (base32 "1mhrl4j5r6wzsnwpqsbgzny5vqschyjm3gnk4y88har7skk7j19v"))))
59 (build-system cargo-build-system)
60 (arguments
61 `(#:cargo-inputs
62 (("rust-configparser" ,rust-configparser-2)
63 ("rust-env-logger" ,rust-env-logger-0.8)
64 ("rust-getopts" ,rust-getopts-0.2)
65 ("rust-glob" ,rust-glob-0.3)
66 ("rust-log" ,rust-log-0.4)
67 ("rust-mime-guess" ,rust-mime-guess-2)
68 ("rust-once-cell" ,rust-once-cell-1)
69 ("rust-percent-encoding" ,rust-percent-encoding-2)
70 ("rust-rustls" ,rust-rustls-0.19)
71 ("rust-tokio" ,rust-tokio-1)
72 ("rust-tokio-rustls" ,rust-tokio-rustls-0.22)
73 ("rust-url" ,rust-url-2))))
74 (home-page "https://github.com/mbrubeck/agate")
75 (synopsis "Very simple server for the Gemini hypertext protocol")
76 (description
77 "Agate is a server for the Gemini network protocol, built with the Rust
78 programming language. It has very few features, and can only serve static
79 files. It uses async I/O, and should be quite efficient even when running on
80 low-end hardware and serving many concurrent requests.")
81 (license (list license:expat license:asl2.0))))
82
83 (define-public bat
84 (package
85 (name "bat")
86 (version "0.18.0")
87 (source
88 (origin
89 (method url-fetch)
90 (uri (crate-uri "bat" version))
91 (file-name (string-append name "-" version ".tar.gz"))
92 (sha256
93 (base32 "1hr6vzkw8mdy9v0sg1pg9gibamabhip05s7zdkwzwlv69qnhgs1z"))))
94 (build-system cargo-build-system)
95 (arguments
96 `(#:cargo-inputs
97 (("rust-ansi-colours" ,rust-ansi-colours-1)
98 ("rust-ansi-term" ,rust-ansi-term-0.12)
99 ("rust-atty" ,rust-atty-0.2)
100 ("rust-bugreport" ,rust-bugreport-0.3)
101 ("rust-clap" ,rust-clap-2)
102 ("rust-clircle" ,rust-clircle-0.3)
103 ("rust-console" ,rust-console-0.14)
104 ("rust-content-inspector" ,rust-content-inspector-0.2)
105 ("rust-dirs-next" ,rust-dirs-next-2)
106 ("rust-encoding" ,rust-encoding-0.2)
107 ("rust-error-chain" ,rust-error-chain-0.12)
108 ("rust-git2" ,rust-git2-0.13)
109 ("rust-globset" ,rust-globset-0.4)
110 ("rust-lazy-static" ,rust-lazy-static-1)
111 ("rust-path-abs" ,rust-path-abs-0.5)
112 ("rust-semver" ,rust-semver-0.11)
113 ("rust-serde" ,rust-serde-1)
114 ("rust-serde-yaml" ,rust-serde-yaml-0.8)
115 ("rust-shell-words" ,rust-shell-words-1)
116 ("rust-syntect" ,rust-syntect-4)
117 ("rust-unicode-width" ,rust-unicode-width-0.1)
118 ("rust-wild" ,rust-wild-2))
119 #:cargo-development-inputs
120 (("rust-assert-cmd" ,rust-assert-cmd-1)
121 ("rust-nix" ,rust-nix-0.19)
122 ("rust-predicates" ,rust-predicates-1)
123 ("rust-serial-test" ,rust-serial-test-0.5)
124 ("rust-tempfile" ,rust-tempfile-3)
125 ("rust-wait-timeout" ,rust-wait-timeout-0.2))))
126 (native-inputs
127 `(("pkg-config" ,pkg-config)))
128 (inputs
129 `(("libgit2" ,libgit2)
130 ("zlib" ,zlib)))
131 (home-page "https://github.com/sharkdp/bat")
132 (synopsis "@command{cat} clone with syntax highlighting and git integration")
133 (description
134 "@command{bat} is a drop-in @command{cat} replacement featuring syntax
135 highlighting for a large number of languages, git integration, and automatic
136 paging.")
137 (license (list license:expat license:asl2.0))))
138
139 (define-public drill
140 (package
141 (name "drill")
142 (version "0.7.1")
143 (source
144 (origin
145 (method url-fetch)
146 (uri (crate-uri "drill" version))
147 (file-name (string-append name "-" version ".tar.gz"))
148 (sha256
149 (base32 "1m73d7rzi0p5c1hn0081d2235kcyapdza7h0vqf5jhnirpnjn793"))))
150 (build-system cargo-build-system)
151 (arguments
152 `(#:cargo-inputs
153 (("rust-async-trait" ,rust-async-trait-0.1)
154 ("rust-clap" ,rust-clap-2)
155 ("rust-colored" ,rust-colored-1)
156 ("rust-csv" ,rust-csv-1)
157 ("rust-futures" ,rust-futures-0.3)
158 ("rust-lazy-static" ,rust-lazy-static-1)
159 ("rust-linked-hash-map" ,rust-linked-hash-map-0.5)
160 ("rust-num-cpus" ,rust-num-cpus-1)
161 ("rust-rand" ,rust-rand-0.7)
162 ("rust-regex" ,rust-regex-1)
163 ("rust-reqwest" ,rust-reqwest-0.10)
164 ("rust-serde" ,rust-serde-1)
165 ("rust-serde-json" ,rust-serde-json-1)
166 ("rust-tokio" ,rust-tokio-0.2)
167 ("rust-url" ,rust-url-2)
168 ("rust-yaml-rust" ,rust-yaml-rust-0.4))))
169 (native-inputs
170 `(("pkg-config" ,pkg-config)))
171 (inputs
172 `(("openssl" ,openssl)))
173 (home-page "https://github.com/fcsonline/drill")
174 (synopsis "HTTP load testing application")
175 (description
176 "Drill is a HTTP load testing application written in Rust inspired by
177 Ansible syntax. Benchmark files can be written in YAML.")
178 (license license:gpl3)))
179
180 (define-public exa
181 (package
182 (name "exa")
183 (version "0.9.0")
184 (source
185 (origin
186 (method url-fetch)
187 (uri (crate-uri "exa" version))
188 (file-name
189 (string-append name "-" version ".tar.gz"))
190 (sha256
191 (base32
192 "1s902xgplz1167k0r7x235p914lprpsqy2if0kpa1mlb0fswqqq4"))))
193 (build-system cargo-build-system)
194 (arguments
195 `(#:cargo-inputs
196 (("rust-ansi-term" ,rust-ansi-term-0.12)
197 ("rust-datetime" ,rust-datetime-0.4)
198 ("rust-env-logger" ,rust-env-logger-0.6)
199 ("rust-git2" ,rust-git2-0.9)
200 ("rust-glob" ,rust-glob-0.3)
201 ("rust-lazy-static" ,rust-lazy-static-1)
202 ("rust-libc" ,rust-libc-0.2)
203 ("rust-locale" ,rust-locale-0.2)
204 ("rust-log" ,rust-log-0.4)
205 ("rust-natord" ,rust-natord-1)
206 ("rust-num-cpus" ,rust-num-cpus-1)
207 ("rust-number-prefix" ,rust-number-prefix-0.3)
208 ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
209 ("rust-term-grid" ,rust-term-grid-0.1)
210 ("rust-term-size" ,rust-term-size-0.3)
211 ("rust-unicode-width" ,rust-unicode-width-0.1)
212 ("rust-users" ,rust-users-0.9)
213 ("rust-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.4))
214 #:cargo-development-inputs
215 (("rust-datetime" ,rust-datetime-0.4))
216 #:phases
217 (modify-phases %standard-phases
218 ;; Ignoring failing tests.
219 ;; Reported in https://github.com/ogham/exa/issues/318
220 (add-before 'check 'disable-failing-tests
221 (lambda _
222 (substitute* "src/options/mod.rs"
223 (("^.*fn oneline_across.*" oneline-across)
224 (string-append "#[ignore]\n" oneline-across)))
225
226 (substitute* "src/options/view.rs"
227 (("test!\\(across:.*") "")
228 (("test!\\(cr:.*") "")
229 (("test!\\(empty:.*") "")
230 (("test!\\(gracross:.*") "")
231 (("test!\\(grid:.*") "")
232 (("test!\\(icons:.*") "")
233 (("test!\\(just_binary:.*") "")
234 (("test!\\(just_blocks:.*") "")
235 (("test!\\(just_bytes:.*") "")
236 (("test!\\(just_git:.*") "")
237 (("test!\\(just_group:.*") "")
238 (("test!\\(just_header:.*") "")
239 (("test!\\(just_inode:.*") "")
240 (("test!\\(just_links:.*") "")
241 (("test!\\(leg:.*") "")
242 (("test!\\(lid:.*") "")
243 (("test!\\(original_g:.*") ""))
244 #t))
245 (add-after 'install 'install-extras
246 (lambda* (#:key outputs #:allow-other-keys)
247 (let* ((out (assoc-ref outputs "out"))
248 (share (string-append out "/share"))
249 (man1 (string-append share "/man/man1")))
250 (install-file "contrib/man/exa.1" man1)
251 (mkdir-p (string-append out "/etc/bash_completion.d"))
252 (mkdir-p (string-append share "/fish/vendor_completions.d"))
253 (mkdir-p (string-append share "/zsh/site-functions"))
254 (copy-file "contrib/completions.bash"
255 (string-append out "/etc/bash_completion.d/exa"))
256 (copy-file "contrib/completions.fish"
257 (string-append share "/fish/vendor_completions.d/exa.fish"))
258 (copy-file "contrib/completions.zsh"
259 (string-append share "/zsh/site-functions/_exa"))
260 #t))))))
261 (inputs
262 `(("libgit2" ,libgit2)
263 ("zlib" ,zlib)))
264 (native-inputs
265 `(("pkg-config" ,pkg-config)))
266 (home-page "https://the.exa.website/")
267 (synopsis "Modern replacement for ls")
268 (description "@code{exa} is a modern replacement for the command-line
269 program @code{ls}. It uses colours to distinguish file types and metadata. It
270 also knows about symlinks, extended attributes, and Git.")
271 (license license:expat)))
272
273 (define-public fd
274 (package
275 (name "fd")
276 (version "8.1.1")
277 (source
278 (origin
279 (method url-fetch)
280 (uri (crate-uri "fd-find" version))
281 (file-name
282 (string-append name "-" version ".tar.gz"))
283 (sha256
284 (base32
285 "124a5r8hpk2phs1288jybh34d48yxy44wr7gv5ggchs272gs2jam"))))
286 (build-system cargo-build-system)
287 (arguments
288 `(#:cargo-inputs
289 (("rust-ansi-term" ,rust-ansi-term-0.12)
290 ("rust-anyhow" ,rust-anyhow-1)
291 ("rust-atty" ,rust-atty-0.2)
292 ("rust-clap" ,rust-clap-2)
293 ("rust-ctrlc" ,rust-ctrlc-3)
294 ("rust-dirs" ,rust-dirs-2)
295 ("rust-globset" ,rust-globset-0.4)
296 ("rust-humantime" ,rust-humantime-2)
297 ("rust-ignore" ,rust-ignore-0.4)
298 ("rust-jemallocator" ,rust-jemallocator-0.3)
299 ("rust-lazy-static" ,rust-lazy-static-1)
300 ("rust-libc" ,rust-libc-0.2)
301 ("rust-lscolors" ,rust-lscolors-0.7)
302 ("rust-num-cpus" ,rust-num-cpus-1)
303 ("rust-regex" ,rust-regex-1)
304 ("rust-regex-syntax" ,rust-regex-syntax-0.6)
305 ("rust-users" ,rust-users-0.10)
306 ("rust-version-check" ,rust-version-check-0.9))
307 #:cargo-development-inputs
308 (("rust-diff" ,rust-diff-0.1)
309 ("rust-filetime" ,rust-filetime-0.2)
310 ("rust-tempdir" ,rust-tempdir-0.3))
311 #:phases
312 (modify-phases %standard-phases
313 (add-after 'unpack 'override-jemalloc
314 (lambda* (#:key inputs #:allow-other-keys)
315 (let ((jemalloc (assoc-ref inputs "jemalloc")))
316 (setenv "JEMALLOC_OVERRIDE"
317 (string-append jemalloc "/lib/libjemalloc.so")))
318 #t))
319 (add-after 'install 'install-extra
320 (lambda* (#:key outputs #:allow-other-keys)
321 (let* ((out (assoc-ref outputs "out"))
322 (install-completion
323 (lambda (completion out-dir)
324 (for-each
325 (lambda (f)
326 (install-file f (string-append out out-dir)))
327 (find-files "target/release/build/" completion)))))
328 ;; Manpages
329 (install-file "doc/fd.1" (string-append out "/share/man/man1"))
330 ;; Completions
331 (install-completion "^fd.bash$" "/etc/bash_completion.d")
332 (install-completion "^fd.fish$" "/share/fish/vendor_completions.d")
333 (install-completion "^_fd$" "/share/zsh/site-functions")
334 (rename-file (string-append out "/etc/bash_completion.d/fd.bash")
335 (string-append out "/etc/bash_completion.d/fd"))
336 #t))))))
337 (inputs `(("jemalloc" ,jemalloc)))
338 (home-page "https://github.com/sharkdp/fd")
339 (synopsis "Simple, fast and user-friendly alternative to find")
340 (description
341 "@code{fd} is a simple, fast and user-friendly alternative to @code{find}.
342 While it does not seek to mirror all of find's powerful functionality, it
343 provides defaults for 80% of the use cases.")
344 (license (list license:expat license:asl2.0))))
345
346 (define-public hexyl
347 (package
348 (name "hexyl")
349 (version "0.8.0")
350 (source
351 (origin
352 (method url-fetch)
353 (uri (crate-uri "hexyl" version))
354 (file-name
355 (string-append name "-" version ".tar.gz"))
356 (sha256
357 (base32
358 "0sipag77196467idbznbk5q5lwhqz85zw7y1pwg9b27jxqyk04rp"))))
359 (build-system cargo-build-system)
360 (arguments
361 `(#:cargo-inputs
362 (("rust-ansi-term" ,rust-ansi-term-0.12)
363 ("rust-atty" ,rust-atty-0.2)
364 ("rust-clap" ,rust-clap-2)
365 ("rust-libc" ,rust-libc-0.2))))
366 (home-page "https://github.com/sharkdp/hexyl")
367 (synopsis "Command-line hex viewer")
368 (description
369 "This package provides a command line hex viewer. It uses a colored output
370 for distinguishing different kinds of bytes such as NULL bytes, printable ASCII
371 characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
372 (license (list license:expat license:asl2.0))))
373
374 (define-public ripgrep
375 (package
376 (name "ripgrep")
377 (version "12.1.1")
378 (source
379 (origin
380 (method url-fetch)
381 (uri (crate-uri "ripgrep" version))
382 (file-name
383 (string-append name "-" version ".tar.gz"))
384 (sha256
385 (base32
386 "1grfi0j9zczzipipc21lkdbqmd2lvy2wlqy65fy4sckqvix5amdr"))))
387 (build-system cargo-build-system)
388 (arguments
389 ;; XXX: Upgrading rust-bstr-0.2 from 0.2.12 to 0.2.15 introduced 11 test
390 ;; failures. Skip tests for now. Check again at next bstr or ripgrep
391 ;; upgrade.
392 `(#:tests? #false
393 #:cargo-inputs
394 (("rust-bstr" ,rust-bstr-0.2)
395 ("rust-clap" ,rust-clap-2)
396 ("rust-grep" ,rust-grep-0.2)
397 ("rust-ignore" ,rust-ignore-0.4)
398 ("rust-jemallocator" ,rust-jemallocator-0.3)
399 ("rust-lazy-static" ,rust-lazy-static-1)
400 ("rust-log" ,rust-log-0.4)
401 ("rust-num-cpus" ,rust-num-cpus-1)
402 ("rust-regex" ,rust-regex-1)
403 ("rust-serde-json" ,rust-serde-json-1)
404 ("rust-termcolor" ,rust-termcolor-1))
405 #:cargo-development-inputs
406 (("rust-serde" ,rust-serde-1)
407 ("rust-serde-derive" ,rust-serde-derive-1))
408 #:modules ((ice-9 match)
409 (guix build cargo-build-system)
410 (guix build utils))
411 #:phases
412 (modify-phases %standard-phases
413 (add-after 'build 'install-manpage
414 ;; NOTE: This is done before 'check so that there's only one output
415 ;; directory with the man page.
416 (lambda* (#:key outputs #:allow-other-keys)
417 (match (find-files "target" "^rg\\.1$")
418 ((manpage)
419 (install-file manpage (string-append
420 (assoc-ref outputs "out")
421 "/share/man/man1"))))
422 #t)))
423 #:features '("pcre2")))
424 (native-inputs
425 `(("asciidoc" ,asciidoc)
426 ("pcre2" ,pcre2)
427 ("pkg-config" ,pkg-config)))
428 (home-page "https://github.com/BurntSushi/ripgrep")
429 (synopsis "Line-oriented search tool")
430 (description
431 "ripgrep is a line-oriented search tool that recursively searches
432 your current directory for a regex pattern while respecting your
433 gitignore rules.")
434 (license (list license:unlicense license:expat))))
435
436 (define-public rust-cbindgen
437 (package
438 (name "rust-cbindgen")
439 (version "0.13.2")
440 (source
441 (origin
442 (method url-fetch)
443 (uri (crate-uri "cbindgen" version))
444 (file-name (string-append name "-" version ".crate"))
445 (sha256
446 (base32
447 "0673pq96hs7waavkv58v2pakpxpsfyjvbraa5kyl2b44phgdzcid"))))
448 (build-system cargo-build-system)
449 (arguments
450 `(#:cargo-inputs
451 (("clap" ,rust-clap-2)
452 ("log" ,rust-log-0.4)
453 ("proc-macro2" ,rust-proc-macro2-1)
454 ("quote" ,rust-quote-1)
455 ("serde" ,rust-serde-1)
456 ("serde-json" ,rust-serde-json-1)
457 ("syn" ,rust-syn-1)
458 ("tempfile" ,rust-tempfile-3)
459 ("toml" ,rust-toml-0.5))))
460 (home-page "https://github.com/eqrion/cbindgen/")
461 (synopsis "Tool for generating C bindings to Rust code")
462 (description
463 "This package provides a tool for generating C/C++ bindings to Rust code.")
464 (license license:mpl2.0)))
465
466 (define-public rust-cbindgen-0.17
467 (package
468 (inherit rust-cbindgen)
469 (name "rust-cbindgen")
470 (version "0.17.0")
471 (source
472 (origin
473 (method url-fetch)
474 (uri (crate-uri "cbindgen" version))
475 (file-name
476 (string-append name "-" version ".tar.gz"))
477 (sha256
478 (base32
479 "1f40hxj6h7wqmsj8dzxjm3m421hjqpz2m5zxasbn8kgnr6scykvl"))))
480 (arguments
481 `(#:cargo-inputs
482 (("rust-clap" ,rust-clap-2)
483 ("rust-heck" ,rust-heck-0.3)
484 ("rust-indexmap" ,rust-indexmap-1)
485 ("rust-log" ,rust-log-0.4)
486 ("rust-proc-macro2" ,rust-proc-macro2-1)
487 ("rust-quote" ,rust-quote-1)
488 ("rust-serde" ,rust-serde-1)
489 ("rust-serde-json" ,rust-serde-json-1)
490 ("rust-syn" ,rust-syn-1)
491 ("rust-tempfile" ,rust-tempfile-3)
492 ("rust-toml" ,rust-toml-0.5))
493 #:cargo-development-inputs
494 (("rust-serial-test" ,rust-serial-test-0.5))))
495 (native-inputs
496 `(("python-cython" ,python-cython)))))
497
498 (define-public rust-cbindgen-0.16
499 (package
500 (inherit rust-cbindgen)
501 (name "rust-cbindgen")
502 (version "0.16.0")
503 (source
504 (origin
505 (method url-fetch)
506 (uri (crate-uri "cbindgen" version))
507 (file-name (string-append name "-" version ".tar.gz"))
508 (sha256
509 (base32 "049cai626nzw0km03parx4sxwaxgbr7i5ifjbjwnfxkqkj5k2i4k"))))
510 (arguments
511 `(#:tests? #false ;missing files
512 #:cargo-inputs
513 (("rust-clap" ,rust-clap-2)
514 ("rust-heck" ,rust-heck-0.3)
515 ("rust-indexmap" ,rust-indexmap-1)
516 ("rust-log" ,rust-log-0.4)
517 ("rust-proc-macro2" ,rust-proc-macro2-1)
518 ("rust-quote" ,rust-quote-1)
519 ("rust-serde" ,rust-serde-1)
520 ("rust-serde-json" ,rust-serde-json-1)
521 ("rust-syn" ,rust-syn-1)
522 ("rust-tempfile" ,rust-tempfile-3)
523 ("rust-toml" ,rust-toml-0.5))
524 #:cargo-development-inputs
525 (("rust-serial-test" ,rust-serial-test-0.5))))))
526
527 (define-public rust-cbindgen-0.15
528 (package
529 (inherit rust-cbindgen)
530 (name "rust-cbindgen")
531 (version "0.15.0")
532 (source
533 (origin
534 (method url-fetch)
535 (uri (crate-uri "cbindgen" version))
536 (file-name (string-append name "-" version ".tar.gz"))
537 (sha256
538 (base32 "0dgf49zij9rxnf0lv4k5gcmx1mxcz16czkk6q63anz0xp8ds3xhx"))))
539 (arguments
540 `(#:tests? #false ;missing files
541 #:cargo-inputs
542 (("rust-clap" ,rust-clap-2)
543 ("rust-heck" ,rust-heck-0.3)
544 ("rust-indexmap" ,rust-indexmap-1)
545 ("rust-log" ,rust-log-0.4)
546 ("rust-proc-macro2" ,rust-proc-macro2-1)
547 ("rust-quote" ,rust-quote-1)
548 ("rust-serde" ,rust-serde-1)
549 ("rust-serde-json" ,rust-serde-json-1)
550 ("rust-syn" ,rust-syn-1)
551 ("rust-tempfile" ,rust-tempfile-3)
552 ("rust-toml" ,rust-toml-0.5))))))
553
554 (define-public rust-cbindgen-0.14
555 (package
556 (inherit rust-cbindgen)
557 (name "rust-cbindgen")
558 (version "0.14.1")
559 (source
560 (origin
561 (method url-fetch)
562 (uri (crate-uri "cbindgen" version))
563 (file-name
564 (string-append name "-" version ".tar.gz"))
565 (sha256
566 (base32
567 "1ppwqbzydxlg9a24lynzfk60xrvqw4k31mpz1wrk6lbf88zf8nxi"))))))
568
569 (define-public rust-cbindgen-0.12
570 (package
571 (inherit rust-cbindgen)
572 (name "rust-cbindgen")
573 (version "0.12.2")
574 (source
575 (origin
576 (method url-fetch)
577 (uri (crate-uri "cbindgen" version))
578 (file-name
579 (string-append name "-" version ".tar.gz"))
580 (sha256
581 (base32
582 "13jzbmjz1bmmfr0i80hw6ar484mgabx3hbpb2ynhk0ddqi0yr58m"))))))
583
584 (define-public tectonic
585 (package
586 (name "tectonic")
587 (version "0.4.1")
588 (source
589 (origin
590 (method url-fetch)
591 (uri (crate-uri "tectonic" version))
592 (file-name (string-append name "-" version ".tar.gz"))
593 (sha256
594 (base32 "16fm2bfvfizrydmirzf0bhr1fidb5slcbvr6150and8yqr8jc4lf"))))
595 (build-system cargo-build-system)
596 (arguments
597 `(#:cargo-inputs
598 (("rust-app-dirs2" ,rust-app-dirs2-2)
599 ("rust-atty" ,rust-atty-0.2)
600 ("rust-byte-unit" ,rust-byte-unit-4)
601 ("rust-cbindgen" ,rust-cbindgen-0.16)
602 ("rust-cc" ,rust-cc-1)
603 ("rust-cfg-if" ,rust-cfg-if-1)
604 ("rust-error-chain" ,rust-error-chain-0.12)
605 ("rust-flate2" ,rust-flate2-1)
606 ("rust-fs2" ,rust-fs2-0.4)
607 ("rust-headers" ,rust-headers-0.2)
608 ("rust-lazy-static" ,rust-lazy-static-1)
609 ("rust-libc" ,rust-libc-0.2)
610 ("rust-md-5" ,rust-md-5-0.9)
611 ("rust-pkg-config" ,rust-pkg-config-0.3)
612 ("rust-regex" ,rust-regex-1)
613 ("rust-reqwest" ,rust-reqwest-0.9)
614 ("rust-serde" ,rust-serde-1)
615 ("rust-sha2" ,rust-sha2-0.9)
616 ("rust-structopt" ,rust-structopt-0.3)
617 ("rust-tectonic-cfg-support" ,rust-tectonic-cfg-support-0.1)
618 ("rust-tectonic-xdv" ,rust-tectonic-xdv-0.1)
619 ("rust-tempfile" ,rust-tempfile-3)
620 ("rust-termcolor" ,rust-termcolor-1)
621 ("rust-toml" ,rust-toml-0.5)
622 ("rust-vcpkg" ,rust-vcpkg-0.2)
623 ("rust-zip" ,rust-zip-0.5))
624 #:cargo-development-inputs
625 (("rust-filetime" ,rust-filetime-0.2)
626 ("rust-futures" ,rust-futures-0.1)
627 ("rust-headers" ,rust-headers-0.2)
628 ("rust-hyper" ,rust-hyper-0.12)
629 ("rust-tempfile" ,rust-tempfile-3)
630 ("rust-tokio" ,rust-tokio-0.1))
631 #:phases
632 (modify-phases %standard-phases
633 (add-after 'install 'install-doc
634 (lambda* (#:key outputs #:allow-other-keys)
635 (let* ((out (assoc-ref outputs "out"))
636 (doc (string-append out "/share/doc/" ,name "-" ,version)))
637 (copy-recursively "docs/src" doc)
638 #t))))))
639 (native-inputs
640 `(("pkg-config" ,pkg-config)))
641 (inputs
642 `(("fontconfig" ,fontconfig)
643 ("harfbuzz" ,harfbuzz)
644 ("openssl" ,openssl)
645 ("zlib" ,zlib)))
646 (home-page "https://tectonic-typesetting.github.io/")
647 (synopsis "Complete, embeddable TeX/LaTeX engine")
648 (description
649 "This package provides a modernized, complete, embeddable
650 TeX/LaTeX engine. Tectonic is forked from the XeTeX extension to the
651 classic Web2C implementation of TeX and uses the TeXLive distribution
652 of support files.")
653 (license license:expat)))
654
655 (define-public tokei
656 (package
657 (name "tokei")
658 (version "12.1.2")
659 (source
660 (origin
661 (method url-fetch)
662 (uri (crate-uri "tokei" version))
663 (file-name (string-append name "-" version ".tar.gz"))
664 (sha256
665 (base32 "000w549v1bpw7r57xw656p40ywf1gimvxxx5cjnri2js0xg927x4"))))
666 (build-system cargo-build-system)
667 (arguments
668 `(#:cargo-inputs
669 (("rust-aho-corasick" ,rust-aho-corasick-0.7)
670 ("rust-clap" ,rust-clap-2)
671 ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
672 ("rust-dashmap" ,rust-dashmap-4)
673 ("rust-dirs" ,rust-dirs-3)
674 ("rust-encoding-rs-io" ,rust-encoding-rs-io-0.1)
675 ("rust-env-logger" ,rust-env-logger-0.8)
676 ("rust-grep-searcher" ,rust-grep-searcher-0.1)
677 ("rust-hex" ,rust-hex-0.4)
678 ("rust-ignore" ,rust-ignore-0.4)
679 ("rust-log" ,rust-log-0.4)
680 ("rust-num-format" ,rust-num-format-0.4)
681 ("rust-once-cell" ,rust-once-cell-1)
682 ("rust-parking-lot" ,rust-parking-lot-0.11)
683 ("rust-rayon" ,rust-rayon-1)
684 ("rust-regex" ,rust-regex-1)
685 ("rust-serde" ,rust-serde-1)
686 ("rust-serde-cbor" ,rust-serde-cbor-0.11)
687 ("rust-serde-json" ,rust-serde-json-1)
688 ("rust-serde-yaml" ,rust-serde-yaml-0.8)
689 ("rust-tera" ,rust-tera-1)
690 ("rust-term-size" ,rust-term-size-0.3)
691 ("rust-toml" ,rust-toml-0.5))
692 #:cargo-development-inputs
693 (("rust-git2" ,rust-git2-0.13)
694 ("rust-regex" ,rust-regex-1)
695 ("rust-tempfile" ,rust-tempfile-3))))
696 (native-inputs
697 `(("pkg-config" ,pkg-config)))
698 (inputs
699 `(("libgit2" ,libgit2)
700 ("openssl" ,openssl)
701 ("zlib" ,zlib)))
702 (home-page "https://tokei.rs")
703 (synopsis "Count code, quickly")
704 (description
705 "Tokei is a program that displays statistics about your code. Tokei will
706 show number of files, total lines within those files and code, comments, and
707 blanks grouped by language.")
708 (license (list license:expat license:asl2.0))))
709
710 (define-public watchexec
711 (package
712 (name "watchexec")
713 (version "1.14.1")
714 (source
715 (origin
716 (method url-fetch)
717 (uri (crate-uri "watchexec" version))
718 (file-name
719 (string-append name "-" version ".tar.gz"))
720 (sha256
721 (base32 "1vqaa462sjpzi0crh12ixqc2wa5bblirc129pnj8jr8iz3xw3gvd"))))
722 (build-system cargo-build-system)
723 (arguments
724 `(#:phases
725 (modify-phases %standard-phases
726 (add-after 'install 'install-completions
727 (lambda* (#:key outputs #:allow-other-keys)
728 (let* ((out (assoc-ref outputs "out"))
729 (zsh (string-append out "/share/zsh/site-functions/_watchexec"))
730 (doc (string-append out "/share/doc/watchexec-" ,version)))
731 (mkdir-p (dirname zsh))
732 (copy-file "completions/zsh" zsh)
733 (install-file "README.md" doc)
734 #t))))
735 #:cargo-inputs
736 (("rust-embed-resource" ,rust-embed-resource-1)
737 ("rust-derive-builder" ,rust-derive-builder-0.9)
738 ("rust-env-logger" ,rust-env-logger-0.7)
739 ("rust-glob" ,rust-glob-0.3)
740 ("rust-globset" ,rust-globset-0.4)
741 ("rust-lazy-static" ,rust-lazy-static-1)
742 ("rust-log" ,rust-log-0.4)
743 ("rust-nix" ,rust-nix-0.17)
744 ("rust-notify" ,rust-notify-4)
745 ("rust-walkdir" ,rust-walkdir-2))))
746 (home-page "https://github.com/watchexec/watchexec")
747 (synopsis "Executes commands in response to file modifications")
748 (description
749 "@command{watchexec} is a simple, standalone tool that watches a path and runs
750 a command whenever it detects modifications.
751
752 Example use cases:
753 @itemize @bullet
754 @item Automatically run unit tests
755 @item Run linters/syntax checkers
756 @end itemize
757
758 Features:
759 @itemize @bullet
760 @item Coalesces multiple file system events into one, for editors that
761 use swap/backup files during saving
762 @item By default, uses @code{.gitignore} and @code{.ignore} to determine which
763 files to ignore notifications for
764 @item Supports watching files with a specific extension
765 @item Supports filtering/ignoring events based on glob patterns
766 @item Launches child processes in a new process group
767 @item Sets environment variables that allow the executed program to learn
768 the details of how it was triggered.
769 @end itemize")
770 (license license:asl2.0)))
771
772 (define-public rust-cargo-c
773 (package
774 (name "rust-cargo-c")
775 (version "0.5.3")
776 (source
777 (origin
778 (method url-fetch)
779 (uri (crate-uri "cargo-c" version))
780 (file-name
781 (string-append name "-" version ".tar.gz"))
782 (sha256
783 (base32
784 "0hsag5g4qngm8alfil2dyvl5sagpqi5nb40c7bhwng2z8mv9r41k"))))
785 (build-system cargo-build-system)
786 (arguments
787 `(#:cargo-inputs
788 (("rust-cbindgen" ,rust-cbindgen)
789 ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)
790 ("rust-structopt" ,rust-structopt-0.3)
791 ("rust-log" ,rust-log-0.4)
792 ("rust-toml" ,rust-toml-0.5)
793 ("rust-cargo-metadata" ,rust-cargo-metadata-0.9)
794 ("rust-serde" ,rust-serde-1)
795 ("rust-serde-derive" ,rust-serde-derive-1)
796 ("rust-regex" ,rust-regex-1))))
797 (home-page "https://github.com/lu-zero/cargo-c")
798 (synopsis "Build and install C-compatible libraries")
799 (description
800 "This package produces and installs a correct pkg-config file, a static
801 library and a dynamic library, and a C header to be used by any C (and
802 C-compatible) software.")
803 (license license:expat)))