aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/shells/zsh/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/shells/zsh/default.nix')
-rw-r--r--nixpkgs/pkgs/shells/zsh/default.nix92
1 files changed, 92 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/shells/zsh/default.nix b/nixpkgs/pkgs/shells/zsh/default.nix
new file mode 100644
index 00000000000..0a26b8a7821
--- /dev/null
+++ b/nixpkgs/pkgs/shells/zsh/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, fetchurl, ncurses, pcre, buildPackages }:
+
+let
+ version = "5.7.1";
+
+ documentation = fetchurl {
+ url = "mirror://sourceforge/zsh/zsh-${version}-doc.tar.xz";
+ sha256 = "1d1r88n1gfdavx4zy3svl1gljrvzim17jb2r834hafg2a016flrh";
+ };
+in
+
+stdenv.mkDerivation {
+ pname = "zsh";
+ inherit version;
+
+ src = fetchurl {
+ url = "mirror://sourceforge/zsh/zsh-${version}.tar.xz";
+ sha256 = "1s3yww0mzgvpc48kp0x868mm3gbna42sbgzya0nknj0x5hn2jq3j";
+ };
+
+ buildInputs = [ ncurses pcre ];
+
+ configureFlags = [
+ "--enable-maildir-support"
+ "--enable-multibyte"
+ "--with-tcsetpgrp"
+ "--enable-pcre"
+ "--enable-zprofile=${placeholder "out"}/etc/zprofile"
+ ];
+
+ # the zsh/zpty module is not available on hydra
+ # so skip groups Y Z
+ checkFlags = map (T: "TESTNUM=${T}") (stdenv.lib.stringToCharacters "ABCDEVW");
+
+ # XXX: think/discuss about this, also with respect to nixos vs nix-on-X
+ postInstall = ''
+ mkdir -p $out/share/info
+ tar xf ${documentation} -C $out/share
+ ln -s $out/share/zsh-*/Doc/zsh.info* $out/share/info/
+
+ mkdir -p $out/etc/
+ cat > $out/etc/zprofile <<EOF
+if test -e /etc/NIXOS; then
+ if test -r /etc/zprofile; then
+ . /etc/zprofile
+ else
+ emulate bash
+ alias shopt=false
+ . /etc/profile
+ unalias shopt
+ emulate zsh
+ fi
+ if test -r /etc/zprofile.local; then
+ . /etc/zprofile.local
+ fi
+else
+ # on non-nixos we just source the global /etc/zprofile as if we did
+ # not use the configure flag
+ if test -r /etc/zprofile; then
+ . /etc/zprofile
+ fi
+fi
+EOF
+ ${if stdenv.hostPlatform == stdenv.buildPlatform then ''
+ $out/bin/zsh -c "zcompile $out/etc/zprofile"
+ '' else ''
+ ${stdenv.lib.getBin buildPackages.zsh}/bin/zsh -c "zcompile $out/etc/zprofile"
+ ''}
+ mv $out/etc/zprofile $out/etc/zprofile_zwc_is_used
+ '';
+ # XXX: patch zsh to take zwc if newer _or equal_
+
+ meta = {
+ description = "The Z shell";
+ longDescription = ''
+ Zsh is a UNIX command interpreter (shell) usable as an interactive login
+ shell and as a shell script command processor. Of the standard shells,
+ zsh most closely resembles ksh but includes many enhancements. Zsh has
+ command line editing, builtin spelling correction, programmable command
+ completion, shell functions (with autoloading), a history mechanism, and
+ a host of other features.
+ '';
+ license = "MIT-like";
+ homepage = http://www.zsh.org/;
+ maintainers = with stdenv.lib.maintainers; [ pSub ];
+ platforms = stdenv.lib.platforms.unix;
+ };
+
+ passthru = {
+ shellPath = "/bin/zsh";
+ };
+}