summary refs log tree commit diff
path: root/pkgs/tools/networking
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/networking')
-rw-r--r--pkgs/tools/networking/axel/default.nix8
-rw-r--r--pkgs/tools/networking/burpsuite/default.nix3
-rw-r--r--pkgs/tools/networking/ccnet/default.nix29
-rw-r--r--pkgs/tools/networking/cmst/default.nix31
-rw-r--r--pkgs/tools/networking/curl/default.nix7
-rw-r--r--pkgs/tools/networking/http-prompt/default.nix4
-rw-r--r--pkgs/tools/networking/i2p/default.nix4
-rw-r--r--pkgs/tools/networking/logmein-hamachi/default.nix5
-rw-r--r--pkgs/tools/networking/mosh/default.nix6
-rw-r--r--pkgs/tools/networking/network-manager-applet/default.nix4
-rw-r--r--pkgs/tools/networking/network-manager/l2tp.nix15
-rw-r--r--pkgs/tools/networking/network-manager/strongswan.nix7
-rw-r--r--pkgs/tools/networking/ocproxy/default.nix2
-rw-r--r--pkgs/tools/networking/pixiewps/default.nix2
-rw-r--r--pkgs/tools/networking/strongswan/default.nix33
-rw-r--r--pkgs/tools/networking/ua/default.nix2
-rw-r--r--pkgs/tools/networking/zssh/default.nix38
17 files changed, 119 insertions, 81 deletions
diff --git a/pkgs/tools/networking/axel/default.nix b/pkgs/tools/networking/axel/default.nix
index b19d4cca315..c9d689b8b2c 100644
--- a/pkgs/tools/networking/axel/default.nix
+++ b/pkgs/tools/networking/axel/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, autoreconfHook, gettext, libssl }:
+{ stdenv, fetchurl, autoreconfHook, pkgconfig, gettext, libssl }:
 
 stdenv.mkDerivation rec {
   name = "axel-${version}";
-  version = "2.15";
+  version = "2.16.1";
 
   src = fetchurl {
     url = "mirror://debian/pool/main/a/axel/axel_${version}.orig.tar.gz";
-    sha256 = "0wm16s129615i7rw48422q3x3ixr4v2p9942p0s6qk2fjlc3y8hf";
+    sha256 = "0v3hgqrpqqqkj8ghaky88a0wpnpwqd72vd04ywlbhgfzfkfrllk4";
   };
 
-  nativeBuildInputs = [ autoreconfHook ];
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
 
   buildInputs = [ gettext libssl ];
 
diff --git a/pkgs/tools/networking/burpsuite/default.nix b/pkgs/tools/networking/burpsuite/default.nix
index 9d2f83098b8..194758905ff 100644
--- a/pkgs/tools/networking/burpsuite/default.nix
+++ b/pkgs/tools/networking/burpsuite/default.nix
@@ -19,6 +19,8 @@ in stdenv.mkDerivation {
     chmod +x $out/bin/burpsuite
   '';
 
+  preferLocalBuild = true;
+
   meta = {
     description = "An integrated platform for performing security testing of web applications";
     longDescription = ''
@@ -30,7 +32,6 @@ in stdenv.mkDerivation {
     homepage = https://portswigger.net/burp/;
     downloadPage = "https://portswigger.net/burp/freedownload";
     license = [ stdenv.lib.licenses.unfree ];
-    preferLocalBuild = true;
     platforms = jre.meta.platforms;
     hydraPlatforms = [];
     maintainers = [ stdenv.lib.maintainers.bennofs ];
diff --git a/pkgs/tools/networking/ccnet/default.nix b/pkgs/tools/networking/ccnet/default.nix
index 24c86f4fa9a..036819ea76e 100644
--- a/pkgs/tools/networking/ccnet/default.nix
+++ b/pkgs/tools/networking/ccnet/default.nix
@@ -1,36 +1,25 @@
-{stdenv, fetchurl, which, automake, autoconf, pkgconfig, libtool, vala_0_23, python, libsearpc, libzdb, libuuid, libevent, sqlite, openssl}:
+{stdenv, fetchurl, which, autoreconfHook, pkgconfig, vala, python, libsearpc, libzdb, libuuid, libevent, sqlite, openssl}:
 
-stdenv.mkDerivation rec
-{
+stdenv.mkDerivation rec {
   version = "6.1.0";
   seafileVersion = "6.1.0";
   name = "ccnet-${version}";
 
-  src = fetchurl
-  {
+  src = fetchurl {
     url = "https://github.com/haiwen/ccnet/archive/v${version}.tar.gz";
     sha256 = "0q4a102xlcsxlr53h4jr4w8qzkbzvm2f3nk9fsha48h6l2hw34bb";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ which automake autoconf libtool vala_0_23 python ];
+  nativeBuildInputs = [ pkgconfig which autoreconfHook vala python ];
   propagatedBuildInputs = [ libsearpc libzdb libuuid libevent sqlite openssl ];
 
-  preConfigure = ''
-  sed -ie 's|/bin/bash|${stdenv.shell}|g' ./autogen.sh
-  ./autogen.sh
-  '';
+  configureFlags = [ "--enable-server" ];
 
-  configureFlags = "--enable-server";
-
-  buildPhase = "make -j1";
-
-  meta =
-  {
+  meta = with stdenv.lib; {
     homepage = https://github.com/haiwen/ccnet;
     description = "A framework for writing networked applications in C";
-    license = stdenv.lib.licenses.gpl3Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.calrama ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.calrama ];
   };
 }
diff --git a/pkgs/tools/networking/cmst/default.nix b/pkgs/tools/networking/cmst/default.nix
index c7749e578d2..e0912007d95 100644
--- a/pkgs/tools/networking/cmst/default.nix
+++ b/pkgs/tools/networking/cmst/default.nix
@@ -1,41 +1,26 @@
-{ stdenv, fetchFromGitHub, qtbase, qmake, makeWrapper, libX11 }:
+{ stdenv, fetchFromGitHub, qmake, qtbase, libX11 }:
 
 stdenv.mkDerivation rec {
   name = "cmst-${version}";
-  version = "2017.03.18";
+  version = "2017.09.19";
 
   src = fetchFromGitHub {
     repo = "cmst";
     owner = "andrew-bibb";
     rev = name;
-    sha256 = "0lsg8ya36df48ij0jawgli3f63hy6mn9zcla48whb1l4r7cih545";
+    sha256 = "14inss0mr9i4q6vfqqfxbjgpjaclp1kh60qlm5xv4cwnvi395rc7";
   };
 
-  nativeBuildInputs = [ makeWrapper qmake ];
+  nativeBuildInputs = [ qmake ];
 
   buildInputs = [ qtbase ];
 
   enableParallelBuilding = true;
 
-  preConfigure = ''
-    substituteInPlace ./cmst.pro \
-      --replace "/usr/share" "$out/share"
-
-    substituteInPlace ./cmst.pri \
-      --replace "/usr/lib" "$out/lib" \
-      --replace "/usr/share" "$out/share"
-
-    substituteInPlace ./apps/cmstapp/cmstapp.pro \
-      --replace "/usr/bin" "$out/bin"
-
-    substituteInPlace ./apps/rootapp/rootapp.pro \
-      --replace "/etc" "$out/etc" \
-      --replace "/usr/share" "$out/share"
-  '';
-
-  postInstall = ''
-    wrapProgram $out/bin/cmst \
-      --prefix "QTCOMPOSE" ":" "${libX11}/share/X11/locale"
+  postPatch = ''
+    for f in $(find . -name \*.cpp -o -name \*.pri -o -name \*.pro); do
+      substituteInPlace $f --replace /etc $out/etc --replace /usr $out
+    done
   '';
 
   meta = {
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index c356a307e3e..be42c4a1381 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -6,7 +6,7 @@
 , sslSupport ? false, openssl ? null
 , gnutlsSupport ? false, gnutls ? null
 , scpSupport ? false, libssh2 ? null
-, gssSupport ? false, gss ? null
+, gssSupport ? false, kerberos ? null
 , c-aresSupport ? false, c-ares ? null
 , brotliSupport ? false, brotli ? null
 }:
@@ -21,6 +21,7 @@ assert gnutlsSupport -> gnutls != null;
 assert scpSupport -> libssh2 != null;
 assert c-aresSupport -> c-ares != null;
 assert brotliSupport -> brotli != null;
+assert gssSupport -> kerberos != null;
 
 stdenv.mkDerivation rec {
   name = "curl-7.57.0";
@@ -45,7 +46,7 @@ stdenv.mkDerivation rec {
     optional idnSupport libidn ++
     optional ldapSupport openldap ++
     optional zlibSupport zlib ++
-    optional gssSupport gss ++
+    optional gssSupport kerberos ++
     optional c-aresSupport c-ares ++
     optional sslSupport openssl ++
     optional gnutlsSupport gnutls ++
@@ -70,7 +71,7 @@ stdenv.mkDerivation rec {
       ( if brotliSupport then "--with-brotli" else "--without-brotli" )
     ]
     ++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}"
-    ++ stdenv.lib.optional gssSupport "--with-gssapi=${gss}";
+    ++ stdenv.lib.optional gssSupport "--with-gssapi=${kerberos.dev}";
 
   CXX = "c++";
   CXXCPP = "c++ -E";
diff --git a/pkgs/tools/networking/http-prompt/default.nix b/pkgs/tools/networking/http-prompt/default.nix
index 83ad64a66a4..fd7caf92765 100644
--- a/pkgs/tools/networking/http-prompt/default.nix
+++ b/pkgs/tools/networking/http-prompt/default.nix
@@ -20,6 +20,10 @@ pythonPackages.buildPythonApplication rec {
     six
   ];
 
+  checkPhase = ''
+    $out/bin/${name} --version | grep -q "${version}"
+  '';
+
   meta = with stdenv.lib; {
     description = "An interactive command-line HTTP client featuring autocomplete and syntax highlighting";
     homepage = https://github.com/eliangcs/http-prompt;
diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix
index cf26ec61139..d66ff70180a 100644
--- a/pkgs/tools/networking/i2p/default.nix
+++ b/pkgs/tools/networking/i2p/default.nix
@@ -27,10 +27,10 @@ let wrapper = stdenv.mkDerivation rec {
 in
 
 stdenv.mkDerivation rec {
-  name = "i2p-0.9.31";
+  name = "i2p-0.9.32";
   src = fetchurl {
     url = "https://github.com/i2p/i2p.i2p/archive/${name}.tar.gz";
-    sha256 = "1v2my5jqcj8zidxij34h0lpa533rr6ianzz8yld01sxi6gg41w28";
+    sha256 = "1c82yckwzp51wqrr8qhww3sifm1a9nzrymsf9qv99ngsxq4n5l6i";
   };
   buildInputs = [ jdk ant gettext which ];
   patches = [ ./i2p.patch ];
diff --git a/pkgs/tools/networking/logmein-hamachi/default.nix b/pkgs/tools/networking/logmein-hamachi/default.nix
index 6808c5c0a42..bbee6546b2f 100644
--- a/pkgs/tools/networking/logmein-hamachi/default.nix
+++ b/pkgs/tools/networking/logmein-hamachi/default.nix
@@ -8,11 +8,12 @@ let
   arch =
     if stdenv.system == "x86_64-linux" then "x64"
     else if stdenv.system == "i686-linux" then "x86"
-    else abort "Unsupported architecture";
+    else throwSystem;
+  throwSystem = throw "Unsupported system: ${stdenv.system}";
   sha256 =
     if stdenv.system == "x86_64-linux" then "011xg1frhjavv6zj1y3da0yh7rl6v1ax6xy2g8fk3sry9bi2p4j3"
     else if stdenv.system == "i686-linux" then "03ml9xv19km99f0z7fpr21b1zkxvw7q39kjzd8wpb2pds51wnc62"
-    else abort "Unsupported architecture";
+    else throwSystem;
   libraries = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ];
 
 in stdenv.mkDerivation rec {
diff --git a/pkgs/tools/networking/mosh/default.nix b/pkgs/tools/networking/mosh/default.nix
index e66209c7ce9..fb94b750e1d 100644
--- a/pkgs/tools/networking/mosh/default.nix
+++ b/pkgs/tools/networking/mosh/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, zlib, protobuf, ncurses, pkgconfig, IOTty
-, makeWrapper, perl, openssl, autoreconfHook, openssh }:
+, makeWrapper, perl, openssl, autoreconfHook, openssh, bash-completion }:
 
 stdenv.mkDerivation rec {
   name = "mosh-1.3.2";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
-  buildInputs = [ protobuf ncurses zlib IOTty makeWrapper perl openssl ];
+  buildInputs = [ protobuf ncurses zlib IOTty makeWrapper perl openssl bash-completion ];
 
   patches = [ ./ssh_path.patch ];
   postPatch = ''
@@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
         --subst-var-by ssh "${openssh}/bin/ssh"
   '';
 
+  configureFlags = [ "--enable-completion" ];
+
   postInstall = ''
       wrapProgram $out/bin/mosh --prefix PERL5LIB : $PERL5LIB
   '';
diff --git a/pkgs/tools/networking/network-manager-applet/default.nix b/pkgs/tools/networking/network-manager-applet/default.nix
index fc320ba2fb9..d0881c5ac5e 100644
--- a/pkgs/tools/networking/network-manager-applet/default.nix
+++ b/pkgs/tools/networking/network-manager-applet/default.nix
@@ -2,7 +2,7 @@
 , libnotify, libsecret, polkit, isocodes, modemmanager
 , mobile_broadband_provider_info, glib_networking, gsettings_desktop_schemas
 , udev, libgudev, hicolor_icon_theme, jansson, wrapGAppsHook, webkitgtk
-, withGnome ? false }:
+, libindicator-gtk3, libappindicator-gtk3, withGnome ? false }:
 
 stdenv.mkDerivation rec {
   name    = "${pname}-${major}.${minor}";
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   configureFlags = [
     "--sysconfdir=/etc"
     "--without-selinux"
+    "--with-appindicator"
   ];
 
   outputs = [ "out" "dev" ];
@@ -26,6 +27,7 @@ stdenv.mkDerivation rec {
     gnome3.gtk libglade networkmanager libnotify libsecret gsettings_desktop_schemas
     polkit isocodes udev libgudev gnome3.libgnome_keyring
     modemmanager jansson glib_networking
+    libindicator-gtk3 libappindicator-gtk3
   ] ++ stdenv.lib.optional withGnome webkitgtk;
 
   nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ];
diff --git a/pkgs/tools/networking/network-manager/l2tp.nix b/pkgs/tools/networking/network-manager/l2tp.nix
index 91b4a5e8957..b40afa605e3 100644
--- a/pkgs/tools/networking/network-manager/l2tp.nix
+++ b/pkgs/tools/networking/network-manager/l2tp.nix
@@ -5,13 +5,13 @@
 stdenv.mkDerivation rec {
   name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
   pname   = "NetworkManager-l2tp";
-  version = "1.2.4";
+  version = "1.2.8";
 
   src = fetchFromGitHub {
     owner  = "nm-l2tp";
     repo   = "network-manager-l2tp";
     rev    = "${version}";
-    sha256 = "1mvn0z1vl4j9drl3dsw2dv0pppqvj29d2m07487dzzi8cbxrqj36";
+    sha256 = "110157dpamgr7r5kb8aidi0a2ap9z2m52bff94fb4nhxacz69yv8";
   };
 
   buildInputs = [ networkmanager ppp libsecret ]
@@ -31,13 +31,18 @@ stdenv.mkDerivation rec {
     intltoolize -f
   '';
 
-  configureFlags =
-    if withGnome then "--with-gnome" else "--without-gnome";
+  configureFlags = [
+    "--with-gnome=${if withGnome then "yes" else "no"}"
+    "--localstatedir=/var"
+    "--sysconfdir=$(out)/etc"
+  ];
+
+  enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     description = "L2TP plugin for NetworkManager";
     inherit (networkmanager.meta) platforms;
-    homepage = https://github.com/seriyps/NetworkManager-l2tp;
+    homepage = https://github.com/nm-l2tp/network-manager-l2tp;
     license = licenses.gpl2;
     maintainers = with maintainers; [ abbradar obadz ];
   };
diff --git a/pkgs/tools/networking/network-manager/strongswan.nix b/pkgs/tools/networking/network-manager/strongswan.nix
index 9d26a84d6f2..f2657187464 100644
--- a/pkgs/tools/networking/network-manager/strongswan.nix
+++ b/pkgs/tools/networking/network-manager/strongswan.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, intltool, pkgconfig, networkmanager, procps
+{ stdenv, fetchurl, intltool, pkgconfig, networkmanager, strongswanNM, procps
 , gnome3, libgnome_keyring, libsecret }:
 
 stdenv.mkDerivation rec {
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     sed -i "s,nm_libexecdir=.*,nm_libexecdir=$out/libexec," "configure"
   '';
 
-  buildInputs = [ networkmanager libsecret ]
+  buildInputs = [ networkmanager strongswanNM libsecret ]
       ++ (with gnome3; [ gtk libgnome_keyring networkmanagerapplet ]);
 
   nativeBuildInputs = [ intltool pkgconfig ];
@@ -26,9 +26,10 @@ stdenv.mkDerivation rec {
        --replace "/sbin/sysctl" "${procps}/bin/sysctl"
   '';
 
+  configureFlags = [ "--with-charon=${strongswanNM}/libexec/ipsec/charon-nm" ];
+
   meta = {
     description = "NetworkManager's strongswan plugin";
     inherit (networkmanager.meta) platforms;
   };
 }
-
diff --git a/pkgs/tools/networking/ocproxy/default.nix b/pkgs/tools/networking/ocproxy/default.nix
index f2d4d979cee..c93e94e2f28 100644
--- a/pkgs/tools/networking/ocproxy/default.nix
+++ b/pkgs/tools/networking/ocproxy/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "OpenConnect proxy";
-    longdescription = ''
+    longDescription = ''
       ocproxy is a user-level SOCKS and port forwarding proxy for OpenConnect
       based on lwIP.
     '';
diff --git a/pkgs/tools/networking/pixiewps/default.nix b/pkgs/tools/networking/pixiewps/default.nix
index d9b44cc2311..b082a981ae7 100644
--- a/pkgs/tools/networking/pixiewps/default.nix
+++ b/pkgs/tools/networking/pixiewps/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     description = "An offline WPS bruteforce utility";
     homepage = https://github.com/wiire/pixiewps;
     license = stdenv.lib.licenses.gpl3;
-    maintainer = stdenv.lib.maintainers.nico202;
+    maintainers = [ stdenv.lib.maintainers.nico202 ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/strongswan/default.nix b/pkgs/tools/networking/strongswan/default.nix
index 77409f6fc3e..eff498a174e 100644
--- a/pkgs/tools/networking/strongswan/default.nix
+++ b/pkgs/tools/networking/strongswan/default.nix
@@ -1,7 +1,14 @@
-{ stdenv, fetchurl, gmp, pkgconfig, python, autoreconfHook
-, curl, trousers, sqlite, iptables, libxml2, openresolv
-, ldns, unbound, pcsclite, openssl, systemd, pam
-, enableTNC ? false }:
+{ stdenv, fetchurl
+, pkgconfig, autoreconfHook
+, gmp, python, iptables, ldns, unbound, openssl, pcsclite
+, openresolv
+, systemd, pam
+
+, enableTNC            ? false, curl, trousers, sqlite, libxml2
+, enableNetworkManager ? false, networkmanager
+}:
+
+with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "strongswan-${version}";
@@ -17,8 +24,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig autoreconfHook ];
   buildInputs =
     [ gmp python iptables ldns unbound openssl pcsclite ]
-    ++ stdenv.lib.optionals enableTNC [ curl trousers sqlite libxml2 ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ systemd.dev pam ];
+    ++ optionals enableTNC [ curl trousers sqlite libxml2 ]
+    ++ optionals stdenv.isLinux [ systemd.dev pam ]
+    ++ optionals enableNetworkManager [ networkmanager ];
 
   patches = [
     ./ext_auth-path.patch
@@ -54,9 +62,9 @@ stdenv.mkDerivation rec {
       "--enable-forecast" "--enable-connmark" "--enable-acert"
       "--enable-pkcs11" "--enable-eap-sim-pcsc" "--enable-dnscert" "--enable-unbound"
       "--enable-af-alg" "--enable-xauth-pam" "--enable-chapoly" ]
-    ++ stdenv.lib.optional stdenv.isx86_64 [ "--enable-aesni" "--enable-rdrand" ]
-    ++ stdenv.lib.optional (stdenv.system == "i686-linux") "--enable-padlock"
-    ++ stdenv.lib.optionals enableTNC [
+    ++ optionals stdenv.isx86_64 [ "--enable-aesni" "--enable-rdrand" ]
+    ++ optional (stdenv.system == "i686-linux") "--enable-padlock"
+    ++ optionals enableTNC [
          "--disable-gmp" "--disable-aes" "--disable-md5" "--disable-sha1" "--disable-sha2" "--disable-fips-prf"
          "--enable-curl"
          "--enable-eap-tnc" "--enable-eap-ttls" "--enable-eap-dynamic" "--enable-tnccs-20"
@@ -65,14 +73,15 @@ stdenv.mkDerivation rec {
          "--enable-tnc-ifmap" "--enable-tnc-imc" "--enable-tnc-imv"
          "--with-tss=trousers"
          "--enable-aikgen"
-         "--enable-sqlite" ];
+         "--enable-sqlite" ]
+    ++ optional enableNetworkManager "--enable-nm";
 
   NIX_LDFLAGS = "-lgcc_s" ;
 
   meta = {
     description = "OpenSource IPsec-based VPN Solution";
     homepage = https://www.strongswan.org;
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.all;
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/ua/default.nix b/pkgs/tools/networking/ua/default.nix
index 56025dd88c6..5fe69ede1a7 100644
--- a/pkgs/tools/networking/ua/default.nix
+++ b/pkgs/tools/networking/ua/default.nix
@@ -24,7 +24,7 @@ buildGoPackage rec {
   meta = {
     homepage = https://github.com/sloonz/ua;
     license = stdenv.lib.licenses.isc;
-    shortDescription = "Universal Aggregator";
+    description = "Universal Aggregator";
     platforms = stdenv.lib.platforms.linux;
     maintainers = with stdenv.lib.maintainers; [ ttuegel ];
   };
diff --git a/pkgs/tools/networking/zssh/default.nix b/pkgs/tools/networking/zssh/default.nix
new file mode 100644
index 00000000000..16c0034e46f
--- /dev/null
+++ b/pkgs/tools/networking/zssh/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, readline, deepin-terminal }:
+
+let
+  version = "1.5c";
+in stdenv.mkDerivation rec {
+  name = "zssh-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/zssh/${name}.tgz";
+    sha256 = "06z73iq59lz8ibjrgs7d3xl39vh9yld1988yx8khssch4pw41s52";
+  };
+
+  buildInputs = [ readline ];
+
+  patches = [
+    # Cargo-culted from Arch, returns “out of pty's” without it
+    (fetchurl {
+      name = "fix_use_ptmx_on_arch.patch";
+      url = https://git.archlinux.org/svntogit/community.git/plain/trunk/fix_use_ptmx_on_arch.patch?h=packages/zssh&id=0a7c92543f9309856d02e31196f06d7c3eaa8b67;
+      sha256 = "12daw9wpy58ql882zww945wk9cg2adwp8qsr5rvazx0xq0qawgbr";
+    })
+  ];
+
+  patchFlags = [ "-p0" ];
+
+  # The makefile does not create the directories
+  postBuild = ''
+    install -dm755 "$out"/{bin,man/man1}
+  '';
+
+  meta = {
+    description = "SSH and Telnet client with ZMODEM file transfer capability";
+    homepage = http://zssh.sourceforge.net/;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = deepin-terminal.meta.maintainers; # required by deepin-terminal
+    platforms = stdenv.lib.platforms.linux;
+  };
+}