gnu: nnn: Update to 1.9.
[jackhill/guix/guix.git] / gnu / packages / admin.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
4 ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
6 ;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
7 ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
8 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
9 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
10 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
11 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
12 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
13 ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
14 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
15 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
16 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
17 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
18 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
19 ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
20 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
21 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
22 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
23 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
24 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
25 ;;;
26 ;;; This file is part of GNU Guix.
27 ;;;
28 ;;; GNU Guix is free software; you can redistribute it and/or modify it
29 ;;; under the terms of the GNU General Public License as published by
30 ;;; the Free Software Foundation; either version 3 of the License, or (at
31 ;;; your option) any later version.
32 ;;;
33 ;;; GNU Guix is distributed in the hope that it will be useful, but
34 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
35 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36 ;;; GNU General Public License for more details.
37 ;;;
38 ;;; You should have received a copy of the GNU General Public License
39 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
40
41 (define-module (gnu packages admin)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix packages)
44 #:use-module (guix utils)
45 #:use-module (guix download)
46 #:use-module (guix git-download)
47 #:use-module (guix build-system cmake)
48 #:use-module (guix build-system gnu)
49 #:use-module (guix build-system meson)
50 #:use-module (guix build-system perl)
51 #:use-module (guix build-system python)
52 #:use-module (guix build-system trivial)
53 #:use-module (gnu packages)
54 #:use-module (gnu packages base)
55 #:use-module (gnu packages bash)
56 #:use-module (gnu packages check)
57 #:use-module (gnu packages cyrus-sasl)
58 #:use-module (gnu packages dns)
59 #:use-module (gnu packages file)
60 #:use-module (gnu packages ncurses)
61 #:use-module (gnu packages readline)
62 #:use-module (gnu packages linux)
63 #:use-module (gnu packages lua)
64 #:use-module (gnu packages guile)
65 #:use-module (gnu packages gettext)
66 #:use-module (gnu packages imagemagick)
67 #:use-module (gnu packages inkscape)
68 #:use-module (gnu packages pcre)
69 #:use-module (gnu packages perl)
70 #:use-module (gnu packages perl-check)
71 #:use-module (gnu packages tcl)
72 #:use-module (gnu packages compression)
73 #:use-module (gnu packages cross-base)
74 #:use-module (gnu packages tls)
75 #:use-module (gnu packages gnupg)
76 #:use-module (gnu packages bison)
77 #:use-module (gnu packages flex)
78 #:use-module (gnu packages gl)
79 #:use-module (gnu packages glib)
80 #:use-module (gnu packages openldap)
81 #:use-module (gnu packages mcrypt)
82 #:use-module (gnu packages pkg-config)
83 #:use-module (gnu packages popt)
84 #:use-module (gnu packages python)
85 #:use-module (gnu packages python-crypto)
86 #:use-module (gnu packages python-web)
87 #:use-module (gnu packages qt)
88 #:use-module (gnu packages terminals)
89 #:use-module (gnu packages texinfo)
90 #:use-module (gnu packages groff)
91 #:use-module (gnu packages pciutils)
92 #:use-module (gnu packages libunwind)
93 #:use-module (gnu packages libusb)
94 #:use-module (gnu packages libftdi)
95 #:use-module (gnu packages image)
96 #:use-module (gnu packages xorg)
97 #:use-module (gnu packages xdisorg)
98 #:use-module (gnu packages man)
99 #:use-module (gnu packages autotools)
100 #:use-module (gnu packages gnome)
101 #:use-module (gnu packages kerberos)
102 #:use-module (gnu packages gtk)
103 #:use-module (gnu packages xml)
104 #:use-module (gnu packages boost)
105 #:use-module (gnu packages elf)
106 #:use-module (gnu packages mpi)
107 #:use-module (gnu packages web))
108
109 (define-public aide
110 (package
111 (name "aide")
112 (version "0.16")
113 (source (origin
114 (method url-fetch)
115 (uri (string-append "mirror://sourceforge/aide/aide/"
116 version "/aide-" version ".tar.gz"))
117 (sha256
118 (base32
119 "0ibkv4z2gk14fn014kq13rp2ysiq6nn2cflv2q5i7zf466hm6758"))))
120 (build-system gnu-build-system)
121 (native-inputs
122 `(("bison" ,bison)
123 ("flex" ,flex)))
124 (inputs
125 `(("libgcrypt" ,libgcrypt)
126 ("libgpg-error" ,libgpg-error)
127 ("libmhash" ,libmhash)
128 ("pcre" ,pcre)
129 ("zlib" ,zlib)))
130 (synopsis "File and directory integrity checker")
131 (description
132 "AIDE (Advanced Intrusion Detection Environment) is a file and directory
133 integrity checker. It creates a database from the regular expression rules
134 that it finds from its configuration files. Once this database is initialized
135 it can be used to verify the integrity of the files. It has several message
136 digest algorithms that are used to check the integrity of files. All of the
137 usual file attributes can be checked for inconsistencies.")
138 (home-page "http://aide.sourceforge.net/")
139 (license license:gpl2+)))
140
141 (define-public progress
142 (package
143 (name "progress")
144 (version "0.14")
145 (source (origin
146 (method url-fetch)
147 (uri (string-append "https://github.com/Xfennec/"
148 name "/archive/v" version ".tar.gz"))
149 (sha256
150 (base32 "1wcanixfsi5k4i9h5vrnncgjdncalsdfqllrxibxwpgfnf20sji1"))
151 (file-name (string-append name "-" version ".tar.gz"))))
152 (build-system gnu-build-system)
153 (native-inputs
154 `(("pkg-config" ,pkg-config)
155 ("which" ,which)))
156 (inputs
157 `(("ncurses" ,ncurses)))
158 (arguments
159 `(#:tests? #f ; There is no test suite.
160 #:make-flags (list "CC=gcc"
161 (string-append "PREFIX=" (assoc-ref %outputs "out")))
162 #:phases
163 (modify-phases %standard-phases
164 (delete 'configure)))) ; There's no configure phase.
165 (home-page "https://github.com/Xfennec/progress")
166 (synopsis "Program to view the progress of the coreutils commands")
167 (description "A program that looks for coreutils basic commands (cp, mv,
168 dd, tar, gzip/gunzip, cat, etc.) currently running on your system and displays
169 the percentage of copied data. It can also show estimated time and throughput,
170 and provides a \"top-like\" mode (monitoring).")
171 (license license:gpl3+)))
172
173 (define-public shepherd
174 (package
175 (name "shepherd")
176 (version "0.4.0")
177 (source (origin
178 (method url-fetch)
179 (uri (string-append "https://alpha.gnu.org/gnu/shepherd/shepherd-"
180 version ".tar.gz"))
181 (sha256
182 (base32
183 "1lgmsbxn8i8xdasxzkdp2cml75n128pplw6icvmspl6s0n9xmw8n"))))
184 (build-system gnu-build-system)
185 (arguments
186 '(#:configure-flags '("--localstatedir=/var")))
187 (native-inputs
188 `(("pkg-config" ,pkg-config)
189
190 ;; This is the Guile we use as a cross-compiler...
191 ("guile" ,guile-2.2)))
192 (inputs
193 ;; ... and this is the one that appears in shebangs when cross-compiling.
194 `(("guile" ,guile-2.2)
195
196 ;; The 'shepherd' command uses Readline when used interactively. It's
197 ;; an unusual use case though, so we don't propagate it.
198 ("guile-readline" ,guile-readline)))
199 (synopsis "System service manager")
200 (description
201 "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
202 the execution of system services, replacing similar functionality found in
203 typical init systems. It provides dependency-handling through a convenient
204 interface and is based on GNU Guile.")
205 (license license:gpl3+)
206 (home-page "https://www.gnu.org/software/shepherd/")
207 (properties '((ftp-server . "alpha.gnu.org")))))
208
209 (define-public daemontools
210 (package
211 (name "daemontools")
212 (version "0.76")
213 (source (origin
214 (method url-fetch)
215 (uri (string-append
216 "https://cr.yp.to/" name "/"
217 name "-" version ".tar.gz"))
218 (sha256
219 (base32
220 "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5"))))
221 (build-system gnu-build-system)
222 (arguments
223 `(#:tests? #f ;; No tests as far as I can tell.
224 #:phases
225 (modify-phases %standard-phases
226 (add-after 'unpack 'chdir
227 (lambda _
228 (chdir ,(string-append name "-" version))))
229 (delete 'configure)
230 (add-before 'build 'patch
231 (lambda _
232 (substitute* "src/error.h"
233 (("extern int errno;")
234 "#include <errno.h>"))))
235 (replace 'build
236 (lambda _
237 (invoke "package/compile")))
238 (replace 'install
239 (lambda* (#:key outputs #:allow-other-keys)
240 (let* ((out (assoc-ref outputs "out"))
241 (bin (string-append out "/bin")))
242 (for-each (lambda (file)
243 (install-file file bin))
244 (find-files "command"))))))))
245 (synopsis "Tools for managing UNIX style services")
246 (description
247 "@code{daemontools} is a collection of tools for managing UNIX
248 services.")
249 (license license:public-domain)
250 (home-page "https://cr.yp.to/daemontools.html")))
251
252 (define-public dfc
253 (package
254 (name "dfc")
255 (version "3.1.1")
256 (source
257 (origin
258 (method url-fetch)
259 (uri (string-append
260 "https://projects.gw-computing.net/attachments/download/615/dfc-"
261 version ".tar.gz"))
262 (sha256
263 (base32
264 "0m1fd7l85ckb7bq4c5c3g257bkjglm8gq7x42pkmpp87fkknc94n"))))
265 (build-system cmake-build-system)
266 (arguments '(#:tests? #f)) ; There are no tests.
267 (native-inputs `(("gettext" ,gettext-minimal)))
268 (home-page "https://projects.gw-computing.net/projects/dfc")
269 (synopsis "Display file system space usage using graphs and colors")
270 (description
271 "dfc (df color) is a modern version of df. It uses colors, draws pretty
272 graphs and can export its output to different formats.")
273 (license license:bsd-3)))
274
275 (define-public htop
276 (package
277 (name "htop")
278 (version "2.2.0")
279 (source (origin
280 (method url-fetch)
281 (uri (string-append "http://hisham.hm/htop/releases/"
282 version "/htop-" version ".tar.gz"))
283 (sha256
284 (base32
285 "0mrwpb3cpn3ai7ar33m31yklj64c3pp576vh1naqff6f21pq5mnr"))))
286 (build-system gnu-build-system)
287 (inputs
288 `(("ncurses" ,ncurses)))
289 (native-inputs
290 `(("python" ,python-minimal-wrapper))) ; for scripts/MakeHeader.py
291 (home-page "https://hisham.hm/htop/")
292 (synopsis "Interactive process viewer")
293 (description
294 "This is htop, an interactive process viewer. It is a text-mode
295 application (for console or X terminals) and requires ncurses.")
296 (license license:gpl2)))
297
298 (define-public pies
299 (package
300 (name "pies")
301 (version "1.3")
302 (source
303 (origin
304 (method url-fetch)
305 (uri (string-append "mirror://gnu/pies/pies-"
306 version ".tar.bz2"))
307 (sha256
308 (base32
309 "12r7rjjyibjdj08dvwbp0iflfpzl4s0zhn6cr6zj3hwf9gbzgl1g"))))
310 (build-system gnu-build-system)
311 (arguments
312 '(#:phases (modify-phases %standard-phases
313 (add-before 'build 'patch-/bin/sh
314 (lambda* (#:key inputs #:allow-other-keys)
315 ;; Use the right shell when executing user-provided
316 ;; shell commands.
317 (let ((bash (assoc-ref inputs "bash")))
318 (substitute* "src/progman.c"
319 (("\"/bin/sh\"")
320 (string-append "\"" bash "/bin/sh\"")))
321 #t))))))
322 (home-page "https://www.gnu.org/software/pies/")
323 (synopsis "Program invocation and execution supervisor")
324 (description
325 "GNU pies is a program that supervises the invocation and execution of
326 other programs. It reads the list of programs to be started from its
327 configuration file, executes them, and then monitors their status,
328 re-executing them as necessary.")
329 (license license:gpl3+)))
330
331 (define-public inetutils
332 (package
333 (name "inetutils")
334 (version "1.9.4")
335 (source (origin
336 (method url-fetch)
337 (uri (string-append "mirror://gnu/inetutils/inetutils-"
338 version ".tar.gz"))
339 (sha256
340 (base32
341 "05n65k4ixl85dc6rxc51b1b732gnmm8xnqi424dy9f1nz7ppb3xy"))))
342 (build-system gnu-build-system)
343 (arguments
344 `(#:configure-flags '("--localstatedir=/var"
345
346 ;; Make sure 'PATH_PROCNET_DEV' gets defined when
347 ;; cross-compiling (by default it does not.)
348 ,@(if (%current-target-system)
349 '("--with-path-procnet-dev=/proc/net/dev")
350 '()))
351 ;; On some systems, 'libls.sh' may fail with an error such as:
352 ;; "Failed to tell switch -a apart from -A".
353 #:parallel-tests? #f))
354 (inputs `(("ncurses" ,ncurses)
355 ("readline" ,readline))) ;for 'ftp'
356 (native-inputs `(("netstat" ,net-tools))) ;for tests
357 (home-page "https://www.gnu.org/software/inetutils/")
358 (synopsis "Basic networking utilities")
359 (description
360 "Inetutils is a collection of common network programs, such as an ftp
361 client and server, a telnet client and server, an rsh client and server, and
362 hostname.")
363 (license license:gpl3+)))
364
365 (define-public shadow
366 (package
367 (name "shadow")
368 (version "4.6")
369 (source (origin
370 (method url-fetch)
371 (uri (string-append
372 "https://github.com/shadow-maint/shadow/releases/"
373 "download/" version "/shadow-" version ".tar.xz"))
374 (sha256
375 (base32
376 "10smy01km2bqjjvsd2jz17zvrxbzj89qczyb1amk38j28bcci609"))))
377 (build-system gnu-build-system)
378 (arguments
379 `(;; Assume System V `setpgrp (void)', which is the default on GNU
380 ;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
381 #:configure-flags
382 '("--with-libpam" "ac_cv_func_setpgrp_void=yes")
383
384 #:phases
385 (modify-phases %standard-phases
386 (add-before 'build 'set-nscd-file-name
387 (lambda* (#:key inputs #:allow-other-keys)
388 ;; Use the right file name for nscd.
389 (let ((libc (assoc-ref inputs
390 ,(if (%current-target-system)
391 "cross-libc"
392 "libc"))))
393 (substitute* "lib/nscd.c"
394 (("/usr/sbin/nscd")
395 (string-append libc "/sbin/nscd")))
396 #t)))
397 (add-after 'install 'remove-groups
398 (lambda* (#:key outputs #:allow-other-keys)
399 ;; Remove `groups', which is already provided by Coreutils.
400 (let* ((out (assoc-ref outputs "out"))
401 (bin (string-append out "/bin"))
402 (man (string-append out "/share/man")))
403 (delete-file (string-append bin "/groups"))
404 (for-each delete-file (find-files man "^groups\\."))
405 #t))))))
406
407 (inputs (if (string-contains (or (%current-target-system)
408 (%current-system))
409 "-linux")
410 `(("linux-pam" ,linux-pam))
411 '()))
412 (home-page "http://pkg-shadow.alioth.debian.org/")
413 (synopsis "Authentication-related tools such as passwd, su, and login")
414 (description
415 "Shadow provides a number of authentication-related tools, including:
416 login, passwd, su, groupadd, and useradd.")
417
418 ;; The `vipw' program is GPLv2+.
419 ;; libmisc/salt.c is public domain.
420 (license license:bsd-3)))
421
422 (define-public mingetty
423 (package
424 (name "mingetty")
425 (version "1.08")
426 (source (origin
427 (method url-fetch)
428 (uri (string-append "mirror://sourceforge/mingetty/mingetty/"
429 version "/mingetty-" version ".tar.gz"))
430 (sha256
431 (base32
432 "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
433 (build-system gnu-build-system)
434 (arguments
435 `(#:phases
436 (modify-phases %standard-phases
437 (replace 'configure
438 (lambda* (#:key inputs outputs #:allow-other-keys)
439 (let* ((out (assoc-ref outputs "out"))
440 (man8 (string-append out "/share/man/man8"))
441 (sbin (string-append out "/sbin"))
442 (shadow (assoc-ref inputs "shadow"))
443 (login (string-append shadow "/bin/login")))
444 (substitute* "Makefile"
445 (("^SBINDIR.*")
446 (string-append "SBINDIR = " out
447 "/sbin\n"))
448 (("^MANDIR.*")
449 (string-append "MANDIR = " out
450 "/share/man/man8\n")))
451
452 ;; Pick the right 'login' by default.
453 (substitute* "mingetty.c"
454 (("\"/bin/login\"")
455 (string-append "\"" login "\"")))
456
457 (mkdir-p sbin)
458 (mkdir-p man8))
459 #t)))
460 #:tests? #f)) ; no tests
461 (inputs `(("shadow" ,shadow)))
462
463 (home-page "https://sourceforge.net/projects/mingetty")
464 (synopsis "Getty for the text console")
465 (description
466 "Small console getty that is started on the Linux text console,
467 asks for a login name and then transfers over to 'login'. It is extended to
468 allow automatic login and starting any app.")
469 (license license:gpl2+)))
470
471 (define-public net-base
472 (package
473 (name "net-base")
474 (version "5.3")
475 (source (origin
476 (method url-fetch)
477 (uri (string-append
478 "mirror://debian/pool/main/n/netbase/netbase_"
479 version ".tar.xz"))
480 (sha256
481 (base32
482 "12xqjwg3p4rzmmh2iib6sigm9l29y3dgk74mmnw64k84jnbwdxl1"))))
483 (build-system trivial-build-system)
484 (arguments
485 `(#:modules ((guix build utils))
486 #:builder (begin
487 (use-modules (guix build utils)
488 (srfi srfi-26))
489
490 (let* ((source (assoc-ref %build-inputs "source"))
491 (tar (assoc-ref %build-inputs "tar"))
492 (xz (assoc-ref %build-inputs "xz"))
493 (output (assoc-ref %outputs "out"))
494 (etc (string-append output "/etc")))
495 (setenv "PATH" (string-append xz "/bin"))
496 (invoke (string-append tar "/bin/tar") "xvf"
497 source)
498 (chdir ,(string-append "netbase-" version))
499 (mkdir-p etc)
500 (for-each copy-file
501 '("etc-services" "etc-protocols" "etc-rpc")
502 (map (cut string-append etc "/" <>)
503 '("services" "protocols" "rpc")))
504 #t))))
505 (native-inputs `(("tar" ,tar)
506 ("xz" ,xz)))
507 (synopsis "IANA protocol, port, and RPC number assignments")
508 (description
509 "This package provides the /etc/services, /etc/protocols, and /etc/rpc
510 files, which contain information about the IANA-assigned port, protocol, and
511 ONC RPC numbers.")
512 (home-page "https://packages.debian.org/sid/netbase")
513 (license license:gpl2)))
514
515 (define-public netcat
516 (package
517 (name "netcat")
518 (version "0.7.1")
519 (source (origin
520 (method url-fetch)
521 (uri (string-append "mirror://sourceforge/netcat/netcat/" version
522 "/netcat-" version ".tar.bz2"))
523 (sha256
524 (base32
525 "1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm"))))
526 (build-system gnu-build-system)
527 (arguments
528 `(#:configure-flags
529 ;; By default, man and info pages are put in PREFIX/{man,info},
530 ;; but we want them in PREFIX/share/{man,info}.
531 (let ((out (assoc-ref %outputs "out")))
532 (list (string-append "--mandir=" out "/share/man")
533 (string-append "--infodir=" out "/share/info")))))
534 (home-page "http://netcat.sourceforge.net")
535 (synopsis "Read and write data over TCP/IP")
536 (description
537 "Netcat is a featured networking utility which reads and writes data
538 across network connections, using the TCP/IP protocol. It is designed to be a
539 reliable \"back-end\" tool that can be used directly or easily driven by other
540 programs and scripts. At the same time, it is a feature-rich network debugging
541 and exploration tool, since it can create almost any kind of connection you
542 would need and has several interesting built-in capabilities.")
543 (license license:gpl2+)))
544
545 (define-public sipcalc
546 (package
547 (name "sipcalc")
548 (version "1.1.6")
549 (source
550 (origin
551 (method url-fetch)
552 (uri (string-append "http://www.routemeister.net/projects"
553 "/sipcalc/files/sipcalc" "-" version ".tar.gz"))
554 (sha256
555 (base32
556 "0mv3wndj4z2bsshh2k8d5sy3j8wxzgf8mzmmkvj1k8gpcz37dm6g"))))
557 (build-system gnu-build-system)
558 (home-page "http://www.routemeister.net/projects/sipcalc/")
559 (synopsis "Command-line IP subnet calculator")
560 (description
561 "Sipcalc is an advanced command-line IP subnet calculator. It can take
562 multiple forms of input (IPv4/IPv6/interface/hostname) and output a multitude
563 of information about a given subnet.
564
565 Features include:
566
567 @itemize @bullet
568 @item IPv4
569 @itemize
570 @item Retrieving of address information from interfaces.
571 @item Classfull and CIDR output.
572 @item Multiple address and netmask input and output formats (dotted quad, hex,
573 number of bits).
574 @item Output of broadcast address, network class, Cisco wildcard,
575 hosts/range, network range.
576 @item The ability to split a network based on a smaller netmask, now also with
577 recursive runs on the generated subnets. (also IPv6)
578 @end itemize
579 @item IPv6
580 @itemize
581 @item Compressed and expanded input and output addresses.
582 @item Standard IPv6 network output.
583 @item v4 in v6 output.
584 @item Reverse DNS address generation.
585 @end itemize
586 @end itemize\n")
587 (license license:bsd-3)))
588
589 (define-public alive
590 (package
591 (name "alive")
592 (version "2.0.2")
593 (source (origin
594 (method url-fetch)
595 (uri (string-append "mirror://gnu/alive/alive-"
596 version ".tar.xz"))
597 (sha256
598 (base32
599 "1vrzg51ai68x9yld7vbgl58sxaw5qpx8rbakwcxn4cqq6vpxj38j"))))
600 (build-system gnu-build-system)
601 (arguments '(#:configure-flags '("alive_cv_nice_ping=yes")))
602 (inputs `(("guile" ,guile-2.0)
603 ("inetutils" ,inetutils)))
604 (home-page "https://www.gnu.org/software/alive/")
605 (synopsis "Autologin and keep-alive daemon")
606 (description
607 "GNU Alive sends periodic pings to a server, generally to keep a
608 connection alive.")
609 (license license:gpl3+)))
610
611 (define-public isc-dhcp
612 (let* ((bind-major-version "9")
613 (bind-minor-version "11")
614 (bind-patch-version "4")
615 (bind-release-type "-P") ; for patch release, use "-P"
616 (bind-release-version "1") ; for patch release, e.g. "6"
617 (bind-version (string-append bind-major-version
618 "."
619 bind-minor-version
620 "."
621 bind-patch-version
622 bind-release-type
623 bind-release-version)))
624 (package
625 (name "isc-dhcp")
626 (version "4.4.1")
627 (source (origin
628 (method url-fetch)
629 (uri (string-append "https://ftp.isc.org/isc/dhcp/"
630 version "/dhcp-" version ".tar.gz"))
631 (sha256
632 (base32
633 "025nfqx4zwdgv4b3rkw26ihcj312vir08jk6yi57ndmb4a4m08ia"))))
634 (build-system gnu-build-system)
635 (arguments
636 `(#:parallel-build? #f
637 #:phases
638 (modify-phases %standard-phases
639 (add-after 'unpack 'replace-bundled-bind
640 (lambda* (#:key inputs #:allow-other-keys)
641 (delete-file "bind/bind.tar.gz")
642 (copy-file (assoc-ref inputs "bind-source-tarball")
643 "bind/bind.tar.gz")
644 (chmod "bind/bind.tar.gz" #o644)
645 (substitute* "bind/version.tmp"
646 (("^MAJORVER=.*")
647 (format #f "MAJORVER=~a\n" ,bind-major-version))
648 (("^MINORVER=.*")
649 (format #f "MINORVER=~a\n" ,bind-minor-version))
650 (("^PATCHVER=.*")
651 (format #f "PATCHVER=~a\n" ,bind-patch-version))
652 (("^RELEASETYPE=.*")
653 (format #f "RELEASETYPE=~a\n" ,bind-release-type))
654 (("^RELEASEVER=.*")
655 (format #f "RELEASEVER=~a\n" ,bind-release-version)))
656 #t))
657 (add-after 'configure 'post-configure
658 (lambda* (#:key outputs #:allow-other-keys)
659 ;; Point to the right client script, which will be
660 ;; installed in a later phase.
661 (substitute* "includes/dhcpd.h"
662 (("#define[[:blank:]]+_PATH_DHCLIENT_SCRIPT.*")
663 (let ((out (assoc-ref outputs "out")))
664 (string-append "#define _PATH_DHCLIENT_SCRIPT \""
665 out "/libexec/dhclient-script"
666 "\"\n"))))
667
668 ;; During the 'build' phase, 'bind.tar.gz' is extracted, so
669 ;; we must patch shebangs in there and make sure the right
670 ;; shell is used.
671 (with-directory-excursion "bind"
672 (substitute* "Makefile"
673 (("\\./configure")
674 (let ((sh (which "sh")))
675 (string-append "./configure CONFIG_SHELL="
676 sh " SHELL=" sh))))
677
678 (let ((bind-directory (string-append "bind-" ,bind-version)))
679 (invoke "tar" "xf" "bind.tar.gz")
680 (for-each patch-shebang
681 (find-files bind-directory ".*"))
682 (invoke "tar" "cf" "bind.tar.gz"
683 bind-directory
684 ;; avoid non-determinism in the archive
685 "--sort=name"
686 "--mtime=@0"
687 "--owner=root:0"
688 "--group=root:0")))))
689 (add-after 'install 'post-install
690 (lambda* (#:key inputs outputs #:allow-other-keys)
691 ;; Install the dhclient script for GNU/Linux and make sure
692 ;; if finds all the programs it needs.
693 (let* ((out (assoc-ref outputs "out"))
694 (libexec (string-append out "/libexec"))
695 (coreutils (assoc-ref inputs "coreutils"))
696 (inetutils (assoc-ref inputs "inetutils"))
697 (net-tools (assoc-ref inputs "net-tools"))
698 (sed (assoc-ref inputs "sed")))
699 (substitute* "client/scripts/linux"
700 (("/sbin/ip")
701 (string-append (assoc-ref inputs "iproute")
702 "/sbin/ip")))
703
704 (mkdir-p libexec)
705 (copy-file "client/scripts/linux"
706 (string-append libexec "/dhclient-script"))
707
708 (wrap-program
709 (string-append libexec "/dhclient-script")
710 `("PATH" ":" prefix
711 ,(map (lambda (dir)
712 (string-append dir "/bin:"
713 dir "/sbin"))
714 (list inetutils net-tools coreutils sed))))
715 #t))))))
716
717 (native-inputs `(("perl" ,perl)))
718
719 (inputs `(("inetutils" ,inetutils)
720 ("net-tools" ,net-tools)
721 ("iproute" ,iproute)
722
723 ;; XXX isc-dhcp bundles a copy of bind that has security
724 ;; flaws, so we use a newer version.
725 ("bind-source-tarball"
726 ,(origin
727 (method url-fetch)
728 (uri (string-append "https://ftp.isc.org/isc/bind9/"
729 bind-version
730 "/bind-" bind-version ".tar.gz"))
731 (sha256
732 (base32
733 "08zyy13b8ydfbg26b3y6mw299qs89ba90gymraqqjsgjicydrq5h"))))
734
735 ;; When cross-compiling, we need the cross Coreutils and sed.
736 ;; Otherwise just use those from %FINAL-INPUTS.
737 ,@(if (%current-target-system)
738 `(("coreutils" ,coreutils)
739 ("sed" ,sed))
740 '())))
741
742 (home-page "https://www.isc.org/products/DHCP/")
743 (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
744 (description
745 "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
746 reference implementation of all aspects of DHCP, through a suite of DHCP
747 tools: server, client, and relay agent.")
748 (license license:mpl2.0)
749 (properties '((cpe-name . "dhcp"))))))
750
751 (define-public libpcap
752 (package
753 (name "libpcap")
754 (version "1.9.0")
755 (source (origin
756 (method url-fetch)
757 (uri (string-append "https://www.tcpdump.org/release/libpcap-"
758 version ".tar.gz"))
759 (sha256
760 (base32
761 "06bhydl4vr4z9c3vahl76f2j96z1fbrcl7wwismgs4sris08inrf"))))
762 (build-system gnu-build-system)
763 (native-inputs
764 `(("bison" ,bison)
765 ("flex" ,flex)))
766 (arguments
767 ;; There are some tests in testprogs/, but no automated test suite.
768 '(#:tests? #f))
769 (home-page "https://www.tcpdump.org")
770 (synopsis "Network packet capture library")
771 (description
772 "libpcap is an interface for user-level packet capture. It provides a
773 portable framework for low-level network monitoring. Applications include
774 network statistics collection, security monitoring, network debugging, etc.")
775 (license (list license:bsd-4 ; fad-*.c and several other source files
776 license:bsd-3 ; pcap/, sockutils.* & others
777 license:bsd-2)))) ; the rest
778
779 (define-public tcpdump
780 (package
781 (name "tcpdump")
782 (version "4.9.2")
783 (source (origin
784 (method url-fetch)
785 (uri (string-append "https://www.tcpdump.org/release/tcpdump-"
786 version ".tar.gz"))
787 (sha256
788 (base32
789 "0ygy0layzqaj838r5xd613iraz09wlfgpyh7pc6cwclql8v3b2vr"))))
790 (build-system gnu-build-system)
791 (inputs `(("libpcap" ,libpcap)
792 ("openssl" ,openssl)))
793 (native-inputs `(("perl" ,perl))) ; for tests
794 (home-page "https://www.tcpdump.org/")
795 (synopsis "Network packet analyzer")
796 (description
797 "Tcpdump is a command-line tool to analyze network traffic passing
798 through the network interface controller.")
799 (license license:bsd-3)))
800
801 (define-public jnettop
802 (package
803 (name "jnettop")
804 (version "0.13.0")
805 (source (origin
806 (method url-fetch)
807 (uri (string-append "http://jnettop.kubs.info/dist/jnettop-"
808 version ".tar.gz"))
809 (sha256
810 (base32
811 "1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9"))))
812 (build-system gnu-build-system)
813 (native-inputs
814 `(("pkg-config" ,pkg-config)))
815 (inputs
816 `(("glib" ,glib)
817 ("ncurses" ,ncurses)
818 ("libpcap" ,libpcap)))
819 (home-page "http://jnettop.kubs.info/")
820 (synopsis "Visualize network traffic by bandwidth use")
821 (description
822 "Jnettop is a traffic visualiser, which captures traffic going
823 through the host it is running from and displays streams sorted
824 by bandwidth they use.")
825 (license license:gpl2+)))
826
827 (define-public clusterssh
828 (package
829 (name "clusterssh")
830 (version "4.13.2")
831 (source (origin
832 (method url-fetch)
833 (uri (string-append "mirror://sourceforge/clusterssh/"
834 "2.%20ClusterSSH%20Series%204/"
835 "App-ClusterSSH-v" version ".tar.gz"))
836 (sha256
837 (base32
838 "0rmk2p3f2wz1h092anidjclh212rv3gxyk0c641qk3frlrjnw6mp"))))
839 (build-system perl-build-system)
840 (native-inputs
841 `(("perl-cpan-changes" ,perl-cpan-changes)
842 ("perl-file-slurp" ,perl-file-slurp)
843 ("perl-file-which" ,perl-file-which)
844 ("perl-module-build" ,perl-module-build)
845 ("perl-readonly" ,perl-readonly)
846 ("perl-test-differences" ,perl-test-differences)
847 ("perl-test-distmanifest" ,perl-test-distmanifest)
848 ("perl-test-perltidy" ,perl-test-perltidy)
849 ("perl-test-pod" ,perl-test-pod)
850 ("perl-test-pod-coverage" ,perl-test-pod-coverage)
851 ("perl-test-trap" ,perl-test-trap)
852 ("perltidy" ,perltidy)))
853 (propagated-inputs
854 `(("xterm" ,xterm)
855 ("perl-exception-class" ,perl-exception-class)
856 ("perl-tk" ,perl-tk)
857 ("perl-try-tiny" ,perl-try-tiny)
858 ("perl-x11-protocol" ,perl-x11-protocol)
859 ("perl-x11-protocol-other" ,perl-x11-protocol-other)))
860 ;; The clusterssh.sourceforge.net address requires login to view
861 (home-page "https://sourceforge.net/projects/clusterssh/")
862 (synopsis "Secure concurrent multi-server terminal control")
863 (description
864 "ClusterSSH controls a number of xterm windows via a single graphical
865 console window to allow commands to be interactively run on multiple servers
866 over ssh connections.")
867 (license license:gpl2+)))
868
869 (define-public rename
870 (package
871 (name "rename")
872 (version "0.35")
873 (source (origin
874 (method url-fetch)
875 (uri (string-append
876 "mirror://cpan/authors/id/R/RM/RMBARKER/File-Rename-"
877 version ".tar.gz"))
878 (sha256
879 (base32
880 "052iqmn7ya3w1nadpiyavmr3rx566r0lbflx94y8b5wx9q5c16rq"))))
881 (build-system perl-build-system)
882 (native-inputs
883 `(("perl-module-build" ,perl-module-build)
884 ("perl-test-pod" ,perl-test-pod)
885 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
886 (home-page "https://metacpan.org/pod/distribution/File-Rename/rename.PL")
887 (synopsis "Perl extension for renaming multiple files")
888 (description
889 "This package provides a Perl interface (@code{Perl::Rename}) as well
890 as a command-line utility (@command{rename}) that can rename multiple files
891 at once based on a Perl regular expression.")
892 (license license:perl-license)))
893
894 (define-public rottlog
895 (package
896 (name "rottlog")
897 (version "0.72.2")
898 (source (origin
899 (method url-fetch)
900 (uri (string-append "mirror://gnu/rottlog/rottlog-"
901 version ".tar.gz"))
902 (sha256
903 (base32
904 "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
905 (modules '((guix build utils)))
906 (snippet
907 '(begin
908 (substitute* "Makefile.in"
909 (("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
910 ;; Don't try to chown root.
911 "")
912 (("mkdir -p \\$\\(ROTT_STATDIR\\)")
913 ;; Don't attempt to create /var/lib/rottlog.
914 "true"))
915 #t))))
916 (build-system gnu-build-system)
917 (arguments
918 '(#:configure-flags (list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
919 "--localstatedir=/var")
920
921 ;; Install example config files in OUT/etc.
922 #:make-flags (list (string-append "ROTT_ETCDIR="
923 (assoc-ref %outputs "out")
924 "/etc"))
925
926 #:phases (modify-phases %standard-phases
927 (add-after 'unpack 'patch-paths
928 (lambda _
929 (substitute* "rc/rc"
930 (("/usr/sbin/sendmail") "sendmail"))
931 #t))
932 (add-after 'build 'set-packdir
933 (lambda _
934 ;; Set a default location for archived logs.
935 (substitute* "rc/rc"
936 (("packdir=\"\"")
937 "packdir=\"/var/log\""))
938 #t))
939 (add-before 'install 'tweak-rc-weekly
940 (lambda _
941 (substitute* "rc/weekly"
942 (("/bin/kill")
943 (which "kill"))
944 (("syslogd\\.pid")
945 ;; The file is called 'syslog.pid' (no 'd').
946 "syslog.pid"))
947 #t))
948 (add-after 'install 'install-info
949 (lambda _
950 (zero? (system* "make" "install-info")))))))
951 (native-inputs `(("texinfo" ,texinfo)
952 ("util-linux" ,util-linux))) ; for 'cal'
953 (home-page "https://www.gnu.org/software/rottlog/")
954 (synopsis "Log rotation and management")
955 (description
956 "GNU Rot[t]log is a program for managing log files. It is used to
957 automatically rotate out log files when they have reached a given size or
958 according to a given schedule. It can also be used to automatically compress
959 and archive such logs. Rot[t]log will mail reports of its activity to the
960 system administrator.")
961 (license license:gpl3+)))
962
963 (define-public sudo
964 (package
965 (name "sudo")
966 (version "1.8.23")
967 (source (origin
968 (method url-fetch)
969 (uri
970 (list (string-append "https://www.sudo.ws/sudo/dist/sudo-"
971 version ".tar.gz")
972 (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
973 version ".tar.gz")))
974 (sha256
975 (base32
976 "0yg62wq8rcrbr7qvh3wgfg2g4bwanbi50cr2lf2cfyy8dydx4qyq"))
977 (modules '((guix build utils)))
978 (snippet
979 '(begin
980 (delete-file-recursively "lib/zlib")
981 #t))))
982 (build-system gnu-build-system)
983 (arguments
984 `(#:configure-flags
985 (list "--with-logpath=/var/log/sudo.log"
986 "--with-rundir=/var/run/sudo" ;must be cleaned up at boot time
987 "--with-vardir=/var/db/sudo"
988 "--with-iologdir=/var/log/sudo-io"
989
990 ;; 'visudo.c' expects _PATH_MV to be defined, but glibc doesn't
991 ;; provide it.
992 (string-append "CPPFLAGS=-D_PATH_MV='\""
993 (assoc-ref %build-inputs "coreutils")
994 "/bin/mv\"'"))
995
996 ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
997 #:parallel-build? #f
998
999 #:phases
1000 (modify-phases %standard-phases
1001 (add-before 'configure 'pre-configure
1002 (lambda _
1003 (substitute* "src/sudo_usage.h.in"
1004 ;; Do not capture 'configure' arguments since we would
1005 ;; unduly retain references, and also because the
1006 ;; CPPFLAGS above would close the string literal
1007 ;; prematurely.
1008 (("@CONFIGURE_ARGS@") "\"\""))
1009 (substitute* (find-files "." "Makefile\\.in")
1010 (("-o [[:graph:]]+ -g [[:graph:]]+")
1011 ;; Allow installation as non-root.
1012 "")
1013 (("^install: (.*)install-sudoers(.*)" _ before after)
1014 ;; Don't try to create /etc/sudoers.
1015 (string-append "install: " before after "\n"))
1016 (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
1017 ;; Don't try to create /run/sudo.
1018 "$(TMPDIR)/dummy")
1019 (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
1020 ;; Don't try to create /var/db/sudo.
1021 "$(TMPDIR)/dummy"))
1022 #t)))
1023
1024 ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
1025 ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
1026 #:tests? #f))
1027 (inputs
1028 `(("groff" ,groff)
1029 ("linux-pam" ,linux-pam)
1030 ("zlib" ,zlib)
1031 ("coreutils" ,coreutils)))
1032 (home-page "https://www.sudo.ws/")
1033 (synopsis "Run commands as root")
1034 (description
1035 "Sudo (su \"do\") allows a system administrator to delegate authority to
1036 give certain users (or groups of users) the ability to run some (or all)
1037 commands as root or another user while providing an audit trail of the
1038 commands and their arguments.")
1039
1040 ;; See <http://www.sudo.ws/sudo/license.html>.
1041 (license license:x11)))
1042
1043 (define-public wpa-supplicant-minimal
1044 (package
1045 (name "wpa-supplicant-minimal")
1046 (version "2.6")
1047 (source (origin
1048 (method url-fetch)
1049 (uri (string-append
1050 "https://w1.fi/releases/wpa_supplicant-"
1051 version
1052 ".tar.gz"))
1053 (patches (search-patches "wpa-supplicant-CVE-2017-13082.patch"
1054 "wpa-supplicant-CVE-2018-14526.patch"
1055 "wpa-supplicant-fix-key-reuse.patch"
1056 "wpa-supplicant-fix-zeroed-keys.patch"
1057 "wpa-supplicant-fix-nonce-reuse.patch"
1058 "wpa-supplicant-krack-followups.patch"))
1059 (sha256
1060 (base32
1061 "0l0l5gz3d5j9bqjsbjlfcv4w4jwndllp9fmyai4x9kg6qhs6v4xl"))))
1062 (build-system gnu-build-system)
1063 (arguments
1064 '(#:phases
1065 (modify-phases %standard-phases
1066 (replace 'configure
1067 (lambda* (#:key outputs #:allow-other-keys)
1068 (chdir "wpa_supplicant")
1069 (copy-file "defconfig" ".config")
1070 (let ((port (open-file ".config" "al")))
1071 (display "
1072 CONFIG_DEBUG_SYSLOG=y
1073
1074 # Choose GnuTLS (the default is OpenSSL.)
1075 CONFIG_TLS=gnutls
1076
1077 CONFIG_DRIVER_NL80211=y
1078 CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
1079 CONFIG_LIBNL32=y
1080 CONFIG_READLINE=y\n" port)
1081 (close-port port))))
1082 (add-after 'install 'install-man-pages
1083 (lambda* (#:key outputs #:allow-other-keys)
1084 (let* ((out (assoc-ref outputs "out"))
1085 (man (string-append out "/share/man"))
1086 (man5 (string-append man "/man5"))
1087 (man8 (string-append man "/man8")))
1088 (define (copy-man-page target)
1089 (lambda (file)
1090 (install-file file target)))
1091
1092 (mkdir-p man5) (mkdir man8)
1093 (for-each (copy-man-page man5)
1094 (find-files "doc/docbook" "\\.5"))
1095 (for-each (copy-man-page man8)
1096 (find-files "doc/docbook" "\\.8"))
1097 #t))))
1098
1099 #:make-flags (list "CC=gcc"
1100 (string-append "BINDIR=" (assoc-ref %outputs "out")
1101 "/sbin")
1102 (string-append "LIBDIR=" (assoc-ref %outputs "out")
1103 "/lib"))
1104 #:tests? #f))
1105 (inputs
1106 `(("readline" ,readline)
1107 ("libnl" ,libnl)
1108 ("gnutls" ,gnutls)
1109 ("libgcrypt" ,libgcrypt))) ;needed by crypto_gnutls.c
1110 (native-inputs
1111 `(("pkg-config" ,pkg-config)))
1112 (home-page "https://w1.fi/wpa_supplicant/")
1113 (synopsis "Connecting to WPA and WPA2-protected wireless networks")
1114 (description
1115 "wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
1116 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
1117 the client stations. It implements key negotiation with a WPA Authenticator
1118 and it controls the roaming and IEEE 802.11 authentication/association of the
1119 WLAN driver.
1120
1121 This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
1122
1123 ;; In practice, this is linked against Readline, which makes it GPLv3+.
1124 (license license:bsd-3)))
1125
1126 (define-public wpa-supplicant
1127 (package (inherit wpa-supplicant-minimal)
1128 (name "wpa-supplicant")
1129 (inputs `(("dbus" ,dbus)
1130 ,@(package-inputs wpa-supplicant-minimal)))
1131 (arguments
1132 (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
1133 ((#:phases phases)
1134 `(modify-phases ,phases
1135 (add-after 'configure 'configure-for-dbus
1136 (lambda _
1137 (let ((port (open-file ".config" "al")))
1138 (display "
1139 CONFIG_CTRL_IFACE_DBUS=y
1140 CONFIG_CTRL_IFACE_DBUS_NEW=y
1141 CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
1142 (close-port port))
1143 #t))
1144 (add-after 'install-man-pages 'install-dbus-conf
1145 (lambda* (#:key outputs #:allow-other-keys)
1146 (let* ((out (assoc-ref outputs "out"))
1147 (dir (string-append out "/etc/dbus-1/system.d")))
1148 (mkdir-p dir)
1149 (copy-file "dbus/dbus-wpa_supplicant.conf"
1150 (string-append dir "/wpa_supplicant.conf")))
1151 #t))))))))
1152
1153 (define-public wpa-supplicant-gui
1154 (package
1155 (inherit wpa-supplicant)
1156 (name "wpa-supplicant-gui")
1157 (inputs `(("qtbase" ,qtbase)
1158 ("qtsvg" ,qtsvg)
1159 ,@(package-inputs wpa-supplicant)))
1160 (native-inputs
1161 ;; For icons.
1162 `(("imagemagick" ,imagemagick)
1163 ("inkscape" ,inkscape)
1164 ,@(package-native-inputs wpa-supplicant)))
1165 (arguments
1166 `(#:phases (modify-phases %standard-phases
1167 (add-after 'unpack 'chdir
1168 (lambda _
1169 (chdir "wpa_supplicant/wpa_gui-qt4")
1170 #t))
1171 (delete 'configure)
1172 (replace 'build
1173 (lambda _
1174 (invoke "qmake" "wpa_gui.pro")
1175 (invoke "make" "-j" (number->string (parallel-job-count)))
1176 (invoke "make" "-C" "icons")))
1177 (replace 'install
1178 (lambda* (#:key inputs outputs #:allow-other-keys)
1179 (let ((out (assoc-ref outputs "out"))
1180 (qt '("qtbase" "qtsvg")))
1181 (substitute* "wpa_gui.desktop"
1182 (("Exec=wpa_gui")
1183 (string-append "Exec=" out "/bin/wpa_gui")))
1184 (install-file "wpa_gui" (string-append out "/bin"))
1185 (install-file "wpa_gui.desktop"
1186 (string-append out "/share/applications"))
1187 (copy-recursively "icons/hicolor"
1188 (string-append out "/share/icons/hicolor"))
1189 (wrap-program (string-append out "/bin/wpa_gui")
1190 `("QT_PLUGIN_PATH" ":" prefix
1191 ,(map (lambda (label)
1192 (string-append (assoc-ref inputs label)
1193 "/lib/qt5/plugins/"))
1194 qt)))
1195 #t))))))
1196 (synopsis "Graphical user interface for WPA supplicant")))
1197
1198 (define-public wakelan
1199 (package
1200 (name "wakelan")
1201 (version "1.1")
1202 (source (origin
1203 (method url-fetch)
1204 (uri (string-append
1205 "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-"
1206 version ".tar.gz"))
1207 (sha256
1208 (base32
1209 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
1210 (build-system gnu-build-system)
1211 (arguments
1212 '(#:phases
1213 (modify-phases %standard-phases
1214 (replace 'configure
1215 (lambda* (#:key outputs #:allow-other-keys)
1216 (let ((out (assoc-ref outputs "out")))
1217 (mkdir-p (string-append out "/bin"))
1218 (mkdir-p (string-append out "/share/man/man1"))
1219
1220 ;; It's an old configure script that doesn't understand
1221 ;; the extra options we pass.
1222 (setenv "CONFIG_SHELL" (which "bash"))
1223 (zero?
1224 (system* "./configure"
1225 (string-append "--prefix=" out)
1226 (string-append "--mandir=" out
1227 "/share/man")))))))
1228 #:tests? #f))
1229 (home-page "https://www.kernel.org") ; really, no home page
1230 (synopsis "Send a wake-on-LAN packet")
1231 (description
1232 "WakeLan broadcasts a properly formatted UDP packet across the local area
1233 network, which causes enabled computers to power on.")
1234 (license license:gpl2+)))
1235
1236 (define-public dmidecode
1237 (package
1238 (name "dmidecode")
1239 (version "3.1")
1240 (source (origin
1241 (method url-fetch)
1242 (uri (string-append
1243 "mirror://savannah/dmidecode/dmidecode-"
1244 version ".tar.xz"))
1245 (sha256
1246 (base32
1247 "1h0sg0lxa15nzf8s7884p6q7p6md9idm0c79wyqmk32l4ndwwrnp"))))
1248 (build-system gnu-build-system)
1249 (arguments
1250 '(#:phases (modify-phases %standard-phases (delete 'configure))
1251 #:tests? #f ; no 'check' target
1252 #:make-flags (list (string-append "prefix="
1253 (assoc-ref %outputs "out")))))
1254 (home-page "https://www.nongnu.org/dmidecode/")
1255 (synopsis "Read hardware information from the BIOS")
1256 (description
1257 "Dmidecode reports information about your system's hardware as described
1258 in your system BIOS according to the SMBIOS/DMI standard. This typically
1259 includes system manufacturer, model name, serial number, BIOS version, asset
1260 tag as well as a lot of other details of varying level of interest and
1261 reliability depending on the manufacturer. This will often include usage
1262 status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
1263 module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
1264 (license license:gpl2+)))
1265
1266 (define-public acpica
1267 (package
1268 (name "acpica")
1269 (version "20180810")
1270 (source (origin
1271 (method url-fetch)
1272 (uri (string-append
1273 "https://acpica.org/sites/acpica/files/acpica-unix2-"
1274 version ".tar.gz"))
1275 (sha256
1276 (base32
1277 "01drf32h0v1s8yd414rgc9bavb52yffrwpnbzfxd9sk1lwssr6v7"))))
1278 (build-system gnu-build-system)
1279 (native-inputs `(("flex" ,flex)
1280 ("bison" ,bison)))
1281 (arguments
1282 '(#:make-flags (list (string-append "PREFIX=" %output)
1283 "CC=gcc"
1284 "HOST=_LINUX"
1285 "OPT_CFLAGS=-Wall -fno-strict-aliasing")
1286 #:tests? #f ; no 'check' target
1287 #:phases (modify-phases %standard-phases (delete 'configure))))
1288 (home-page "https://acpica.org/")
1289 (synopsis "Tools for the development and debug of ACPI tables")
1290 (description
1291 "The ACPI Component Architecture (@dfn{ACPICA}) project provides an
1292 OS-independent reference implementation of the Advanced Configuration and
1293 Power Interface Specification (@dfn{ACPI}). ACPICA code contains those portions
1294 of ACPI meant to be directly integrated into the host OS as a kernel-resident
1295 subsystem, and a small set of tools to assist in developing and debugging ACPI
1296 tables. This package contains only the user-space tools needed for ACPI table
1297 development, not the kernel implementation of ACPI.")
1298 (license license:gpl2))) ; dual GPLv2/ACPICA Licence
1299
1300 (define-public stress
1301 (package
1302 (name "stress")
1303 (version "1.0.4")
1304 (source (origin
1305 (method url-fetch)
1306 (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
1307 version ".orig.tar.gz"))
1308 (sha256
1309 (base32
1310 "0nw210jajk38m3y7h8s130ps2qsbz7j75wab07hi2r3hlz14yzh5"))))
1311 (build-system gnu-build-system)
1312 (home-page "https://packages.debian.org/sid/stress")
1313 (synopsis "Impose load on and stress test a computer system")
1314 (description
1315 "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
1316 or disk stress on a POSIX-compliant operating system and reports any errors it
1317 detects.
1318
1319 Stress is not a benchmark. It is a tool used by system administrators to
1320 evaluate how well their systems will scale, by kernel programmers to evaluate
1321 perceived performance characteristics, and by systems programmers to expose
1322 the classes of bugs which only or more frequently manifest themselves when the
1323 system is under heavy load.")
1324 (license license:gpl2+)))
1325
1326 (define-public detox
1327 (package
1328 (name "detox")
1329 (version "1.2.0")
1330 (source (origin
1331 (method url-fetch)
1332 (uri (string-append "mirror://sourceforge/detox/detox/" version
1333 "/detox-" version ".tar.bz2"))
1334 (sha256
1335 (base32
1336 "1y6vvjqsg54kl49cry73jbfhr04s7wjs779vrr9zrq6kww7dkymb"))))
1337 (build-system gnu-build-system)
1338 ;; Both flex and popt are used in this case for their runtime libraries
1339 ;; (libfl and libpopt).
1340 (inputs
1341 `(("flex" ,flex)
1342 ("popt" ,popt)))
1343 (arguments
1344 `(#:configure-flags `(,(string-append "--with-popt="
1345 (assoc-ref %build-inputs "popt")))
1346 #:tests? #f)) ;no 'check' target
1347 (home-page "http://detox.sourceforge.net")
1348 (synopsis "Clean up file names")
1349 (description
1350 "Detox is a program that renames files to make them easier to work with
1351 under Unix and related operating systems. Spaces and various other unsafe
1352 characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
1353 characters can be replaced as well, as can UTF-8 characters.")
1354 (license license:bsd-3)))
1355
1356 (define-public testdisk
1357 (package
1358 (name "testdisk")
1359 (version "7.0")
1360 (source (origin
1361 (method url-fetch)
1362 (uri (string-append "http://www.cgsecurity.org/testdisk-"
1363 version ".tar.bz2"))
1364 (sha256
1365 (base32
1366 "0ba4wfz2qrf60vwvb1qsq9l6j0pgg81qgf7fh22siaz649mkpfq0"))))
1367 (build-system gnu-build-system)
1368 (inputs
1369 `(("ntfs-3g" ,ntfs-3g)
1370 ("util-linux" ,util-linux)
1371 ("openssl" ,openssl)
1372 ;; FIXME: add reiserfs
1373 ("zlib" ,zlib)
1374 ("e2fsprogs" ,e2fsprogs)
1375 ("libjpeg" ,libjpeg)
1376 ("ncurses" ,ncurses)))
1377 (home-page "https://www.cgsecurity.org/wiki/TestDisk")
1378 (synopsis "Data recovery tool")
1379 (description
1380 "TestDisk is a program for data recovery, primarily designed to help
1381 recover lost partitions and/or make non-booting disks bootable again.")
1382 (license license:gpl2+)))
1383
1384 (define-public tree
1385 (package
1386 (name "tree")
1387 (version "1.7.0")
1388 (source (origin
1389 (method url-fetch)
1390 (uri (string-append
1391 "http://mama.indstate.edu/users/ice/tree/src/tree-"
1392 version ".tgz"))
1393 (sha256
1394 (base32 "04kviw799qxly08zb8n5mgxfd96gyis6x69q2qiw86jnh87c4mv9"))))
1395 (build-system gnu-build-system)
1396 (arguments
1397 '(#:phases (modify-phases %standard-phases (delete 'configure))
1398 #:tests? #f ; no check target
1399 #:make-flags (let ((out (assoc-ref %outputs "out")))
1400 (list (string-append "prefix=" out)))))
1401 (synopsis "Recursively list the contents of a directory")
1402 (description
1403 "Tree is a recursive directory listing command that produces a depth
1404 indented listing of files, which is colorized ala dircolors if the LS_COLORS
1405 environment variable is set and output is to tty.")
1406 (home-page "http://mama.indstate.edu/users/ice/tree/")
1407 (license license:gpl2+)))
1408
1409 (define-public direvent
1410 (package
1411 (name "direvent")
1412 (version "5.1")
1413 (source (origin
1414 (method url-fetch)
1415 (uri (string-append "mirror://gnu/direvent/direvent-"
1416 version ".tar.gz"))
1417 (sha256
1418 (base32
1419 "1nwvjmx7kb14ni34c0b8x9a3791pc20gvhj7xaj66d8q4h6n0qf4"))
1420 (modules '((guix build utils)))
1421 (snippet '(begin
1422 (substitute* "tests/testsuite"
1423 (("#![[:blank:]]?/bin/sh")
1424 "#!$SHELL"))
1425 #t))))
1426 (build-system gnu-build-system)
1427 (arguments
1428 '(#:phases
1429 (modify-phases %standard-phases
1430 (add-before 'build 'patch-/bin/sh
1431 (lambda* (#:key inputs #:allow-other-keys)
1432 ;; Use the right shell when executing the watcher and
1433 ;; user-provided shell commands.
1434 (let ((bash (assoc-ref inputs "bash")))
1435 (substitute* '("src/direvent.c" "src/progman.c")
1436 (("\"/bin/sh\"")
1437 (string-append "\"" bash "/bin/sh\"")))
1438
1439 ;; Adjust the 'shell.at' test accordingly.
1440 (substitute* "tests/testsuite"
1441 (("SHELL=/bin/sh")
1442 (string-append "SHELL=" bash "/bin/sh")))
1443
1444 #t))))))
1445 (home-page "https://www.gnu.org/software/direvent/")
1446 (synopsis "Daemon to monitor directories for events such as file removal")
1447 (description
1448 "A daemon that monitors directories for events, such as creating,
1449 deleting or modifying files. It can monitor different sets of directories for
1450 different events. When an event is detected, direvent calls a specified
1451 external program with information about the event, such as the location
1452 within the file system where it occurred. Thus, \"direvent\" provides an
1453 easy way to react immediately if given files undergo changes, for example, to
1454 track changes in important system configuration files.")
1455 (license license:gpl3+)))
1456
1457 (define-public libcap-ng
1458 (package
1459 (name "libcap-ng")
1460 (version "0.7.9")
1461 (source (origin
1462 (method url-fetch)
1463 (uri (string-append
1464 "https://people.redhat.com/sgrubb/libcap-ng/libcap-ng-"
1465 version ".tar.gz"))
1466 (sha256
1467 (base32
1468 "0a0k484kwv0zilry2mbl9k56cnpdhsjxdxin17jas6kkyfy345aa"))))
1469 (build-system gnu-build-system)
1470 (arguments
1471 `(#:configure-flags
1472 (list "--without-python")))
1473 (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
1474 (synopsis "Library for more easily working with POSIX capabilities")
1475 (description
1476 "The libcap-ng library is intended to make programming with POSIX
1477 capabilities easier than the traditional libcap library. It includes
1478 utilities that can analyse all currently running applications and print out
1479 any capabilities and whether or not it has an open ended bounding set. The
1480 included utilities are designed to let admins and developers spot apps from
1481 various ways that may be running with too much privilege.")
1482 ;; The library is lgpl2.1+, but also ships some utils which are gpl2+.
1483 (license (list license:lgpl2.1+ license:gpl2+))))
1484
1485 (define-public smartmontools
1486 (package
1487 (name "smartmontools")
1488 (version "6.6")
1489 (source (origin
1490 (method url-fetch)
1491 (uri (string-append
1492 "mirror://sourceforge/smartmontools/smartmontools/"
1493 version "/smartmontools-" version ".tar.gz"))
1494 (sha256
1495 (base32
1496 "0m1hllbb78rr6cxkbalmz1gqkl0psgq8rrmv4gwcmz34n07kvx2i"))))
1497 (build-system gnu-build-system)
1498 (inputs `(("libcap-ng" ,libcap-ng)))
1499 (home-page "https://www.smartmontools.org/")
1500 (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
1501 (description
1502 "The smartmontools package contains utility programs to control and
1503 monitor storage systems using the Self-Monitoring, Analysis and Reporting
1504 Technology System (@dfn{S.M.A.R.T.}) built into most modern ATA and SCSI hard
1505 disks. In many cases, these utilities will provide advanced warning of disk
1506 degradation and failure.")
1507 (license license:gpl2+)))
1508
1509 (define-public fdupes
1510 (package
1511 (name "fdupes")
1512 (version "1.6.1")
1513 (source
1514 (origin
1515 (method url-fetch)
1516 (uri (string-append
1517 "https://github.com/adrianlopezroche/fdupes/archive/v"
1518 version ".tar.gz"))
1519 (file-name (string-append name "-" version ".tar.gz"))
1520 (sha256
1521 (base32
1522 "1sj9pa40pbz6xdwbxfwhdhkvhdf1xc5gvggk9mdq26c41gdnyswx"))))
1523 (build-system gnu-build-system)
1524 (arguments
1525 '(#:phases (modify-phases %standard-phases
1526 (delete 'configure))
1527 #:tests? #f ; no 'check' target
1528 #:make-flags (list "CC=gcc"
1529 (string-append "PREFIX="
1530 (assoc-ref %outputs "out")))))
1531 (home-page "https://github.com/adrianlopezroche/fdupes")
1532 (synopsis "Identify duplicate files")
1533 (description
1534 "fdupes is a program for identifying duplicate files residing within
1535 specified directories.")
1536 (license license:expat)))
1537
1538 (define-public graphios
1539 (package
1540 (name "graphios")
1541 (version "2.0.3")
1542 (source
1543 (origin
1544 (method url-fetch)
1545 (uri (string-append
1546 "https://pypi.python.org/packages/source/g/graphios/graphios-"
1547 version ".tar.gz"))
1548 (sha256
1549 (base32
1550 "1h87hvc315wg6lklbf4l7csd3n5pgljwrfli1p3nasdi0izgn66i"))))
1551 (build-system python-build-system)
1552 (arguments
1553 ;; Be warned: Building with Python 3 succeeds, but the build process
1554 ;; throws a syntax error that is ignored.
1555 `(#:python ,python-2
1556 #:phases
1557 (modify-phases %standard-phases
1558 (add-before 'build 'fix-setup.py
1559 (lambda* (#:key outputs #:allow-other-keys)
1560 ;; Fix hardcoded, unprefixed file names.
1561 (let ((out (assoc-ref outputs "out")))
1562 (substitute* '("setup.py")
1563 (("/etc") (string-append out "/etc"))
1564 (("/usr") out)
1565 (("distro_ver = .*") "distro_ver = ''"))
1566 #t))))))
1567 (home-page "https://github.com/shawn-sterling/graphios")
1568 (synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
1569 (description
1570 "Graphios is a script to emit nagios perfdata to various upstream metrics
1571 processing and time-series systems. It's currently compatible with Graphite,
1572 Statsd, Librato and InfluxDB. Graphios can emit Nagios metrics to any number
1573 of supported upstream metrics systems simultaneously.")
1574 (license license:gpl2+)))
1575
1576 (define-public ansible
1577 (package
1578 (name "ansible")
1579 (version "2.5.7")
1580 (source
1581 (origin
1582 (method url-fetch)
1583 (uri (pypi-uri "ansible" version))
1584 (sha256
1585 (base32
1586 "0wbsjjx3xjlm8g50a9j9c6p9rn23jx32yn1234bf5rmj1qgy3p85"))
1587 (patches (search-patches "ansible-wrap-program-hack.patch"))))
1588 (build-system python-build-system)
1589 (native-inputs
1590 `(("python-bcrypt" ,python-bcrypt)
1591 ("python-pynacl" ,python-pynacl)
1592 ("python-httplib2" ,python-httplib2)
1593 ("python-passlib" ,python-passlib)
1594 ("python-nose" ,python-nose)
1595 ("python-mock" ,python-mock)
1596 ("python-jinja2" ,python-jinja2)
1597 ("python-pyyaml" ,python-pyyaml)
1598 ("python-paramiko" ,python-paramiko)))
1599 (inputs
1600 `(("python-cryptography" ,python-cryptography)
1601 ("python-jinja2" ,python-jinja2)
1602 ("python-pyyaml" ,python-pyyaml)
1603 ("python-paramiko" ,python-paramiko)))
1604 (home-page "https://www.ansible.com/")
1605 (synopsis "Radically simple IT automation")
1606 (description "Ansible is a radically simple IT automation system. It
1607 handles configuration management, application deployment, cloud provisioning,
1608 ad hoc task execution, and multinode orchestration---including trivializing
1609 things like zero-downtime rolling updates with load balancers.")
1610 (license license:gpl3+)))
1611
1612 (define-public cpulimit
1613 (package
1614 (name "cpulimit")
1615 (version "0.2")
1616 (source
1617 (origin
1618 (method url-fetch)
1619 (uri (string-append "https://github.com/opsengine/cpulimit/archive/v"
1620 version ".tar.gz"))
1621 (file-name (string-append name "-" version ".tar.gz"))
1622 (sha256
1623 (base32
1624 "1nn2w849xd5bw4y5sqnll29nxdwl5h0cv4smc7dwmpb9qnd2ycb4"))))
1625 (build-system gnu-build-system)
1626 (arguments
1627 `(#:phases (modify-phases %standard-phases
1628 (delete 'configure)
1629 (replace
1630 'build
1631 (lambda _
1632 (zero? (system* "make" "CC=gcc" "-Csrc"))))
1633 (replace
1634 'check
1635 (lambda _
1636 (zero? (system* "make" "CC=gcc" "-Ctests"))))
1637 (replace
1638 'install
1639 (lambda* (#:key outputs #:allow-other-keys)
1640 (let* ((out (assoc-ref outputs "out"))
1641 (bin (string-append out "/bin")))
1642 (install-file "src/cpulimit" bin)))))))
1643 (home-page "https://github.com/opsengine/cpulimit")
1644 (synopsis "Limit CPU usage")
1645 (description
1646 "Cpulimit limits the CPU usage of a process. It does not change the nice
1647 value or other scheduling priority settings, but the real CPU usage, and is
1648 able to adapt itself dynamically to the overall system load. Children
1649 processes and threads of the specified process may optionally share the same
1650 limits.")
1651 (license license:gpl2+)))
1652
1653 (define-public autojump
1654 (package
1655 (name "autojump")
1656 (version "22.5.1")
1657 (source
1658 (origin
1659 (method url-fetch)
1660 (uri (string-append "https://github.com/wting/autojump/archive/"
1661 "release-v" version ".tar.gz"))
1662 (file-name (string-append name "-" version ".tar.gz"))
1663 (sha256
1664 (base32
1665 "17z9j9936x0nizwrzf664bngh60x5qbvrrf1s5qdzd0f2gdanpvn"))))
1666 (build-system gnu-build-system)
1667 (native-inputs ;for tests
1668 `(("python-mock" ,python-mock)
1669 ("python-pytest" ,python-pytest)))
1670 (inputs
1671 `(("python" ,python-wrapper)))
1672 (arguments
1673 `(#:phases
1674 (modify-phases %standard-phases
1675 (delete 'configure)
1676 (delete 'build)
1677 (replace 'check
1678 (lambda _
1679 (invoke "python" "tests/unit/autojump_utils_test.py")))
1680 (replace 'install
1681 (lambda* (#:key outputs #:allow-other-keys)
1682 (setenv "SHELL" (which "bash"))
1683 (invoke "python" "install.py"
1684 (string-append "--destdir="
1685 (assoc-ref outputs "out"))))))))
1686 (home-page "https://github.com/wting/autojump")
1687 (synopsis "Shell extension for file system navigation")
1688 (description
1689 "Autojump provides a faster way to navigate your file system, with a \"cd
1690 command that learns\". It works by maintaining a database of the directories
1691 you use the most from the command line and allows you to \"jump\" to
1692 frequently used directories by typing only a small pattern.")
1693 (license license:gpl3+)))
1694
1695 (define-public fasd
1696 (package
1697 (name "fasd")
1698 (version "1.0.1")
1699 (source (origin
1700 (method git-fetch)
1701 (uri (git-reference
1702 (url "https://github.com/clvv/fasd.git")
1703 (commit version)))
1704 (file-name (git-file-name name version))
1705 (sha256
1706 (base32
1707 "1awi71jdv3mhjrmar2d4z1i90kn7apd7aq1w31sh6w4yibz9kiyj"))))
1708 (build-system gnu-build-system)
1709 (arguments
1710 `(#:phases (modify-phases %standard-phases
1711 (delete 'configure)) ;no configuration
1712 #:tests? #f ;no tests
1713 #:make-flags (list (string-append "PREFIX=" %output))))
1714 (home-page "https://github.com/clvv/fasd")
1715 (synopsis "Quick access to files and directories for shells")
1716 (description
1717 "Fasd (pronounced similar to \"fast\") is a command-line productivity
1718 booster. Fasd offers quick access to files and directories for POSIX shells.
1719 It is inspired by tools like autojump, z, and v. Fasd keeps track of files
1720 and directories you have accessed so that you can quickly reference them in
1721 the command line.")
1722 (license license:x11)))
1723
1724 (define-public iftop
1725 (package
1726 (name "iftop")
1727 (version "1.0pre4")
1728 (source (origin
1729 (method url-fetch)
1730 (uri (string-append "http://www.ex-parrot.com/~pdw/iftop/download"
1731 "/iftop-" version ".tar.gz"))
1732 (sha256
1733 (base32
1734 "15sgkdyijb7vbxpxjavh5qm5nvyii3fqcg9mzvw7fx8s6zmfwczp"))))
1735 (build-system gnu-build-system)
1736 (inputs
1737 `(("libpcap" ,libpcap)
1738 ("ncurses" ,ncurses)))
1739 (synopsis "Monitor network usage")
1740 (description "Iftop does for network usage what @command{top} does
1741 for CPU usage. It listens to network traffic on a named interface and
1742 displays a table of current bandwidth usage by pairs of hosts.")
1743 (home-page "http://www.ex-parrot.com/~pdw/iftop/")
1744 (license license:gpl2+)))
1745
1746 (define-public munge
1747 (package
1748 (name "munge")
1749 (version "0.5.13")
1750 (source (origin
1751 (method url-fetch)
1752 (uri (string-append "https://github.com/dun/munge/releases/"
1753 "download/munge-" version "/munge-"
1754 version ".tar.xz"))
1755 (sha256
1756 (base32
1757 "1nj486bbg1adfg298zck96vgx57kchcypc1zdz1n7w540vyksxcr"))))
1758 (inputs
1759 `(("openssl" ,openssl)
1760 ("libgcrypt" ,libgcrypt)))
1761 (build-system gnu-build-system)
1762 (home-page "https://dun.github.io/munge/")
1763 (synopsis "Cluster computing authentication service")
1764 (description
1765 "Munge is an authentication service for creating and validating
1766 credentials. It allows a process to authenticate the UID and GID of another
1767 local or remote process within a group of hosts having common users and
1768 groups. These hosts form a security realm that is defined by a shared
1769 cryptographic key. Clients within this security realm can create and validate
1770 credentials without the use of root privileges, reserved ports, or
1771 platform-specific methods.")
1772 (license license:gpl3+)))
1773
1774 (define-public audit
1775 (package
1776 (name "audit")
1777 (home-page "https://people.redhat.com/sgrubb/audit/")
1778 (version "2.8.4")
1779 (source (origin
1780 (method url-fetch)
1781 (uri (string-append home-page name "-" version ".tar.gz"))
1782 (sha256
1783 (base32
1784 "0f4ci6ffznnmgblwgv7ich9mjfk3p6y5l6m6h3chhmzw156nj454"))))
1785 (build-system gnu-build-system)
1786 (arguments
1787 `(#:configure-flags (list "--with-python=no"
1788 "--disable-static")))
1789 (inputs
1790 `(("openldap" ,openldap)
1791 ("gnutls" ,gnutls)
1792 ("sasl" ,cyrus-sasl)))
1793 (synopsis "User-space component to the Linux auditing system")
1794 (description
1795 "auditd is the user-space component to the Linux auditing system, which
1796 allows logging of system calls made by user-land processes. It's responsible
1797 for writing audit records to the disk. Viewing the logs is done with the
1798 @code{ausearch} or @code{aureport} utilities. Configuring the audit rules is
1799 done with the @code{auditctl} utility.")
1800 (license license:gpl2+)))
1801
1802 (define-public nmap
1803 (package
1804 (name "nmap")
1805 (version "7.70")
1806 (source (origin
1807 (method url-fetch)
1808 (uri (string-append "https://nmap.org/dist/nmap-" version
1809 ".tar.bz2"))
1810 (sha256
1811 (base32
1812 "063fg8adx23l4irrh5kn57hsmi1xvjkar4vm4k6g94ppan4hcyw4"))
1813 (modules '((guix build utils)))
1814 (snippet
1815 '(begin
1816 (for-each delete-file-recursively
1817 ;; Remove bundled lua, pcap, and pcre libraries.
1818 ;; FIXME: Remove bundled liblinear once packaged.
1819 '("liblua"
1820 "libpcap"
1821 "libpcre"
1822 ;; Remove pre-compiled binares.
1823 "mswin32"))
1824 #t))))
1825 (build-system gnu-build-system)
1826 (inputs
1827 `(("openssl" ,openssl)
1828 ("libpcap" ,libpcap)
1829 ("pcre" ,pcre)
1830 ("lua" ,lua)
1831 ("zlib" ,zlib) ;for NSE compression support
1832
1833 ;; For 'ndiff'.
1834 ("python" ,python-2)))
1835
1836 ;; TODO Add zenmap output.
1837 (outputs '("out" "ndiff"))
1838 (arguments
1839 '(#:configure-flags '("--without-zenmap")
1840 #:phases
1841 (modify-phases %standard-phases
1842 (add-after 'configure 'patch-Makefile
1843 (lambda _
1844 (substitute* "Makefile"
1845 ;; Do not attempt to build lua.
1846 (("build-dnet build-lua") "build-dnet"))
1847 #t))
1848 (replace 'install
1849 (lambda* (#:key outputs #:allow-other-keys)
1850 (define (make out . args)
1851 (unless (zero? (apply system* "make"
1852 (string-append "prefix=" out)
1853 args))
1854 (error "make failed")))
1855 (define (python-path dir)
1856 (string-append dir "/lib/python2.7/site-packages"))
1857 (let ((out (assoc-ref outputs "out"))
1858 (ndiff (assoc-ref outputs "ndiff")))
1859 (for-each mkdir-p (list out ndiff))
1860 (make out
1861 "install-nmap"
1862 "install-nse"
1863 "install-ncat"
1864 "install-nping")
1865 (make ndiff "install-ndiff")
1866 (wrap-program (string-append ndiff "/bin/ndiff")
1867 `("PYTHONPATH" prefix
1868 (,(python-path ndiff)))))))
1869 ;; These are the tests that do not require network access.
1870 (replace 'check
1871 (lambda _ (zero? (system* "make"
1872 "check-nse"
1873 "check-ndiff"
1874 "check-dns")))))
1875 ;; Nmap can't cope with out-of-source building.
1876 #:out-of-source? #f))
1877 (home-page "https://nmap.org/")
1878 (synopsis "Network discovery and security auditing tool")
1879 (description
1880 "Nmap (\"Network Mapper\") is a network discovery and security auditing
1881 tool. It is also useful for tasks such as network inventory, managing service
1882 upgrade schedules, and monitoring host or service uptime. It also provides an
1883 advanced netcat implementation (ncat), a utility for comparing scan
1884 results (ndiff), and a packet generation and response analysis tool (nping).")
1885 ;; This package uses nmap's bundled versions of libdnet and liblinear, which
1886 ;; both use a 3-clause BSD license.
1887 (license (list license:nmap license:bsd-3))))
1888
1889 (define-public dstat
1890 (package
1891 (name "dstat")
1892 (version "0.7.3")
1893 (source (origin
1894 (method url-fetch)
1895 (uri (string-append
1896 "https://github.com/dagwieers/dstat/archive/"
1897 version ".tar.gz"))
1898 (file-name (string-append "dstat-" version ".tar.gz"))
1899 (sha256
1900 (base32
1901 "16286z3y2lc9nsq8njzjkv6k2vyxrj9xiixj1k3gnsbvhlhkirj6"))))
1902 (build-system gnu-build-system)
1903 (arguments
1904 `(#:tests? #f ;; no make check
1905 #:make-flags (let ((out (assoc-ref %outputs "out")))
1906 (list (string-append "DESTDIR=" out)
1907 "prefix=/"))
1908 ;; no configure script
1909 #:phases (modify-phases %standard-phases (delete 'configure))))
1910 (inputs `(("python-2" ,python-2)))
1911 (synopsis "Versatile resource statistics tool")
1912 (description "Dstat is a versatile replacement for @command{vmstat},
1913 @command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
1914 some of their limitations and adds some extra features, more counters and
1915 flexibility. Dstat is handy for monitoring systems during performance tuning
1916 tests, benchmarks or troubleshooting.
1917
1918 Dstat allows you to view all of your system resources in real-time, you can,
1919 e.g., compare disk utilization in combination with interrupts from your IDE
1920 controller, or compare the network bandwidth numbers directly with the disk
1921 throughput (in the same interval).")
1922 (home-page "http://dag.wiee.rs/home-made/dstat/")
1923 (license license:gpl2+)))
1924
1925 (define-public thefuck
1926 (package
1927 (name "thefuck")
1928 (version "3.27")
1929 (source (origin
1930 (method url-fetch)
1931 (uri (string-append "https://github.com/nvbn/thefuck/archive/"
1932 version ".tar.gz"))
1933 (file-name (string-append name "-" version ".tar.gz"))
1934 (sha256
1935 (base32
1936 "0my32n2x8x0f0wr8ql7qgk9qhb6ibv5b1rqs5b2r4nadv0gpiv96"))
1937 (patches (search-patches "thefuck-test-environ.patch"))))
1938 (build-system python-build-system)
1939 (arguments
1940 '(#:phases
1941 (modify-phases %standard-phases
1942 (delete 'check)
1943 (add-after 'install 'check
1944 (lambda* (#:key inputs outputs #:allow-other-keys)
1945 ;; Tests look for installed package
1946 (add-installed-pythonpath inputs outputs)
1947 ;; Some tests need write access to $HOME.
1948 (setenv "HOME" "/tmp")
1949 (invoke "py.test" "-v")
1950 #t)))))
1951 (propagated-inputs
1952 `(("python-colorama" ,python-colorama)
1953 ("python-decorator" ,python-decorator)
1954 ("python-psutil" ,python-psutil)
1955 ("python-pyte" ,python-pyte)
1956 ("python-six" ,python-six)))
1957 (native-inputs
1958 `(("python-mock" ,python-mock)
1959 ("python-pytest" ,python-pytest)
1960 ("python-pytest-mock" ,python-pytest-mock)))
1961 (home-page "https://github.com/nvbn/thefuck")
1962 (synopsis "Correct mistyped console command")
1963 (description
1964 "The Fuck tries to match a rule for a previous, mistyped command, creates
1965 a new command using the matched rule, and runs it.")
1966 (license license:x11)))
1967
1968 (define-public di
1969 (package
1970 (name "di")
1971 (version "4.47")
1972 (source
1973 (origin
1974 (method url-fetch)
1975 (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
1976 (sha256
1977 (base32 "0zlapxlzjizwzwa8xwrwibhcbkh0wx7n74gvjpp6wlwq7cgiq0xm"))))
1978 (build-system gnu-build-system)
1979 (arguments
1980 `(#:tests? #f ; obscure test failures.
1981 #:phases
1982 (modify-phases %standard-phases
1983 (delete 'configure)
1984 (add-before 'build 'setup-environment
1985 (lambda* (#:key outputs #:allow-other-keys)
1986 (setenv "CC" "gcc")
1987 (setenv "prefix" (assoc-ref outputs "out"))
1988 #t)))
1989 #:make-flags (list "--environment-overrides")))
1990 (home-page "https://www.gentoo.com/di/")
1991 (synopsis "Advanced df like disk information utility")
1992 (description
1993 "'di' is a disk information utility, displaying everything that your
1994 @code{df} command does and more. It features the ability to display your disk
1995 usage in whatever format you prefer. It is designed to be highly portable and
1996 produce uniform output across heterogeneous networks.")
1997 (license license:zlib)))
1998
1999 (define-public cbatticon
2000 (package
2001 (name "cbatticon")
2002 (version "1.6.8")
2003 (source (origin
2004 (method url-fetch)
2005 (uri (string-append "https://github.com/valr/"
2006 name "/archive/" version ".tar.gz"))
2007 (sha256
2008 (base32
2009 "185lzvaijvyq7y8r7dvizhri0rf9lpc1anfgbbn4lznr1fr3z7rn"))
2010 (file-name (string-append name "-" version ".tar.gz"))))
2011 (build-system gnu-build-system)
2012 (arguments
2013 `(#:tests? #f ; no tests
2014 #:make-flags
2015 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2016 "CC=gcc")
2017 #:phases
2018 (modify-phases %standard-phases
2019 (delete 'configure)))) ; no configure script
2020 (inputs
2021 `(("gtk+" ,gtk+)
2022 ("gettext" ,gettext-minimal)
2023 ("libnotify" ,libnotify)))
2024 (native-inputs
2025 `(("pkg-config" ,pkg-config)))
2026 (synopsis "Lightweight battery icon for the system tray")
2027 (description "cbatticon is a lightweight battery icon that displays
2028 the status of your battery in the system tray.")
2029 (home-page "https://github.com/valr/cbatticon")
2030 (license license:gpl2+)))
2031
2032 (define-public interrobang
2033 (let ((revision "1")
2034 (commit "896543735e1c99144765fdbd7b6e6b5afbd8b881"))
2035 (package
2036 (name "interrobang")
2037 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
2038 (source (origin
2039 (method git-fetch)
2040 (uri (git-reference
2041 (url "https://github.com/TrilbyWhite/interrobang")
2042 (commit commit)))
2043 (file-name (string-append name "-" version))
2044 (sha256
2045 (base32
2046 "1n13m70p1hfba5dy3i8hfclbr6k9q3d9dai3dg4jvhdhmxcpjzdf"))))
2047 (build-system gnu-build-system)
2048 (arguments
2049 `(#:tests? #f ; no tests
2050 #:phases
2051 (modify-phases %standard-phases
2052 (delete 'configure)) ; no configure script
2053 #:make-flags (list (string-append "PREFIX="
2054 (assoc-ref %outputs "out")))))
2055 (inputs
2056 `(("libx11" ,libx11)))
2057 (native-inputs
2058 `(("pkg-config" ,pkg-config)))
2059 (synopsis "Scriptable launcher menu")
2060 (description "Interrobang is a scriptable launcher menu with a customizable
2061 shortcut syntax and completion options.")
2062 (home-page "https://github.com/TrilbyWhite/interrobang")
2063 (license license:gpl3+))))
2064
2065 (define-public pam-krb5
2066 (package
2067 (name "pam-krb5")
2068 (version "4.8")
2069 (source (origin
2070 (method url-fetch)
2071 (uri (string-append
2072 "https://archives.eyrie.org/software/kerberos/" name "-"
2073 version ".tar.xz"))
2074 (sha256
2075 (base32
2076 "1qjp8i1s9bz7g6kiqrkzzkxn5pfspa4sy53b6z40fqmdf9przdfb"))))
2077 (build-system gnu-build-system)
2078 (arguments
2079 `(#:phases
2080 (modify-phases %standard-phases
2081 (add-before 'configure 'disable-tests
2082 (lambda _
2083 ;; The build container seems to interfere with some tests.
2084 (substitute* "tests/TESTS"
2085 (("module/basic\n") ""))
2086 (substitute* "tests/TESTS"
2087 (("pam-util/vector\n") ""))
2088 #t)))))
2089 (inputs
2090 `(("linux-pam" ,linux-pam)
2091 ("mit-krb5" ,mit-krb5)))
2092 (native-inputs
2093 `(("perl" ,perl)
2094 ("perl-test-pod" ,perl-test-pod))) ; required for tests
2095 (synopsis "Kerberos PAM module")
2096 (description
2097 "Pam-krb5 is a Kerberos PAM module for either MIT Kerberos or Heimdal.
2098 It supports ticket refreshing by screen savers, configurable
2099 authorization handling, authentication of non-local accounts for network
2100 services, password changing, and password expiration, as well as all the
2101 standard expected PAM features. It works correctly with OpenSSH, even
2102 with @code{ChallengeResponseAuthentication} and @code{PrivilegeSeparation}
2103 enabled, and supports extensive configuration either by PAM options or in
2104 krb5.conf or both. PKINIT is supported with recent versions of both MIT
2105 Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
2106 (home-page "https://www.eyrie.org/~eagle/software/pam-krb5")
2107 ;; Dual licenced under a homebrew non-copyleft OR GPL (any version)
2108 ;; However, the tarball does not contain a copy of the GPL, so unless
2109 ;; we put one in, we cannot distribute it under GPL without violating
2110 ;; clause requiring us to give all recipients a copy.
2111 (license license:gpl1+)))
2112
2113 (define-public sunxi-tools
2114 (package
2115 (name "sunxi-tools")
2116 (version "1.4.2")
2117 (source
2118 (origin
2119 (method url-fetch)
2120 (uri (string-append "https://github.com/linux-sunxi/"
2121 "sunxi-tools/archive/v" version ".tar.gz"))
2122 (sha256
2123 (base32 "08iqwj95qw2s7ilhrdi2lkbc8dx64zk5lzz1qk587jr0lla81x41"))
2124 (modules '((guix build utils)))
2125 (snippet
2126 ;; Remove binaries contained in the tarball which are only for the
2127 ;; target and can be regenerated anyway.
2128 '(begin
2129 (delete-file-recursively "bin")
2130 #t))
2131 (file-name (string-append name "-" version ".tar.gz"))))
2132 (native-inputs
2133 `(("pkg-config" ,pkg-config)
2134 ("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf"
2135 #:xbinutils (cross-binutils "arm-linux-gnueabihf")
2136 #:libc (cross-libc "arm-linux-gnueabihf")))
2137 ("cross-libc" ,(cross-libc "arm-linux-gnueabihf")) ; header files
2138 ("cross-libc-static" ,(cross-libc "arm-linux-gnueabihf") "static")))
2139 (inputs
2140 `(("libusb" ,libusb)))
2141 (build-system gnu-build-system)
2142 (arguments
2143 `(#:tests? #f ; no tests exist
2144 #:make-flags (list (string-append "PREFIX="
2145 (assoc-ref %outputs "out"))
2146 (string-append "CROSS_COMPILE="
2147 "arm-linux-gnueabihf-")
2148 "CC=gcc")
2149 #:phases
2150 (modify-phases %standard-phases
2151 (delete 'configure)
2152 (add-before 'build 'set-environment-up
2153 (lambda* (#:key make-flags #:allow-other-keys)
2154 (define (cross? x)
2155 (string-contains x "cross-arm-linux"))
2156 (define (filter-environment! filter-predicate
2157 environment-variable-names)
2158 (for-each
2159 (lambda (env-name)
2160 (let* ((env-value (getenv env-name))
2161 (search-path (search-path-as-string->list env-value))
2162 (new-search-path (filter filter-predicate
2163 search-path))
2164 (new-env-value (list->search-path-as-string
2165 new-search-path ":")))
2166 (setenv env-name new-env-value)))
2167 environment-variable-names))
2168 (setenv "CROSS_C_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
2169 (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
2170 (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
2171 (filter-environment! cross?
2172 '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"
2173 "CROSS_LIBRARY_PATH"))
2174 (filter-environment! (lambda (e) (not (cross? e)))
2175 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"
2176 "LIBRARY_PATH"))
2177 #t))
2178 (replace 'build
2179 (lambda* (#:key make-flags #:allow-other-keys)
2180 (zero? (apply system* "make" "tools" "misc" make-flags))))
2181 (add-after 'build 'build-armhf
2182 (lambda* (#:key make-flags #:allow-other-keys)
2183 (setenv "LIBRARY_PATH" #f)
2184 (zero? (apply system* "make" "target-tools" make-flags))))
2185 (replace 'install
2186 (lambda* (#:key make-flags #:allow-other-keys)
2187 (zero? (apply system* "make" "install-all" "install-misc"
2188 make-flags)))))))
2189 (home-page "https://github.com/linux-sunxi/sunxi-tools")
2190 (synopsis "Hardware management tools for Allwinner computers")
2191 (description "This package contains tools for Allwinner devices:
2192 @enumerate
2193 @item @command{sunxi-fexc}, @command{bin2fex}, @command{fex2bin}: Compile
2194 a textual description of a board (.fex) to a binary representation (.bin).
2195 @item @command{sunxi-fel}: Puts an Allwinner device into FEL mode which
2196 makes it register as a special USB device (rather than USB host).
2197 You can then connect it to another computer and flash it from there.
2198 @item @command{sunxi-nand-part}: Partitions NAND flash.
2199 @item @command{sunxi-bootinfo}: Reads out boot0 and boot1 (Allwinner
2200 bootloader) parameters.
2201 @item @command{sunxi-pio}: Sets GPIO parameters and oscillates a GPIO
2202 in order to be able to find it.
2203 @item @command{sunxi-meminfo}: Prints memory bus settings.
2204 @item @command{sunxi-nand-image-builder}: Prepares raw NAND images.
2205 @end enumerate")
2206 (license license:gpl2+)))
2207
2208 (define-public sedsed
2209 (package
2210 (name "sedsed")
2211 (version "1.0")
2212 (source
2213 (origin
2214 (method url-fetch)
2215 (uri (string-append "https://github.com/aureliojargas/sedsed/"
2216 "archive/v" version ".tar.gz"))
2217 (file-name (string-append name "-" version ".tar.gz"))
2218 (sha256
2219 (base32
2220 "0139jkqvm8ipiwfj7k69ry2f9b1ffgpk79arpz4r7w9kf6h23bnh"))))
2221 (build-system python-build-system)
2222 (arguments
2223 `(#:tests? #f ; No tests.
2224 #:python ,python-2
2225 #:phases
2226 (modify-phases %standard-phases
2227 (add-after 'unpack 'patch-sed-in
2228 (lambda _
2229 (substitute* "sedsed.py"
2230 (("sedbin = 'sed'")
2231 (string-append "sedbin = '" (which "sed") "'")))
2232 #t))
2233 (delete 'build)
2234 (replace 'install
2235 (lambda* (#:key outputs #:allow-other-keys)
2236 (let* ((out (assoc-ref outputs "out"))
2237 (bin (string-append out "/bin")))
2238 ;; Just one file to copy around
2239 (install-file "sedsed.py" bin)
2240 #t)))
2241 (add-after 'install 'symlink
2242 ;; Create 'sedsed' symlink to "sedsed.py".
2243 (lambda* (#:key outputs #:allow-other-keys)
2244 (let* ((out (assoc-ref outputs "out"))
2245 (bin (string-append out "/bin"))
2246 (sed (string-append bin "/sedsed"))
2247 (sedpy (string-append bin "/sedsed.py")))
2248 (symlink sedpy sed)
2249 #t))))))
2250 (home-page "http://aurelio.net/projects/sedsed")
2251 (synopsis "Sed sed scripts")
2252 (description
2253 "@code{sedsed} can debug, indent, tokenize and HTMLize your sed(1) script.
2254
2255 In debug mode it reads your script and add extra commands to it. When
2256 executed you can see the data flow between the commands, revealing all the
2257 magic sed does on its internal buffers.
2258
2259 In indent mode your script is reformatted with standard spacing.
2260
2261 In tokenize mode you can see the elements of every command you use.
2262
2263 In HTMLize mode your script is converted to a beautiful colored HTML file,
2264 with all the commands and parameters identified for your viewing pleasure.
2265
2266 With sedsed you can master any sed script. No more secrets, no more hidden
2267 buffers.")
2268 (license license:expat)))
2269
2270 (define-public igt-gpu-tools
2271 (package
2272 (name "igt-gpu-tools")
2273 (version "1.23")
2274 (source (origin
2275 (method url-fetch)
2276 (uri (string-append "https://cgit.freedesktop.org/xorg/app/"
2277 "intel-gpu-tools/snapshot/"
2278 name "-" version ".tar.gz"))
2279 (sha256
2280 (base32
2281 "0vzv2i4jfv2pkbqby5k3ap9pzidkmajwqmg3s7wnv8i1h33775iq"))))
2282 (build-system gnu-build-system)
2283 (arguments
2284 `(#:tests? #f ; many of the tests try to load kernel modules
2285 #:phases
2286 (modify-phases %standard-phases
2287 (add-after 'unpack 'autogen
2288 (lambda _
2289 ;; Don't run configure in this phase.
2290 (setenv "NOCONFIGURE" "1")
2291 (invoke "sh" "autogen.sh"))))))
2292 (inputs
2293 `(("cairo" ,cairo)
2294 ("eudev" ,eudev)
2295 ("glib" ,glib)
2296 ("kmod" ,kmod)
2297 ("libdrm" ,libdrm)
2298 ("libpciaccess" ,libpciaccess)
2299 ("libunwind" ,libunwind)
2300 ("libxrandr" ,libxrandr)
2301 ("openssl" ,openssl)
2302 ("procps" ,procps)
2303 ("util-macros" ,util-macros)))
2304 (native-inputs
2305 `(("autoconf" ,autoconf)
2306 ("automake" ,automake)
2307 ("libtool" ,libtool)
2308 ("pkg-config" ,pkg-config)))
2309 (home-page "https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/")
2310 (synopsis "Tools for development and testing of the Intel DRM driver")
2311 (description "IGT GPU Tools is a collection of tools for development and
2312 testing of the Intel DRM driver. There are many macro-level test suites that
2313 get used against the driver, including xtest, rendercheck, piglit, and
2314 oglconform, but failures from those can be difficult to track down to kernel
2315 changes, and many require complicated build procedures or specific testing
2316 environments to get useful results. Therefore, IGT GPU Tools includes
2317 low-level tools and tests specifically for development and testing of the
2318 Intel DRM Driver.")
2319 (supported-systems '("i686-linux" "x86_64-linux"))
2320 (license license:expat)))
2321
2322 (define-public intel-gpu-tools
2323 (deprecated-package "intel-gpu-tools" igt-gpu-tools))
2324
2325 (define-public fabric
2326 (package
2327 (name "fabric")
2328 (version "1.14.0")
2329 (source
2330 (origin
2331 (method url-fetch)
2332 (uri (pypi-uri "Fabric" version))
2333 (sha256
2334 (base32
2335 "13r0b0hllgf8j9rh6x1knmbgvingbdmx046aazv6vck2ll120mw1"))))
2336 (build-system python-build-system)
2337 (arguments
2338 `(#:python ,python-2 ; Python 2 only
2339 #:phases
2340 (modify-phases %standard-phases
2341 (replace 'check
2342 (lambda _
2343 (invoke
2344 "nosetests" "-v" "tests/"
2345 ;; This test hangs indefinitely when run on a single core VM
2346 ;; (see GNU bug #26647 and Debian bug #850230).
2347 "--exclude=test_nested_execution_with_explicit_ports"
2348 ;; This test randomly fails in certain environments causing too
2349 ;; much noise to be useful (see Debian bug #854686).
2350 "--exclude=test_should_use_sentinel_for_tasks_that_errored"))))))
2351 (native-inputs
2352 `(("python2-fudge" ,python2-fudge) ; Requires < 1.0
2353 ("python2-jinja2" ,python2-jinja2) ; Requires < 3.0
2354 ("python2-nose" ,python2-nose) ; Requires < 2.0
2355 ("python2-pynacl" ,python2-pynacl)
2356 ("python2-bcrypt" ,python2-bcrypt)))
2357 (propagated-inputs
2358 `(("python2-paramiko" ,python2-paramiko)))
2359 (home-page "http://fabfile.org")
2360 (synopsis "Simple Pythonic remote execution and deployment tool")
2361 (description
2362 "Fabric is designed to upload files and run shell commands on a number of
2363 servers in parallel or serially. These commands are grouped in tasks (which
2364 are regular Python functions) and specified in a @dfn{fabfile}.
2365
2366 It is similar to Capistrano, except it's implemented in Python and doesn't
2367 expect you to be deploying Rails applications. Fabric is a simple, Pythonic
2368 tool for remote execution and deployment.")
2369 (license license:bsd-2)))
2370
2371 (define-public neofetch
2372 (package
2373 (name "neofetch")
2374 (version "5.0.0")
2375 (source (origin
2376 (method git-fetch)
2377 (uri (git-reference
2378 (url "https://github.com/dylanaraps/neofetch")
2379 (commit version)))
2380 (sha256
2381 (base32
2382 "0yzyi2p0d8xp576lxyv5m9h60dl1d5dmrn40aad307872835b9rr"))))
2383 (build-system gnu-build-system)
2384 (arguments
2385 `(#:tests? #f ; there are no tests
2386 #:make-flags
2387 (list (string-append "PREFIX=" %output))
2388 #:phases
2389 (modify-phases %standard-phases
2390 (delete 'configure)))) ; no configure script
2391 (home-page "https://github.com/dylanaraps/neofetch")
2392 (synopsis "System information script")
2393 (description "Neofetch is a command-line system information tool written in
2394 Bash. Neofetch displays information about your system next to an image, your OS
2395 logo, or any ASCII file of your choice. The main purpose of Neofetch is to be
2396 used in screenshots to show other users what operating system or distribution
2397 you are running, what theme or icon set you are using, etc.")
2398 (license license:expat)))
2399
2400 (define-public nnn
2401 (package
2402 (name "nnn")
2403 (version "1.9")
2404 (source
2405 (origin
2406 (method url-fetch)
2407 (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
2408 version "/" name "-v" version ".tar.gz"))
2409 (sha256
2410 (base32 "1d6z12y4rlg4dzhpm30irpq2ak8hjh5zykkp2n7vxnz5m4ki89zp"))))
2411 (build-system gnu-build-system)
2412 (inputs
2413 `(("ncurses" ,ncurses)
2414 ("readline" ,readline)))
2415 (native-inputs
2416 `(("pkg-config" ,pkg-config)))
2417 (arguments
2418 '(#:tests? #f ; no tests
2419 #:phases
2420 (modify-phases %standard-phases
2421 (delete 'configure)) ; no configure script
2422 #:make-flags
2423 (list
2424 (string-append "PREFIX="
2425 (assoc-ref %outputs "out"))
2426 "CC=gcc")))
2427 (home-page "https://github.com/jarun/nnn")
2428 (synopsis "Terminal file browser")
2429 (description "@command{nnn} is a fork of @command{noice}, a blazing-fast
2430 lightweight terminal file browser with easy keyboard shortcuts for
2431 navigation, opening files and running tasks. There is no config file and
2432 mime associations are hard-coded. The incredible user-friendliness and speed
2433 make it a perfect utility on modern distros.")
2434 (license license:bsd-2)))
2435
2436 (define-public thermald
2437 (package
2438 (name "thermald")
2439 (version "1.7.2")
2440 (source
2441 (origin
2442 (method url-fetch)
2443 (uri (string-append "https://github.com/01org/thermal_daemon/archive/v"
2444 version ".tar.gz"))
2445 (file-name (string-append name "-" version ".tar.gz"))
2446 (sha256 (base32
2447 "15a6vb67y5wsmf0irrq7sxam18yqpz64130k83ryf24mp40h661b"))))
2448 (build-system gnu-build-system)
2449 (arguments
2450 `(#:phases
2451 (modify-phases %standard-phases
2452 (add-after 'unpack 'bootstrap
2453 (lambda _
2454 (invoke "sh" "autogen.sh")
2455 #t)))
2456 #:configure-flags
2457 (let ((out (assoc-ref %outputs "out")))
2458 (list (string-append "--sysconfdir="
2459 out "/etc")
2460 (string-append "--with-udev-dir="
2461 out "/lib/udev")
2462 (string-append "--with-dbus-sys-dir="
2463 out "/etc/dbus-1/system.d")
2464 "--localstatedir=/var"))))
2465 (native-inputs
2466 `(("autoconf" ,autoconf)
2467 ("automake" ,automake)
2468 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
2469 ("pkg-config" ,pkg-config)))
2470 (inputs
2471 `(("dbus-glib" ,dbus-glib)
2472 ("libxml2" ,libxml2)))
2473 (home-page "https://01.org/linux-thermal-daemon/")
2474 (synopsis "CPU scaling for thermal management")
2475 (description "The Linux Thermal Daemon helps monitor and control temperature
2476 on systems running the Linux kernel.")
2477 ;; arm and aarch64 don't have cpuid.h.
2478 (supported-systems '("i686-linux" "x86_64-linux"))
2479 (license license:gpl2+)))
2480
2481 (define-public masscan
2482 (package
2483 (name "masscan")
2484 (version "1.0.5")
2485 (source (origin
2486 (method url-fetch)
2487 (uri (string-append "https://github.com/robertdavidgraham/masscan"
2488 "/archive/" version ".tar.gz"))
2489 (file-name (string-append name "-" version ".tar.gz"))
2490 (sha256
2491 (base32
2492 "0wxddsgyx27z45906icdhdbfsvfj8ij805208qpqjx46i0lnjs50"))))
2493 (build-system gnu-build-system)
2494 (inputs
2495 `(("libpcap" ,libpcap)))
2496 (arguments
2497 '(#:test-target "regress"
2498 #:make-flags
2499 (list "CC=gcc"
2500 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2501 #:phases
2502 (modify-phases %standard-phases
2503 (delete 'configure) ; no ./configure script
2504 (add-after 'unpack 'patch-path
2505 (lambda* (#:key outputs inputs #:allow-other-keys)
2506 (let* ((out (assoc-ref outputs "out"))
2507 (pcap (assoc-ref inputs "libpcap")))
2508 (substitute* "src/rawsock-pcap.c"
2509 (("libpcap.so") (string-append pcap "/lib/libpcap.so")))
2510 #t))))))
2511 (synopsis "TCP port scanner")
2512 (description "MASSCAN is an asynchronous TCP port scanner. It can detect
2513 open ports, and also complete the TCP connection and interact with the remote
2514 application, collecting the information received.")
2515 (home-page "https://github.com/robertdavidgraham/masscan")
2516 ;; 'src/siphash24.c' is the SipHash reference implementation, which
2517 ;; bears a CC0 Public Domain Dedication.
2518 (license license:agpl3+)))
2519
2520 (define-public hungrycat
2521 (package
2522 (name "hungrycat")
2523 (version "0.4.1")
2524 (source (origin
2525 (method url-fetch)
2526 (uri (string-append "https://github.com/jwilk/hungrycat/"
2527 "releases/download/" version "/"
2528 name "-" version ".tar.gz"))
2529 (sha256
2530 (base32
2531 "03fc1zsrf99lvxa7b4ps6pbi43304wbxh1f6ci4q0vkal370yfwh"))))
2532 (build-system gnu-build-system)
2533 (native-inputs
2534 ;; For tests.
2535 `(("python" ,python-wrapper)
2536 ("python-nose" ,python-nose)))
2537 (arguments
2538 `(#:test-target "test"))
2539 (synopsis "A single tool that combines @command{cat} & @command{rm}")
2540 (description
2541 "hungrycat prints the contents of a file to standard output, while
2542 simultaneously freeing the disk space it occupied. It is useful if you need
2543 to process a large file, don't have enough space to store both the input and
2544 output files, and don't need the input file afterwards.
2545 While similar in principle to running @command{cat} immediately followed by
2546 @command{rm}, @command{hungrycat} actually frees blocks as soon as they are
2547 printed instead of after the entire file has been read, which is often too
2548 late.")
2549 (home-page "https://jwilk.net/software/hungrycat")
2550 (license license:expat)))
2551
2552 (define-public launchmon
2553 (package
2554 (name "launchmon")
2555 (version "1.0.2")
2556 (source (origin
2557 (method url-fetch)
2558 (uri (string-append
2559 "https://github.com/LLNL/LaunchMON/releases/download/v"
2560 version "/" name "-v" version ".tar.gz"))
2561 (sha256
2562 (base32
2563 "0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))))
2564 (build-system gnu-build-system)
2565 (inputs
2566 `(("mpi" ,openmpi)
2567 ("munge" ,munge)
2568 ("boost" ,boost)
2569 ("libelf" ,libelf)
2570 ("libgcrypt" ,libgcrypt)
2571 ("libgpg-error" ,libgpg-error)))
2572 (synopsis "Infrastructue for large scale tool daemon launching")
2573 (description
2574 "LaunchMON is a software infrastructure that enables HPC run-time
2575 tools to co-locate tool daemons with a parallel job. Its API allows a
2576 tool to identify all the remote processes of a job and to scalably
2577 launch daemons into the relevant nodes.")
2578 (home-page "https://github.com/LLNL/LaunchMON")
2579 (supported-systems '("i686-linux" "x86_64-linux"))
2580 (license license:lgpl2.1)))
2581
2582 (define-public spindle
2583 (package
2584 (name "spindle")
2585 (version "0.10")
2586 (source (origin
2587 ;; We use git checkout to avoid github auto-generated tarballs
2588 (method git-fetch)
2589 (uri (git-reference
2590 (url "https://github.com/hpc/Spindle.git")
2591 (commit (string-append "v" version))))
2592 (file-name (git-file-name name version))
2593 (sha256
2594 (base32
2595 "15n3ay0qq81r5v7fif61q1vdjcq44pp2nynkh3fvbzc9fj3c39wd"))))
2596 (build-system gnu-build-system)
2597 (arguments '(#:configure-flags '("--enable-sec-launchmon"
2598 "--enable-sec-munge"
2599 "--enable-sec-none")))
2600 (inputs
2601 `(("mpi" ,openmpi)
2602 ("munge" ,munge)
2603 ("launchmon" ,launchmon)
2604 ("libgcrypt" ,libgcrypt)))
2605 (synopsis "Scalable library loading in HPC environments")
2606 (description
2607 "Spindle is a tool for improving the performance of dynamic library and
2608 Python loading in HPC environments.")
2609 (home-page "https://github.com/hpc/Spindle")
2610 ;; This package supports x86_64 and PowerPC64
2611 (supported-systems '("x86_64-linux"))
2612 (license license:lgpl2.1)))
2613
2614 (define-public inxi-minimal
2615 (let ((real-name "inxi"))
2616 (package
2617 (name "inxi-minimal")
2618 (version "3.0.20-1")
2619 (source
2620 (origin
2621 (method git-fetch)
2622 (uri (git-reference
2623 (url "https://github.com/smxi/inxi")
2624 (commit version)))
2625 (sha256
2626 (base32
2627 "1k9148xnfznch1443niaa3w1kmsw4vp0xpwna6npgmi7zqg06ymy"))))
2628 (build-system trivial-build-system)
2629 (inputs
2630 `(("bash" ,bash)
2631 ("perl" ,perl)))
2632 (native-inputs
2633 `(("gzip" ,gzip)))
2634 (arguments
2635 `(#:modules
2636 ((guix build utils)
2637 (ice-9 match)
2638 (srfi srfi-26))
2639 #:builder
2640 (begin
2641 (use-modules (guix build utils)
2642 (ice-9 match)
2643 (srfi srfi-26))
2644 (setenv "PATH" (string-append
2645 (assoc-ref %build-inputs "bash") "/bin" ":"
2646 (assoc-ref %build-inputs "gzip") "/bin" ":"
2647 (assoc-ref %build-inputs "perl") "/bin" ":"))
2648 (copy-recursively (assoc-ref %build-inputs "source")
2649 ,(string-append real-name "-" version))
2650 (with-directory-excursion ,(string-append real-name "-" version)
2651 (with-fluids ((%default-port-encoding #f))
2652 (substitute* "inxi" (("/usr/bin/env perl") (which "perl"))))
2653 (let ((bin (string-append %output "/bin")))
2654 (install-file "inxi" bin)
2655 (wrap-program (string-append bin "/inxi")
2656 `("PATH" ":" =
2657 ("$PATH"
2658 ,@(map (lambda (input)
2659 (match input
2660 ((name . store)
2661 (let ((store-append
2662 (cut string-append store <>)))
2663 (cond
2664 ((member name '("util-linux"))
2665 (string-append (store-append "/bin") ":"
2666 (store-append "/sbin")))
2667 ((member name '("dmidecode" "iproute2"))
2668 (store-append "/sbin"))
2669 (else (store-append "/bin")))))))
2670 %build-inputs)))
2671 `("PERL5LIB" ":" =
2672 ,(delete
2673 ""
2674 (map (match-lambda
2675 (((? (cut string-prefix? "perl-" <>) name) . dir)
2676 (string-append dir "/lib/perl5/site_perl"))
2677 (_ ""))
2678 %build-inputs)))))
2679 (invoke "gzip" "inxi.1")
2680 (install-file "inxi.1.gz"
2681 (string-append %output "/share/man/man1")))
2682 #t)))
2683 (home-page "https://smxi.org/docs/inxi.htm")
2684 (synopsis "Full-featured system information script")
2685 (description "Inxi is a system information script that can display
2686 various things about your hardware and software to users in an IRC chatroom or
2687 support forum. It runs with the @code{/exec} command in most IRC clients.")
2688 (license license:gpl3+))))
2689
2690 (define-public inxi
2691 (package
2692 (inherit inxi-minimal)
2693 (name "inxi")
2694 (inputs
2695 `(("dmidecode" ,dmidecode)
2696 ("file" ,file)
2697 ("bind:utils" ,isc-bind "utils") ; dig
2698 ("gzip" ,gzip)
2699 ("iproute2" ,iproute) ; ip
2700 ("kmod" ,kmod) ; modinfo
2701 ("lm-sensors" ,lm-sensors)
2702 ("mesa-utils" ,mesa-utils)
2703 ("pciutils" ,pciutils)
2704 ("procps" ,procps)
2705 ("tar" ,tar)
2706 ("tree" ,tree)
2707 ("util-linux" ,util-linux) ; lsblk
2708 ("usbutils" ,usbutils) ; lsusb
2709 ("wmctrl" ,wmctrl)
2710 ("xdpyinfo" ,xdpyinfo)
2711 ("xprop" ,xprop)
2712 ("xrandr" ,xrandr)
2713 ("coreutils" ,coreutils) ; uptime
2714 ("inetutils" ,inetutils) ; ifconfig
2715 ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
2716 ("perl-http-tiny" ,perl-http-tiny)
2717 ("perl-io-socket-ssl" ,perl-io-socket-ssl)
2718 ("perl-json-xs" ,perl-json-xs)
2719 ("perl-time-hires" ,perl-time-hires)
2720 ;; TODO: Add more inputs:
2721 ;; ipmi-sensors
2722 ;; hddtemp
2723 ;; perl-xml-dumper
2724 ;; ipmitool
2725 ,@(package-inputs inxi-minimal)))))
2726
2727 (define-public pscircle
2728 (package
2729 (name "pscircle")
2730 (version "1.1.0")
2731 (source
2732 (origin
2733 (method url-fetch)
2734 (uri (string-append
2735 "https://gitlab.com/mildlyparallel/pscircle/-/archive/v"
2736 version "/pscircle-v" version ".tar.gz"))
2737 (file-name (string-append name "-" version ".tar.gz"))
2738 (sha256
2739 (base32
2740 "1k757yf2bmgfrjd417l6kpcf83hlvi0z1791vz967mwcklrsb3fj"))))
2741 (build-system meson-build-system)
2742 (native-inputs
2743 `(("pkg-config" ,pkg-config)))
2744 (inputs
2745 `(("cairo" ,cairo)
2746 ("libpng" ,libpng)
2747 ("libx11" ,libx11)))
2748 (home-page "https://gitlab.com/mildlyparallel/pscircle")
2749 (synopsis "Visualize Linux processes in a form of radial tree")
2750 (description
2751 "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
2752 (license license:gpl2+)))