gnu: nss-mdns: Allow the daemon's socket to be found.
[jackhill/guix/guix.git] / gnu / packages / admin.scm
... / ...
CommitLineData
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages admin)
23 #:use-module (guix licenses)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix git-download)
27 #:use-module (guix build-system cmake)
28 #:use-module (guix build-system gnu)
29 #:use-module (guix build-system trivial)
30 #:use-module (gnu packages)
31 #:use-module (gnu packages base)
32 #:use-module (gnu packages ncurses)
33 #:use-module (gnu packages readline)
34 #:use-module (gnu packages linux)
35 #:use-module (gnu packages guile)
36 #:use-module (gnu packages gettext)
37 #:use-module (gnu packages perl)
38 #:use-module (gnu packages tcl)
39 #:use-module ((gnu packages compression) #:prefix c:)
40 #:use-module ((gnu packages openssl) #:prefix o:)
41 #:use-module (gnu packages gnutls)
42 #:use-module (gnu packages gnupg)
43 #:use-module (gnu packages bison)
44 #:use-module (gnu packages flex)
45 #:use-module (gnu packages glib)
46 #:use-module (gnu packages pkg-config)
47 #:use-module (gnu packages popt)
48 #:use-module (gnu packages texinfo)
49 #:use-module (gnu packages groff)
50 #:use-module (gnu packages pciutils)
51 #:use-module (gnu packages libusb)
52 #:use-module (gnu packages libftdi)
53 #:use-module (gnu packages image)
54 #:use-module (gnu packages xorg))
55
56(define-public dmd
57 (package
58 (name "dmd")
59 (version "0.2")
60 (source (origin
61 (method url-fetch)
62 (uri (string-append "ftp://alpha.gnu.org/gnu/dmd/dmd-"
63 version ".tar.gz"))
64 (sha256
65 (base32
66 "10fl4k96f17gqx2fv8iw9c61ld26gsk4bbrlfqckdmiimz1k175z"))))
67 (build-system gnu-build-system)
68 (arguments
69 '(#:configure-flags '("--localstatedir=/var")))
70 (native-inputs `(("pkg-config" ,pkg-config)))
71 (inputs `(("guile" ,guile-2.0)))
72 (synopsis "Daemon managing daemons")
73 (description
74 "GNU DMD is a daemon-managing daemon, meaning that it manages the
75execution of system services, replacing similar functionality found in
76typical init systems. It provides dependency-handling through a convenient
77interface and is based on GNU Guile.")
78 (license gpl3+)
79 (home-page "http://www.gnu.org/software/dmd/")))
80
81(define-public dfc
82 (package
83 (name "dfc")
84 (version "3.0.4")
85 (source
86 (origin
87 (method url-fetch)
88 (uri (string-append
89 "http://projects.gw-computing.net/attachments/download/79/dfc-"
90 version ".tar.gz"))
91 (sha256
92 (base32
93 "0zk1ppx93ijimf4sbgqilxxikpsa2gmpbynknyh41xy7jbdjxp0b"))))
94 (build-system cmake-build-system)
95 (arguments '(#:tests? #f)) ; There are no tests.
96 (native-inputs `(("gettext" ,gnu-gettext)))
97 (home-page "http://projects.gw-computing.net/projects/dfc")
98 (synopsis "Display file system space usage using graphs and colors")
99 (description
100 "dfc (df color) is a modern version of df. It uses colors, draws pretty
101graphs and can export its output to different formats.")
102 (license bsd-3)))
103
104(define-public htop
105 (package
106 (name "htop")
107 (version "1.0.3")
108 (source (origin
109 (method url-fetch)
110 (uri (string-append "http://hisham.hm/htop/releases/"
111 version "/htop-" version ".tar.gz"))
112 (sha256
113 (base32
114 "0a8qbpsifzjwc4f45xfwm48jhm59g6q5hlib4bf7z13mgy95fp05"))))
115 (build-system gnu-build-system)
116 (inputs
117 `(("ncurses" ,ncurses)))
118 (home-page "http://htop.sourceforge.net/")
119 (synopsis "Interactive process viewer")
120 (description
121 "This is htop, an interactive process viewer. It is a text-mode
122application (for console or X terminals) and requires ncurses.")
123 (license gpl2)))
124
125(define-public pies
126 (package
127 (name "pies")
128 (version "1.2")
129 (source
130 (origin
131 (method url-fetch)
132 (uri (string-append "mirror://gnu/pies/pies-"
133 version ".tar.bz2"))
134 (sha256
135 (base32
136 "18w0dbg77i56cx1bwa789w0qi3l4xkkbascxcv2b6gbm0zmjg1g6"))))
137 (build-system gnu-build-system)
138 (home-page "http://www.gnu.org/software/pies/")
139 (synopsis "Program invocation and execution supervisor")
140 (description
141 "GNU pies is a program that supervises the invocation and execution of
142other programs. It reads the list of programs to be started from its
143configuration file, executes them, and then monitors their status,
144re-executing them as necessary.")
145 (license gpl3+)))
146
147(define-public inetutils
148 (package
149 (name "inetutils")
150 (version "1.9.2")
151 (source (origin
152 (method url-fetch)
153 (uri (string-append "mirror://gnu/inetutils/inetutils-"
154 version ".tar.gz"))
155 (sha256
156 (base32
157 "04wrm0v7l4890mmbaawd6wjwdv08bkglgqhpz0q4dkb0l50fl8q4"))))
158 (build-system gnu-build-system)
159 (arguments `(;; FIXME: `tftp.sh' relies on `netstat' from utils-linux,
160 ;; which is currently missing.
161 #:tests? #f))
162 (inputs `(("ncurses" ,ncurses)
163 ("readline" ,readline))) ; for 'ftp'
164 (home-page "http://www.gnu.org/software/inetutils/")
165 (synopsis "Basic networking utilities")
166 (description
167 "Inetutils is a collection of common network programs, such as an ftp
168client and server, a telnet client and server, and an rsh client and server.")
169 (license gpl3+)))
170
171(define-public shadow
172 (package
173 (name "shadow")
174 (version "4.1.5.1")
175 (source (origin
176 ;; Shadow has no real upstream, and not even tarballs.
177 ;; See <https://lists.gnu.org/archive/html/guix-devel/2014-03/msg00233.html>.
178 (method git-fetch)
179 (uri (git-reference
180 (url "git://git.debian.org/git/pkg-shadow/shadow")
181 (commit (string-append "upstream/" version))))
182 (sha256
183 (base32
184 "1xx85d83kmacmjzqbamgydcjkwsqd5fi1s2wgwx6myq5wa39qx0n"))))
185 (build-system gnu-build-system)
186 (arguments
187 '(;; Assume System V `setpgrp (void)', which is the default on GNU
188 ;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
189 #:configure-flags '("--with-libpam" "ac_cv_func_setpgrp_void=yes")
190
191 #:phases (alist-cons-before
192 'build 'set-nscd-file-name
193 (lambda* (#:key inputs #:allow-other-keys)
194 ;; Use the right file name for nscd.
195 (let ((libc (assoc-ref inputs "libc")))
196 (substitute* "lib/nscd.c"
197 (("/usr/sbin/nscd")
198 (string-append libc "/sbin/nscd")))))
199 (alist-cons-after
200 'install 'remove-groups
201 (lambda* (#:key outputs #:allow-other-keys)
202 ;; Remove `groups', which is already provided by Coreutils.
203 (let* ((out (assoc-ref outputs "out"))
204 (bin (string-append out "/bin"))
205 (man (string-append out "/share/man/man1")))
206 (delete-file (string-append bin "/groups"))
207 (for-each delete-file (find-files man "^groups\\."))
208 #t))
209 %standard-phases))))
210
211 (inputs (if (string-suffix? "-linux"
212 (or (%current-target-system)
213 (%current-system)))
214 `(("linux-pam" ,linux-pam))
215 '()))
216 (home-page "http://pkg-shadow.alioth.debian.org/")
217 (synopsis "Authentication-related tools such as passwd, su, and login")
218 (description
219 "Shadow provides a number of authentication-related tools, including:
220login, passwd, su, groupadd, and useradd.")
221
222 ;; The `vipw' program is GPLv2+.
223 ;; libmisc/salt.c is public domain.
224 (license bsd-3)))
225
226(define-public mingetty
227 (package
228 (name "mingetty")
229 (version "1.08")
230 (source (origin
231 (method url-fetch)
232 (uri (string-append "mirror://sourceforge/mingetty/mingetty-"
233 version ".tar.gz"))
234 (sha256
235 (base32
236 "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
237 (build-system gnu-build-system)
238 (arguments
239 `(#:phases (alist-replace 'configure
240 (lambda* (#:key inputs outputs
241 #:allow-other-keys)
242 (let* ((out (assoc-ref outputs "out"))
243 (man8 (string-append
244 out "/share/man/man8"))
245 (sbin (string-append out "/sbin"))
246 (shadow (assoc-ref inputs "shadow"))
247 (login (string-append shadow
248 "/bin/login")))
249 (substitute* "Makefile"
250 (("^SBINDIR.*")
251 (string-append "SBINDIR = " out
252 "/sbin\n"))
253 (("^MANDIR.*")
254 (string-append "MANDIR = " out
255 "/share/man/man8\n")))
256
257 ;; Pick the right 'login' by default.
258 (substitute* "mingetty.c"
259 (("\"/bin/login\"")
260 (string-append "\"" login "\"")))
261
262 (mkdir-p sbin)
263 (mkdir-p man8)))
264 %standard-phases)
265 #:tests? #f)) ; no tests
266 (inputs `(("shadow" ,shadow)))
267
268 (home-page "http://sourceforge.net/projects/mingetty")
269 (synopsis "Getty for the text console")
270 (description
271 "Small console getty that is started on the Linux text console,
272asks for a login name and then transfers over to 'login'. It is extended to
273allow automatic login and starting any app.")
274 (license gpl2+)))
275
276(define-public net-base
277 (package
278 (name "net-base")
279 (version "5.3")
280 (source (origin
281 (method url-fetch)
282 (uri (string-append
283 "mirror://debian/pool/main/n/netbase/netbase_"
284 version ".tar.xz"))
285 (sha256
286 (base32
287 "12xqjwg3p4rzmmh2iib6sigm9l29y3dgk74mmnw64k84jnbwdxl1"))))
288 (build-system trivial-build-system)
289 (arguments
290 `(#:modules ((guix build utils))
291 #:builder (begin
292 (use-modules (guix build utils)
293 (srfi srfi-26))
294
295 (let* ((source (assoc-ref %build-inputs "source"))
296 (tar (assoc-ref %build-inputs "tar"))
297 (xz (assoc-ref %build-inputs "xz"))
298 (output (assoc-ref %outputs "out"))
299 (etc (string-append output "/etc")))
300 (setenv "PATH" (string-append xz "/bin"))
301 (system* (string-append tar "/bin/tar") "xvf"
302 source)
303 (chdir ,(string-append "netbase-" version))
304 (mkdir-p etc)
305 (for-each copy-file
306 '("etc-services" "etc-protocols" "etc-rpc")
307 (map (cut string-append etc "/" <>)
308 '("services" "protocols" "rpc")))
309 #t))))
310 (native-inputs `(("tar" ,tar)
311 ("xz" ,c:xz)))
312 (synopsis "IANA protocol, port, and RPC number assignments")
313 (description
314 "This package provides the /etc/services, /etc/protocols, and /etc/rpc
315files, which contain information about the IANA-assigned port, protocol, and
316ONC RPC numbers")
317 (home-page "http://packages.debian.org/sid/netbase")
318 (license gpl2)))
319
320(define-public netcat
321 (package
322 (name "netcat")
323 (version "0.7.1")
324 (source (origin
325 (method url-fetch)
326 (uri (string-append "mirror://sourceforge/netcat/netcat-"
327 version ".tar.bz2"))
328 (sha256
329 (base32
330 "1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm"))))
331 (build-system gnu-build-system)
332 (arguments
333 `(#:configure-flags
334 ;; By default, man and info pages are put in PREFIX/{man,info},
335 ;; but we want them in PREFIX/share/{man,info}.
336 (let ((out (assoc-ref %outputs "out")))
337 (list (string-append "--mandir=" out "/share/man")
338 (string-append "--infodir=" out "/share/info")))))
339 (home-page "http://netcat.sourceforge.net")
340 (synopsis "Read and write data over TCP/IP")
341 (description
342 "Netcat is a featured networking utility which reads and writes data
343across network connections, using the TCP/IP protocol. It is designed to be a
344reliable \"back-end\" tool that can be used directly or easily driven by other
345programs and scripts. At the same time, it is a feature-rich network debugging
346and exploration tool, since it can create almost any kind of connection you
347would need and has several interesting built-in capabilities.")
348 (license gpl2+)))
349
350(define-public alive
351 (package
352 (name "alive")
353 (version "2.0.2")
354 (source (origin
355 (method url-fetch)
356 (uri (string-append "mirror://gnu/alive/alive-"
357 version ".tar.xz"))
358 (sha256
359 (base32
360 "1vrzg51ai68x9yld7vbgl58sxaw5qpx8rbakwcxn4cqq6vpxj38j"))))
361 (build-system gnu-build-system)
362 (arguments '(#:configure-flags '("alive_cv_nice_ping=yes")))
363 (inputs `(("guile" ,guile-2.0)
364 ("inetutils" ,inetutils)))
365 (home-page "http://www.gnu.org/software/alive/")
366 (synopsis "Autologin and keep-alive daemon")
367 (description
368 "GNU Alive sends periodic pings to a server, generally to keep a
369connection alive.")
370 (license gpl3+)))
371
372(define-public isc-dhcp
373 (package
374 (name "isc-dhcp")
375 (version "4.3.0")
376 (source (origin
377 (method url-fetch)
378 (uri (string-append "http://ftp.isc.org/isc/dhcp/"
379 version "/dhcp-" version ".tar.gz"))
380 (sha256
381 (base32
382 "12mydvj6x3zcl3gla06bywfkkrgg03g66fijs94mwb7kbiym3dm7"))))
383 (build-system gnu-build-system)
384 (arguments
385 '(#:phases (alist-cons-after
386 'configure 'post-configure
387 (lambda* (#:key outputs #:allow-other-keys)
388 ;; Point to the right client script, which will be
389 ;; installed in a later phase.
390 (substitute* "includes/dhcpd.h"
391 (("#define[[:blank:]]+_PATH_DHCLIENT_SCRIPT.*")
392 (let ((out (assoc-ref outputs "out")))
393 (string-append "#define _PATH_DHCLIENT_SCRIPT \""
394 out "/libexec/dhclient-script"
395 "\"\n"))))
396
397 ;; During the 'build' phase, 'bind.tar.gz' is extracted, so
398 ;; we must patch shebangs in there and make sure the right
399 ;; shell is used.
400 (with-directory-excursion "bind"
401 (substitute* "Makefile"
402 (("\\./configure")
403 (let ((sh (which "sh")))
404 (string-append "./configure CONFIG_SHELL="
405 sh " SHELL=" sh))))
406
407 (system* "tar" "xf" "bind.tar.gz")
408 (for-each patch-shebang
409 (find-files "bind-9.9.5" ".*"))
410 (zero? (system* "tar" "cf" "bind.tar.gz"
411 "bind-9.9.5"))))
412 (alist-cons-after
413 'install 'post-install
414 (lambda* (#:key inputs outputs #:allow-other-keys)
415 ;; Install the dhclient script for GNU/Linux and make sure
416 ;; if finds all the programs it needs.
417 (let* ((out (assoc-ref outputs "out"))
418 (libexec (string-append out "/libexec"))
419 (coreutils (assoc-ref inputs "coreutils"))
420 (net-tools (assoc-ref inputs "net-tools"))
421 (sed (assoc-ref inputs "sed")))
422 (substitute* "client/scripts/linux"
423 (("/sbin/ip")
424 (string-append (assoc-ref inputs "iproute")
425 "/sbin/ip")))
426
427 (mkdir-p libexec)
428 (copy-file "client/scripts/linux"
429 (string-append libexec "/dhclient-script"))
430
431 (wrap-program (string-append libexec "/dhclient-script")
432 `("PATH" ":" prefix
433 ,(map (lambda (dir)
434 (string-append dir "/bin:"
435 dir "/sbin"))
436 (list net-tools coreutils sed))))))
437 %standard-phases))))
438
439 (native-inputs `(("perl" ,perl)))
440
441 (inputs `(("net-tools" ,net-tools)
442 ("iproute" ,iproute)
443
444 ;; When cross-compiling, we need the cross Coreutils and sed.
445 ;; Otherwise just use those from %FINAL-INPUTS.
446 ,@(if (%current-target-system)
447 `(("coreutils" ,coreutils)
448 ("sed" ,sed))
449 '())))
450
451 (home-page "http://www.isc.org/products/DHCP/")
452 (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
453 (description
454 "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
455reference implementation of all aspects of DHCP, through a suite of DHCP
456tools: server, client, and relay agent.")
457 (license isc)))
458
459(define-public libpcap
460 (package
461 (name "libpcap")
462 (version "1.5.3")
463 (source (origin
464 (method url-fetch)
465 (uri (string-append "http://www.tcpdump.org/release/libpcap-"
466 version ".tar.gz"))
467 (sha256
468 (base32
469 "14wyjywrdi1ikaj6yc9c72m6m2r64z94lb0gm7k1a3q6q5cj3scs"))))
470 (build-system gnu-build-system)
471 (native-inputs `(("bison" ,bison) ("flex" ,flex)))
472 (arguments '(#:tests? #f)) ; no 'check' target
473 (home-page "http://www.tcpdump.org")
474 (synopsis "Network packet capture library")
475 (description
476 "libpcap is an interface for user-level packet capture. It provides a
477portable framework for low-level network monitoring. Applications include
478network statistics collection, security monitoring, network debugging, etc.")
479
480 ;; fad-*.c and a couple other files are BSD-4, but the rest is BSD-3.
481 (license bsd-3)))
482
483(define-public tcpdump
484 (package
485 (name "tcpdump")
486 (version "4.5.1")
487 (source (origin
488 (method url-fetch)
489 (uri (string-append "http://www.tcpdump.org/release/tcpdump-"
490 version ".tar.gz"))
491 (sha256
492 (base32
493 "15hb7zkzd66nag102qbv100hcnf7frglbkylmr8adwr8f5jkkaql"))))
494 (build-system gnu-build-system)
495 (inputs `(("libpcap" ,libpcap)
496 ("openssl" ,o:openssl)))
497 (native-inputs `(("perl" ,perl))) ; for tests
498 (home-page "http://www.tcpdump.org/")
499 (synopsis "Network packet analyzer")
500 (description
501 "Tcpdump is a command-line tool to analyze network traffic passing
502through the network interface controller.")
503 (license bsd-3)))
504
505(define-public jnettop
506 (package
507 (name "jnettop")
508 (version "0.13.0")
509 (source (origin
510 (method url-fetch)
511 (uri (string-append "http://jnettop.kubs.info/dist/jnettop-"
512 version ".tar.gz"))
513 (sha256
514 (base32
515 "1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9"))))
516 (build-system gnu-build-system)
517 (native-inputs
518 `(("pkg-config" ,pkg-config)))
519 (inputs
520 `(("glib" ,glib)
521 ("ncurses" ,ncurses)
522 ("libpcap" ,libpcap)))
523 (home-page "http://jnettop.kubs.info/")
524 (synopsis "Visualize network traffic by bandwidth use")
525 (description
526 "Jnettop is a traffic visualiser, which captures traffic going
527through the host it is running from and displays streams sorted
528by bandwidth they use.")
529 (license gpl2+)))
530
531(define-public clusterssh
532 (package
533 (name "clusterssh")
534 (version "3.28")
535 (source (origin
536 (method url-fetch)
537 (uri (string-append "mirror://sourceforge/clusterssh/"
538 "clusterssh-" version ".tar.gz"))
539 (sha256
540 (base32
541 "1bwggpvaj2al5blg1ynapviv2kpydffpzq2zkhi81najnvzc1rr7"))))
542 (build-system gnu-build-system)
543 (inputs `(("perl" ,perl)))
544 (propagated-inputs `(("xterm" ,xterm)
545 ("perl-tk" ,perl-tk)
546 ("perl-x11-protocol" ,perl-x11-protocol)))
547 (arguments
548 `(#:phases
549 (alist-cons-after
550 'install 'set-load-paths
551 (lambda* (#:key inputs outputs #:allow-other-keys)
552 ;; Put the perl-tk and perl-x11-protocol modules in the perl inc
553 ;; path for PROG
554 (let* ((out (assoc-ref outputs "out"))
555 (prog (string-append out "/bin/cssh"))
556 (perl-ver ,(package-version perl))
557 (x11-inc (string-append
558 (assoc-ref inputs "perl-x11-protocol")
559 "/lib/perl5/site_perl/" perl-ver))
560 (tk-inc (string-append
561 (assoc-ref inputs "perl-tk")
562 "/lib/perl5/site_perl/" perl-ver
563 "/x86_64-linux")))
564 (wrap-program
565 prog
566 `("PERL5LIB" ":" prefix (,x11-inc ,tk-inc)))))
567 %standard-phases)))
568 ;; The clusterssh.sourceforge.net address requires login to view
569 (home-page "http://sourceforge.net/projects/clusterssh/")
570 (synopsis "Secure concurrent multi-server terminal control")
571 (description
572 "ClusterSSH controls a number of xterm windows via a single graphical
573console window to allow commands to be interactively run on multiple servers
574over ssh connections.")
575 (license gpl2+)))
576
577(define-public rottlog
578 (package
579 (name "rottlog")
580 (version "0.72.2")
581 (source (origin
582 (method url-fetch)
583 (uri (string-append "mirror://gnu/rottlog/rottlog-"
584 version ".tar.gz"))
585 (sha256
586 (base32
587 "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
588 (modules '((guix build utils)))
589 (snippet
590 '(substitute* "Makefile.in"
591 (("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
592 ;; Don't try to chown root.
593 "")
594 (("mkdir -p \\$\\(ROTT_STATDIR\\)")
595 ;; Don't attempt to create /var/lib/rottlog.
596 "true")))))
597 (build-system gnu-build-system)
598 (arguments
599 '(#:configure-flags (list (string-append "ROTT_ETCDIR="
600 (assoc-ref %outputs "out")
601 "/etc")
602 "--localstatedir=/var")
603 #:phases (alist-cons-after
604 'install 'install-info
605 (lambda _
606 (zero? (system* "make" "install-info")))
607 %standard-phases)))
608 (native-inputs `(("texinfo" ,texinfo)
609 ("util-linux" ,util-linux))) ; for 'cal'
610 (home-page "http://www.gnu.org/software/rottlog/")
611 (synopsis "Log rotation and management")
612 (description
613 "GNU Rot[t]log is a program for managing log files. It is used to
614automatically rotate out log files when they have reached a given size or
615according to a given schedule. It can also be used to automatically compress
616and archive such logs. Rot[t]log will mail reports of its activity to the
617system administrator.")
618 (license gpl3+)))
619
620(define-public sudo
621 (package
622 (name "sudo")
623 (version "1.8.10p3")
624 (source (origin
625 (method url-fetch)
626 (uri
627 (list (string-append "http://www.sudo.ws/sudo/dist/sudo-"
628 version ".tar.gz")
629 (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
630 version ".tar.gz")))
631 (sha256
632 (base32
633 "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf"))))
634 (build-system gnu-build-system)
635 (arguments
636 `(#:configure-flags '("--with-logpath=/var/log/sudo.log"
637 "--with-rundir=/run/sudo"
638 "--with-vardir=/var/db/sudo"
639 "--with-iologdir=/var/log/sudo-io")
640 #:phases (alist-cons-before
641 'configure 'pre-configure
642 (lambda _
643 (substitute* "configure"
644 ;; Refer to the right executables.
645 (("/usr/bin/mv") (which "mv"))
646 (("/usr/bin/sh") (which "sh")))
647 (substitute* (find-files "." "Makefile\\.in")
648 (("-O [[:graph:]]+ -G [[:graph:]]+")
649 ;; Allow installation as non-root.
650 "")
651 (("^install: (.*)install-sudoers(.*)" _ before after)
652 ;; Don't try to create /etc/sudoers.
653 (string-append "install: " before after "\n"))
654 (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
655 ;; Don't try to create /run/sudo.
656 "$(TMPDIR)/dummy")
657 (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
658 ;; Don't try to create /var/db/sudo.
659 "$(TMPDIR)/dummy")))
660 %standard-phases)
661
662 ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
663 ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
664 #:tests? #f))
665 (inputs
666 `(("groff" ,groff)
667 ("linux-pam" ,linux-pam)
668 ("coreutils" ,coreutils)))
669 (home-page "http://www.sudo.ws/")
670 (synopsis "Run commands as root")
671 (description
672 "Sudo (su \"do\") allows a system administrator to delegate authority to
673give certain users (or groups of users) the ability to run some (or all)
674commands as root or another user while providing an audit trail of the
675commands and their arguments.")
676
677 ;; See <http://www.sudo.ws/sudo/license.html>.
678 (license x11)))
679
680(define-public wpa-supplicant
681 (package
682 (name "wpa-supplicant")
683 (version "2.3")
684 (source (origin
685 (method url-fetch)
686 (uri (string-append
687 "http://w1.fi/releases/wpa_supplicant-"
688 version
689 ".tar.gz"))
690 (sha256
691 (base32
692 "0skvkl6c10ls4s48b2wmf47h9j1y40nlzxnzn8hyaw2j0prmpapa"))))
693 (build-system gnu-build-system)
694 (arguments
695 '(#:phases (alist-replace
696 'configure
697 (lambda* (#:key outputs #:allow-other-keys)
698 (chdir "wpa_supplicant")
699 (copy-file "defconfig" ".config")
700 (let ((port (open-file ".config" "al")))
701 (display "
702 CONFIG_DEBUG_SYSLOG=y
703
704 # Choose GnuTLS (the default is OpenSSL.)
705 CONFIG_TLS=gnutls
706
707 # TODO: Add a variant of this package with DBus support.
708 #CONFIG_CTRL_IFACE_DBUS=y
709 #CONFIG_CTRL_IFACE_DBUS_NEW=y
710 #CONFIG_CTRL_IFACE_DBUS_INTRO=y
711
712 CONFIG_DRIVER_NL80211=y
713 CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
714 CONFIG_LIBNL32=y
715 CONFIG_READLINE=y\n" port)
716 (close-port port)))
717
718 (alist-cons-after
719 'install 'install-man-pages
720 (lambda* (#:key outputs #:allow-other-keys)
721 (let* ((out (assoc-ref outputs "out"))
722 (man (string-append out "/share/man"))
723 (man5 (string-append man "/man5"))
724 (man8 (string-append man "/man8")))
725 (define (copy-man-page target)
726 (lambda (file)
727 (copy-file file
728 (string-append target "/"
729 (basename file)))))
730
731 (mkdir-p man5) (mkdir man8)
732 (for-each (copy-man-page man5)
733 (find-files "doc/docbook" "\\.5"))
734 (for-each (copy-man-page man8)
735 (find-files "doc/docbook" "\\.8"))
736 #t))
737 %standard-phases))
738
739 #:make-flags (list "CC=gcc"
740 (string-append "BINDIR=" (assoc-ref %outputs "out")
741 "/sbin")
742 (string-append "LIBDIR=" (assoc-ref %outputs "out")
743 "/lib"))
744 #:tests? #f))
745 (inputs
746 `(("readline" ,readline)
747 ("libnl" ,libnl)
748 ;; TODO: Add a variant with DBus support. This significantly increases
749 ;; the size of its closure since DBus depends on libx11.
750 ;; ("dbus" ,dbus)
751 ("gnutls" ,gnutls)
752 ("libgcrypt" ,libgcrypt))) ;needed by crypto_gnutls.c
753 (native-inputs
754 `(("pkg-config" ,pkg-config)))
755 (home-page "http://w1.fi/wpa_supplicant/")
756 (synopsis "Connecting to WPA and WPA2-protected wireless networks")
757 (description
758 "wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
759802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
760the client stations. It implements key negotiation with a WPA Authenticator
761and it controls the roaming and IEEE 802.11 authentication/association of the
762WLAN driver.
763
764This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
765
766 ;; In practice, this is linked against Readline, which makes it GPLv3+.
767 (license bsd-3)))
768
769(define-public wakelan
770 (package
771 (name "wakelan")
772 (version "1.1")
773 (source (origin
774 (method url-fetch)
775 (uri (string-append
776 "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-"
777 version ".tar.gz"))
778 (sha256
779 (base32
780 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
781 (build-system gnu-build-system)
782 (arguments
783 '(#:phases (alist-replace
784 'configure
785 (lambda* (#:key outputs #:allow-other-keys)
786 (let ((out (assoc-ref outputs "out")))
787 (mkdir-p (string-append out "/bin"))
788 (mkdir-p (string-append out "/share/man/man1"))
789
790 ;; It's an old configure script that doesn't understand
791 ;; the extra options we pass.
792 (setenv "CONFIG_SHELL" (which "bash"))
793 (zero?
794 (system* "./configure"
795 (string-append "--prefix=" out)
796 (string-append "--mandir=" out
797 "/share/man")))))
798 %standard-phases)
799 #:tests? #f))
800 (home-page "http://kernel.org") ; really, no home page
801 (synopsis "Send a wake-on-LAN packet")
802 (description
803 "WakeLan broadcasts a properly formatted UDP packet across the local area
804network, which causes enabled computers to power on.")
805 (license gpl2+)))
806
807(define-public dmidecode
808 (package
809 (name "dmidecode")
810 (version "2.12")
811 (source (origin
812 (method url-fetch)
813 (uri (string-append
814 "mirror://savannah/dmidecode/dmidecode-"
815 version ".tar.bz2"))
816 (sha256
817 (base32
818 "122hgaw8mpqdfra159lfl6pyk3837giqx6vq42j64fjnbl2z6gwi"))))
819 (build-system gnu-build-system)
820 (arguments
821 '(#:phases (alist-delete 'configure %standard-phases)
822 #:tests? #f ; no 'check' target
823 #:make-flags (list (string-append "prefix="
824 (assoc-ref %outputs "out")))))
825 (home-page "http://www.nongnu.org/dmidecode/")
826 (synopsis "Read hardware information from the BIOS")
827 (description
828 "Dmidecode reports information about your system's hardware as described
829in your system BIOS according to the SMBIOS/DMI standard. This typically
830includes system manufacturer, model name, serial number, BIOS version, asset
831tag as well as a lot of other details of varying level of interest and
832reliability depending on the manufacturer. This will often include usage
833status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
834module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
835 (license gpl2+)))
836
837(define-public acpica
838 (package
839 (name "acpica")
840 (version "20140724")
841 (source (origin
842 (method url-fetch)
843 (uri (string-append
844 "https://acpica.org/sites/acpica/files/acpica-unix2-"
845 version ".tar.gz"))
846 (sha256
847 (base32
848 "01vdgrh7dsxrrvg5yd8sxm63cw8210pnsi5qg9g15ac53gn243ac"))))
849 (build-system gnu-build-system)
850 (native-inputs `(("flex" ,flex)
851 ("bison" ,bison)))
852 (arguments
853 '(#:make-flags (list (string-append "PREFIX=" %output)
854 "HOST=_LINUX"
855 "OPT_CFLAGS=-Wall -fno-strict-aliasing")
856 #:tests? #f ; no 'check' target.
857 #:phases (alist-delete 'configure %standard-phases)))
858 (home-page "http://acpica.org/")
859 (synopsis "Tools for the development and debug of ACPI tables")
860 (description
861 "The ACPI Component Architecture (ACPICA) project provides an
862OS-independent reference implementation of the Advanced Configuration and
863Power Interface Specification (ACPI). ACPICA code contains those portions of
864ACPI meant to be directly integrated into the host OS as a kernel-resident
865subsystem, and a small set of tools to assist in developing and debugging ACPI
866tables. This package contains only the user-space tools needed for ACPI table
867development, not the kernel implementation of ACPI.")
868 (license gpl2))) ; Dual GPLv2/ACPICA Licence
869
870(define-public stress
871 (package
872 (name "stress")
873 (version "1.0.1")
874 (source (origin
875 (method url-fetch)
876 (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
877 version ".orig.tar.gz"))
878 (sha256
879 (base32
880 "1v9vnzlihqfjsxa93hdbrq72pqqk00dkylmlg8jpxhm7s1w9qfl1"))))
881 (build-system gnu-build-system)
882 (home-page "http://packages.debian.org/wheezy/stress")
883 (synopsis "Impose load on and stress test a computer system")
884 (description
885 "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
886or disk stress on a POSIX-compliant operating system and reports any errors it
887detects.
888
889Stress is not a benchmark. It is a tool used by system administrators to
890evaluate how well their systems will scale, by kernel programmers to evaluate
891perceived performance characteristics, and by systems programmers to expose
892the classes of bugs which only or more frequently manifest themselves when the
893system is under heavy load.")
894 (license gpl2+)))
895
896(define-public detox
897 (package
898 (name "detox")
899 (version "1.2.0")
900 (source (origin
901 (method url-fetch)
902 (uri (string-append "mirror://sourceforge/detox/detox-"
903 version ".tar.bz2"))
904 (sha256
905 (base32
906 "1y6vvjqsg54kl49cry73jbfhr04s7wjs779vrr9zrq6kww7dkymb"))))
907 (build-system gnu-build-system)
908 ;; Both flex and popt are used in this case for their runtime libraries
909 ;; (libfl and libpopt).
910 (inputs
911 `(("flex" ,flex)
912 ("popt" ,popt)))
913 (arguments
914 `(#:configure-flags `(,(string-append "--with-popt="
915 (assoc-ref %build-inputs "popt")))
916 #:tests? #f)) ;no 'check' target
917 (home-page "http://detox.sourceforge.net")
918 (synopsis "Clean up filenames")
919 (description
920 "Detox is a program that renames files to make them easier to work with
921under Unix and related operating systems. Spaces and various other unsafe
922characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
923characters can be replaced as well, as can UTF-8 characters.")
924 (license bsd-3)))
925
926(define-public testdisk
927 (package
928 (name "testdisk")
929 (version "6.14")
930 (source (origin
931 (method url-fetch)
932 (uri (string-append "http://www.cgsecurity.org/testdisk-"
933 version ".tar.bz2"))
934 (sha256
935 (base32
936 "0v1jap83f5h99zv01v3qmqm160d36n4ysi0gyq7xzb3mqgmw75x5"))))
937 (build-system gnu-build-system)
938 (inputs
939 `(;; ("ntfs" ,ntfs)
940 ("util-linux" ,util-linux)
941 ("openssl" ,o:openssl)
942 ("zlib" ,c:zlib)
943 ("e2fsprogs" ,e2fsprogs)
944 ("libjpeg" ,libjpeg)
945 ("ncurses" ,ncurses)))
946 (home-page "http://www.cgsecurity.org/wiki/TestDisk")
947 (synopsis "Data recovery tool")
948 (description
949 "TestDisk is a program for data recovery, primarily designed to help
950recover lost partitions and/or make non-booting disks bootable again.")
951 (license gpl2+)))
952
953(define-public direvent
954 (package
955 (name "direvent")
956 (version "5.0")
957 (source (origin
958 (method url-fetch)
959 (uri (string-append "mirror://gnu/direvent/direvent-"
960 version ".tar.gz"))
961 (sha256
962 (base32
963 "1i14131y6m8wvirz6piw4zxz2q1kbpl0lniv5kl55rx4k372dg8z"))
964 (modules '((guix build utils)))
965 (snippet '(substitute* "tests/testsuite"
966 (("#![[:blank:]]?/bin/sh")
967 "#!$SHELL")))))
968 (build-system gnu-build-system)
969 (arguments
970 '(#:phases (alist-cons-before
971 'build 'patch-/bin/sh
972 (lambda* (#:key inputs #:allow-other-keys)
973 ;; Use the right shell when executing the watcher.
974 (let ((bash (assoc-ref inputs "bash")))
975 (substitute* "src/direvent.c"
976 (("\"/bin/sh\"")
977 (string-append "\"" bash "/bin/sh\"")))))
978 %standard-phases)))
979 (home-page "http://www.gnu.org/software/direvent/")
980 (synopsis "Daemon to monitor directories for events such as file removal")
981 (description
982 "A daemon that monitors directories for events, such as creating,
983deleting or modifying files. It can monitor different sets of directories for
984different events. When an event is detected, direvent calls a specified
985external program with information about the event, such as the location
986within the file system where it occurred. Thus, \"direvent\" provides an
987easy way to react immediately if given files undergo changes, for example, to
988track changes in important system configuration files.")
989 (license gpl3+)))