gnu: pwgen: Update to 2.08.
[jackhill/guix/guix.git] / gnu / packages / admin.scm
index ef95fe2..706d0f3 100644 (file)
@@ -6,18 +6,20 @@
 ;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
-;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
-;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
 ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
@@ -55,6 +59,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-check)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
@@ -68,6 +73,8 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages pciutils)
@@ -77,7 +84,6 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
-  #:use-module (gnu packages python)
   #:use-module (gnu packages man)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gnome)
@@ -159,12 +165,19 @@ and provides a \"top-like\" mode (monitoring).")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "174q1qg7yg6w1hfvlfv720hr6hid4h5xzw15y3ycfpspllzldhcb"))))
+                "174q1qg7yg6w1hfvlfv720hr6hid4h5xzw15y3ycfpspllzldhcb"))
+              (patches (search-patches "shepherd-close-fds.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--localstatedir=/var")))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("guile" ,guile-2.0)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+
+       ;; This is the Guile we use as a cross-compiler...
+       ("guile" ,guile-2.2)))
+    (inputs
+     ;; ... and this is the one that appears in shebangs when cross-compiling.
+     `(("guile" ,guile-2.2)))
     (synopsis "System service manager")
     (description
      "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
@@ -175,6 +188,49 @@ interface and is based on GNU Guile.")
     (home-page "https://www.gnu.org/software/shepherd/")
     (properties '((ftp-server . "alpha.gnu.org")))))
 
+(define-public daemontools
+  (package
+    (name "daemontools")
+    (version "0.76")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://cr.yp.to/" name "/"
+                    name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;; No tests as far as I can tell.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir ,(string-append  name "-" version))))
+         (delete 'configure)
+         (add-before 'build 'patch
+           (lambda _
+             (substitute* "src/error.h"
+               (("extern int errno;")
+                "#include <errno.h>"))))
+         (replace 'build
+           (lambda _
+             (invoke "package/compile")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (for-each (lambda (file)
+                           (install-file file bin))
+                         (find-files "command"))))))))
+    (synopsis "Tools for managing UNIX style services")
+    (description
+     "@code{daemontools} is a collection of tools for managing UNIX
+services.")
+    (license license:public-domain)
+    (home-page "https://cr.yp.to/daemontools.html")))
+
 (define-public dfc
   (package
    (name "dfc")
@@ -201,18 +257,20 @@ graphs and can export its output to different formats.")
 (define-public htop
   (package
    (name "htop")
-   (version "2.0.2")
+   (version "2.1.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://hisham.hm/htop/releases/"
                   version "/htop-" version ".tar.gz"))
             (sha256
              (base32
-              "11zlwadm6dpkrlfvf3z3xll26yyffa7qrxd1w72y1kl0rgffk6qp"))))
+              "0j07z0xm2gj1vzvbgh4323k4db9mr7drd7gw95mmpqi61ncvwq1j"))))
    (build-system gnu-build-system)
    (inputs
     `(("ncurses" ,ncurses)))
