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