diff options
Diffstat (limited to 'gnu/packages/shells.scm')
-rw-r--r-- | gnu/packages/shells.scm | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm new file mode 100644 index 0000000000..b3fd5fa1cd --- /dev/null +++ b/gnu/packages/shells.scm @@ -0,0 +1,215 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> +;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2015 Jeff Mickey <j@codemac.net> +;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages shells) + #:use-module (gnu packages) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages documentation) + #:use-module (gnu packages libedit) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages readline) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix licenses) + #:use-module (guix packages)) + +(define-public dash + (package + (name "dash") + (version "0.5.9") + (source + (origin + (method url-fetch) + (uri (string-append "http://gondor.apana.org.au/~herbert/dash/files/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "17328wd9n5krr5wd37smrk0y7fdf8aa3hmhm02br5mqpq0a3nycj")) + (modules '((guix build utils))) + (snippet + '(begin + ;; The man page hails from BSD, where (d)ash is the default shell. + ;; This isn't the case on Guix or indeed most other GNU systems. + (substitute* "src/dash.1" + (("the standard command interpreter for the system") + "a command interpreter based on the original Bourne shell")) + #t)))) + (build-system gnu-build-system) + (inputs + `(("libedit" ,libedit))) + (arguments + `(#:configure-flags '("--with-libedit"))) + (home-page "http://gondor.apana.org.au/~herbert/dash") + (synopsis "POSIX-compliant shell optimised for size") + (description + "dash is a POSIX-compliant @command{/bin/sh} implementation that aims to be +as small as possible, often without sacrificing speed. It is faster than the +GNU Bourne-Again Shell (@command{bash}) at most scripted tasks. dash is a +direct descendant of NetBSD's Almquist Shell (@command{ash}).") + (license (list bsd-3 + gpl2+)))) ; mksignames.c + +(define-public fish + (package + (name "fish") + (version "2.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://fishshell.com/files/" + version "/fish-" version ".tar.gz")) + (sha256 + (base32 + "0r46p64lg6da3v6chsa4gisvl04kd3rpy60yih8r870kbp9wm2ij")) + (modules '((guix build utils))) + ;; Don't try to install /etc/fish/config.fish. + (snippet + '(substitute* "Makefile.in" + ((".*INSTALL.*sysconfdir.*fish.*") ""))))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen))) + (inputs + `(("ncurses" ,ncurses) + ("python" ,python-wrapper))) ;for fish_config and manpage completions + (arguments + '(#:tests? #f ; no check target + #:configure-flags '("--sysconfdir=/etc"))) + (synopsis "The friendly interactive shell") + (description + "Fish (friendly interactive shell) is a shell focused on interactive use, +discoverability, and friendliness. Fish has very user-friendly and powerful +tab-completion, including descriptions of every completion, completion of +strings with wildcards, and many completions for specific commands. It also +has extensive and discoverable help. A special help command gives access to +all the fish documentation in your web browser. Other features include smart +terminal handling based on terminfo, an easy to search history, and syntax +highlighting.") + (home-page "https://fishshell.com/") + (license gpl2))) + +(define-public rc + (package + (name "rc") + (version "1.7.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://github.com/rakitzis/rc.git") + ;; commit name 'release: rc-1.7.4' + (commit "c884da53a7c885d46ace2b92de78946855b18e92"))) + (sha256 + (base32 + "00mgzvrrh9w96xa85g4gjbsvq02f08k4jwjcdnxq7kyh5xgiw95l")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + '("--with-edit=gnu") + #:phases + (modify-phases %standard-phases + (add-after + 'unpack 'autoreconf + (lambda _ (zero? (system* "autoreconf" "-vfi")))) + (add-before + 'autoreconf 'patch-trip.rc + (lambda _ + (substitute* "trip.rc" + (("/bin/pwd") (which "pwd")) + (("/bin/sh") (which "sh")) + (("/bin/rm") (which "rm")) + (("/bin\\)") (string-append (dirname (which "rm")) ")"))) + #t))))) + (inputs `(("readline" ,readline) + ("perl" ,perl))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (synopsis "Alternative implementation of the rc shell by Byron Rakitzis") + (description + "This is a reimplementation by Byron Rakitzis of the Plan 9 shell. It +has a small feature set similar to a traditional Bourne shell.") + (home-page "http://github.com/rakitzis/rc") + (license zlib))) + +(define-public tcsh + (package + (name "tcsh") + (version "6.18.01") + (source (origin + (method url-fetch) + ;; Old tarballs are moved to old/. + (uri (list (string-append "ftp://ftp.astron.com/pub/tcsh/" + "tcsh-" version ".tar.gz") + (string-append "ftp://ftp.astron.com/pub/tcsh/" + "old/tcsh-" version ".tar.gz"))) + (sha256 + (base32 + "1a4z9kwgx1iqqzvv64si34m60gj34p7lp6rrcrb59s7ka5wa476q")) + (patches (search-patches "tcsh-fix-autotest.patch")) + (patch-flags '("-p0")))) + (build-system gnu-build-system) + (inputs + `(("autoconf" ,autoconf) + ("coreutils" ,coreutils) + ("ncurses" ,ncurses))) + (arguments + `(#:phases + (alist-cons-before + 'check 'patch-test-scripts + (lambda _ + ;; Take care of pwd + (substitute* '("tests/commands.at" "tests/variables.at") + (("/bin/pwd") (which "pwd"))) + ;; The .at files create shell scripts without shebangs. Erk. + (substitute* "tests/commands.at" + (("./output.sh") "/bin/sh output.sh")) + (substitute* "tests/syntax.at" + (("; other_script.csh") "; /bin/sh other_script.csh")) + ;; Now, let's generate the test suite and patch it + (system* "make" "tests/testsuite") + + ;; This file is ISO-8859-1 encoded. + (with-fluids ((%default-port-encoding #f)) + (substitute* "tests/testsuite" + (("/bin/sh") (which "sh"))))) + (alist-cons-after + 'install 'post-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion bin + (symlink "tcsh" "csh")))) + %standard-phases)))) + (home-page "http://www.tcsh.org/") + (synopsis "Unix shell based on csh") + (description + "Tcsh is an enhanced, but completely compatible version of the Berkeley +UNIX C shell (csh). It is a command language interpreter usable both as an +interactive login shell and a shell script command processor. It includes a +command-line editor, programmable word completion, spelling correction, a +history mechanism, job control and a C-like syntax.") + (license bsd-4))) |