-   (home-page "http://htop.sourceforge.net/")
+   (native-inputs
+    `(("python" ,python-minimal-wrapper))) ; for scripts/MakeHeader.py
+   (home-page "https://hisham.hm/htop/")
    (synopsis "Interactive process viewer")
    (description
     "This is htop, an interactive process viewer.  It is a text-mode
@@ -265,7 +323,13 @@ re-executing them as necessary.")
                "05n65k4ixl85dc6rxc51b1b732gnmm8xnqi424dy9f1nz7ppb3xy"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--localstatedir=/var")
+     `(#:configure-flags '("--localstatedir=/var"
+
+                           ;; Make sure 'PATH_PROCNET_DEV' gets defined when
+                           ;; cross-compiling (by default it does not.)
+                           ,@(if (%current-target-system)
+                                 '("--with-path-procnet-dev=/proc/net/dev")
+                                 '()))
        ;; On some systems, 'libls.sh' may fail with an error such as:
        ;; "Failed to tell switch -a apart from -A".
        #:parallel-tests? #f))
@@ -276,7 +340,8 @@ re-executing them as necessary.")
     (synopsis "Basic networking utilities")
     (description
      "Inetutils is a collection of common network programs, such as an ftp
-client and server, a telnet client and server, and an rsh client and server.")
+client and server, a telnet client and server, an rsh client and server, and
+hostname.")
     (license license:gpl3+)))
 
 (define-public shadow
@@ -293,7 +358,7 @@ client and server, a telnet client and server, and an rsh client and server.")
                 "0hdpai78n63l3v3fgr3kkiqzhd0awrpfnnzz4mf7lmxdh61qb37w"))))
     (build-system gnu-build-system)
     (arguments
-     '(;; Assume System V `setpgrp (void)', which is the default on GNU
+     `(;; Assume System V `setpgrp (void)', which is the default on GNU
        ;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
        #:configure-flags
        '("--with-libpam" "ac_cv_func_setpgrp_void=yes")
@@ -303,7 +368,10 @@ client and server, a telnet client and server, and an rsh client and server.")
          (add-before 'build 'set-nscd-file-name
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Use the right file name for nscd.
-             (let ((libc (assoc-ref inputs "libc")))
+             (let ((libc (assoc-ref inputs
+                                    ,(if (%current-target-system)
+                                         "cross-libc"
+                                         "libc"))))
                (substitute* "lib/nscd.c"
                  (("/usr/sbin/nscd")
                   (string-append libc "/sbin/nscd"))))))
@@ -317,11 +385,11 @@ client and server, a telnet client and server, and an rsh client and server.")
                (for-each delete-file (find-files man "^groups\\."))
                #t))))))
 
-    (inputs (if (string-suffix? "-linux"
-                                (or (%current-target-system)
-                                    (%current-system)))
-                `(("linux-pam" ,linux-pam))
-                '()))
+    (inputs  (if (string-contains (or (%current-target-system)
+                                      (%current-system))
+                                  "-linux")
+                 `(("linux-pam" ,linux-pam))
+                 '()))
     (home-page "http://pkg-shadow.alioth.debian.org/")
     (synopsis "Authentication-related tools such as passwd, su, and login")
     (description
@@ -345,32 +413,31 @@ login, passwd, su, groupadd, and useradd.")
                "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases (alist-replace 'configure
-                               (lambda* (#:key inputs outputs
-                                         #:allow-other-keys)
-                                 (let* ((out    (assoc-ref outputs "out"))
-                                        (man8   (string-append
-                                                 out "/share/man/man8"))
-                                        (sbin   (string-append out "/sbin"))
-                                        (shadow (assoc-ref inputs "shadow"))
-                                        (login  (string-append shadow
-                                                               "/bin/login")))
-                                   (substitute* "Makefile"
-                                     (("^SBINDIR.*")
-                                      (string-append "SBINDIR = " out
-                                                     "/sbin\n"))
-                                     (("^MANDIR.*")
-                                      (string-append "MANDIR = " out
-                                                     "/share/man/man8\n")))
-
-                                   ;; Pick the right 'login' by default.
-                                   (substitute* "mingetty.c"
-                                     (("\"/bin/login\"")
-                                      (string-append "\"" login "\"")))
-
-                                   (mkdir-p sbin)
-                                   (mkdir-p man8)))
-                               %standard-phases)
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (man8   (string-append out "/share/man/man8"))
+                    (sbin   (string-append out "/sbin"))
+                    (shadow (assoc-ref inputs "shadow"))
+                    (login  (string-append shadow "/bin/login")))
+               (substitute* "Makefile"
+                 (("^SBINDIR.*")
+                  (string-append "SBINDIR = " out
+                                 "/sbin\n"))
+                 (("^MANDIR.*")
+                  (string-append "MANDIR = " out
+                                 "/share/man/man8\n")))
+
+               ;; Pick the right 'login' by default.
+               (substitute* "mingetty.c"
+                 (("\"/bin/login\"")
+                  (string-append "\"" login "\"")))
+
+               (mkdir-p sbin)
+               (mkdir-p man8))
+             #t)))
        #:tests? #f))                              ; no tests
     (inputs `(("shadow" ,shadow)))
 
@@ -481,9 +548,9 @@ connection alive.")
 (define-public isc-dhcp
   (let* ((bind-major-version "9")
          (bind-minor-version "9")
-         (bind-patch-version "10")
+         (bind-patch-version "11")
          (bind-release-type "-P")         ; for patch release, use "-P"
-         (bind-release-version "2")      ; for patch release, e.g. "6"
+         (bind-release-version "1")      ; for patch release, e.g. "6"
          (bind-version (string-append bind-major-version
                                       "."
                                       bind-minor-version
@@ -493,14 +560,14 @@ connection alive.")
                                       bind-release-version)))
     (package
       (name "isc-dhcp")
-      (version "4.3.5")
+      (version "4.3.6")
       (source (origin
                 (method url-fetch)
                 (uri (string-append "http://ftp.isc.org/isc/dhcp/"
                                     version "/dhcp-" version ".tar.gz"))
                 (sha256
                  (base32
-                  "0m7rwxvpb7xrmfl9ynpckhl0hi0xgm9bq1fmbp2r68sxy5mr75gb"))))
+                  "06vgxhm6agzkp6r1jy10467vrfw2rzcp2mnkcph7ydziciisy7m4"))))
       (build-system gnu-build-system)
       (arguments
        `(#:parallel-build? #f
@@ -599,7 +666,7 @@ connection alive.")
                                         "/bind-" bind-version ".tar.gz"))
                     (sha256
                      (base32
-                      "19yl7axphmpm4n2ggb7j5irw4c655yifa1bnlckg6qiyv8dr8n7b"))))
+                      "1a4g6nzzrbmhngdgvgv1jjq4fm06m8fwc2a0gskkchplxl7dva20"))))
 
                 ;; When cross-compiling, we need the cross Coreutils and sed.
                 ;; Otherwise just use those from %FINAL-INPUTS.
