gnu: Add rust-nu-data-0.26.
[jackhill/guix/guix.git] / gnu / packages / shells.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
3 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
4 ;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
5 ;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
6 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
7 ;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at>
8 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
9 ;;; Copyright © 2017, 2018 Nikita <nikita@n0.is>
10 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
11 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
12 ;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com>
13 ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
14 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
15 ;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
16 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
17 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
18 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
19 ;;; Copyright © 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
20 ;;;
21 ;;; This file is part of GNU Guix.
22 ;;;
23 ;;; GNU Guix is free software; you can redistribute it and/or modify it
24 ;;; under the terms of the GNU General Public License as published by
25 ;;; the Free Software Foundation; either version 3 of the License, or (at
26 ;;; your option) any later version.
27 ;;;
28 ;;; GNU Guix is distributed in the hope that it will be useful, but
29 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
30 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 ;;; GNU General Public License for more details.
32 ;;;
33 ;;; You should have received a copy of the GNU General Public License
34 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
35
36 (define-module (gnu packages shells)
37 #:use-module (gnu packages)
38 #:use-module (gnu packages autotools)
39 #:use-module (gnu packages base)
40 #:use-module (gnu packages bash)
41 #:use-module (gnu packages bison)
42 #:use-module (gnu packages crates-graphics)
43 #:use-module (gnu packages crates-io)
44 #:use-module (gnu packages documentation)
45 #:use-module (gnu packages groff)
46 #:use-module (gnu packages guile)
47 #:use-module (gnu packages libbsd)
48 #:use-module (gnu packages libedit)
49 #:use-module (gnu packages linux)
50 #:use-module (gnu packages ncurses)
51 #:use-module (gnu packages pcre)
52 #:use-module (gnu packages perl)
53 #:use-module (gnu packages pkg-config)
54 #:use-module (gnu packages python)
55 #:use-module (gnu packages python-xyz)
56 #:use-module (gnu packages readline)
57 #:use-module (gnu packages scheme)
58 #:use-module (guix build-system cargo)
59 #:use-module (guix build-system cmake)
60 #:use-module (guix build-system gnu)
61 #:use-module (guix build-system python)
62 #:use-module (guix build-system trivial)
63 #:use-module (guix download)
64 #:use-module (guix git-download)
65 #:use-module (guix licenses)
66 #:use-module (guix packages)
67 #:use-module (guix utils))
68
69 (define-public dash
70 (package
71 (name "dash")
72 (version "0.5.11.3")
73 (source
74 (origin
75 (method url-fetch)
76 (uri (string-append "http://gondor.apana.org.au/~herbert/dash/files/"
77 "dash-" version ".tar.gz"))
78 (sha256
79 (base32 "0amwphfal2rnfa63f7qd4i9m4ckv0gm3j6jlxkmfi9x6ddkz3fb2"))
80 (modules '((guix build utils)))
81 (snippet
82 '(begin
83 ;; The man page hails from BSD, where (d)ash is the default shell.
84 ;; This isn't the case on Guix or indeed most other GNU systems.
85 (substitute* "src/dash.1"
86 (("the standard command interpreter for the system")
87 "a command interpreter based on the original Bourne shell"))
88 #t))))
89 (build-system gnu-build-system)
90 (inputs
91 `(("libedit" ,libedit)))
92 (arguments
93 '(#:configure-flags '("--with-libedit")))
94 (home-page "http://gondor.apana.org.au/~herbert/dash")
95 (synopsis "POSIX-compliant shell optimised for size")
96 (description
97 "dash is a POSIX-compliant @command{/bin/sh} implementation that aims to be
98 as small as possible, often without sacrificing speed. It is faster than the
99 GNU Bourne-Again Shell (@command{bash}) at most scripted tasks. dash is a
100 direct descendant of NetBSD's Almquist Shell (@command{ash}).")
101 (license (list bsd-3
102 gpl2+)))) ; mksignames.c
103
104 (define-public fish
105 (package
106 (name "fish")
107 (version "3.1.2")
108 (source
109 (origin
110 (method url-fetch)
111 (uri (string-append "https://github.com/fish-shell/fish-shell/"
112 "releases/download/" version "/"
113 "fish-" version ".tar.gz"))
114 (sha256
115 (base32 "1vblmb3x2k2cb0db5jdyflppnlqsm7i6jjaidyhmvaaw7ch2gffm"))
116 (modules '((guix build utils)))
117 (snippet
118 '(begin
119 (delete-file-recursively "pcre2-10.32") #t))))
120 (build-system cmake-build-system)
121 (inputs
122 `(("fish-foreign-env" ,fish-foreign-env)
123 ("ncurses" ,ncurses)
124 ("pcre2" ,pcre2) ; don't use the bundled PCRE2
125 ("python" ,python))) ; for fish_config and manpage completions
126 (native-inputs
127 `(("doxygen" ,doxygen)
128 ; for 'fish --help'
129 ("groff" ,groff)))
130 (arguments
131 '(#:phases
132 (modify-phases %standard-phases
133 (add-after 'unpack 'set-env
134 (lambda _
135 ;; some tests write to $HOME
136 (setenv "HOME" (getcwd))
137 #t))
138 (add-after 'unpack 'patch-tests
139 (lambda* (#:key inputs #:allow-other-keys)
140 (let ((coreutils (assoc-ref inputs "coreutils"))
141 (bash (assoc-ref inputs "bash")))
142 ;; This test fails
143 (delete-file "tests/checks/pipeline-pgroup.fish")
144 ;; These try to open a terminal
145 (delete-file "tests/checks/interactive.fish")
146 (delete-file "tests/checks/login-interactive.fish")
147 ;; These contain absolute path references
148 (substitute* "src/fish_tests.cpp"
149 (("/bin/echo" echo) (string-append coreutils echo))
150 (("/bin/ca" ca) (string-append coreutils ca))
151 (("\"(/bin/c)\"" _ c) (string-append "\"" coreutils c "\""))
152 (("/bin/ls_not_a_path" ls-not-a-path)
153 (string-append coreutils ls-not-a-path))
154 (("/bin/ls" ls) (string-append coreutils ls))
155 (("(/bin/)\"" _ bin) (string-append coreutils bin "\""))
156 (("/bin -" bin) (string-append coreutils bin))
157 (((string-append
158 "do_test\\(is_potential_path\\("
159 "L\"/usr\", wds, vars, PATH_REQUIRE_DIR\\)\\);"))
160 ""))
161 (substitute*
162 (append (find-files "tests" ".*\\.(in|out|err)$")
163 (find-files "tests/checks" ".*\\.fish"))
164 (("/bin/pwd" pwd) (string-append coreutils pwd))
165 (("/bin/echo" echo) (string-append coreutils echo))
166 (("/bin/sh" sh) (string-append bash sh))
167 (("/bin/ls" ls) (string-append coreutils ls)))
168 (substitute* (find-files "tests" ".*\\.(in|out|err)$")
169 (("/usr/bin") (string-append coreutils "/bin")))
170 #t)))
171 ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish.
172 (add-after 'patch-tests 'patch-fish-config
173 (lambda _
174 (let ((port (open-file "etc/config.fish" "a")))
175 (display (string-append
176 "\n\n"
177 "# Patched by Guix.\n"
178 "# Source /etc/fish/config.fish.\n"
179 "if test -f /etc/fish/config.fish\n"
180 " source /etc/fish/config.fish\n"
181 "end\n")
182 port)
183 (close-port port))
184 #t))
185 ;; Embed absolute paths.
186 (add-before 'install 'embed-absolute-paths
187 (lambda _
188 (substitute* "share/functions/__fish_print_help.fish"
189 (("nroff") (which "nroff")))
190 #t))
191 ;; Enable completions, functions and configurations in user's and
192 ;; system's guix profiles by adding them to __extra_* variables.
193 (add-before 'install 'patch-fish-extra-paths
194 (lambda _
195 (let ((port (open-file "share/__fish_build_paths.fish" "a")))
196 (display
197 (string-append
198 "\n\n"
199 "# Patched by Guix.\n"
200 "# Enable completions, functions and configurations in user's"
201 " and system's guix profiles by adding them to __extra_*"
202 " variables.\n"
203 "set -l __guix_profile_paths ~/.guix-profile"
204 " /run/current-system/profile\n"
205 "set __extra_completionsdir"
206 " $__guix_profile_paths\"/etc/fish/completions\""
207 " $__guix_profile_paths\"/share/fish/vendor_completions.d\""
208 " $__extra_completionsdir\n"
209 "set __extra_functionsdir"
210 " $__guix_profile_paths\"/etc/fish/functions\""
211 " $__guix_profile_paths\"/share/fish/vendor_functions.d\""
212 " $__extra_functionsdir\n"
213 "set __extra_confdir"
214 " $__guix_profile_paths\"/etc/fish/conf.d\""
215 " $__guix_profile_paths\"/share/fish/vendor_conf.d\""
216 " $__extra_confdir\n")
217 port)
218 (close-port port))
219 #t))
220 ;; Use fish-foreign-env to source /etc/profile.
221 (add-before 'install 'source-etc-profile
222 (lambda* (#:key inputs #:allow-other-keys)
223 (let ((port (open-file "share/__fish_build_paths.fish" "a")))
224 (display
225 (string-append
226 "\n\n"
227 "# Patched by Guix.\n"
228 "# Use fish-foreign-env to source /etc/profile.\n"
229 "if status is-login\n"
230 " set fish_function_path "
231 (assoc-ref inputs "fish-foreign-env") "/share/fish/functions"
232 " $__fish_datadir/functions\n"
233 " fenv source /etc/profile\n"
234 " set -e fish_function_path\n"
235 "end\n")
236 port)
237 (close-port port))
238 #t)))))
239 (synopsis "The friendly interactive shell")
240 (description
241 "Fish (friendly interactive shell) is a shell focused on interactive use,
242 discoverability, and friendliness. Fish has very user-friendly and powerful
243 tab-completion, including descriptions of every completion, completion of
244 strings with wildcards, and many completions for specific commands. It also
245 has extensive and discoverable help. A special @command{help} command gives
246 access to all the fish documentation in your web browser. Other features
247 include smart terminal handling based on terminfo, an easy to search history,
248 and syntax highlighting.")
249 (home-page "https://fishshell.com/")
250 (license gpl2)))
251
252 (define-public fish-foreign-env
253 (package
254 (name "fish-foreign-env")
255 (version "0.20190116")
256 (source
257 (origin
258 (method git-fetch)
259 (uri (git-reference
260 (url "https://github.com/oh-my-fish/plugin-foreign-env")
261 (commit "dddd9213272a0ab848d474d0cbde12ad034e65bc")))
262 (file-name (git-file-name name version))
263 (sha256
264 (base32 "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs"))))
265 (build-system trivial-build-system)
266 (arguments
267 '(#:modules ((guix build utils))
268 #:builder
269 (begin
270 (use-modules (guix build utils))
271 (let* ((source (assoc-ref %build-inputs "source"))
272 (out (assoc-ref %outputs "out"))
273 (func-path (string-append out "/share/fish/functions")))
274 (mkdir-p func-path)
275 (copy-recursively (string-append source "/functions")
276 func-path)
277
278 ;; Embed absolute paths.
279 (substitute* `(,(string-append func-path "/fenv.fish")
280 ,(string-append func-path "/fenv.apply.fish")
281 ,(string-append func-path "/fenv.main.fish"))
282 (("bash")
283 (string-append (assoc-ref %build-inputs "bash") "/bin/bash"))
284 (("sed")
285 (string-append (assoc-ref %build-inputs "sed") "/bin/sed"))
286 ((" tr ")
287 (string-append " " (assoc-ref %build-inputs "coreutils")
288 "/bin/tr ")))))))
289 (inputs
290 `(("bash" ,bash)
291 ("coreutils" ,coreutils)
292 ("sed" ,sed)))
293 (home-page "https://github.com/oh-my-fish/plugin-foreign-env")
294 (synopsis "Foreign environment interface for fish shell")
295 (description "@code{fish-foreign-env} wraps bash script execution in a way
296 that environment variables that are exported or modified get imported back
297 into fish.")
298 (license expat)))
299
300 (define-public rc
301 (package
302 (name "rc")
303 (version "1.7.4")
304 (source (origin
305 (method git-fetch)
306 (uri (git-reference
307 (url "https://github.com/rakitzis/rc")
308 (commit (string-append "v" version))))
309 (sha256
310 (base32
311 "0vj1h4pcg13vxsiydmmk87dr2sra9h4gwx0c4q6fjsiw4in78rrd"))
312 (file-name (git-file-name name version))))
313 (build-system gnu-build-system)
314 (arguments
315 `(#:configure-flags
316 '("--with-edit=gnu")
317 #:phases
318 (modify-phases %standard-phases
319 (add-before 'bootstrap 'patch-trip.rc
320 (lambda _
321 (substitute* "trip.rc"
322 (("/bin/pwd") (which "pwd"))
323 (("/bin/sh") (which "sh"))
324 (("/bin/rm") (which "rm"))
325 (("/bin\\)") (string-append (dirname (which "rm")) ")")))
326 #t)))))
327 (inputs `(("readline" ,readline)
328 ("perl" ,perl)))
329 (native-inputs `(("autoconf" ,autoconf)
330 ("automake" ,automake)
331 ("libtool" ,libtool)
332 ("pkg-config" ,pkg-config)))
333 (synopsis "Alternative implementation of the rc shell by Byron Rakitzis")
334 (description
335 "This is a reimplementation by Byron Rakitzis of the Plan 9 shell. It
336 has a small feature set similar to a traditional Bourne shell.")
337 (home-page "https://github.com/rakitzis/rc")
338 (license zlib)))
339
340 (define-public es
341 (package
342 (name "es")
343 (version "0.9.1")
344 (source
345 (origin
346 (method url-fetch)
347 (uri (string-append "https://github.com/wryun/es-shell/releases/"
348 "download/v" version "/es-" version ".tar.gz"))
349 (sha256
350 (base32
351 "1fplzxc6lncz2lv2fyr2ig23rgg5j96rm2bbl1rs28mik771zd5h"))
352 (file-name (string-append name "-" version ".tar.gz"))))
353 (build-system gnu-build-system)
354 (arguments
355 `(#:test-target "test"
356 #:phases
357 (modify-phases %standard-phases
358 (add-before 'configure 're-enter-rootdir
359 ;; The tarball has no folder.
360 (lambda _
361 (chdir ".."))))))
362 (inputs
363 `(("readline" ,readline)))
364 (native-inputs
365 `(("bison" ,bison)))
366 (synopsis "Extensible shell with higher-order functions")
367 (description
368 "Es is an extensible shell. The language was derived from the Plan 9
369 shell, rc, and was influenced by functional programming languages, such as
370 Scheme, and the Tcl embeddable programming language. This implementation is
371 derived from Byron Rakitzis's public domain implementation of rc, and was
372 written by Paul Haahr and Byron Rakitzis.")
373 (home-page "https://wryun.github.io/es-shell/")
374 (license public-domain)))
375
376 (define-public tcsh
377 (package
378 (name "tcsh")
379 (version "6.22.02")
380 (source (origin
381 (method url-fetch)
382 ;; Old tarballs are moved to old/.
383 (uri (list (string-append "ftp://ftp.astron.com/pub/tcsh/"
384 "tcsh-" version ".tar.gz")
385 (string-append "ftp://ftp.astron.com/pub/tcsh/"
386 "old/tcsh-" version ".tar.gz")))
387 (sha256
388 (base32
389 "0nw8prz1n0lmr82wnpyhrzmki630afn7p9cfgr3vl00vr9c72a7d"))
390 (patches (search-patches "tcsh-fix-autotest.patch"))
391 (patch-flags '("-p0"))))
392 (build-system gnu-build-system)
393 (native-inputs
394 `(("autoconf" ,autoconf)
395 ("perl" ,perl)))
396 (inputs
397 `(("ncurses" ,ncurses)))
398 (arguments
399 `(#:phases
400 (modify-phases %standard-phases
401 ,@(if (%current-target-system)
402 '((add-before 'configure 'set-cross-cc
403 (lambda _
404 (substitute* "configure"
405 (("CC_FOR_GETHOST=\"cc\"")
406 "CC_FOR_GETHOST=\"gcc\""))
407 #t)))
408 '())
409 (add-before 'check 'patch-test-scripts
410 (lambda _
411 ;; Take care of pwd
412 (substitute* '("tests/commands.at" "tests/variables.at")
413 (("/bin/pwd") (which "pwd")))
414 ;; The .at files create shell scripts without shebangs. Erk.
415 (substitute* "tests/commands.at"
416 (("./output.sh") "/bin/sh output.sh"))
417 (substitute* "tests/syntax.at"
418 (("; other_script.csh") "; /bin/sh other_script.csh"))
419 ;; Now, let's generate the test suite and patch it
420 (invoke "make" "tests/testsuite")
421
422 ;; This file is ISO-8859-1 encoded.
423 (with-fluids ((%default-port-encoding #f))
424 (substitute* "tests/testsuite"
425 (("/bin/sh") (which "sh"))))
426 #t))
427 (add-after 'install 'post-install
428 (lambda* (#:key inputs outputs #:allow-other-keys)
429 (let* ((out (assoc-ref %outputs "out"))
430 (bin (string-append out "/bin")))
431 (with-directory-excursion bin
432 (symlink "tcsh" "csh"))
433 #t))))))
434 (home-page "https://www.tcsh.org/")
435 (synopsis "Unix shell based on csh")
436 (description
437 "Tcsh is an enhanced, but completely compatible version of the Berkeley
438 UNIX C shell (csh). It is a command language interpreter usable both as an
439 interactive login shell and a shell script command processor. It includes a
440 command-line editor, programmable word completion, spelling correction, a
441 history mechanism, job control and a C-like syntax.")
442 (license bsd-4)))
443
444 (define-public zsh
445 (package
446 (name "zsh")
447 (version "5.8")
448 (source (origin
449 (method url-fetch)
450 (uri (list (string-append
451 "https://www.zsh.org/pub/zsh-" version
452 ".tar.xz")
453 (string-append
454 "https://www.zsh.org/pub/old/zsh-" version
455 ".tar.xz")))
456 (sha256
457 (base32
458 "09yyaadq738zlrnlh1hd3ycj1mv3q5hh4xl1ank70mjnqm6bbi6w"))))
459 (build-system gnu-build-system)
460 (arguments `(#:configure-flags
461 `("--with-tcsetpgrp"
462 "--enable-pcre"
463 "--enable-maildir-support"
464 ;; share/zsh/site-functions isn't populated
465 "--disable-site-fndir"
466 ,(string-append
467 "--enable-additional-fpath="
468 "/usr/local/share/zsh/site-functions," ; for foreign OS
469 "/run/current-system/profile/share/zsh/site-functions"))
470 #:phases
471 (modify-phases %standard-phases
472 (add-before 'configure 'fix-sh
473 (lambda _
474 ;; Some of the files are ISO-8859-1 encoded.
475 (with-fluids ((%default-port-encoding #f))
476 (substitute*
477 '("configure"
478 "configure.ac"
479 "Src/exec.c"
480 "Src/mkmakemod.sh"
481 "Config/installfns.sh"
482 "Config/defs.mk.in"
483 "Test/E01options.ztst"
484 "Test/A05execution.ztst"
485 "Test/A01grammar.ztst"
486 "Test/A06assign.ztst"
487 "Test/B02typeset.ztst"
488 "Completion/Unix/Command/_init_d"
489 "Util/preconfig")
490 (("/bin/sh") (which "sh"))))))
491 (add-before 'check 'patch-test
492 (lambda _
493 ;; In Zsh, `command -p` searches a predefined set of
494 ;; paths that don't exist in the build environment. See
495 ;; the assignment of 'path' in Src/init.c'
496 (substitute* "Test/A01grammar.ztst"
497 (("command -pv") "command -v")
498 (("command -p") "command ")
499 (("'command' -p") "'command' "))
500 #t)))))
501 (native-inputs `(("autoconf" ,autoconf)))
502 (inputs `(("ncurses" ,ncurses)
503 ("pcre" ,pcre)
504 ("perl" ,perl)))
505 (synopsis "Powerful shell for interactive use and scripting")
506 (description "The Z shell (zsh) is a Unix shell that can be used
507 as an interactive login shell and as a powerful command interpreter
508 for shell scripting. Zsh can be thought of as an extended Bourne shell
509 with a large number of improvements, including some features of bash,
510 ksh, and tcsh.")
511 (home-page "https://www.zsh.org/")
512
513 ;; The whole thing is under an MIT/X11-style license, but there's one
514 ;; command, 'Completion/Unix/Command/_darcs', which is under GPLv2+.
515 (license gpl2+)))
516
517 (define-public xonsh
518 (package
519 (name "xonsh")
520 (version "0.9.25")
521 (source
522 (origin
523 (method url-fetch)
524 (uri (pypi-uri "xonsh" version))
525 (sha256
526 (base32 "0q1xy0k5mvz4031p4d3y0j7ljpx32rmpk21jy148l6xcss039br0"))
527 (modules '((guix build utils)))
528 (snippet
529 `(begin
530 ;; Delete bundled PLY.
531 (delete-file-recursively "xonsh/ply")
532 (substitute* "setup.py"
533 (("\"xonsh\\.ply\\.ply\",") ""))
534 ;; Use our properly packaged PLY instead.
535 (substitute* (list "setup.py"
536 "tests/test_lexer.py"
537 "xonsh/__amalgam__.py"
538 "xonsh/lexer.py"
539 "xonsh/parsers/base.py"
540 "xonsh/xonfig.py")
541 (("from xonsh\\.ply\\.(.*) import" _ module)
542 (format #f "from ~a import" module))
543 (("from xonsh\\.ply import") "import"))
544 #t))))
545 (build-system python-build-system)
546 (arguments
547 '(;; TODO Try running run the test suite.
548 ;; See 'requirements-tests.txt' in the source distribution for more
549 ;; information.
550 #:tests? #f))
551 (inputs
552 `(("python-ply" ,python-ply)))
553 (home-page "https://xon.sh/")
554 (synopsis "Python-ish shell")
555 (description
556 "Xonsh is a Python-ish, BASHwards-looking shell language and command
557 prompt. The language is a superset of Python 3.4+ with additional shell
558 primitives that you are used to from Bash and IPython. It works on all major
559 systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily
560 use of experts and novices alike.")
561 (license bsd-2)))
562
563 (define-public scsh
564 (let ((commit "114432435e4eadd54334df6b37fcae505079b49f")
565 (revision "1"))
566 (package
567 (name "scsh")
568 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
569 (source
570 (origin
571 (method git-fetch)
572 (uri (git-reference
573 (url "https://github.com/scheme/scsh")
574 (commit commit)))
575 (file-name (string-append name "-" version "-checkout"))
576 (sha256
577 (base32
578 "1ghk08akiz7hff1pndi8rmgamgcrn2mv9asbss9l79d3c2iaav3q"))))
579 (build-system gnu-build-system)
580 (arguments
581 `(#:test-target "test"
582 #:phases
583 (modify-phases %standard-phases
584 (add-before 'configure 'replace-rx
585 (lambda* (#:key inputs #:allow-other-keys)
586 (let* ((rx (assoc-ref inputs "scheme48-rx"))
587 (rxpath (string-append rx "/share/scheme48-"
588 ,(package-version scheme48)
589 "/rx")))
590 (delete-file-recursively "rx")
591 (symlink rxpath "rx"))
592 #t)))))
593 (inputs
594 `(("scheme48" ,scheme48)
595 ("scheme48-rx" ,scheme48-rx)))
596 (native-inputs
597 `(("autoconf" ,autoconf)
598 ("automake" ,automake)))
599 (home-page "https://github.com/scheme/scsh")
600 (synopsis "Unix shell embedded in Scheme")
601 (description
602 "Scsh is a Unix shell embedded in Scheme. Scsh has two main
603 components: a process notation for running programs and setting up pipelines
604 and redirections, and a complete syscall library for low-level access to the
605 operating system.")
606 (license bsd-3))))
607
608 (define-public linenoise
609 (let ((commit "2105ce445821381cf1bca87b6d386d4ea88ee20d")
610 (revision "1"))
611 (package
612 (name "linenoise")
613 (version (string-append "1.0-" revision "." (string-take commit 7)))
614 (source
615 (origin
616 (method git-fetch)
617 (uri (git-reference
618 (url "https://github.com/antirez/linenoise")
619 (commit commit)))
620 (file-name (string-append name "-" version "-checkout"))
621 (sha256
622 (base32
623 "1z16qwix8z6a40fskdgxsibkqgdrp4q6ncp4n6hnv4r9iihy2d8r"))))
624 (build-system gnu-build-system)
625 (arguments
626 `(#:tests? #f ; no tests are included
627 #:make-flags
628 (list ,(string-append "CC=" (cc-for-target)))
629 #:phases
630 (modify-phases %standard-phases
631 (delete 'configure)
632 (replace 'install
633 (lambda* (#:key outputs #:allow-other-keys)
634 ;; At the moment there is no 'make install' in upstream.
635 (let* ((out (assoc-ref outputs "out")))
636 (install-file "linenoise.h"
637 (string-append out "/include/linenoise"))
638 (install-file "linenoise.c"
639 (string-append out "/include/linenoise"))
640 #t))))))
641 (home-page "https://github.com/antirez/linenoise")
642 (synopsis "Minimal zero-config readline replacement")
643 (description
644 "Linenoise is a minimal, zero-config, readline replacement.
645 Its features include:
646
647 @enumerate
648 @item Single and multi line editing mode with the usual key bindings
649 @item History handling
650 @item Completion
651 @item Hints (suggestions at the right of the prompt as you type)
652 @item A subset of VT100 escapes, ANSI.SYS compatible
653 @end enumerate\n")
654 (license bsd-2))))
655
656 (define-public s-shell
657 (let ((commit "da2e5c20c0c5f477ec3426dc2584889a789b1659")
658 (revision "2"))
659 (package
660 (name "s-shell")
661 (version (git-version "0.0.0" revision commit))
662 (source
663 (origin
664 (method git-fetch)
665 (uri (git-reference
666 (url "https://github.com/rain-1/s")
667 (commit commit)))
668 (file-name (string-append name "-" version "-checkout"))
669 (sha256
670 (base32
671 "0qiny71ww5nhzy4mnc8652hn0mlxyb67h333gbdxp4j4qxsi13q4"))))
672 (build-system gnu-build-system)
673 (inputs
674 `(("linenoise" ,linenoise)))
675 (arguments
676 `(#:tests? #f
677 #:make-flags (list "CC=gcc"
678 (string-append "PREFIX="
679 (assoc-ref %outputs "out")))
680 #:phases
681 (modify-phases %standard-phases
682 (add-after 'unpack 'install-directory-fix
683 (lambda* (#:key outputs #:allow-other-keys)
684 (let* ((out (assoc-ref outputs "out"))
685 (bin (string-append out "/bin")))
686 (substitute* "Makefile"
687 (("out") bin))
688 #t)))
689 (add-after 'install 'manpage
690 (lambda* (#:key outputs #:allow-other-keys)
691 (install-file "s.1" (string-append (assoc-ref outputs "out")
692 "/share/man/man1"))))
693 (replace 'configure
694 (lambda* (#:key inputs outputs #:allow-other-keys)
695 ;; At this point linenoise is meant to be included,
696 ;; so we have to really copy it into the working directory
697 ;; of s.
698 (let* ((linenoise (assoc-ref inputs "linenoise"))
699 (noisepath (string-append linenoise "/include/linenoise"))
700 (out (assoc-ref outputs "out")))
701 (copy-recursively noisepath "linenoise")
702 (substitute* "s.c"
703 (("/bin/s") (string-append out "/bin/s")))
704 #t))))))
705 (home-page "https://github.com/rain-1/s")
706 (synopsis "Extremely minimal shell with the simplest syntax possible")
707 (description
708 "S is a new shell that aims to be extremely simple. It does not
709 implement the POSIX shell standard.
710
711 There are no globs or \"splatting\" where a variable $FOO turns into multiple
712 command line arguments. One token stays one token forever.
713 This is a \"no surprises\" straightforward approach.
714
715 There are no redirection operators > in the shell language, they are added as
716 extra programs. > is just another unix command, < is essentially cat(1).
717 A @code{andglob} program is also provided along with s.")
718 (license bsd-3))))
719
720 (define-public oksh
721 (package
722 (name "oksh")
723 (version "0.5.9")
724 (source
725 (origin
726 (method url-fetch)
727 (uri (string-append "https://connochaetos.org/oksh/oksh-"
728 version ".tar.gz"))
729 (sha256
730 (base32
731 "0ln9yf6pxngsviqszv8klnnvn8vcpplvj1njdn8xr2y8frkbw8r3"))))
732 (build-system gnu-build-system)
733 (arguments
734 `(; The test files are not part of the distributed tarball.
735 #:tests? #f))
736 (home-page "https://connochaetos.org/oksh")
737 (synopsis "Port of OpenBSD Korn Shell")
738 (description
739 "Oksh is a port of the OpenBSD Korn Shell.
740 The OpenBSD Korn Shell is a cleaned up and enhanced ksh.")
741 (license gpl3+)))
742
743 (define-public loksh
744 (package
745 (name "loksh")
746 (version "6.6")
747 (source
748 (origin
749 (method git-fetch)
750 (uri (git-reference
751 (url "https://github.com/dimkr/loksh")
752 (commit version)))
753 (file-name (git-file-name name version))
754 (sha256
755 (base32 "1a8s64n97ikvvi7ckirxnnjvcmhr3dd4rnqm2ivapyzb0wp42jk7"))))
756 (build-system gnu-build-system)
757 (inputs
758 `(("libbsd" ,libbsd)
759 ("ncurses" ,ncurses)))
760 (native-inputs
761 `(("pkg-config" ,pkg-config)))
762 (arguments
763 `(#:tests? #f ; no tests included
764 #:make-flags (list "CC=gcc" "HAVE_LIBBSD=1"
765 (string-append "PREFIX="
766 (assoc-ref %outputs "out")))
767 #:phases
768 (modify-phases %standard-phases
769 (delete 'configure)))) ; no configure script
770 (home-page "https://github.com/dimkr/loksh")
771 (synopsis "Korn Shell from OpenBSD")
772 (description
773 "loksh is a Linux port of OpenBSD's @command{ksh}. It is a small,
774 interactive POSIX shell targeted at resource-constrained systems.")
775 ;; The file 'LEGAL' says it is the public domain, and the 2
776 ;; exceptions which are listed are not included in this port.
777 (license public-domain)))
778
779 (define-public mksh
780 (package
781 (name "mksh")
782 (version "58")
783 (source
784 (origin
785 (method url-fetch)
786 (uri (string-append "https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R"
787 version ".tgz"))
788 (sha256
789 (base32 "1337zjvzh14yncg9igdry904a3ns52l8rnm1kcq262w7f5xyp2v0"))))
790 (build-system gnu-build-system)
791 (arguments
792 `(#:tests? #f ; tests require access to /dev/tty
793 #:phases
794 (modify-phases %standard-phases
795 (delete 'configure)
796 (replace 'build
797 (lambda _
798 (setenv "CC" "gcc")
799 (invoke (which "sh") "Build.sh")))
800 (replace 'install
801 (lambda* (#:key outputs #:allow-other-keys)
802 (let* ((out (assoc-ref outputs "out"))
803 (bin (string-append out "/bin"))
804 (man (string-append out "/share/man/man1")))
805 (install-file "mksh" bin)
806 (with-directory-excursion bin
807 (symlink "mksh" "ksh"))
808 (install-file "mksh.1" man)
809 #t))))))
810 (home-page "https://www.mirbsd.org/mksh.htm")
811 (synopsis "Korn Shell from MirBSD")
812 (description "mksh is an actively developed free implementation of the
813 Korn Shell programming language and a successor to the Public Domain Korn
814 Shell (pdksh).")
815 (license (list miros
816 isc)))) ; strlcpy.c
817
818 (define-public oil
819 (package
820 (name "oil")
821 (version "0.8.7")
822 (source
823 (origin
824 (method url-fetch)
825 (uri (string-append "https://www.oilshell.org/download/oil-"
826 version ".tar.gz"))
827 (sha256
828 (base32 "0yxd020jkwhhvq2l8hd9npp2vn6fvm11f0izfzwdl2npbnc976jr"))))
829 (build-system gnu-build-system)
830 (arguments
831 `(#:strip-binaries? #f ; strip breaks the binary
832 #:phases
833 (modify-phases %standard-phases
834 (replace 'configure
835 (lambda* (#:key outputs #:allow-other-keys)
836 (let ((out (assoc-ref outputs "out")))
837 (setenv "CC" ,(cc-for-target))
838 (substitute* "configure"
839 ((" cc ") " $CC "))
840 (invoke "./configure" (string-append "--prefix=" out)
841 "--with-readline"))))
842 (replace 'check
843 ;; The tests are not distributed in the tarballs but upstream
844 ;; recommends running this smoke test.
845 ;; https://github.com/oilshell/oil/blob/release/0.8.0/INSTALL.txt#L38-L48
846 (lambda _
847 (let* ((oil "_bin/oil.ovm"))
848 (invoke/quiet oil "osh" "-c" "echo hi")
849 (invoke/quiet oil "osh" "-n" "configure")))))))
850 (inputs
851 `(("readline" ,readline)))
852 (home-page "https://www.oilshell.org")
853 (synopsis "Programming language and Bash-compatible Unix shell")
854 (description "Oil is a programming language with automatic translation for
855 Bash. It includes osh, a Unix/POSIX shell that runs unmodified Bash
856 scripts.")
857 (license (list psfl ; tarball includes python2.7
858 asl2.0))))
859
860 (define-public oil-shell
861 (deprecated-package "oil-shell" oil))
862
863 (define-public gash
864 (package
865 (name "gash")
866 (version "0.2.0")
867 (source
868 (origin (method url-fetch)
869 (uri (string-append "mirror://savannah/gash/gash-"
870 version ".tar.gz"))
871 (sha256
872 (base32
873 "13m0yz5h9nj3x40mr6wr5xcpq1lscndfwcicw3skrz801025hhgf"))
874 (modules '((guix build utils)))
875 (snippet
876 '(begin
877 ;; Allow builds with Guile 3.0.
878 (substitute* "configure"
879 (("search=\"2\\.2 2\\.0\"")
880 "search=\"3.0 2.2 2.0\""))
881 #t))))
882 (build-system gnu-build-system)
883 (native-inputs
884 `(("pkg-config" ,pkg-config)))
885 (inputs
886 `(("guile" ,guile-3.0)))
887 (arguments
888 '(#:make-flags '("XFAIL_TESTS=tests/redirects.org")))
889 (home-page "https://savannah.nongnu.org/projects/gash/")
890 (synopsis "POSIX-compatible shell written in Guile Scheme")
891 (description "Gash is a POSIX-compatible shell written in Guile
892 Scheme. It provides both the shell interface, as well as a Guile
893 library for parsing shell scripts. Gash is designed to bootstrap Bash
894 as part of the Guix bootstrap process.")
895 (license gpl3+)))
896
897 (define-public gash-utils
898 (package
899 (name "gash-utils")
900 (version "0.1.0")
901 (source (origin
902 (method url-fetch)
903 (uri (string-append "mirror://savannah/gash/gash-utils-"
904 version ".tar.gz"))
905 (sha256
906 (base32
907 "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk"))
908 (patches (search-patches "gash-utils-ls-test.patch"))
909 (modules '((guix build utils)))
910 (snippet
911 '(begin
912 ;; Allow builds with Guile 3.0.
913 (substitute* "configure"
914 (("search=\"2\\.2 2\\.0\"")
915 "search=\"3.0 2.2 2.0\""))
916 #t))))
917 (build-system gnu-build-system)
918 (native-inputs
919 `(("pkg-config" ,pkg-config)))
920 (inputs
921 `(("guile" ,guile-3.0)
922 ("gash" ,gash)))
923 (home-page "https://savannah.nongnu.org/projects/gash/")
924 (synopsis "Core POSIX utilities written in Guile Scheme")
925 (description "Gash-Utils provides Scheme implementations of many
926 common POSIX utilities (there are about 40 of them, ranging in
927 complexity from @command{false} to @command{awk}). The utilities are
928 designed to be capable of bootstrapping their standard GNU counterparts.
929 Underpinning these utilities are many Scheme interfaces for manipulating
930 files and text.")
931 (license gpl3+)))
932
933 (define-public rust-nu-data-0.26
934 (package
935 (name "rust-nu-data")
936 (version "0.26.0")
937 (source
938 (origin
939 (method url-fetch)
940 (uri (crate-uri "nu-data" version))
941 (file-name (string-append name "-" version ".tar.gz"))
942 (sha256
943 (base32 "1jmicfs49laczgvif5axv2gb0c52hrfxvf3ywi7iinr7n8h1sfpx"))))
944 (build-system cargo-build-system)
945 (arguments
946 `(#:skip-build? #t
947 #:cargo-inputs
948 (("rust-ansi-term" ,rust-ansi-term-0.12)
949 ("rust-bigdecimal" ,rust-bigdecimal-0.2)
950 ("rust-byte-unit" ,rust-byte-unit-4)
951 ("rust-chrono" ,rust-chrono-0.4)
952 ("rust-derive-new" ,rust-derive-new-0.5)
953 ("rust-directories-next" ,rust-directories-next-2)
954 ("rust-dirs-next" ,rust-dirs-next-2)
955 ("rust-getset" ,rust-getset-0.1)
956 ("rust-indexmap" ,rust-indexmap-1)
957 ("rust-log" ,rust-log-0.4)
958 ("rust-nu-errors" ,rust-nu-errors-0.26)
959 ("rust-nu-protocol" ,rust-nu-protocol-0.26)
960 ("rust-nu-source" ,rust-nu-source-0.26)
961 ("rust-nu-table" ,rust-nu-table-0.26)
962 ("rust-nu-test-support" ,rust-nu-test-support-0.26)
963 ("rust-nu-value-ext" ,rust-nu-value-ext-0.26)
964 ("rust-num-bigint" ,rust-num-bigint-0.3)
965 ("rust-num-format" ,rust-num-format-0.4)
966 ("rust-num-traits" ,rust-num-traits-0.2)
967 ("rust-parking-lot" ,rust-parking-lot-0.11)
968 ("rust-query-interface" ,rust-query-interface-0.3)
969 ("rust-serde" ,rust-serde-1)
970 ("rust-toml" ,rust-toml-0.5)
971 ("rust-users" ,rust-users-0.10))))
972 (home-page "https://www.nushell.sh")
973 (synopsis "CLI for nushell")
974 (description "CLI for nushell")
975 (license expat)))
976
977 (define-public rust-nu-errors-0.26
978 (package
979 (name "rust-nu-errors")
980 (version "0.26.0")
981 (source
982 (origin
983 (method url-fetch)
984 (uri (crate-uri "nu-errors" version))
985 (file-name (string-append name "-" version ".tar.gz"))
986 (sha256
987 (base32 "0q6cbb02m9cfvjc7fcfzj814iz9ab2j2m3c3qwqskkrig4cwz3sl"))))
988 (build-system cargo-build-system)
989 (arguments
990 `(#:skip-build? #t
991 #:cargo-inputs
992 (("rust-ansi-term" ,rust-ansi-term-0.12)
993 ("rust-bigdecimal" ,rust-bigdecimal-0.2)
994 ("rust-codespan-reporting" ,rust-codespan-reporting-0.11)
995 ("rust-derive-new" ,rust-derive-new-0.5)
996 ("rust-getset" ,rust-getset-0.1)
997 ("rust-glob" ,rust-glob-0.3)
998 ("rust-nu-source" ,rust-nu-source-0.26)
999 ("rust-num-bigint" ,rust-num-bigint-0.3)
1000 ("rust-num-traits" ,rust-num-traits-0.2)
1001 ("rust-serde" ,rust-serde-1)
1002 ("rust-serde-json" ,rust-serde-json-1)
1003 ("rust-serde-yaml" ,rust-serde-yaml-0.8)
1004 ("rust-toml" ,rust-toml-0.5))))
1005 (home-page "https://www.nushell.sh")
1006 (synopsis "Core error subsystem for Nushell")
1007 (description "Core error subsystem for Nushell")
1008 (license expat)))
1009
1010 (define-public rust-nu-json-0.26
1011 (package
1012 (name "rust-nu-json")
1013 (version "0.26.0")
1014 (source
1015 (origin
1016 (method url-fetch)
1017 (uri (crate-uri "nu-json" version))
1018 (file-name (string-append name "-" version ".tar.gz"))
1019 (sha256
1020 (base32 "085k9p41pqzivw6z6rxxzr8haagwqi795a2dh084qs99cyi5hj2n"))))
1021 (build-system cargo-build-system)
1022 (arguments
1023 `(#:skip-build? #t
1024 #:cargo-inputs
1025 (("rust-lazy-static" ,rust-lazy-static-1)
1026 ("rust-num-traits" ,rust-num-traits-0.2)
1027 ("rust-regex" ,rust-regex-1)
1028 ("rust-serde" ,rust-serde-0.8))))
1029 (home-page "https://www.nushell.sh")
1030 (synopsis "Fork of @code{serde-hjson}")
1031 (description "This package is a fork of @code{serde-hjson}.")
1032 (license expat)))
1033
1034 (define-public rust-nu-parser-0.26
1035 (package
1036 (name "rust-nu-parser")
1037 (version "0.26.0")
1038 (source
1039 (origin
1040 (method url-fetch)
1041 (uri (crate-uri "nu-parser" version))
1042 (file-name (string-append name "-" version ".tar.gz"))
1043 (sha256
1044 (base32 "05wns7z1xifdlypklar2hb2q9515lrlwx5jl69aw3k877nmwg07p"))))
1045 (build-system cargo-build-system)
1046 (arguments
1047 `(#:skip-build? #t
1048 #:cargo-inputs
1049 (("rust-bigdecimal" ,rust-bigdecimal-0.2)
1050 ("rust-codespan-reporting" ,rust-codespan-reporting-0.11)
1051 ("rust-derive-new" ,rust-derive-new-0.5)
1052 ("rust-derive-is-enum-variant" ,rust-derive-is-enum-variant-0.1)
1053 ("rust-dunce" ,rust-dunce-1)
1054 ("rust-indexmap" ,rust-indexmap-1)
1055 ("rust-log" ,rust-log-0.4)
1056 ("rust-nu-errors" ,rust-nu-errors-0.26)
1057 ("rust-nu-protocol" ,rust-nu-protocol-0.26)
1058 ("rust-nu-source" ,rust-nu-source-0.26)
1059 ("rust-nu-test-support" ,rust-nu-test-support-0.26)
1060 ("rust-num-bigint" ,rust-num-bigint-0.3)
1061 ("rust-num-traits" ,rust-num-traits-0.2)
1062 ("rust-serde" ,rust-serde-1)
1063 ("rust-shellexpand" ,rust-shellexpand-2)
1064 ("rust-smart-default" ,rust-smart-default-0.6))))
1065 (home-page "https://www.nushell.sh")
1066 (synopsis "Nushell parser")
1067 (description "Nushell parser")
1068 (license expat)))
1069
1070 (define-public rust-nu-plugin-0.26
1071 (package
1072 (name "rust-nu-plugin")
1073 (version "0.26.0")
1074 (source
1075 (origin
1076 (method url-fetch)
1077 (uri (crate-uri "nu-plugin" version))
1078 (file-name
1079 (string-append name "-" version ".tar.gz"))
1080 (sha256
1081 (base32 "1n7lf9d0dkjdnmwv60szrz22z47aq3yl946f9y20dnk7xy798bv6"))))
1082 (build-system cargo-build-system)
1083 (arguments
1084 `(#:skip-build? #t
1085 #:cargo-inputs
1086 (("rust-bigdecimal" ,rust-bigdecimal-0.2)
1087 ("rust-indexmap" ,rust-indexmap-1)
1088 ("rust-nu-errors" ,rust-nu-errors-0.26)
1089 ("rust-nu-protocol" ,rust-nu-protocol-0.26)
1090 ("rust-nu-source" ,rust-nu-source-0.26)
1091 ("rust-nu-test-support" ,rust-nu-test-support-0.26)
1092 ("rust-nu-value-ext" ,rust-nu-value-ext-0.26)
1093 ("rust-num-bigint" ,rust-num-bigint-0.3)
1094 ("rust-serde" ,rust-serde-1)
1095 ("rust-serde-json" ,rust-serde-json-1))))
1096 (home-page "https://www.nushell.sh")
1097 (synopsis "Nushell Plugin")
1098 (description "Nushell Plugin")
1099 (license expat)))
1100
1101 (define-public rust-nu-protocol-0.26
1102 (package
1103 (name "rust-nu-protocol")
1104 (version "0.26.0")
1105 (source
1106 (origin
1107 (method url-fetch)
1108 (uri (crate-uri "nu-protocol" version))
1109 (file-name (string-append name "-" version ".tar.gz"))
1110 (sha256
1111 (base32 "1s2lm9aydgcwi0h9jhpi9ba5i55k7iv70fpgl85cm7dlw4kyzjv0"))))
1112 (build-system cargo-build-system)
1113 (arguments
1114 `(#:skip-build? #t
1115 #:cargo-inputs
1116 (("rust-bigdecimal" ,rust-bigdecimal-0.2)
1117 ("rust-byte-unit" ,rust-byte-unit-4)
1118 ("rust-chrono" ,rust-chrono-0.4)
1119 ("rust-derive-new" ,rust-derive-new-0.5)
1120 ("rust-getset" ,rust-getset-0.1)
1121 ("rust-indexmap" ,rust-indexmap-1)
1122 ("rust-log" ,rust-log-0.4)
1123 ("rust-nu-errors" ,rust-nu-errors-0.26)
1124 ("rust-nu-source" ,rust-nu-source-0.26)
1125 ("rust-num-bigint" ,rust-num-bigint-0.3)
1126 ("rust-num-integer" ,rust-num-integer-0.1)
1127 ("rust-num-traits" ,rust-num-traits-0.2)
1128 ("rust-serde" ,rust-serde-1)
1129 ("rust-serde-bytes" ,rust-serde-bytes-0.11)
1130 ("rust-serde-json" ,rust-serde-json-1)
1131 ("rust-serde-yaml" ,rust-serde-yaml-0.8)
1132 ("rust-toml" ,rust-toml-0.5))))
1133 (home-page "https://www.nushell.sh")
1134 (synopsis "Core values and protocols for Nushell")
1135 (description "Core values and protocols for Nushell")
1136 (license expat)))
1137
1138 (define-public rust-nu-source-0.26
1139 (package
1140 (name "rust-nu-source")
1141 (version "0.26.0")
1142 (source
1143 (origin
1144 (method url-fetch)
1145 (uri (crate-uri "nu-source" version))
1146 (file-name (string-append name "-" version ".tar.gz"))
1147 (sha256
1148 (base32 "1sdmasal3qqcp8fjpqncppc81m0984bp528lb9zggipbxzjpvb3i"))))
1149 (build-system cargo-build-system)
1150 (arguments
1151 `(#:skip-build? #t
1152 #:cargo-inputs
1153 (("rust-derive-new" ,rust-derive-new-0.5)
1154 ("rust-getset" ,rust-getset-0.1)
1155 ("rust-pretty" ,rust-pretty-0.5)
1156 ("rust-serde" ,rust-serde-1)
1157 ("rust-termcolor" ,rust-termcolor-1))))
1158 (home-page "https://www.nushell.sh")
1159 (synopsis "Source string characterizer for Nushell")
1160 (description
1161 "This package provides a source string characterizer for
1162 Nushell.")
1163 (license expat)))
1164
1165 (define-public rust-nu-stream-0.26
1166 (package
1167 (name "rust-nu-stream")
1168 (version "0.26.0")
1169 (source
1170 (origin
1171 (method url-fetch)
1172 (uri (crate-uri "nu-stream" version))
1173 (file-name (string-append name "-" version ".tar.gz"))
1174 (sha256
1175 (base32 "1y7f28zxfrlhi9qrpbk6dpzb3wr6f59yhx3yim001796c1x6xlcs"))))
1176 (build-system cargo-build-system)
1177 (arguments
1178 `(#:skip-build? #t
1179 #:cargo-inputs
1180 (("rust-futures" ,rust-futures-0.3)
1181 ("rust-nu-errors" ,rust-nu-errors-0.26)
1182 ("rust-nu-protocol" ,rust-nu-protocol-0.26)
1183 ("rust-nu-source" ,rust-nu-source-0.26))))
1184 (home-page "https://www.nushell.sh")
1185 (synopsis "Nushell stream")
1186 (description "This package provides Nushell stream.")
1187 (license expat)))
1188
1189 (define-public rust-nu-table-0.26
1190 (package
1191 (name "rust-nu-table")
1192 (version "0.26.0")
1193 (source
1194 (origin
1195 (method url-fetch)
1196 (uri (crate-uri "nu-table" version))
1197 (file-name (string-append name "-" version ".tar.gz"))
1198 (sha256
1199 (base32 "1kxgmngfzi13xr2r65f5mxy24a8d1d0xrhi9bfjp5955r8r09km4"))))
1200 (build-system cargo-build-system)
1201 (arguments
1202 `(#:skip-build? #t
1203 #:cargo-inputs
1204 (("rust-ansi-term" ,rust-ansi-term-0.12)
1205 ("rust-regex" ,rust-regex-1)
1206 ("rust-unicode-width" ,rust-unicode-width-0.1))))
1207 (home-page "https://www.nushell.sh")
1208 (synopsis "Nushell table printing")
1209 (description "Nushell table printing")
1210 (license expat)))
1211
1212 (define-public rust-nu-test-support-0.26
1213 (package
1214 (name "rust-nu-test-support")
1215 (version "0.26.0")
1216 (source
1217 (origin
1218 (method url-fetch)
1219 (uri (crate-uri "nu-test-support" version))
1220 (file-name (string-append name "-" version ".tar.gz"))
1221 (sha256
1222 (base32 "0nlr9sqjiwviw15x76cc87n6366fxkxz1lsfh6m2ncca1zwgpa69"))))
1223 (build-system cargo-build-system)
1224 (arguments
1225 `(#:skip-build? #t
1226 #:cargo-inputs
1227 (("rust-bigdecimal" ,rust-bigdecimal-0.2)
1228 ("rust-chrono" ,rust-chrono-0.4)
1229 ("rust-dunce" ,rust-dunce-1)
1230 ("rust-getset" ,rust-getset-0.1)
1231 ("rust-glob" ,rust-glob-0.3)
1232 ("rust-indexmap" ,rust-indexmap-1)
1233 ("rust-nu-errors" ,rust-nu-errors-0.26)
1234 ("rust-nu-protocol" ,rust-nu-protocol-0.26)
1235 ("rust-nu-source" ,rust-nu-source-0.26)
1236 ("rust-nu-value-ext" ,rust-nu-value-ext-0.26)
1237 ("rust-num-bigint" ,rust-num-bigint-0.3)
1238 ("rust-tempfile" ,rust-tempfile-3))))
1239 (home-page "https://www.nushell.sh")
1240 (synopsis "Support for writing Nushell tests")
1241 (description "This package provides support for writing Nushell
1242 tests.")
1243 (license expat)))
1244
1245 (define-public rust-nu-value-ext-0.26
1246 (package
1247 (name "rust-nu-value-ext")
1248 (version "0.26.0")
1249 (source
1250 (origin
1251 (method url-fetch)
1252 (uri (crate-uri "nu-value-ext" version))
1253 (file-name
1254 (string-append name "-" version ".tar.gz"))
1255 (sha256
1256 (base32 "12qwxhkxdxsg7q6kbsqg46127lsy150b53kpbly0s8cgwra3bhv5"))))
1257 (build-system cargo-build-system)
1258 (arguments
1259 `(#:skip-build? #t
1260 #:cargo-inputs
1261 (("rust-indexmap" ,rust-indexmap-1)
1262 ("rust-itertools" ,rust-itertools-0.10)
1263 ("rust-nu-errors" ,rust-nu-errors-0.26)
1264 ("rust-nu-protocol" ,rust-nu-protocol-0.26)
1265 ("rust-nu-source" ,rust-nu-source-0.26)
1266 ("rust-num-traits" ,rust-num-traits-0.2))))
1267 (home-page "https://www.nushell.sh")
1268 (synopsis "@code{Extension} traits for values in Nushell")
1269 (description
1270 "This package provides @code{Extension} traits for values in
1271 Nushell.")
1272 (license expat)))