gnu: libssh: Upgrade to 0.6.3.
[jackhill/guix/guix.git] / gnu / packages / linux.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
6869e5c9 2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
233e7676 3;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
fd76c904 4;;;
233e7676 5;;; This file is part of GNU Guix.
fd76c904 6;;;
233e7676 7;;; GNU Guix is free software; you can redistribute it and/or modify it
fd76c904
LC
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
233e7676 12;;; GNU Guix is distributed in the hope that it will be useful, but
fd76c904
LC
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
233e7676 18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
fd76c904 19
1ffa7090 20(define-module (gnu packages linux)
023fef7d
LC
21 #:use-module ((guix licenses)
22 #:hide (zlib))
59a43334 23 #:use-module (gnu packages)
1ffa7090 24 #:use-module ((gnu packages compression)
4a44e743 25 #:renamer (symbol-prefix-proc 'guix:))
1ffa7090 26 #:use-module (gnu packages flex)
90a0048f 27 #:use-module (gnu packages bison)
1ffa7090
LC
28 #:use-module (gnu packages libusb)
29 #:use-module (gnu packages ncurses)
90a0048f 30 #:use-module (gnu packages bdb)
1ffa7090
LC
31 #:use-module (gnu packages perl)
32 #:use-module (gnu packages pkg-config)
7c0dbe78 33 #:use-module (gnu packages python)
e7b38500 34 #:use-module (gnu packages algebra)
1dba6407 35 #:use-module (gnu packages gettext)
17b293a0 36 #:use-module (gnu packages pulseaudio)
c762e82e 37 #:use-module (gnu packages attr)
17b293a0 38 #:use-module (gnu packages xml)
215b6431 39 #:use-module (gnu packages autotools)
02b80c3f
NK
40 #:use-module (guix packages)
41 #:use-module (guix download)
7c0dbe78 42 #:use-module (guix build-system gnu)
220193ad 43 #:use-module (guix build-system cmake)
7c0dbe78 44 #:use-module (guix build-system python))
fd76c904 45
aaf4cb20
LC
46(define-public (system->linux-architecture arch)
47 "Return the Linux architecture name for ARCH, a Guix system name such as
48\"x86_64-linux\"."
618cea69
NK
49 (let ((arch (car (string-split arch #\-))))
50 (cond ((string=? arch "i686") "i386")
51 ((string-prefix? "mips" arch) "mips")
aaf4cb20 52 ((string-prefix? "arm" arch) "arm")
618cea69
NK
53 (else arch))))
54
6023cc74
LC
55(define (linux-libre-urls version)
56 "Return a list of URLs for Linux-Libre VERSION."
57 (list (string-append
58 "http://linux-libre.fsfla.org/pub/linux-libre/releases/"
59 version "-gnu/linux-libre-" version "-gnu.tar.xz")
60
61 ;; XXX: Work around <http://bugs.gnu.org/14851>.
62 (string-append
63 "ftp://alpha.gnu.org/gnu/guix/mirror/linux-libre-"
64 version "-gnu.tar.xz")
65
66 ;; Maybe this URL will become valid eventually.
67 (string-append
68 "mirror://gnu/linux-libre/" version "-gnu/linux-libre-"
69 version "-gnu.tar.xz")))
70
80fe5c60 71(define-public linux-libre-headers
dfb52abb 72 (let* ((version "3.3.8")
80fe5c60 73 (build-phase
618cea69
NK
74 (lambda (arch)
75 `(lambda _
76 (setenv "ARCH" ,(system->linux-architecture arch))
77 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
45298f8f 78
618cea69
NK
79 (and (zero? (system* "make" "defconfig"))
80 (zero? (system* "make" "mrproper" "headers_check"))))))
80fe5c60
LC
81 (install-phase
82 `(lambda* (#:key outputs #:allow-other-keys)
83 (let ((out (assoc-ref outputs "out")))
84 (and (zero? (system* "make"
85 (string-append "INSTALL_HDR_PATH=" out)
86 "headers_install"))
87 (mkdir (string-append out "/include/config"))
88 (call-with-output-file
89 (string-append out
90 "/include/config/kernel.release")
91 (lambda (p)
dfb52abb 92 (format p "~a-default~%" ,version))))))))
80fe5c60
LC
93 (package
94 (name "linux-libre-headers")
dfb52abb 95 (version version)
80fe5c60
LC
96 (source (origin
97 (method url-fetch)
6023cc74 98 (uri (linux-libre-urls version))
80fe5c60
LC
99 (sha256
100 (base32
101 "0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
102 (build-system gnu-build-system)
103 (native-inputs `(("perl" ,perl)))
104 (arguments
105 `(#:modules ((guix build gnu-build-system)
106 (guix build utils)
56c092ce 107 (srfi srfi-1))
80fe5c60 108 #:phases (alist-replace
fb6c2fa8
LC
109 'build ,(build-phase (or (%current-target-system)
110 (%current-system)))
80fe5c60
LC
111 (alist-replace
112 'install ,install-phase
56c092ce 113 (alist-delete 'configure %standard-phases)))
80fe5c60
LC
114 #:tests? #f))
115 (synopsis "GNU Linux-Libre kernel headers")
116 (description "Headers of the Linux-Libre kernel.")
38bbd61d 117 (license gpl2)
80fe5c60
LC
118 (home-page "http://www.gnu.org/software/linux-libre/"))))
119
b4fcb735
LC
120(define-public module-init-tools
121 (package
122 (name "module-init-tools")
123 (version "3.16")
124 (source (origin
125 (method url-fetch)
126 (uri (string-append
127 "mirror://kernel.org/linux/utils/kernel/module-init-tools/module-init-tools-"
128 version ".tar.bz2"))
129 (sha256
130 (base32
131 "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))))
132 (build-system gnu-build-system)
b4fcb735 133 (arguments
5c413a9c
LC
134 ;; FIXME: The upstream tarball lacks man pages, and building them would
135 ;; require DocBook & co. We used to use Gentoo's pre-built man pages,
136 ;; but they vanished. In the meantime, fake it.
b4fcb735 137 '(#:phases (alist-cons-before
5c413a9c
LC
138 'configure 'fake-docbook
139 (lambda _
140 (substitute* "Makefile.in"
141 (("^DOCBOOKTOMAN.*$")
142 "DOCBOOKTOMAN = true\n")))
b4fcb735
LC
143 %standard-phases)))
144 (home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
145 (synopsis "Tools for loading and managing Linux kernel modules")
146 (description
147 "Tools for loading and managing Linux kernel modules, such as `modprobe',
148`insmod', `lsmod', and more.")
149 (license gpl2+)))
150
beacfcab 151(define-public linux-libre
7b99ba4a 152 (let* ((version "3.13")
beacfcab
LC
153 (build-phase
154 '(lambda* (#:key system #:allow-other-keys #:rest args)
155 (let ((arch (car (string-split system #\-))))
156 (setenv "ARCH"
157 (cond ((string=? arch "i686") "i386")
158 (else arch)))
159 (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
160
161 (let ((build (assoc-ref %standard-phases 'build)))
2e48455d
LC
162 (and (zero? (system* "make" "defconfig"))
163 (begin
164 (format #t "enabling additional modules...~%")
165 (substitute* ".config"
166 (("^# CONFIG_CIFS.*$")
f914963e 167 "CONFIG_CIFS=m\n")
68276f16
LC
168 (("^# CONFIG_FUSE_FS.*$")
169 "CONFIG_FUSE_FS=m\n")
f914963e
LC
170 (("^# CONFIG_([[:graph:]]*)VIRTIO([[:graph:]]*) .*$"
171 _ before after)
172 (string-append "CONFIG_" before "VIRTIO"
173 after "=m\n")))
882f034f
LC
174
175 ;; XXX: For some reason, some virtio modules need to be
176 ;; explicitly added.
177 (let ((port (open-file ".config" "a")))
178 (display (string-append "CONFIG_NET_9P_VIRTIO=m\n"
70b33d81
LC
179 "CONFIG_NET_9P=m\n"
180 "CONFIG_9P_FS=m\n"
882f034f
LC
181 "CONFIG_VIRTIO_NET=m\n"
182 "CONFIG_VIRTIO_BLK=m\n"
183 "CONFIG_VIRTIO_BALLOON=m\n")
184 port)
185 (close-port port))
186
2e48455d 187 (zero? (system* "make" "oldconfig")))
beacfcab
LC
188
189 ;; Call the default `build' phase so `-j' is correctly
190 ;; passed.
191 (apply build #:make-flags "all" args)))))
192 (install-phase
193 `(lambda* (#:key inputs outputs #:allow-other-keys)
194 (let* ((out (assoc-ref outputs "out"))
195 (moddir (string-append out "/lib/modules"))
196 (mit (assoc-ref inputs "module-init-tools")))
197 (mkdir-p moddir)
198 (for-each (lambda (file)
199 (copy-file file
200 (string-append out "/" (basename file))))
201 (find-files "." "^(bzImage|System\\.map)$"))
202 (copy-file ".config" (string-append out "/config"))
203 (zero? (system* "make"
204 (string-append "DEPMOD=" mit "/sbin/depmod")
205 (string-append "MODULE_DIR=" moddir)
206 (string-append "INSTALL_PATH=" out)
207 (string-append "INSTALL_MOD_PATH=" out)
208 "modules_install"))))))
209 (package
210 (name "linux-libre")
dfb52abb 211 (version version)
beacfcab
LC
212 (source (origin
213 (method url-fetch)
6023cc74 214 (uri (linux-libre-urls version))
beacfcab
LC
215 (sha256
216 (base32
7b99ba4a 217 "15pdizzxnnvpxmdb1lbi01kpingmdvj17b01vzbyjymi4vwfws3f"))))
beacfcab
LC
218 (build-system gnu-build-system)
219 (native-inputs `(("perl" ,perl)
e7b38500 220 ("bc" ,bc)
beacfcab
LC
221 ("module-init-tools" ,module-init-tools)))
222 (arguments
223 `(#:modules ((guix build gnu-build-system)
224 (guix build utils)
225 (srfi srfi-1)
226 (ice-9 match))
227 #:phases (alist-replace
228 'build ,build-phase
229 (alist-replace
230 'install ,install-phase
231 (alist-delete 'configure %standard-phases)))
232 #:tests? #f))
f50d2669 233 (synopsis "100% free redistribution of a cleaned Linux kernel")
a22dc0c4 234 (description
79c311b8
LC
235 "GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.
236It has been modified to remove all non-free binary blobs.")
beacfcab
LC
237 (license gpl2)
238 (home-page "http://www.gnu.org/software/linux-libre/"))))
239
c84d0eca
LC
240\f
241;;;
242;;; Pluggable authentication modules (PAM).
243;;;
244
fd76c904
LC
245(define-public linux-pam
246 (package
247 (name "linux-pam")
248 (version "1.1.6")
249 (source
250 (origin
251 (method url-fetch)
252 (uri (list (string-append "http://www.linux-pam.org/library/Linux-PAM-"
253 version ".tar.bz2")
254 (string-append "mirror://kernel.org/linux/libs/pam/library/Linux-PAM-"
255 version ".tar.bz2")))
256 (sha256
257 (base32
258 "1hlz2kqvbjisvwyicdincq7nz897b9rrafyzccwzqiqg53b8gf5s"))))
259 (build-system gnu-build-system)
c4c4cc05 260 (native-inputs
fd76c904
LC
261 `(("flex" ,flex)
262
263 ;; TODO: optional dependencies
264 ;; ("libxcrypt" ,libxcrypt)
265 ;; ("cracklib" ,cracklib)
266 ))
267 (arguments
c134056a
LC
268 '(;; Most users, such as `shadow', expect the headers to be under
269 ;; `security'.
270 #:configure-flags (list (string-append "--includedir="
271 (assoc-ref %outputs "out")
272 "/include/security"))
273
274 ;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
275 ;; isn't available.
276 #:tests? #f))
fd76c904
LC
277 (home-page "http://www.linux-pam.org/")
278 (synopsis "Pluggable authentication modules for Linux")
279 (description
280 "A *Free* project to implement OSF's RFC 86.0.
281Pluggable authentication modules are small shared object files that can
282be used through the PAM API to perform tasks, like authenticating a user
283at login. Local and dynamic reconfiguration are its key features")
4a44e743 284 (license bsd-3)))
686f14e8 285
c84d0eca
LC
286\f
287;;;
288;;; Miscellaneous.
289;;;
290
686f14e8
LC
291(define-public psmisc
292 (package
293 (name "psmisc")
294 (version "22.20")
295 (source
296 (origin
297 (method url-fetch)
298 (uri (string-append "mirror://sourceforge/psmisc/psmisc/psmisc-"
299 version ".tar.gz"))
300 (sha256
301 (base32
302 "052mfraykmxnavpi8s78aljx8w87hyvpx8mvzsgpjsjz73i28wmi"))))
303 (build-system gnu-build-system)
304 (inputs `(("ncurses" ,ncurses)))
305 (home-page "http://psmisc.sourceforge.net/")
306 (synopsis
307 "set of utilities that use the proc filesystem, such as fuser, killall, and pstree")
308 (description
309 "This PSmisc package is a set of some small useful utilities that
310use the proc filesystem. We're not about changing the world, but
311providing the system administrator with some help in common tasks.")
4a44e743 312 (license gpl2+)))
02b80c3f
NK
313
314(define-public util-linux
315 (package
316 (name "util-linux")
317 (version "2.21")
318 (source
319 (origin
320 (method url-fetch)
321 (uri (string-append "mirror://kernel.org/linux/utils/"
322 name "/v" version "/"
323 name "-" version ".2" ".tar.xz"))
324 (sha256
325 (base32
326 "1rpgghf7n0zx0cdy8hibr41wvkm2qp1yvd8ab1rxr193l1jmgcir"))))
327 (build-system gnu-build-system)
328 (arguments
329 `(#:configure-flags '("--disable-use-tty-group")
330 #:phases (alist-cons-after
331 'install 'patch-chkdupexe
332 (lambda* (#:key outputs #:allow-other-keys)
333 (let ((out (assoc-ref outputs "out")))
334 (substitute* (string-append out "/bin/chkdupexe")
335 ;; Allow 'patch-shebang' to do its work.
336 (("@PERL@") "/bin/perl"))))
337 %standard-phases)))
4a44e743 338 (inputs `(("zlib" ,guix:zlib)
c4c4cc05
JD
339 ("ncurses" ,ncurses)))
340 (native-inputs
341 `(("perl" ,perl)))
02b80c3f 342 (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
35ec07c7 343 (synopsis "Collection of utilities for the Linux kernel")
02b80c3f
NK
344 (description
345 "util-linux is a random collection of utilities for the Linux kernel.")
fe8ccfcc 346
02b80c3f 347 ;; Note that util-linux doesn't use the same license for all the
fe8ccfcc 348 ;; code. GPLv2+ is the default license for a code without an
02b80c3f 349 ;; explicitly defined license.
fe8ccfcc
LC
350 (license (list gpl3+ gpl2+ gpl2 lgpl2.0+
351 bsd-4 public-domain))))
5d5c4278 352
e47e3eff
LC
353(define-public procps
354 (package
355 (name "procps")
356 (version "3.2.8")
357 (source (origin
358 (method url-fetch)
359 (uri (string-append "http://procps.sourceforge.net/procps-"
360 version ".tar.gz"))
361 (sha256
362 (base32
01eafd38
LC
363 "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i"))
364 (patches (list (search-patch "procps-make-3.82.patch")))))
e47e3eff 365 (build-system gnu-build-system)
01eafd38 366 (inputs `(("ncurses" ,ncurses)))
e47e3eff 367 (arguments
01eafd38 368 '(#:phases (alist-replace
e47e3eff
LC
369 'configure
370 (lambda* (#:key outputs #:allow-other-keys)
371 ;; No `configure', just a single Makefile.
372 (let ((out (assoc-ref outputs "out")))
373 (substitute* "Makefile"
374 (("/usr/") "/")
375 (("--(owner|group) 0") "")
376 (("ldconfig") "true")
377 (("^LDFLAGS[[:blank:]]*:=(.*)$" _ value)
378 ;; Add libproc to the RPATH.
379 (string-append "LDFLAGS := -Wl,-rpath="
380 out "/lib" value))))
381 (setenv "CC" "gcc"))
382 (alist-replace
383 'install
384 (lambda* (#:key outputs #:allow-other-keys)
385 (let ((out (assoc-ref outputs "out")))
386 (and (zero?
387 (system* "make" "install"
388 (string-append "DESTDIR=" out)))
389
390 ;; Sanity check.
391 (zero?
392 (system* (string-append out "/bin/ps")
393 "--version")))))
394 %standard-phases))
395
396 ;; What did you expect? Tests?
397 #:tests? #f))
398 (home-page "http://procps.sourceforge.net/")
35ec07c7 399 (synopsis "Utilities that give information about processes")
e47e3eff
LC
400 (description
401 "procps is the package that has a bunch of small useful utilities
402that give information about processes using the Linux /proc file system.
403The package includes the programs ps, top, vmstat, w, kill, free,
404slabtop, and skill.")
405 (license gpl2)))
406
5d5c4278
NK
407(define-public usbutils
408 (package
409 (name "usbutils")
410 (version "006")
411 (source
412 (origin
413 (method url-fetch)
414 (uri (string-append "mirror://kernel.org/linux/utils/usb/usbutils/"
415 "usbutils-" version ".tar.xz"))
416 (sha256
417 (base32
418 "03pd57vv8c6x0hgjqcbrxnzi14h8hcghmapg89p8k5zpwpkvbdfr"))))
419 (build-system gnu-build-system)
420 (inputs
c4c4cc05
JD
421 `(("libusb" ,libusb)))
422 (native-inputs
423 `(("pkg-config" ,pkg-config)))
5d5c4278
NK
424 (home-page "http://www.linux-usb.org/")
425 (synopsis
426 "Tools for working with USB devices, such as lsusb")
427 (description
428 "Tools for working with USB devices, such as lsusb.")
4050e5d6 429 (license gpl2+)))
0750452a
LC
430
431(define-public e2fsprogs
432 (package
433 (name "e2fsprogs")
434 (version "1.42.7")
435 (source (origin
436 (method url-fetch)
437 (uri (string-append "mirror://sourceforge/e2fsprogs/e2fsprogs-"
438 version ".tar.gz"))
439 (sha256
440 (base32
441 "0ibkkvp6kan0hn0d1anq4n2md70j5gcm7mwna515w82xwyr02rfw"))))
442 (build-system gnu-build-system)
c4c4cc05
JD
443 (inputs `(("util-linux" ,util-linux)))
444 (native-inputs `(("pkg-config" ,pkg-config)))
0750452a
LC
445 (arguments
446 '(#:phases (alist-cons-before
447 'configure 'patch-shells
448 (lambda _
449 (substitute* "configure"
450 (("/bin/sh (.*)parse-types.sh" _ dir)
451 (string-append (which "sh") " " dir
452 "parse-types.sh")))
453 (substitute* (find-files "." "^Makefile.in$")
454 (("#!/bin/sh")
455 (string-append "#!" (which "sh")))))
456 %standard-phases)
457
458 ;; FIXME: Tests work by comparing the stdout/stderr of programs, that
459 ;; they fail because we get an extra line that says "Can't check if
460 ;; filesystem is mounted due to missing mtab file".
461 #:tests? #f))
462 (home-page "http://e2fsprogs.sourceforge.net/")
35ec07c7 463 (synopsis "Creating and checking ext2/ext3/ext4 file systems")
0750452a
LC
464 (description
465 "This package provides tools for manipulating ext2/ext3/ext4 file systems.")
466 (license (list gpl2 ; programs
467 lgpl2.0 ; libext2fs
468 x11)))) ; libuuid
d8482ad0
LC
469
470(define-public strace
471 (package
472 (name "strace")
473 (version "4.7")
474 (source (origin
475 (method url-fetch)
476 (uri (string-append "mirror://sourceforge/strace/strace-"
477 version ".tar.xz"))
478 (sha256
479 (base32
480 "158iwk0pl2mfw93m1843xb7a2zb8p6lh0qim07rca6f1ff4dk764"))))
481 (build-system gnu-build-system)
c4c4cc05 482 (native-inputs `(("perl" ,perl)))
d8482ad0
LC
483 (home-page "http://strace.sourceforge.net/")
484 (synopsis "System call tracer for Linux")
485 (description
486 "strace is a system call tracer, i.e. a debugging tool which prints out a
487trace of all the system calls made by a another process/program.")
488 (license bsd-3)))
ba04571a
LC
489
490(define-public alsa-lib
491 (package
492 (name "alsa-lib")
493 (version "1.0.27.1")
494 (source (origin
495 (method url-fetch)
496 (uri (string-append
497 "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
498 version ".tar.bz2"))
499 (sha256
500 (base32
bcd94e19
MW
501 "0fx057746dj7rjdi0jnvx2m9b0y1lgdkh1hks87d8w32xyihf3k9"))
502 (patches (list (search-patch "alsa-lib-mips-atomic-fix.patch")))))
ba04571a
LC
503 (build-system gnu-build-system)
504 (home-page "http://www.alsa-project.org/")
505 (synopsis "The Advanced Linux Sound Architecture libraries")
506 (description
507 "The Advanced Linux Sound Architecture (ALSA) provides audio and
508MIDI functionality to the Linux-based operating system.")
509 (license lgpl2.1+)))
10afdf50 510
17b293a0
LC
511(define-public alsa-utils
512 (package
513 (name "alsa-utils")
514 (version "1.0.27.2")
515 (source (origin
516 (method url-fetch)
517 (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/alsa-utils-"
518 version ".tar.bz2"))
519 (sha256
520 (base32
521 "1sjjngnq50jv5ilwsb4zys6smifni3bd6fn28gbnhfrg14wsrgq2"))))
522 (build-system gnu-build-system)
523 (arguments
524 ;; XXX: Disable man page creation until we have DocBook.
525 '(#:configure-flags (list "--disable-xmlto"
526 (string-append "--with-udev-rules-dir="
527 (assoc-ref %outputs "out")
528 "/lib/udev/rules.d"))
529 #:phases (alist-cons-before
530 'install 'pre-install
531 (lambda _
532 ;; Don't try to mkdir /var/lib/alsa.
533 (substitute* "Makefile"
534 (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*")
535 "true\n")))
536 %standard-phases)))
537 (inputs
538 `(("libsamplerate" ,libsamplerate)
539 ("ncurses" ,ncurses)
540 ("alsa-lib" ,alsa-lib)
541 ("xmlto" ,xmlto)
1dba6407 542 ("gettext" ,gnu-gettext)))
17b293a0
LC
543 (home-page "http://www.alsa-project.org/")
544 (synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)")
545 (description
546 "The Advanced Linux Sound Architecture (ALSA) provides audio and
547MIDI functionality to the Linux-based operating system.")
548
549 ;; This is mostly GPLv2+ but a few files such as 'alsactl.c' are
550 ;; GPLv2-only.
551 (license gpl2)))
552
10afdf50
LC
553(define-public iptables
554 (package
555 (name "iptables")
556 (version "1.4.16.2")
557 (source (origin
558 (method url-fetch)
559 (uri (string-append
560 "http://www.netfilter.org/projects/iptables/files/iptables-"
561 version ".tar.bz2"))
562 (sha256
563 (base32
564 "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
565 (build-system gnu-build-system)
566 (arguments '(#:tests? #f)) ; no test suite
567 (home-page "http://www.netfilter.org/projects/iptables/index.html")
568 (synopsis "Program to configure the Linux IP packet filtering rules")
569 (description
570 "iptables is the userspace command line program used to configure the
571Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards
572system administrators. Since Network Address Translation is also configured
573from the packet filter ruleset, iptables is used for this, too. The iptables
574package also includes ip6tables. ip6tables is used for configuring the IPv6
575packet filter.")
576 (license gpl2+)))
90a0048f
LC
577
578(define-public iproute
579 (package
580 (name "iproute2")
5fd7f3e0 581 (version "3.12.0")
90a0048f
LC
582 (source (origin
583 (method url-fetch)
584 (uri (string-append
585 "mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
586 version ".tar.xz"))
587 (sha256
588 (base32
5fd7f3e0 589 "04gi11gh087bg2nlxhj0lxrk8l9qxkpr88nsiil23917bm3h1xj4"))))
90a0048f
LC
590 (build-system gnu-build-system)
591 (arguments
592 `(#:tests? #f ; no test suite
593 #:make-flags (let ((out (assoc-ref %outputs "out")))
594 (list "DESTDIR="
595 (string-append "LIBDIR=" out "/lib")
596 (string-append "SBINDIR=" out "/sbin")
597 (string-append "CONFDIR=" out "/etc")
598 (string-append "DOCDIR=" out "/share/doc/"
599 ,name "-" ,version)
600 (string-append "MANDIR=" out "/share/man")))
601 #:phases (alist-cons-before
602 'install 'pre-install
603 (lambda _
604 ;; Don't attempt to create /var/lib/arpd.
605 (substitute* "Makefile"
606 (("^.*ARPDDIR.*$") "")))
607 %standard-phases)))
608 (inputs
609 `(("iptables" ,iptables)
c4c4cc05
JD
610 ("db4" ,bdb)))
611 (native-inputs
612 `(("pkg-config" ,pkg-config)
90a0048f
LC
613 ("flex" ,flex)
614 ("bison" ,bison)))
615 (home-page
616 "http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
617 (synopsis
618 "A collection of utilities for controlling TCP/IP networking and traffic control in Linux")
619 (description
620 "Iproute2 is a collection of utilities for controlling TCP/IP
621networking and traffic with the Linux kernel.
622
623Most network configuration manuals still refer to ifconfig and route as the
624primary network configuration tools, but ifconfig is known to behave
625inadequately in modern network environments. They should be deprecated, but
626most distros still include them. Most network configuration systems make use
627of ifconfig and thus provide a limited feature set. The /etc/net project aims
628to support most modern network technologies, as it doesn't use ifconfig and
629allows a system administrator to make use of all iproute2 features, including
630traffic control.
631
632iproute2 is usually shipped in a package called iproute or iproute2 and
633consists of several tools, of which the most important are ip and tc. ip
634controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
635tools print detailed usage messages and are accompanied by a set of
636manpages.")
637 (license gpl2+)))
85e0dc6a
LC
638
639(define-public net-tools
640 ;; XXX: This package is basically unmaintained, but it provides a few
641 ;; commands not yet provided by Inetutils, such as 'route', so we have to
642 ;; live with it.
643 (package
644 (name "net-tools")
645 (version "1.60")
646 (home-page "http://www.tazenda.demon.co.uk/phil/net-tools/")
647 (source (origin
648 (method url-fetch)
649 (uri (string-append home-page "/" name "-"
650 version ".tar.bz2"))
651 (sha256
652 (base32
653 "0yvxrzk0mzmspr7sa34hm1anw6sif39gyn85w4c5ywfn8inxvr3s"))))
654 (build-system gnu-build-system)
655 (arguments
cd143df0
LC
656 '(#:phases (alist-cons-after
657 'unpack 'patch
85e0dc6a
LC
658 (lambda* (#:key inputs #:allow-other-keys)
659 (define (apply-patch file)
660 (zero? (system* "patch" "-p1" "--batch"
661 "--input" file)))
662
663 (let ((patch.gz (assoc-ref inputs "patch")))
664 (format #t "applying Debian patch set '~a'...~%"
665 patch.gz)
666 (system (string-append "gunzip < " patch.gz " > the-patch"))
667 (pk 'here)
668 (and (apply-patch "the-patch")
669 (for-each apply-patch
670 (find-files "debian/patches"
671 "\\.patch")))))
672 (alist-replace
673 'configure
674 (lambda* (#:key outputs #:allow-other-keys)
675 (let ((out (assoc-ref outputs "out")))
676 (mkdir-p (string-append out "/bin"))
677 (mkdir-p (string-append out "/sbin"))
678
679 ;; Pretend we have everything...
680 (system "yes | make config")
681
682 ;; ... except we don't have libdnet, so remove that
683 ;; definition.
684 (substitute* '("config.make" "config.h")
685 (("^.*HAVE_AFDECnet.*$") ""))))
686 %standard-phases))
687
688 ;; Binaries that depend on libnet-tools.a don't declare that
689 ;; dependency, making it parallel-unsafe.
690 #:parallel-build? #f
691
692 #:tests? #f ; no test suite
693 #:make-flags (list "CC=gcc"
694 (string-append "BASEDIR="
695 (assoc-ref %outputs "out")))))
696
697 ;; Use the big Debian patch set (the thing does not even compile out of
698 ;; the box.)
699 (inputs `(("patch" ,(origin
700 (method url-fetch)
701 (uri
702 "http://ftp.de.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-24.2.diff.gz")
703 (sha256
704 (base32
705 "0p93lsqx23v5fv4hpbrydmfvw1ha2rgqpn2zqbs2jhxkzhjc030p"))))))
1dba6407 706 (native-inputs `(("gettext" ,gnu-gettext)))
85e0dc6a
LC
707
708 (synopsis "Tools for controlling the network subsystem in Linux")
709 (description
710 "This package includes the important tools for controlling the network
711subsystem of the Linux kernel. This includes arp, hostname, ifconfig,
712netstat, rarp and route. Additionally, this package contains utilities
713relating to particular network hardware types (plipconfig, slattach) and
714advanced aspects of IP configuration (iptunnel, ipmaddr).")
715 (license gpl2+)))
c762e82e
LC
716
717(define-public libcap
718 (package
719 (name "libcap")
720 (version "2.22")
721 (source (origin
722 (method url-fetch)
723
724 ;; Tarballs used to be available from
725 ;; <https://www.kernel.org/pub/linux/libs/security/linux-privs/>
726 ;; but they never came back after kernel.org was compromised.
727 (uri (string-append
728 "mirror://debian/pool/main/libc/libcap2/libcap2_"
729 version ".orig.tar.gz"))
730 (sha256
731 (base32
732 "07vjhkznm82p8dm4w6j8mmg7h5c70lp5s9bwwfdmgwpbixfydjp1"))))
733 (build-system gnu-build-system)
734 (arguments '(#:phases (alist-delete 'configure %standard-phases)
735 #:tests? #f ; no 'check' target
736 #:make-flags (list "lib=lib"
737 (string-append "prefix="
738 (assoc-ref %outputs "out"))
739 "RAISE_SETFCAP=no")))
740 (native-inputs `(("perl" ,perl)))
741 (inputs `(("attr" ,attr)))
742 (home-page "https://sites.google.com/site/fullycapable/")
743 (synopsis "Library for working with POSIX capabilities")
744 (description
745 "libcap2 provides a programming interface to POSIX capabilities on
746Linux-based operating systems.")
747
748 ;; License is BSD-3 or GPLv2, at the user's choice.
749 (license gpl2)))
215b6431
LC
750
751(define-public bridge-utils
752 (package
753 (name "bridge-utils")
754 (version "1.5")
755 (source (origin
756 (method url-fetch)
757 (uri (string-append "mirror://sourceforge/bridge/bridge-utils-"
758 version ".tar.gz"))
759 (sha256
760 (base32
761 "12367cwqmi0yqphi6j8rkx97q8hw52yq2fx4k0xfclkcizxybya2"))))
762 (build-system gnu-build-system)
763
764 ;; The tarball lacks all the generated files.
765 (native-inputs `(("autoconf" ,autoconf)
766 ("automake" ,automake)))
767 (arguments
768 '(#:phases (alist-cons-before
769 'configure 'bootstrap
770 (lambda _
771 (zero? (system* "autoreconf" "-vf")))
772 %standard-phases)
773 #:tests? #f)) ; no 'check' target
774
775 (home-page
776 "http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge")
777 (synopsis "Manipulate Ethernet bridges")
778 (description
779 "Utilities for Linux's Ethernet bridging facilities. A bridge is a way
780to connect two Ethernet segments together in a protocol independent way.
781Packets are forwarded based on Ethernet address, rather than IP address (like
782a router). Since forwarding is done at Layer 2, all protocols can go
783transparently through a bridge.")
784 (license gpl2+)))
3cc20675
LC
785
786(define-public libnl
787 (package
788 (name "libnl")
789 (version "3.2.13")
790 (source (origin
791 (method url-fetch)
792 (uri (string-append
793 "http://www.infradead.org/~tgr/libnl/files/libnl-"
794 version ".tar.gz"))
795 (sha256
796 (base32
797 "1ydw42lsd572qwrfgws97n76hyvjdpanwrxm03lysnhfxkna1ssd"))))
798 (build-system gnu-build-system)
799 (native-inputs `(("flex" ,flex) ("bison" ,bison)))
800 (home-page "http://www.infradead.org/~tgr/libnl/")
801 (synopsis "NetLink protocol library suite")
802 (description
803 "The libnl suite is a collection of libraries providing APIs to netlink
804protocol based Linux kernel interfaces. Netlink is an IPC mechanism primarly
805between the kernel and user space processes. It was designed to be a more
806flexible successor to ioctl to provide mainly networking related kernel
807configuration and monitoring interfaces.")
808
809 ;; Most files are LGPLv2.1-only, but some are GPLv2-only (like
810 ;; 'nl-addr-add.c'), so the result is GPLv2-only.
811 (license gpl2)))
023fef7d
LC
812
813(define-public powertop
814 (package
815 (name "powertop")
816 (version "2.5")
817 (source
818 (origin
819 (method url-fetch)
820 (uri (string-append
821 "https://01.org/powertop/sites/default/files/downloads/powertop-"
822 version ".tar.gz"))
823 (sha256
824 (base32
825 "02rwqbpasdayl201v0549gbp2f82rd0hqiv3i111r7npanjhhb4b"))))
826 (build-system gnu-build-system)
827 (inputs
828 ;; TODO: Add pciutils.
829 `(("zlib" ,guix:zlib)
023fef7d
LC
830 ;; ("pciutils" ,pciutils)
831 ("ncurses" ,ncurses)
832 ("libnl" ,libnl)))
c4c4cc05
JD
833 (native-inputs
834 `(("pkg-config" ,pkg-config)))
023fef7d
LC
835 (home-page "https://01.org/powertop/")
836 (synopsis "Analyze power consumption on Intel-based laptops")
837 (description
838 "PowerTOP is a Linux tool to diagnose issues with power consumption and
839power management. In addition to being a diagnostic tool, PowerTOP also has
840an interactive mode where the user can experiment various power management
841settings for cases where the operating system has not enabled these
842settings.")
843 (license gpl2)))
6869e5c9
LC
844
845(define-public aumix
846 (package
847 (name "aumix")
848 (version "2.9.1")
849 (source (origin
850 (method url-fetch)
851 (uri (string-append
852 "http://www.jpj.net/~trevor/aumix/releases/aumix-"
853 version ".tar.bz2"))
854 (sha256
855 (base32
856 "0a8fwyxnc5qdxff8sl2sfsbnvgh6pkij4yafiln0fxgg6bal7knj"))))
857 (build-system gnu-build-system)
858 (inputs `(("ncurses" ,ncurses)))
859 (home-page "http://www.jpj.net/~trevor/aumix.html")
860 (synopsis "Audio mixer for X and the console")
861 (description
862 "Aumix adjusts an audio mixer from X, the console, a terminal,
863the command line or a script.")
864 (license gpl2+)))
7c0dbe78
SHT
865
866(define-public iotop
867 (package
868 (name "iotop")
869 (version "0.6")
870 (source
871 (origin
872 (method url-fetch)
873 (uri (string-append "http://guichaz.free.fr/iotop/files/iotop-"
874 version ".tar.gz"))
875 (sha256 (base32
876 "1kp8mqg2pbxq4xzpianypadfxcsyfgwcaqgqia6h9fsq6zyh4z0s"))))
877 (build-system python-build-system)
878 (arguments
35cebf01 879 ;; The setup.py script expects python-2.
7c0dbe78 880 `(#:python ,python-2
35cebf01 881 ;; There are currently no checks in the package.
7c0dbe78
SHT
882 #:tests? #f))
883 (native-inputs `(("python" ,python-2)))
884 (home-page "http://guichaz.free.fr/iotop/")
885 (synopsis
886 "Displays the IO activity of running processes")
887 (description
888 "Iotop is a Python program with a top like user interface to show the
889processes currently causing I/O.")
35cebf01 890 (license gpl2+)))
e30835e2
LC
891
892(define-public fuse
893 (package
894 (name "fuse")
895 (version "2.9.3")
896 (source (origin
897 (method url-fetch)
898 (uri (string-append "mirror://sourceforge/fuse/fuse-"
899 version ".tar.gz"))
900 (sha256
901 (base32
902 "071r6xjgssy8vwdn6m28qq1bqxsd2bphcd2mzhq0grf5ybm87sqb"))))
903 (build-system gnu-build-system)
b148bd71 904 (inputs `(("util-linux" ,util-linux)))
e30835e2
LC
905 (arguments
906 '(#:configure-flags (list (string-append "MOUNT_FUSE_PATH="
907 (assoc-ref %outputs "out")
908 "/sbin")
909 (string-append "INIT_D_PATH="
910 (assoc-ref %outputs "out")
911 "/etc/init.d")
912 (string-append "UDEV_RULES_PATH="
913 (assoc-ref %outputs "out")
b148bd71
LC
914 "/etc/udev"))
915 #:phases (alist-cons-before
916 'build 'set-file-names
917 (lambda* (#:key inputs #:allow-other-keys)
918 ;; libfuse calls out to mount(8) and umount(8). Make sure
919 ;; it refers to the right ones.
920 (substitute* '("lib/mount_util.c" "util/mount_util.c")
921 (("/bin/(u?)mount" _ maybe-u)
922 (string-append (assoc-ref inputs "util-linux")
923 "/bin/" maybe-u "mount")))
924 (substitute* '("util/mount.fuse.c")
925 (("/bin/sh")
926 (which "sh"))))
927 %standard-phases)))
e30835e2
LC
928 (home-page "http://fuse.sourceforge.net/")
929 (synopsis "Support file systems implemented in user space")
930 (description
931 "As a consequence of its monolithic design, file system code for Linux
932normally goes into the kernel itself---which is not only a robustness issue,
933but also an impediment to system extensibility. FUSE, for \"file systems in
934user space\", is a kernel module and user-space library that tries to address
935part of this problem by allowing users to run file system implementations as
936user-space processes.")
937 (license (list lgpl2.1 ; library
938 gpl2+)))) ; command-line utilities
220193ad
LC
939
940(define-public unionfs-fuse
941 (package
942 (name "unionfs-fuse")
943 (version "0.26")
944 (source (origin
945 (method url-fetch)
946 (uri (string-append
947 "http://podgorny.cz/unionfs-fuse/releases/unionfs-fuse-"
948 version ".tar.xz"))
949 (sha256
950 (base32
951 "0qpnr4czgc62vsfnmv933w62nq3xwcbnvqch72qakfgca75rsp4d"))))
952 (build-system cmake-build-system)
953 (inputs `(("fuse" ,fuse)))
954 (arguments '(#:tests? #f)) ; no tests
955 (home-page "http://podgorny.cz/moin/UnionFsFuse")
956 (synopsis "User-space union file system")
957 (description
958 "UnionFS-FUSE is a flexible union file system implementation in user
959space, using the FUSE library. Mounting a union file system allows you to
960\"aggregate\" the contents of several directories into a single mount point.
961UnionFS-FUSE additionally supports copy-on-write.")
962 (license bsd-3)))
ed748588
LC
963
964(define-public unionfs-fuse/static
965 (package (inherit unionfs-fuse)
966 (synopsis "User-space union file system (statically linked)")
967 (name (string-append (package-name unionfs-fuse) "-static"))
968 (source (origin (inherit (package-source unionfs-fuse))
969 (modules '((guix build utils)))
970 (snippet
971 ;; Add -ldl to the libraries, because libfuse.a needs that.
972 '(substitute* "src/CMakeLists.txt"
973 (("target_link_libraries(.*)\\)" _ libs)
974 (string-append "target_link_libraries"
975 libs " dl)"))))))
976 (arguments
977 '(#:tests? #f
978 #:configure-flags '("-DCMAKE_EXE_LINKER_FLAGS=-static")))))