@@ -645,14 +712,14 @@ network statistics collection, security monitoring, network debugging, etc.")
 (define-public tcpdump
   (package
     (name "tcpdump")
-    (version "4.9.0")
+    (version "4.9.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.tcpdump.org/release/tcpdump-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0pjsxsy8l71i813sa934cwf1ryp9xbr7nxwsvnzavjdirchq3sga"))))
+                "0ygy0layzqaj838r5xd613iraz09wlfgpyh7pc6cwclql8v3b2vr"))))
     (build-system gnu-build-system)
     (inputs `(("libpcap" ,libpcap)
               ("openssl" ,openssl)))
@@ -709,25 +776,25 @@ by bandwidth they use.")
                          ("perl-x11-protocol" ,perl-x11-protocol)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'install 'set-load-paths
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
-          ;; path for PROG
-          (let* ((out  (assoc-ref outputs "out"))
-                 (prog (string-append out "/bin/cssh"))
-                 (perl-ver ,(package-version perl))
-                 (x11-inc (string-append
-                           (assoc-ref inputs "perl-x11-protocol")
-                           "/lib/perl5/site_perl/" perl-ver))
-                 (tk-inc (string-append
-                          (assoc-ref inputs "perl-tk")
-                          "/lib/perl5/site_perl/" perl-ver
-                          "/x86_64-linux")))
-            (wrap-program
-             prog
-             `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc)))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'set-load-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
+             ;; path for PROG
+             (let* ((out  (assoc-ref outputs "out"))
+                    (prog (string-append out "/bin/cssh"))
+                    (perl-ver ,(package-version perl))
+                    (x11-inc (string-append
+                              (assoc-ref inputs "perl-x11-protocol")
+                              "/lib/perl5/site_perl/" perl-ver))
+                    (tk-inc (string-append
+                             (assoc-ref inputs "perl-tk")
+                             "/lib/perl5/site_perl/" perl-ver
+                             "/x86_64-linux")))
+               (wrap-program
+                   prog
+                 `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc))))
+             #t)))))
     ;; The clusterssh.sourceforge.net address requires login to view
     (home-page "https://sourceforge.net/projects/clusterssh/")
     (synopsis "Secure concurrent multi-server terminal control")
@@ -737,6 +804,31 @@ console window to allow commands to be interactively run on multiple servers
 over ssh connections.")
     (license license:gpl2+)))
 
+(define-public rename
+  (package
+    (name "rename")
+    (version "0.20")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/R/RM/RMBARKER/File-Rename-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1cf6xx2hiy1xalp35fh8g73j67r0w0g66jpcbc6971x9jbm7bvjy"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+    (home-page "https://metacpan.org/pod/distribution/File-Rename/rename.PL")
+    (synopsis "Perl extension for renaming multiple files")
+    (description
+     "This package provides a Perl interface (@code{Perl::Rename}) as well
+as a command-line utility (@command{rename}) that can rename multiple files
+at once based on a Perl regular expression.")
+    (license license:perl-license)))
+
 (define-public rottlog
   (package
     (name "rottlog")
@@ -768,6 +860,11 @@ over ssh connections.")
                                          "/etc"))
 
        #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-paths
+                    (lambda _
+                      (substitute* "rc/rc"
+                        (("/usr/sbin/sendmail") "sendmail"))
+                      #t))
                   (add-after 'build 'set-packdir
                     (lambda _
                       ;; Set a default location for archived logs.
@@ -802,7 +899,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.20p2")
+    (version "1.8.22")
     (source (origin
               (method url-fetch)
               (uri
@@ -812,7 +909,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "1na5likm1srnd1g5sjx7b0543sczw0yppacyqsazfdg9b48awhmx"))
+                "00pxp74xkwdcmrjwy55j0k8p684jk1zx3nzdc11v30q8q8kwnmkj"))
               (modules '((guix build utils)))
               (snippet
                '(delete-file-recursively "lib/zlib"))))
@@ -833,29 +930,30 @@ system administrator.")
        ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
        #:parallel-build? #f
 
-       #:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda _
-                   (substitute* "src/sudo_usage.h.in"
-                     ;; Do not capture 'configure' arguments since we would
-                     ;; unduly retain references, and also because the
-                     ;; CPPFLAGS above would close the string literal
-                     ;; prematurely.
-                     (("@CONFIGURE_ARGS@") "\"\""))
-                   (substitute* (find-files "." "Makefile\\.in")
-                     (("-o [[:graph:]]+ -g [[:graph:]]+")
-                      ;; Allow installation as non-root.
-                      "")
-                     (("^install: (.*)install-sudoers(.*)" _ before after)
-                      ;; Don't try to create /etc/sudoers.
-                      (string-append "install: " before after "\n"))
-                     (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
-                      ;; Don't try to create /run/sudo.
-                      "$(TMPDIR)/dummy")
-                     (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
-                      ;; Don't try to create /var/db/sudo.
-                      "$(TMPDIR)/dummy")))
-                 %standard-phases)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* "src/sudo_usage.h.in"
+               ;; Do not capture 'configure' arguments since we would
+               ;; unduly retain references, and also because the
+               ;; CPPFLAGS above would close the string literal
+               ;; prematurely.
+               (("@CONFIGURE_ARGS@") "\"\""))
+             (substitute* (find-files "." "Makefile\\.in")
+               (("-o [[:graph:]]+ -g [[:graph:]]+")
+                ;; Allow installation as non-root.
+                "")
+               (("^install: (.*)install-sudoers(.*)" _ before after)
+                ;; Don't try to create /etc/sudoers.
+                (string-append "install: " before after "\n"))
+               (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
+                ;; Don't try to create /run/sudo.
+                "$(TMPDIR)/dummy")
+               (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
+                ;; Don't try to create /var/db/sudo.
+                "$(TMPDIR)/dummy"))
+             #t)))
 
        ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
        ;; the chroot's /etc/passwd doesn't have it.  Turn off the tests.
@@ -886,18 +984,24 @@ commands and their arguments.")
                     "http://w1.fi/releases/wpa_supplicant-"
                     version
                     ".tar.gz"))
+              (patches (search-patches "wpa-supplicant-CVE-2017-13082.patch"
+                                       "wpa-supplicant-fix-key-reuse.patch"
+                                       "wpa-supplicant-fix-zeroed-keys.patch"
+                                       "wpa-supplicant-fix-nonce-reuse.patch"
+                                       "wpa-supplicant-krack-followups.patch"))
               (sha256
                (base32
                 "0l0l5gz3d5j9bqjsbjlfcv4w4jwndllp9fmyai4x9kg6qhs6v4xl"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (chdir "wpa_supplicant")
-                   (copy-file "defconfig" ".config")
-                   (let ((port (open-file ".config" "al")))
-                     (display "
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "wpa_supplicant")
+             (copy-file "defconfig" ".config")
+             (let ((port (open-file ".config" "al")))
+               (display "
       CONFIG_DEBUG_SYSLOG=y
 
       # Choose GnuTLS (the default is OpenSSL.)
@@ -907,26 +1011,23 @@ commands and their arguments.")
       CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
       CONFIG_LIBNL32=y
       CONFIG_READLINE=y\n" port)
-                     (close-port port)))
-
-                 (alist-cons-after
-                  'install 'install-man-pages
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (man  (string-append out "/share/man"))
-                           (man5 (string-append man "/man5"))
-                           (man8 (string-append man "/man8")))
-                      (define (copy-man-page target)
-                        (lambda (file)
-                          (install-file file target)))
-
-                      (mkdir-p man5) (mkdir man8)
-                      (for-each (copy-man-page man5)
-                                (find-files "doc/docbook" "\\.5"))
-                      (for-each (copy-man-page man8)
-                                (find-files "doc/docbook" "\\.8"))
-                      #t))
-                  %standard-phases))
+               (close-port port))))
+         (add-after 'install 'install-man-pages
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (man  (string-append out "/share/man"))
+                    (man5 (string-append man "/man5"))
+                    (man8 (string-append man "/man8")))
+               (define (copy-man-page target)
+                 (lambda (file)
+                   (install-file file target)))
+
+               (mkdir-p man5) (mkdir man8)
+               (for-each (copy-man-page man5)
+                         (find-files "doc/docbook" "\\.5"))
+               (for-each (copy-man-page man8)
+                         (find-files "doc/docbook" "\\.8"))
+               #t))))
 
       #:make-flags (list "CC=gcc"
                          (string-append "BINDIR=" (assoc-ref %outputs "out")
@@ -963,25 +1064,24 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
     (arguments
      (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
        ((#:phases phases)
-        `(alist-cons-after
-          'configure 'configure-for-dbus
-          (lambda _
-            (let ((port (open-file ".config" "al")))
-              (display "
+        `(modify-phases ,phases
+           (add-after 'configure 'configure-for-dbus
+             (lambda _
+               (let ((port (open-file ".config" "al")))
+                 (display "
       CONFIG_CTRL_IFACE_DBUS=y
       CONFIG_CTRL_IFACE_DBUS_NEW=y
       CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
-              (close-port port))
-            #t)
-          (alist-cons-after
-           'install-man-pages 'install-dbus-conf
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (dir (string-append out "/etc/dbus-1/system.d")))
-               (mkdir-p dir)
-               (copy-file "dbus/dbus-wpa_supplicant.conf"
-                          (string-append dir "/wpa_supplicant.conf"))))
-           ,phases)))))))
+                 (close-port port))
+               #t))
+          (add-after 'install-man-pages 'install-dbus-conf
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (dir (string-append out "/etc/dbus-1/system.d")))
+                (mkdir-p dir)
+                (copy-file "dbus/dbus-wpa_supplicant.conf"
+                           (string-append dir "/wpa_supplicant.conf")))
+              #t))))))))
 
 (define-public wakelan
   (package
@@ -997,22 +1097,22 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
                 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out")))
-                     (mkdir-p (string-append out "/bin"))
-                     (mkdir-p (string-append out "/share/man/man1"))
-
-                     ;; It's an old configure script that doesn't understand
-                     ;; the extra options we pass.
-                     (setenv "CONFIG_SHELL" (which "bash"))
-                     (zero?
-                      (system* "./configure"
-                               (string-append "--prefix=" out)
-                               (string-append "--mandir=" out
-                                              "/share/man")))))
-                 %standard-phases)
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1"))
+
+               ;; It's an old configure script that doesn't understand
+               ;; the extra options we pass.
+               (setenv "CONFIG_SHELL" (which "bash"))
+               (zero?
+                (system* "./configure"
+                         (string-append "--prefix=" out)
+                         (string-append "--mandir=" out
+                                        "/share/man")))))))
        #:tests? #f))
     (home-page "http://kernel.org")               ; really, no home page
     (synopsis "Send a wake-on-LAN packet")
@@ -1024,7 +1124,7 @@ network, which causes enabled computers to power on.")
 (define-public dmidecode
   (package
     (name "dmidecode")
-    (version "3.0")
+    (version "3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1032,7 +1132,7 @@ network, which causes enabled computers to power on.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "0iby0xfk5x3cdr0x0gxj5888jjyjhafvaq0l79civ73jjfqmphvy"))))
+                "1h0sg0lxa15nzf8s7884p6q7p6md9idm0c79wyqmk32l4ndwwrnp"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -1054,7 +1154,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20150410")
+    (version "20171110")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1062,23 +1162,24 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0q1fjwkyw9x6gsva6fd0zbn7ly4fx0ha4853f416np9kf2irillw"))))
+                "08g83qvhfx04vzb3f3pfpkp0w601v6csjzdv7z1vjzz1k71h7yml"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
     (arguments
      '(#:make-flags (list (string-append "PREFIX=" %output)
+                          "CC=gcc"
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
        #:tests? #f  ; no 'check' target.
-       #:phases (alist-delete 'configure %standard-phases)))
-    (home-page "http://acpica.org/")
+       #:phases (modify-phases %standard-phases (delete 'configure))))
+    (home-page "https://acpica.org/")
     (synopsis "Tools for the development and debug of ACPI tables")
     (description
-     "The ACPI Component Architecture (ACPICA) project provides an
+     "The ACPI Component Architecture (@dfn{ACPICA}) project provides an
 OS-independent reference implementation of the Advanced Configuration and
-Power Interface Specification (ACPI).  ACPICA code contains those portions of
-ACPI meant to be directly integrated into the host OS as a kernel-resident
+Power Interface Specification (@dfn{ACPI}).  ACPICA code contains those portions
+of ACPI meant to be directly integrated into the host OS as a kernel-resident
 subsystem, and a small set of tools to assist in developing and debugging ACPI
 tables.  This package contains only the user-space tools needed for ACPI table
 development, not the kernel implementation of ACPI.")
@@ -1087,16 +1188,16 @@ development, not the kernel implementation of ACPI.")
 (define-public stress
   (package
     (name "stress")
-    (version "1.0.1")
+    (version "1.0.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
                                   version ".orig.tar.gz"))
               (sha256
                (base32
-                "1v9vnzlihqfjsxa93hdbrq72pqqk00dkylmlg8jpxhm7s1w9qfl1"))))
+                "0nw210jajk38m3y7h8s130ps2qsbz7j75wab07hi2r3hlz14yzh5"))))
     (build-system gnu-build-system)
-    (home-page "http://packages.debian.org/wheezy/stress")
+    (home-page "https://packages.debian.org/sid/stress")
     (synopsis "Impose load on and stress test a computer system")
     (description
      "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
@@ -1161,7 +1262,7 @@ characters can be replaced as well, as can UTF-8 characters.")
        ("e2fsprogs" ,e2fsprogs)
        ("libjpeg" ,libjpeg)
        ("ncurses" ,ncurses)))
-    (home-page "http://www.cgsecurity.org/wiki/TestDisk")
+    (home-page "https://www.cgsecurity.org/wiki/TestDisk")
     (synopsis "Data recovery tool")
     (description
      "TestDisk is a program for data recovery, primarily designed to help
@@ -1181,7 +1282,7 @@ recover lost partitions and/or make non-booting disks bootable again.")
                (base32 "04kviw799qxly08zb8n5mgxfd96gyis6x69q2qiw86jnh87c4mv9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-delete 'configure %standard-phases)
+     '(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f                      ; no check target
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                                (list (string-append "prefix=" out)))))
@@ -1210,23 +1311,23 @@ environment variable is set and output is to tty.")
                            "#!$SHELL")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'build 'patch-/bin/sh
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; Use the right shell when executing the watcher and
-                   ;; user-provided shell commands.
-                   (let ((bash (assoc-ref inputs "bash")))
-                     (substitute* '("src/direvent.c" "src/progman.c")
-                       (("\"/bin/sh\"")
-                        (string-append "\"" bash "/bin/sh\"")))
-
-                     ;; Adjust the 'shell.at' test accordingly.
-                     (substitute* "tests/testsuite"
-                       (("SHELL=/bin/sh")
-                        (string-append "SHELL=" bash "/bin/sh")))
-
-                     #t))
-                 %standard-phases)))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'patch-/bin/sh
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Use the right shell when executing the watcher and
+             ;; user-provided shell commands.
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("src/direvent.c" "src/progman.c")
+                 (("\"/bin/sh\"")
+                  (string-append "\"" bash "/bin/sh\"")))
+
+               ;; Adjust the 'shell.at' test accordingly.
+               (substitute* "tests/testsuite"
+                 (("SHELL=/bin/sh")
+                  (string-append "SHELL=" bash "/bin/sh")))
+
+               #t))))))
     (home-page "https://www.gnu.org/software/direvent/")
     (synopsis "Daemon to monitor directories for events such as file removal")
     (description
@@ -1242,7 +1343,7 @@ track changes in important system configuration files.")
 (define-public libcap-ng
   (package
     (name "libcap-ng")
-    (version "0.7.4")
+    (version "0.7.9")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1250,10 +1351,10 @@ track changes in important system configuration files.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0ssvnh4cvhya0c1j6k6192zvqcq7nc0x01fb5nwhr0prfqr0i8j8"))))
+                "0a0k484kwv0zilry2mbl9k56cnpdhsjxdxin17jas6kkyfy345aa"))))
     (build-system gnu-build-system)
     (inputs `(("python" ,python)))
-    (home-page "http://people.redhat.com/sgrubb/libcap-ng/")
+    (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
     (synopsis "Library for more easily working with POSIX capabilities")
     (description
      "The libcap-ng library is intended to make programming with POSIX
@@ -1268,7 +1369,7 @@ various ways that may be running with too much privilege.")
 (define-public smartmontools
   (package
     (name "smartmontools")
-    (version "6.5")
+    (version "6.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1276,16 +1377,16 @@ various ways that may be running with too much privilege.")
                     version "/smartmontools-" version ".tar.gz"))
               (sha256
                (base32
-                "1g25r6sx85b5lay5n6sbnqv05qxzj6xsafsp93hnrg1h044bps49"))))
+                "0m1hllbb78rr6cxkbalmz1gqkl0psgq8rrmv4gwcmz34n07kvx2i"))))
     (build-system gnu-build-system)
     (inputs `(("libcap-ng" ,libcap-ng)))
-    (home-page "http://www.smartmontools.org/")
+    (home-page "https://www.smartmontools.org/")
     (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
     (description
      "The smartmontools package contains utility programs to control and
 monitor storage systems using the Self-Monitoring, Analysis and Reporting
-Technology System (S.M.A.R.T.) built into most modern ATA and SCSI harddisks.
-In many cases, these utilities will provide advanced warning of disk
+Technology System (@dfn{S.M.A.R.T.}) built into most modern ATA and SCSI hard
+disks.  In many cases, these utilities will provide advanced warning of disk
 degradation and failure.")
     (license license:gpl2+)))
 
@@ -1359,14 +1460,14 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.3.1.0")
+    (version "2.4.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
         (base32
-         "1xdr82fy8gahxh3586wm5k1bxksys7yl1f2n24shrk8gf99qyjyd"))
+         "0n3n9py4s3aykiii31xq8g4wmd6693jvby0424pjrg0bna01apri"))
        (patches (search-patches "ansible-wrap-program-hack.patch"))))
     (build-system python-build-system)
     (native-inputs
@@ -1385,12 +1486,12 @@ of supported upstream metrics systems simultaneously.")
        ("python2-paramiko" ,python2-paramiko)))
     (arguments
      `(#:python ,python-2)) ; incompatible with Python 3
-    (home-page "http://ansible.com/")
+    (home-page "https://www.ansible.com/")
     (synopsis "Radically simple IT automation")
     (description "Ansible is a radically simple IT automation system.  It
-handles configuration-management, application deployment, cloud provisioning,
-ad-hoc task-execution, and multinode orchestration - including trivializing
-things like zero downtime rolling updates with load balancers.")
+handles configuration management, application deployment, cloud provisioning,
+ad hoc task execution, and multinode orchestration---including trivializing
+things like zero-downtime rolling updates with load balancers.")
     (license license:gpl3+)))
 
 (define-public cpulimit
@@ -1518,7 +1619,7 @@ displays a table of current bandwidth usage by pairs of hosts.")
 (define-public munge
   (package
     (name "munge")
-    (version "0.5.12")
+    (version "0.5.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/dun/munge/releases/"
@@ -1526,7 +1627,7 @@ displays a table of current bandwidth usage by pairs of hosts.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1s0vlwgm3hcx75vcmjf2y3icy5nv8y07bx93w2cmm6a7x71y6wp9"))))
+                "1nj486bbg1adfg298zck96vgx57kchcypc1zdz1n7w540vyksxcr"))))
     (inputs
      `(("openssl" ,openssl)
        ("libgcrypt" ,libgcrypt)))
@@ -1583,14 +1684,14 @@ done with the @code{auditctl} utility.")
 (define-public nmap
   (package
     (name "nmap")
-    (version "7.50")
+    (version "7.60")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nmap.org/dist/nmap-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1ckl2qxqxkrfa2qxdrqyaa4k1hhj273aqckrc46fijdz0a76mag9"))
+                "08bga42ipymmbxd7wy4x5sl26c0ir1fm3n9rc6nqmhx69z66wyd8"))
               (modules '((guix build utils)))
               (snippet
                '(map delete-file-recursively
@@ -1683,7 +1784,7 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
                       (list (string-append "DESTDIR=" out)
                             "prefix=/"))
        ;; no configure script
-       #:phases (alist-delete 'configure %standard-phases)))
+       #:phases (modify-phases %standard-phases (delete 'configure))))
     (inputs `(("python-2" ,python-2)))
     (synopsis "Versatile resource statistics tool")
     (description "Dstat is a versatile replacement for @command{vmstat},
@@ -1702,7 +1803,7 @@ throughput (in the same interval).")
 (define-public thefuck
   (package
     (name "thefuck")
-    (version "3.18")
+    (version "3.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/nvbn/thefuck/archive/"
@@ -1710,7 +1811,7 @@ throughput (in the same interval).")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1xsvkqh89rgxq5w03mnlcfkn9y39nfwhb2pjabjspcc2mi2mq5y6"))
+                "191zbvkyc02h0wwd46xwj4zzg7jhlr8xv0ji6knqkgjnk0nvqq01"))
               (patches (search-patches "thefuck-test-environ.patch"))))
     (build-system python-build-system)
     (arguments
@@ -1746,13 +1847,13 @@ a new command using the matched rule, and runs it.")
 (define-public di
   (package
     (name "di")
-    (version "4.43")
+    (version "4.44")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
        (sha256
-        (base32 "1q25jy51qfzsym9b2w0cqzscq2j492gn60dy6gbp88m8nwm4sdy8"))))
+        (base32 "0803lp8kd3mp1jcm17i019xiqxdy85hhs6xk67zib8gmvg500gcn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; Obscure test failures.
@@ -1768,23 +1869,23 @@ a new command using the matched rule, and runs it.")
     (home-page "https://www.gentoo.com/di/")
     (synopsis "Advanced df like disk information utility")
     (description
-     "'di' is a disk information utility, displaying everything
-(and more) that your @code{df} command does.  It features the ability to
-display your disk usage in whatever format you prefer.  It is designed to be
-highly portable.  Great for heterogeneous networks.")
+     "'di' is a disk information utility, displaying everything that your
+@code{df} command does and more.  It features the ability to display your disk
+usage in whatever format you prefer.  It is designed to be highly portable and
+produce uniform output across heterogeneous networks.")
     (license license:zlib)))
 
 (define-public cbatticon
   (package
     (name "cbatticon")
-    (version "1.6.5")
+    (version "1.6.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/valr/"
                                   name "/archive/" version ".tar.gz"))
               (sha256
                (base32
-                "0xzz1faqgm57bwlkw6sjdfbckf5hck81879zbfk18p7xn9vhvixv"))
+                "1s2n49ydh7pznnf02fak4yy0wqkgi9ag7yiw1zg1lhp4m0h37hyh"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system gnu-build-system)
     (arguments
@@ -1816,7 +1917,7 @@ the status of your battery in the system tray.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "git://github.com/TrilbyWhite/interrobang")
+                      (url "https://github.com/TrilbyWhite/interrobang")
                       (commit commit)))
                 (file-name (string-append name "-" version))
                 (sha256
@@ -2040,7 +2141,7 @@ buffers.")
 (define-public intel-gpu-tools
   (package
     (name "intel-gpu-tools")
-    (version "1.18")
+    (version "1.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://cgit.freedesktop.org/xorg/app/"
@@ -2048,7 +2149,7 @@ buffers.")
                                   "intel-gpu-tools-" version ".tar.gz"))
               (sha256
                (base32
-                "0w7djk0y5w76hzn1b3cm39zd5c6w9za1wfn80wd857h0v313rzq3"))))
+                "1xfy4cgimyyn5qixlrfkadgnl9qwbk30vw8k80g8vjnrcc4hx986"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; many of the tests try to load kernel modules
@@ -2056,9 +2157,9 @@ buffers.")
        (modify-phases %standard-phases
          (add-after 'unpack 'autogen
            (lambda _
-             ;; Don't run configure in this phase
+             ;; Don't run configure in this phase.
              (setenv "NOCONFIGURE" "1")
-             (zero? (system* "sh" "autogen.sh")))))))
+             (invoke "sh" "autogen.sh"))))))
     (inputs
      `(("util-macros" ,util-macros)
        ("libdrm" ,libdrm)
@@ -2089,28 +2190,22 @@ Intel DRM Driver.")
 (define-public fabric
   (package
     (name "fabric")
-    (version "1.13.1")
+    (version "1.13.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Fabric" version))
        (sha256
         (base32
-         "1z17hw0yiqp1blq217zxkg2jzkv8qd79saqhscgsw14mwlcqpwd0"))
-       (patches (search-patches "fabric-tests.patch"))))
+         "0k944dxr41whw7ib6380q9x15wyskx7fqni656icdn8rzshn9bwq"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2))                       ;Python 2 only
+     `(#:python ,python-2))             Python 2 only
     (native-inputs
-     `(("python2-fudge" ,python2-fudge) ; Requires < 1.0
-       ("python2-jinja2" ,python2-jinja2) ; Requires < 3.0
-       ("python2-nose" ,python2-nose))) ; Requires < 2.0
+     `(("python2-fudge" ,python2-fudge)
+       ("python2-jinja2" ,python2-jinja2)
+       ("python2-nose" ,python2-nose)))
     (propagated-inputs
-     ;; Required upgrading python-paramiko 1.17.4 to fix an incompatibility
-     ;; between python-paramiko and newer python-pycrypto. Without this, the
-     ;; `fab` command fails with "ValueError: CTR mode needs counter
-     ;; parameter, not IV". See:
-     ;; https://github.com/paramiko/paramiko/pull/714#issuecomment-281191548.
      `(("python2-paramiko" ,python2-paramiko)))
     (home-page "http://fabfile.org")
     (synopsis "Simple Pythonic remote execution and deployment tool")
@@ -2127,7 +2222,7 @@ tool for remote execution and deployment.")
 (define-public neofetch
   (package
     (name "neofetch")
-    (version "3.2.0")
+    (version "3.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/dylanaraps/neofetch/"
@@ -2135,10 +2230,10 @@ tool for remote execution and deployment.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "07a32rzmch51znxspzyc7zyaldmr383v70b49wmnjdjs2qfdbv3a"))))
+                "15p69q0jchfms1fpb4i7kq8b28w2xpgh2zmynln618qxv1myf228"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f                      ; there are no tests
+     `(#:tests? #f                      ; there are no tests
        #:make-flags
        (list (string-append "PREFIX=" %output))
        #:phases
@@ -2153,9 +2248,17 @@ tool for remote execution and deployment.")
                  (("\"/etc/neofetch")
                   (string-append "\"" out "/etc/neofetch"))
                  (("\"/usr/share/neofetch")
-                  (string-append "\"" out "/usr/share/neofetch"))))
+                  (string-append "\"" out "/share/neofetch"))))
              #t))
