gnu: libdvdcss: Update to 1.4.3.
[jackhill/guix/guix.git] / gnu / packages / rust-apps.scm
CommitLineData
9e225670 1;;; GNU Guix --- Functional package management for GNU
e29315b2 2;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
d76f073a 3;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
16ffc3b6 4;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
9eed0a74 5;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
ca4b5588 6;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
cc2849bc 7;;; Copyright © 2020 Mark H Weaver <mhw@netris.org>
0a2e80c3 8;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
700ee27f 9;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
4d047d19 10;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
fb51912d 11;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.ccom>
453f18db 12;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
c1ee055c 13;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
9e225670
JS
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)
c40e3d0b
EF
35 #:use-module (gnu packages compression)
36 #:use-module (gnu packages crates-io)
9f86a6da 37 #:use-module (gnu packages crates-graphics)
6e18b41e 38 #:use-module (gnu packages documentation)
baa47f0b
NG
39 #:use-module (gnu packages fontutils)
40 #:use-module (gnu packages gtk)
0f7720d1 41 #:use-module (gnu packages jemalloc)
d883e791 42 #:use-module (gnu packages pcre)
c40e3d0b 43 #:use-module (gnu packages pkg-config)
72926ce5 44 #:use-module (gnu packages python-xyz)
c40e3d0b
EF
45 #:use-module (gnu packages tls)
46 #:use-module (gnu packages version-control))
9e225670 47
c1ee055c
ASM
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
78programming language. It has very few features, and can only serve static
79files. It uses async I/O, and should be quite efficient even when running on
80low-end hardware and serving many concurrent requests.")
81 (license (list license:expat license:asl2.0))))
82
4e811f56
NG
83(define-public bat
84 (package
85 (name "bat")
3ce7c1f3 86 (version "0.18.0")
4e811f56
NG
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
3ce7c1f3 93 (base32 "1hr6vzkw8mdy9v0sg1pg9gibamabhip05s7zdkwzwlv69qnhgs1z"))))
4e811f56
NG
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)
3ce7c1f3 100 ("rust-bugreport" ,rust-bugreport-0.3)
4e811f56 101 ("rust-clap" ,rust-clap-2)
3ce7c1f3
NG
102 ("rust-clircle" ,rust-clircle-0.3)
103 ("rust-console" ,rust-console-0.14)
4e811f56 104 ("rust-content-inspector" ,rust-content-inspector-0.2)
3ce7c1f3 105 ("rust-dirs-next" ,rust-dirs-next-2)
4e811f56
NG
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)
3ce7c1f3 121 ("rust-nix" ,rust-nix-0.19)
4e811f56 122 ("rust-predicates" ,rust-predicates-1)
3ce7c1f3
NG
123 ("rust-serial-test" ,rust-serial-test-0.5)
124 ("rust-tempfile" ,rust-tempfile-3)
125 ("rust-wait-timeout" ,rust-wait-timeout-0.2))))
ee00b7c3
NG
126 (native-inputs
127 `(("pkg-config" ,pkg-config)))
4e811f56 128 (inputs
ee00b7c3
NG
129 `(("libgit2" ,libgit2)
130 ("zlib" ,zlib)))
4e811f56
NG
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
135highlighting for a large number of languages, git integration, and automatic
136paging.")
137 (license (list license:expat license:asl2.0))))
138
fb51912d
SH
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
177Ansible syntax. Benchmark files can be written in YAML.")
178 (license license:gpl3)))
179
d42cbbba
JS
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)
21c8ec75 201 ("rust-lazy-static" ,rust-lazy-static-1)
d42cbbba
JS
202 ("rust-libc" ,rust-libc-0.2)
203 ("rust-locale" ,rust-locale-0.2)
204 ("rust-log" ,rust-log-0.4)
405bd79a 205 ("rust-natord" ,rust-natord-1)
c5e879cd 206 ("rust-num-cpus" ,rust-num-cpus-1)
d42cbbba
JS
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))
79caf46a 216 #:phases
d42cbbba 217 (modify-phases %standard-phases
d42cbbba
JS
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:.*") "")
e827f404 228 (("test!\\(cr:.*") "")
d42cbbba
JS
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:.*") ""))
b76473ec
EF
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))))))
d42cbbba
JS
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
269program @code{ls}. It uses colours to distinguish file types and metadata. It
270also knows about symlinks, extended attributes, and Git.")
271 (license license:expat)))
272
0f7720d1
JS
273(define-public fd
274 (package
275 (name "fd")
bf2ab0a0 276 (version "8.1.1")
0f7720d1
JS
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
bf2ab0a0 285 "124a5r8hpk2phs1288jybh34d48yxy44wr7gv5ggchs272gs2jam"))))
0f7720d1
JS
286 (build-system cargo-build-system)
287 (arguments
288 `(#:cargo-inputs
289 (("rust-ansi-term" ,rust-ansi-term-0.12)
d76f073a 290 ("rust-anyhow" ,rust-anyhow-1)
0f7720d1
JS
291 ("rust-atty" ,rust-atty-0.2)
292 ("rust-clap" ,rust-clap-2)
ec0d943c 293 ("rust-ctrlc" ,rust-ctrlc-3)
880e6334 294 ("rust-dirs" ,rust-dirs-2)
0f7720d1 295 ("rust-globset" ,rust-globset-0.4)
bf2ab0a0 296 ("rust-humantime" ,rust-humantime-2)
0f7720d1
JS
297 ("rust-ignore" ,rust-ignore-0.4)
298 ("rust-jemallocator" ,rust-jemallocator-0.3)
21c8ec75 299 ("rust-lazy-static" ,rust-lazy-static-1)
0f7720d1 300 ("rust-libc" ,rust-libc-0.2)
bf2ab0a0 301 ("rust-lscolors" ,rust-lscolors-0.7)
c5e879cd 302 ("rust-num-cpus" ,rust-num-cpus-1)
6cd7b355 303 ("rust-regex" ,rust-regex-1)
0f7720d1 304 ("rust-regex-syntax" ,rust-regex-syntax-0.6)
bf2ab0a0 305 ("rust-users" ,rust-users-0.10)
0f7720d1
JS
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
9eed0a74 331 (install-completion "^fd.bash$" "/etc/bash_completion.d")
0f7720d1
JS
332 (install-completion "^fd.fish$" "/share/fish/vendor_completions.d")
333 (install-completion "^_fd$" "/share/zsh/site-functions")
9eed0a74
MR
334 (rename-file (string-append out "/etc/bash_completion.d/fd.bash")
335 (string-append out "/etc/bash_completion.d/fd"))
0f7720d1
JS
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}.
342While it does not seek to mirror all of find's powerful functionality, it
343provides defaults for 80% of the use cases.")
344 (license (list license:expat license:asl2.0))))
345
0a2e80c3
GA
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
370for distinguishing different kinds of bytes such as NULL bytes, printable ASCII
371characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
372 (license (list license:expat license:asl2.0))))
373
9e225670
JS
374(define-public ripgrep
375 (package
376 (name "ripgrep")
e4a26e32 377 (version "12.1.1")
9e225670
JS
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
e4a26e32 386 "1grfi0j9zczzipipc21lkdbqmd2lvy2wlqy65fy4sckqvix5amdr"))))
9e225670
JS
387 (build-system cargo-build-system)
388 (arguments
f4521346
NG
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
16ffc3b6 394 (("rust-bstr" ,rust-bstr-0.2)
9e225670
JS
395 ("rust-clap" ,rust-clap-2)
396 ("rust-grep" ,rust-grep-0.2)
397 ("rust-ignore" ,rust-ignore-0.4)
16ffc3b6 398 ("rust-jemallocator" ,rust-jemallocator-0.3)
21c8ec75 399 ("rust-lazy-static" ,rust-lazy-static-1)
9e225670 400 ("rust-log" ,rust-log-0.4)
c5e879cd 401 ("rust-num-cpus" ,rust-num-cpus-1)
6cd7b355 402 ("rust-regex" ,rust-regex-1)
40908e02 403 ("rust-serde-json" ,rust-serde-json-1)
c5e879cd 404 ("rust-termcolor" ,rust-termcolor-1))
9e225670 405 #:cargo-development-inputs
271161db 406 (("rust-serde" ,rust-serde-1)
ef1f71e0 407 ("rust-serde-derive" ,rust-serde-derive-1))
6e18b41e
JK
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"))))
927c2518
JK
422 #t)))
423 #:features '("pcre2")))
6e18b41e 424 (native-inputs
d883e791
JK
425 `(("asciidoc" ,asciidoc)
426 ("pcre2" ,pcre2)
427 ("pkg-config" ,pkg-config)))
9e225670
JS
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
432your current directory for a regex pattern while respecting your
433gitignore rules.")
434 (license (list license:unlicense license:expat))))
c5c48761
EF
435
436(define-public rust-cbindgen
437 (package
438 (name "rust-cbindgen")
3a963cdd 439 (version "0.13.2")
c5c48761
EF
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
3a963cdd 447 "0673pq96hs7waavkv58v2pakpxpsfyjvbraa5kyl2b44phgdzcid"))))
c5c48761
EF
448 (build-system cargo-build-system)
449 (arguments
450 `(#:cargo-inputs
451 (("clap" ,rust-clap-2)
452 ("log" ,rust-log-0.4)
0a568bbc 453 ("proc-macro2" ,rust-proc-macro2-1)
d0faf9c2 454 ("quote" ,rust-quote-1)
271161db 455 ("serde" ,rust-serde-1)
40908e02 456 ("serde-json" ,rust-serde-json-1)
12c6b558 457 ("syn" ,rust-syn-1)
7c6948c7 458 ("tempfile" ,rust-tempfile-3)
ef3827da 459 ("toml" ,rust-toml-0.5))))
c5c48761
EF
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)))
e29315b2 465
72926ce5 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
700ee27f
NG
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
319e4879
NG
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
cc2849bc
MW
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
ca4b5588
LF
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
baa47f0b
NG
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
650TeX/LaTeX engine. Tectonic is forked from the XeTeX extension to the
651classic Web2C implementation of TeX and uses the TeXLive distribution
652of support files.")
653 (license license:expat)))
654
e29315b2
JS
655(define-public tokei
656 (package
657 (name "tokei")
d94f7530 658 (version "12.1.2")
e29315b2 659 (source
d94f7530
NG
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"))))
e29315b2
JS
666 (build-system cargo-build-system)
667 (arguments
668 `(#:cargo-inputs
d94f7530
NG
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)
e29315b2 674 ("rust-encoding-rs-io" ,rust-encoding-rs-io-0.1)
d94f7530 675 ("rust-env-logger" ,rust-env-logger-0.8)
e29315b2
JS
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)
d94f7530
NG
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)
a5630553 683 ("rust-rayon" ,rust-rayon-1)
d94f7530 684 ("rust-regex" ,rust-regex-1)
271161db 685 ("rust-serde" ,rust-serde-1)
d94f7530
NG
686 ("rust-serde-cbor" ,rust-serde-cbor-0.11)
687 ("rust-serde-json" ,rust-serde-json-1)
e29315b2 688 ("rust-serde-yaml" ,rust-serde-yaml-0.8)
d94f7530 689 ("rust-tera" ,rust-tera-1)
e29315b2 690 ("rust-term-size" ,rust-term-size-0.3)
c40e3d0b 691 ("rust-toml" ,rust-toml-0.5))
e29315b2 692 #:cargo-development-inputs
d94f7530 693 (("rust-git2" ,rust-git2-0.13)
6cd7b355 694 ("rust-regex" ,rust-regex-1)
3dbf3a7f 695 ("rust-tempfile" ,rust-tempfile-3))))
c40e3d0b 696 (native-inputs
3dbf3a7f
EF
697 `(("pkg-config" ,pkg-config)))
698 (inputs
c40e3d0b
EF
699 `(("libgit2" ,libgit2)
700 ("openssl" ,openssl)
c40e3d0b 701 ("zlib" ,zlib)))
e29315b2
JS
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
706show number of files, total lines within those files and code, comments, and
707blanks grouped by language.")
708 (license (list license:expat license:asl2.0))))
ca4b5588 709
b958e4be
JK
710(define-public watchexec
711 (package
712 (name "watchexec")
4d047d19 713 (version "1.14.1")
b958e4be
JK
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
4d047d19 721 (base32 "1vqaa462sjpzi0crh12ixqc2wa5bblirc129pnj8jr8iz3xw3gvd"))))
b958e4be
JK
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
0f27a97c 736 (("rust-embed-resource" ,rust-embed-resource-1)
b958e4be
JK
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)
4d047d19 745 ("rust-walkdir" ,rust-walkdir-2))))
b958e4be
JK
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
750a command whenever it detects modifications.
751
752Example use cases:
753@itemize @bullet
754@item Automatically run unit tests
755@item Run linters/syntax checkers
756@end itemize
757
758Features:
759@itemize @bullet
7230f6d5 760@item Coalesces multiple file system events into one, for editors that
b958e4be
JK
761use swap/backup files during saving
762@item By default, uses @code{.gitignore} and @code{.ignore} to determine which
763files 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
768the details of how it was triggered.
769@end itemize")
770 (license license:asl2.0)))
771
ca4b5588
LF
772(define-public rust-cargo-c
773 (package
774 (name "rust-cargo-c")
366a23f8 775 (version "0.5.3")
ca4b5588
LF
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
366a23f8 784 "0hsag5g4qngm8alfil2dyvl5sagpqi5nb40c7bhwng2z8mv9r41k"))))
ca4b5588
LF
785 (build-system cargo-build-system)
786 (arguments
787 `(#:cargo-inputs
366a23f8
EF
788 (("rust-cbindgen" ,rust-cbindgen)
789 ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)
ca4b5588
LF
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)
271161db 794 ("rust-serde" ,rust-serde-1)
ef1f71e0 795 ("rust-serde-derive" ,rust-serde-derive-1)
6cd7b355 796 ("rust-regex" ,rust-regex-1))))
ca4b5588
LF
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
801library and a dynamic library, and a C header to be used by any C (and
802C-compatible) software.")
803 (license license:expat)))