-         (delete 'configure))))
+         (delete 'configure)            ; no configure script
+         (replace 'install
+           (lambda* (#:key make-flags outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version))
+                    (etc (string-append doc "/examples/etc")))
+               (zero? (apply system* `("make" ,@make-flags
+                                       ,(string-append "SYSCONFDIR=" etc)
+                                       "install")))))))))
     (home-page "https://github.com/dylanaraps/neofetch")
     (synopsis "System info script")
     (description "Neofetch is a CLI system information tool written in Bash.
@@ -2168,7 +2271,7 @@ you are running, what theme or icon set you are using, etc.")
 (define-public nnn
   (package
     (name "nnn")
-    (version "1.2")
+    (version "1.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/jarun/nnn/"
@@ -2176,7 +2279,7 @@ you are running, what theme or icon set you are using, etc.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "08l0wcwwsl5kix9kg3h51s2afzg97y1rjjfi0ijs294kz57g1cfq"))))
+                "0zswf8lb29zr1z642i1d0zi1y2mxal8qjqdrpdiqjh197jamj3zm"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("readline" ,readline)))
@@ -2267,3 +2370,71 @@ on systems running the Linux kernel.")
     ;; arm and aarch64 don't have cpuid.h
     (supported-systems '("i686-linux" "x86_64-linux"))
     (license license:gpl2+)))
+
+(define-public masscan
+  (package
+    (name "masscan")
+    (version "1.0.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/robertdavidgraham/masscan"
+                                  "/archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "1y9af345g00z83rliv6bmlqg37xwc7xpnx5xqdgmjikzcxgk9pji"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libpcap" ,libpcap)))
+    (arguments
+     '(#:test-target "regress"
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure) ; There is no ./configure script
+         (add-after 'unpack 'patch-path
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (pcap (assoc-ref inputs "libpcap")))
+               (substitute* "src/rawsock-pcap.c"
+                 (("libpcap.so") (string-append pcap "/lib/libpcap.so")))
+               #t))))))
+    (synopsis "TCP port scanner")
+    (description "MASSCAN is an asynchronous TCP port scanner.  It can detect
+open ports, and also complete the TCP connection and interact with the remote
+application, collecting the information received.")
+    (home-page "https://github.com/robertdavidgraham/masscan")
+        ;; 'src/siphash24.c' is the SipHash reference implementation, which
+        ;; bears a CC0 Public Domain Dedication.
+    (license license:agpl3+)))
+
+(define-public hungrycat
+  (package
+    (name "hungrycat")
+    (version "0.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/jwilk/hungrycat/"
+                                  "releases/download/" version "/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "03fc1zsrf99lvxa7b4ps6pbi43304wbxh1f6ci4q0vkal370yfwh"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     ;; For tests.
+     `(("python" ,python-wrapper)
+       ("python-nose" ,python-nose)))
+    (arguments
+     `(#:test-target "test"))
+    (synopsis "A single tool that combines @command{cat} & @command{rm}")
+    (description
+     "hungrycat prints the contents of a file to standard output, while
+simultaneously freeing the disk space it occupied.  It is useful if you need
+to process a large file, don't have enough space to store both the input and
+output files, and don't need the input file afterwards.
+While similar in principle to running @command{cat} immediately followed by
+@command{rm}, @command{hungrycat} actually frees blocks as soon as they are
+printed instead of after the entire file has been read, which is often too
+late.")
+    (home-page "https://jwilk.net/software/hungrycat")
+    (license license:expat)))