gnu: shepherd: Remove guild warnings.
[jackhill/guix/guix.git] / gnu / packages / admin.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
139a9887 2;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
340c7033 3;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
dad963a4 4;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
ce9ea433 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2020 Eric Bavier <bavier@posteo.net>
d0457553 6;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
15926aec 7;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
8d801045 8;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
3728ed7c 9;;; Copyright © 2016, 2017, 2020 Leo Famulari <leo@famulari.name>
f1957fc1 10;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
d10fa5c7 11;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
ef126b97 12;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
1a0346f0 13;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
61402398 14;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
3c986a7d 15;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
da7fde00 16;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
1b5b24c9
BS
17;;; Copyright © 2016 John Darrington <jmd@gnu.org>
18;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
6e75ea48 19;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
58989684 20;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
f8cbe98e 21;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
ba8551ec 22;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
3ebf2c29 23;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
abde01f2 24;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
ce3fef9f 25;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
4b3ff362 26;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
a20ede32 27;;; Copyright © 2019,2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
e8134442 28;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
6eb1d20b 29;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
37760623 30;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
cd2ce8ab 31;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
ba0e1406 32;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
73656471 33;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
1a9b3faa 34;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
816bce68 35;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
913c8897 36;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
248af684 37;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
1df895b0 38;;;
233e7676 39;;; This file is part of GNU Guix.
1df895b0 40;;;
233e7676 41;;; GNU Guix is free software; you can redistribute it and/or modify it
1df895b0
LC
42;;; under the terms of the GNU General Public License as published by
43;;; the Free Software Foundation; either version 3 of the License, or (at
44;;; your option) any later version.
45;;;
233e7676 46;;; GNU Guix is distributed in the hope that it will be useful, but
1df895b0
LC
47;;; WITHOUT ANY WARRANTY; without even the implied warranty of
48;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
49;;; GNU General Public License for more details.
50;;;
51;;; You should have received a copy of the GNU General Public License
233e7676 52;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
1df895b0 53
4aeea896 54(define-module (gnu packages admin)
fbc1a58f 55 #:use-module (guix build-system cmake)
2b6164f0 56 #:use-module (guix build-system emacs)
ddb0fef5 57 #:use-module (guix build-system glib-or-gtk)
1df895b0 58 #:use-module (guix build-system gnu)
a94214f6 59 #:use-module (guix build-system go)
b19f3337 60 #:use-module (guix build-system meson)
d1ce1125 61 #:use-module (guix build-system perl)
4ecfbda7 62 #:use-module (guix build-system python)
2d2d5b29 63 #:use-module (guix build-system ruby)
c773aba8 64 #:use-module (guix build-system trivial)
1b36f758
TGR
65 #:use-module (guix download)
66 #:use-module (guix git-download)
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix packages)
69 #:use-module (guix utils)
59a43334 70 #:use-module (gnu packages)
67648704 71 #:use-module (gnu packages algebra)
ddb0fef5 72 #:use-module (gnu packages autogen)
1b36f758 73 #:use-module (gnu packages autotools)
c73d4c92 74 #:use-module (gnu packages base)
bbc94ed0 75 #:use-module (gnu packages bash)
1b36f758
TGR
76 #:use-module (gnu packages bison)
77 #:use-module (gnu packages boost)
cd2ce8ab 78 #:use-module (gnu packages c)
ac257f12 79 #:use-module (gnu packages check)
1b36f758
TGR
80 #:use-module (gnu packages compression)
81 #:use-module (gnu packages cross-base)
6eb1d20b 82 #:use-module (gnu packages crypto)
cd2ce8ab 83 #:use-module (gnu packages cryptsetup)
3d7a157c 84 #:use-module (gnu packages cyrus-sasl)
bbc94ed0 85 #:use-module (gnu packages dns)
1b36f758 86 #:use-module (gnu packages elf)
bbc94ed0 87 #:use-module (gnu packages file)
1b36f758 88 #:use-module (gnu packages flex)
ceb233bb 89 #:use-module (gnu packages gawk)
1b36f758
TGR
90 #:use-module (gnu packages gettext)
91 #:use-module (gnu packages gl)
92 #:use-module (gnu packages glib)
93 #:use-module (gnu packages gnome)
94 #:use-module (gnu packages gnupg)
a48cf78a 95 #:use-module (gnu packages golang)
1b36f758
TGR
96 #:use-module (gnu packages groff)
97 #:use-module (gnu packages gtk)
f15164e7 98 #:use-module (gnu packages guile)
c0a5cd1b 99 #:use-module (gnu packages hurd)
1b36f758 100 #:use-module (gnu packages image)
050e5756
MB
101 #:use-module (gnu packages imagemagick)
102 #:use-module (gnu packages inkscape)
1b36f758
TGR
103 #:use-module (gnu packages kerberos)
104 #:use-module (gnu packages libbsd)
105 #:use-module (gnu packages libftdi)
106 #:use-module (gnu packages libunwind)
107 #:use-module (gnu packages libusb)
108 #:use-module (gnu packages linux)
109 #:use-module (gnu packages lua)
72861d8e 110 #:use-module (gnu packages mail)
1b36f758
TGR
111 #:use-module (gnu packages man)
112 #:use-module (gnu packages mcrypt)
113 #:use-module (gnu packages mpi)
114 #:use-module (gnu packages ncurses)
115 #:use-module (gnu packages openldap)
116 #:use-module (gnu packages patchutils)
117 #:use-module (gnu packages pciutils)
d0457553 118 #:use-module (gnu packages pcre)
c73d4c92 119 #:use-module (gnu packages perl)
5ccde207 120 #:use-module (gnu packages perl-check)
87216303 121 #:use-module (gnu packages pkg-config)
b36fcf95 122 #:use-module (gnu packages popt)
1a0346f0 123 #:use-module (gnu packages python)
cc6f4912 124 #:use-module (gnu packages python-crypto)
1b2f753d 125 #:use-module (gnu packages python-web)
44d10b1f 126 #:use-module (gnu packages python-xyz)
050e5756 127 #:use-module (gnu packages qt)
1b36f758 128 #:use-module (gnu packages readline)
2d2d5b29 129 #:use-module (gnu packages ruby)
d8a046d5 130 #:use-module (gnu packages serialization)
9d0c291e 131 #:use-module (gnu packages sphinx)
1b36f758 132 #:use-module (gnu packages tcl)
2468ca04 133 #:use-module (gnu packages terminals)
fccf2fe0 134 #:use-module (gnu packages texinfo)
1b36f758
TGR
135 #:use-module (gnu packages tls)
136 #:use-module (gnu packages version-control)
137 #:use-module (gnu packages web)
d10fa5c7 138 #:use-module (gnu packages xdisorg)
3ebf2c29 139 #:use-module (gnu packages xml)
1b36f758 140 #:use-module (gnu packages xorg))
f15164e7 141
a632eeb8 142;; This package uses su instead of sudo (because of SpaceFM).
ddb0fef5
RG
143(define-public ktsuss
144 (package
145 (name "ktsuss")
146 (version "2.1")
147 (source
148 (origin
149 (method git-fetch)
150 (uri
151 (git-reference
b0e7b699 152 (url "https://github.com/nomius/ktsuss")
ddb0fef5
RG
153 (commit version)))
154 (sha256
155 (base32 "0q9931f9hp47v1n8scli4bdg2rkjpf5jf8v7jj2gdn83aia1r2hz"))
156 (file-name (git-file-name name version))))
157 (build-system glib-or-gtk-build-system)
158 (arguments
a632eeb8 159 `(#:phases
ddb0fef5 160 (modify-phases %standard-phases
c53886a5
RG
161 (add-after 'unpack 'patch-file-names
162 (lambda _
ddb0fef5 163 (substitute* "configure.ac"
c53886a5 164 (("supath=`which su 2>/dev/null`")
a632eeb8 165 "supath=/run/setuid-programs/su"))
ddb0fef5
RG
166 #t)))))
167 (native-inputs
168 `(("autoconf" ,autoconf)
ddb0fef5
RG
169 ("automake" ,automake)
170 ("libtool" ,libtool)
171 ("pkg-config" ,pkg-config)))
172 (inputs
173 `(("glib" ,glib)
c53886a5 174 ("gtk+" ,gtk+-2)))
ddb0fef5
RG
175 (synopsis "Graphical front end for @command{su}")
176 (description
177 "Ktsuss stands for ``Keep the @command{su} simple, stupid''.
178It is a graphical version of @command{su} written in C and GTK+ 2, with
179simplicity in mind.")
180 (home-page "https://github.com/nomius/ktsuss")
181 (license license:bsd-3)))
182
c1f73569
RW
183(define-public aide
184 (package
185 (name "aide")
c3f4505e 186 (version "0.16.2")
737300be
TGR
187 (source
188 (origin
189 (method url-fetch)
190 (uri (string-append "https://github.com/aide/aide/releases/download/v"
191 version "/aide-" version ".tar.gz"))
192 (sha256
c3f4505e 193 (base32 "15xp47sz7kk1ciffw3f5xw2jg2mb2lqrbr3q6p4bkbz5dap9iy8p"))))
c1f73569
RW
194 (build-system gnu-build-system)
195 (native-inputs
196 `(("bison" ,bison)
197 ("flex" ,flex)))
198 (inputs
199 `(("libgcrypt" ,libgcrypt)
200 ("libgpg-error" ,libgpg-error)
201 ("libmhash" ,libmhash)
7d9d521f 202 ("pcre:static" ,pcre "static")
b067ad3e 203 ("pcre" ,pcre)
7d9d521f 204 ("zlib:static" ,zlib "static")
c1f73569
RW
205 ("zlib" ,zlib)))
206 (synopsis "File and directory integrity checker")
207 (description
208 "AIDE (Advanced Intrusion Detection Environment) is a file and directory
209integrity checker. It creates a database from the regular expression rules
210that it finds from its configuration files. Once this database is initialized
211it can be used to verify the integrity of the files. It has several message
212digest algorithms that are used to check the integrity of files. All of the
213usual file attributes can be checked for inconsistencies.")
737300be 214 (home-page "https://aide.github.io/")
c1f73569
RW
215 (license license:gpl2+)))
216
4971d5d0
RJ
217(define-public progress
218 (package
219 (name "progress")
c90730ae 220 (version "0.15")
4b6456ce
TGR
221 (source
222 (origin
223 (method git-fetch)
224 (uri (git-reference
b0e7b699 225 (url "https://github.com/Xfennec/progress")
4b6456ce
TGR
226 (commit (string-append "v" version))))
227 (sha256
c90730ae 228 (base32 "1cnb4ixlhshn139mj5sr42k5m6gjjbyqvkn1324c47niwrgp7dqm"))
4b6456ce 229 (file-name (git-file-name name version))))
4971d5d0 230 (build-system gnu-build-system)
eec9c4a7
TGR
231 (native-inputs
232 `(("pkg-config" ,pkg-config)
233 ("which" ,which)))
4971d5d0
RJ
234 (inputs
235 `(("ncurses" ,ncurses)))
236 (arguments
4b6456ce 237 `(#:tests? #f ; no test suite
b97b8b44
TGR
238 #:make-flags
239 (let ((target ,(%current-target-system)))
240 (list ,(string-append "CC=" (cc-for-target))
241 (string-append "PKG_CONFIG="
242 (if target
243 (string-append target "-pkg-config")
244 "pkg-config"))
245 (string-append "PREFIX=" (assoc-ref %outputs "out"))))
4971d5d0
RJ
246 #:phases
247 (modify-phases %standard-phases
4b6456ce 248 (delete 'configure)))) ; no configure script
4971d5d0
RJ
249 (home-page "https://github.com/Xfennec/progress")
250 (synopsis "Program to view the progress of the coreutils commands")
251 (description "A program that looks for coreutils basic commands (cp, mv,
252dd, tar, gzip/gunzip, cat, etc.) currently running on your system and displays
253the percentage of copied data. It can also show estimated time and throughput,
254and provides a \"top-like\" mode (monitoring).")
255 (license license:gpl3+)))
256
e932d371 257(define-public shepherd
133056bd
LC
258 (package
259 (name "shepherd")
3f9c62d1 260 (version "0.8.1")
133056bd
LC
261 (source (origin
262 (method url-fetch)
9fb1ca08 263 (uri (string-append "mirror://gnu/shepherd/shepherd-"
133056bd
LC
264 version ".tar.gz"))
265 (sha256
266 (base32
3f9c62d1 267 "0x9zr0x3xvk4qkb6jnda451d5iyrl06cz1bjzjsm0lxvjj3fabyk"))))
133056bd
LC
268 (build-system gnu-build-system)
269 (arguments
55b4120f
EF
270 '(#:configure-flags '("--localstatedir=/var")
271 #:make-flags '("GUILE_AUTO_COMPILE=0")))
425ab478
LC
272 (native-inputs
273 `(("pkg-config" ,pkg-config)
274
275 ;; This is the Guile we use as a cross-compiler...
b6bee63b 276 ("guile" ,guile-3.0)))
425ab478
LC
277 (inputs
278 ;; ... and this is the one that appears in shebangs when cross-compiling.
b6bee63b 279 `(("guile" ,guile-3.0)
bfb06e58
LC
280
281 ;; The 'shepherd' command uses Readline when used interactively. It's
282 ;; an unusual use case though, so we don't propagate it.
283 ("guile-readline" ,guile-readline)))
133056bd
LC
284 (synopsis "System service manager")
285 (description
286 "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
287the execution of system services, replacing similar functionality found in
288typical init systems. It provides dependency-handling through a convenient
289interface and is based on GNU Guile.")
290 (license license:gpl3+)
9fb1ca08 291 (home-page "https://www.gnu.org/software/shepherd/")))
e932d371 292
b6bee63b 293(define-public guile2.2-shepherd
139a9887
LC
294 (package
295 (inherit shepherd)
b6bee63b 296 (name "guile2.2-shepherd")
139a9887
LC
297 (native-inputs
298 `(("pkg-config" ,pkg-config)
b6bee63b 299 ("guile" ,guile-2.2)))
139a9887 300 (inputs
b6bee63b
LC
301 `(("guile" ,guile-2.2)))))
302
303(define-public guile3.0-shepherd
304 (deprecated-package "guile3.0-shepherd" shepherd))
139a9887 305
76812463
LC
306(define-public guile2.0-shepherd
307 (package
308 (inherit shepherd)
309 (name "guile2.0-shepherd")
310 (native-inputs
311 `(("pkg-config" ,pkg-config)
312 ("guile" ,guile-2.0)))
313 (inputs
314 `(("guile" ,guile-2.0)))))
315
bf949323
CB
316(define-public cloud-utils
317 (package
318 (name "cloud-utils")
f00ccdcb 319 (version "0.32")
bf949323
CB
320 (source
321 (origin
322 (method url-fetch)
323 (uri (string-append
324 "https://launchpad.net/cloud-utils/trunk/"
325 version "/+download/cloud-utils-" version ".tar.gz"))
326 (sha256
327 (base32
f00ccdcb 328 "0xxdi55lzw7j91zfajw7jhd2ilsqj2dy04i9brlk8j3pvb5ma8hk"))))
bf949323
CB
329 (build-system gnu-build-system)
330 (arguments
331 '(#:make-flags
332 (let ((out (assoc-ref %outputs "out")))
333 (list (string-append "BINDIR=" out "/bin")
334 (string-append "MANDIR=" out "/share/man/man1")
335 (string-append "DOCDIR=" out "/share/doc")))
336 #:phases
337 (modify-phases %standard-phases
338 (delete 'configure)
339 (delete 'check)
340 (add-after 'install 'wrap
341 (lambda* (#:key outputs inputs #:allow-other-keys)
342 (let ((growpart (string-append (assoc-ref outputs "out")
343 "/bin/growpart")))
344 (wrap-program growpart
345 `("PATH" ":" prefix (,(dirname (which "sfdisk"))
346 ,(dirname (which "readlink"))))))
347 #t)))))
348 (inputs
349 `(("python" ,python)
350 ("util-linux" ,util-linux))) ; contains sfdisk for growpart
351 (home-page "https://launchpad.net/cloud-utils")
352 (synopsis "Set of utilities for cloud computing environments")
353 (description
354 "This package contains a set of utilities for cloud computing
355environments:
356
357@itemize @bullet
358@item @command{cloud-localds} Create a disk for cloud-init to utilize nocloud
359@item @command{cloud-publish-image} Wrapper for cloud image publishing
360@item @command{cloud-publish-tarball} Wrapper for publishing cloud tarballs
361@item @command{cloud-publish-ubuntu} Import a Ubuntu cloud image
362@item @command{ec2metadata} Query and display @acronym{EC2,Amazon Elastic
363 Compute Cloud} metadata
364@item @command{growpart} Grow a partition to fill the device
365@item @command{mount-image-callback} Mount a file and run a command
366@item @command{resize-part-image} Resize a partition image to a new size
367@item @command{ubuntu-cloudimg-query} Get the latest Ubuntu
368 @acronym{AMI,Amazon Machine Image}
369@item @command{ubuntu-ec2-run} Run a @acronym{EC2,Amazon Elastic Compute
370 Cloud} instance using Ubuntu
371@item @command{vcs-run} Obtain a repository, and run a command
372@item @command{write-mime-multipart} Handle multipart
373 @acronym{MIME,Multipurpose Internet Mail Extensions} messages
374@end itemize")
375 (license license:gpl3)))
376
db341bfa
CB
377(define-public daemontools
378 (package
379 (name "daemontools")
380 (version "0.76")
381 (source (origin
382 (method url-fetch)
383 (uri (string-append
213114a7
TGR
384 "https://cr.yp.to/daemontools/"
385 "daemontools-" version ".tar.gz"))
db341bfa
CB
386 (sha256
387 (base32
388 "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5"))))
389 (build-system gnu-build-system)
390 (arguments
391 `(#:tests? #f ;; No tests as far as I can tell.
392 #:phases
393 (modify-phases %standard-phases
394 (add-after 'unpack 'chdir
395 (lambda _
213114a7 396 (chdir ,(string-append "daemontools-" version))
cb8ba848 397 #t))
db341bfa
CB
398 (delete 'configure)
399 (add-before 'build 'patch
400 (lambda _
401 (substitute* "src/error.h"
402 (("extern int errno;")
cb8ba848
MW
403 "#include <errno.h>"))
404 #t))
db341bfa
CB
405 (replace 'build
406 (lambda _
407 (invoke "package/compile")))
408 (replace 'install
409 (lambda* (#:key outputs #:allow-other-keys)
410 (let* ((out (assoc-ref outputs "out"))
411 (bin (string-append out "/bin")))
412 (for-each (lambda (file)
413 (install-file file bin))
cb8ba848
MW
414 (find-files "command")))
415 #t)))))
db341bfa
CB
416 (synopsis "Tools for managing UNIX style services")
417 (description
418 "@code{daemontools} is a collection of tools for managing UNIX
419services.")
420 (license license:public-domain)
421 (home-page "https://cr.yp.to/daemontools.html")))
422
fbc1a58f
CR
423(define-public dfc
424 (package
425 (name "dfc")
48167ccd 426 (version "3.1.1")
fbc1a58f
CR
427 (source
428 (origin
429 (method url-fetch)
430 (uri (string-append
eeb8b0e6 431 "https://projects.gw-computing.net/attachments/download/615/dfc-"
fbc1a58f
CR
432 version ".tar.gz"))
433 (sha256
434 (base32
48167ccd 435 "0m1fd7l85ckb7bq4c5c3g257bkjglm8gq7x42pkmpp87fkknc94n"))))
fbc1a58f
CR
436 (build-system cmake-build-system)
437 (arguments '(#:tests? #f)) ; There are no tests.
b94a6ca0 438 (native-inputs `(("gettext" ,gettext-minimal)))
eeb8b0e6 439 (home-page "https://projects.gw-computing.net/projects/dfc")
fbc1a58f
CR
440 (synopsis "Display file system space usage using graphs and colors")
441 (description
442 "dfc (df color) is a modern version of df. It uses colors, draws pretty
443graphs and can export its output to different formats.")
f61e0e79 444 (license license:bsd-3)))
fbc1a58f 445
2d2d5b29
MB
446(define-public facter
447 (package
448 (name "facter")
a3e549b5 449 (version "4.0.49")
2d2d5b29
MB
450 (source (origin
451 (method git-fetch)
452 (uri (git-reference
44d66cf7 453 (url "https://github.com/puppetlabs/facter")
2d2d5b29
MB
454 (commit version)))
455 (file-name (git-file-name name version))
456 (sha256
457 (base32
a3e549b5 458 "0l7gic5ql5xiy5s6rb0j9ydyaal5bcxl10bx45khcgdr9zg16pb1"))))
2d2d5b29
MB
459 (build-system ruby-build-system)
460 (arguments
c43c4d8b
TGR
461 `(#:phases
462 (modify-phases %standard-phases
463 (add-after 'unpack 'delete-facter-ng-gemspec
464 (lambda _
465 ;; XXX: ruby-build-system incorrectly finds
466 ;; facter-ng.gemspec from this directory and tries to
467 ;; build that instead of the proper facter.gemspec.
468 ;; Just delete it as a workaround, as it appears to
469 ;; only exist for backwards-compatibility after the
470 ;; facter-ng->facter rename.
471 (delete-file "agent/facter-ng.gemspec")
472 #t))
473 (add-after 'unpack 'embed-absolute-references
474 ;; Refer to absolute executable file names to avoid propagation.
475 (lambda* (#:key inputs #:allow-other-keys)
44d66cf7 476 (substitute* (find-files "lib/facter/resolvers" "\\.rb$")
c43c4d8b
TGR
477 (("execute\\('(which |)([^ ']+)" _ _ name)
478 (string-append "execute('" (or (which name)
479 name))))
480 #t))
481 (delete 'check)
482 (add-after 'wrap 'check
483 (lambda* (#:key tests? outputs #:allow-other-keys)
484 ;; XXX: The test suite wants to run Bundler and
485 ;; complains that the gemspec is invalid. For now
486 ;; just make sure that we can run the wrapped
487 ;; executable directly.
488 (if tests?
489 (invoke (string-append (assoc-ref outputs "out")
490 "/bin/facter")
491 ;; Many facts depend on /sys, /etc/os-release,
492 ;; etc, so we only run a small sample.
493 "facterversion" "architecture"
494 "kernel" "kernelversion")
495 (format #t "tests disabled~%"))
496 #t)))))
2d2d5b29 497 (inputs
c43c4d8b 498 `(("ruby-hocon" ,ruby-hocon)
2d2d5b29 499 ("ruby-sys-filesystem" ,ruby-sys-filesystem)
c43c4d8b
TGR
500 ("ruby-thor" ,ruby-thor)
501
502 ;; For ‘embed-absolute-references’.
503 ("dmidecode" ,dmidecode)
504 ("inetutils" ,inetutils) ; for ‘hostname’
505 ("iproute" ,iproute)
506 ("pciutils" ,pciutils)
507 ("util-linux" ,util-linux)))
2d2d5b29
MB
508 (synopsis "Collect and display system facts")
509 (description
510 "Facter is a tool that gathers basic facts about nodes (systems) such
511as hardware details, network settings, OS type and version, and more. These
512facts can be collected on the command line with the @command{facter} command
513or via the @code{facter} Ruby library.")
514 (home-page "https://github.com/puppetlabs/facter-ng")
515 (license license:expat)))
516
340c7033
CR
517(define-public htop
518 (package
611ee0c9 519 (name "htop")
7ece89fa 520 (version "3.0.5")
9925a234
TGR
521 (source
522 (origin
523 (method git-fetch)
524 (uri (git-reference
525 (url "https://github.com/htop-dev/htop")
526 (commit version)))
527 (sha256
7ece89fa 528 (base32 "10lp6cbfvigzp6pq5nwj3s3l4vs7cv92krz2r08nwrz8vl6rqdzp"))
9925a234 529 (file-name (git-file-name name version))))
611ee0c9
MB
530 (build-system gnu-build-system)
531 (inputs
532 `(("ncurses" ,ncurses)))
533 (native-inputs
9925a234 534 `(("autoconf" ,autoconf)
6493d0ee 535 ("automake" ,automake)))
9925a234 536 (home-page "https://htop.dev")
611ee0c9
MB
537 (synopsis "Interactive process viewer")
538 (description
539 "This is htop, an interactive process viewer. It is a text-mode
340c7033 540application (for console or X terminals) and requires ncurses.")
611ee0c9 541 (license license:gpl2)))
340c7033 542
6bbd0fd2
MR
543(define-public bashtop
544 (package
545 (name "bashtop")
546 (version "0.9.25")
547 (source (origin
548 (method git-fetch)
549 (uri (git-reference
550 (url "https://github.com/aristocratos/bashtop")
551 (commit (string-append "v" version))))
552 (file-name (git-file-name name version))
553 (sha256
554 (base32
555 "07nlr6vmyb7yihaxj1fp424lmhwkdjl6mls92v90f6gsvikpa13v"))))
556 (build-system gnu-build-system)
557 (arguments
558 '(#:make-flags (list (string-append "PREFIX=" %output))
559 #:tests? #f ; bats test fails with loading load.bash
560 #:phases (modify-phases %standard-phases (delete 'configure))))
561 (home-page "https://github.com/aristocratos/bashtop")
562 (synopsis "Linux/OSX/FreeBSD resource monitor")
563 (description "Resource monitor that shows usage and stats for processor,
564memory, disks, network and processes.")
565 (license license:asl2.0)))
566
1df895b0
LC
567(define-public pies
568 (package
569 (name "pies")
f6afc63d 570 (version "1.5")
1df895b0
LC
571 (source
572 (origin
a9764b7d
LC
573 (method url-fetch)
574 (uri (string-append "mirror://gnu/pies/pies-"
575 version ".tar.bz2"))
576 (sha256
577 (base32
f6afc63d 578 "11j168qljsinaj5dwmg7nkm2z1aghi6gc3d0wf0pikflnh2q2wqf"))))
1df895b0 579 (build-system gnu-build-system)
a9764b7d
LC
580 (arguments
581 '(#:phases (modify-phases %standard-phases
582 (add-before 'build 'patch-/bin/sh
583 (lambda* (#:key inputs #:allow-other-keys)
584 ;; Use the right shell when executing user-provided
585 ;; shell commands.
586 (let ((bash (assoc-ref inputs "bash")))
3fb666bd 587 (substitute* '("src/progman.c" "src/comp.c")
a9764b7d
LC
588 (("\"/bin/sh\"")
589 (string-append "\"" bash "/bin/sh\"")))
590 #t))))))
56cb6f1d 591 (home-page "https://www.gnu.org.ua/software/pies/")
f50d2669 592 (synopsis "Program invocation and execution supervisor")
1df895b0 593 (description
79c311b8 594 "GNU pies is a program that supervises the invocation and execution of
a22dc0c4
LC
595other programs. It reads the list of programs to be started from its
596configuration file, executes them, and then monitors their status,
597re-executing them as necessary.")
f61e0e79 598 (license license:gpl3+)))
1df895b0
LC
599
600(define-public inetutils
601 (package
602 (name "inetutils")
8b1c8e4e 603 (version "1.9.4")
01eafd38
LC
604 (source (origin
605 (method url-fetch)
606 (uri (string-append "mirror://gnu/inetutils/inetutils-"
607 version ".tar.gz"))
3d3ca76f 608 (patches (search-patches "inetutils-hurd.patch"))
01eafd38
LC
609 (sha256
610 (base32
8b1c8e4e 611 "05n65k4ixl85dc6rxc51b1b732gnmm8xnqi424dy9f1nz7ppb3xy"))))
1df895b0 612 (build-system gnu-build-system)
483188b7 613 (arguments
e4015e57
LC
614 `(#:configure-flags '("--localstatedir=/var"
615
616 ;; Make sure 'PATH_PROCNET_DEV' gets defined when
617 ;; cross-compiling (by default it does not.)
618 ,@(if (%current-target-system)
619 '("--with-path-procnet-dev=/proc/net/dev")
3d3ca76f
JN
620 '())
621 ,@(if (hurd-target?)
622 '("--disable-rcp"
623 "--disable-rexec"
624 "--disable-rexecd"
625 "--disable-rlogin"
626 "--disable-rlogind"
627 "--disable-rsh"
628 "--disable-rshd"
629 "--disable-uucpd"
630 "--disable-whois")
e4015e57 631 '()))
ed6a21b4
MB
632 ;; On some systems, 'libls.sh' may fail with an error such as:
633 ;; "Failed to tell switch -a apart from -A".
634 #:parallel-tests? #f))
3dd31008 635 (inputs `(("ncurses" ,ncurses)
6f5d28f9 636 ("readline" ,readline))) ;for 'ftp'
3d3ca76f
JN
637 (native-inputs (if (member (%current-system)
638 (package-supported-systems net-tools))
639 `(("netstat" ,net-tools)) ;for tests
640 '()))
6fd52309 641 (home-page "https://www.gnu.org/software/inetutils/")
f50d2669 642 (synopsis "Basic networking utilities")
1df895b0 643 (description
a22dc0c4 644 "Inetutils is a collection of common network programs, such as an ftp
e048de60
LF
645client and server, a telnet client and server, an rsh client and server, and
646hostname.")
f61e0e79 647 (license license:gpl3+)))
9a9e72d5
LC
648
649(define-public shadow
650 (package
651 (name "shadow")
1c78a291 652 (version "4.8.1")
9a9e72d5 653 (source (origin
ca2a55d4
SB
654 (method url-fetch)
655 (uri (string-append
4153ef23 656 "https://github.com/shadow-maint/shadow/releases/"
657 "download/" version "/shadow-" version ".tar.xz"))
7f31bd25 658 (patches (search-patches "shadow-hurd-pctrl.patch"))
ca2a55d4
SB
659 (sha256
660 (base32
1c78a291 661 "0qmfq50sdhz6xilgxvinblll8j2iqfl7hwk45bq744y4plq4dbd3"))))
9a9e72d5
LC
662 (build-system gnu-build-system)
663 (arguments
ce6223e6 664 `(;; Assume System V `setpgrp (void)', which is the default on GNU
9a9e72d5 665 ;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
52701a3d 666 #:configure-flags
667 '("--with-libpam" "ac_cv_func_setpgrp_void=yes")
9a9e72d5 668
52701a3d 669 #:phases
670 (modify-phases %standard-phases
671 (add-before 'build 'set-nscd-file-name
672 (lambda* (#:key inputs #:allow-other-keys)
673 ;; Use the right file name for nscd.
ce6223e6
LC
674 (let ((libc (assoc-ref inputs
675 ,(if (%current-target-system)
676 "cross-libc"
677 "libc"))))
52701a3d 678 (substitute* "lib/nscd.c"
679 (("/usr/sbin/nscd")
acfa777e
MW
680 (string-append libc "/sbin/nscd")))
681 #t)))
52701a3d 682 (add-after 'install 'remove-groups
683 (lambda* (#:key outputs #:allow-other-keys)
684 ;; Remove `groups', which is already provided by Coreutils.
685 (let* ((out (assoc-ref outputs "out"))
686 (bin (string-append out "/bin"))
687 (man (string-append out "/share/man")))
688 (delete-file (string-append bin "/groups"))
689 (for-each delete-file (find-files man "^groups\\."))
690 #t))))))
9a9e72d5 691
1a9b3faa 692 (inputs `(("linux-pam" ,linux-pam)))
1f6dd7e9 693 (home-page "https://github.com/shadow-maint/shadow")
9a9e72d5
LC
694 (synopsis "Authentication-related tools such as passwd, su, and login")
695 (description
696 "Shadow provides a number of authentication-related tools, including:
697login, passwd, su, groupadd, and useradd.")
698
699 ;; The `vipw' program is GPLv2+.
700 ;; libmisc/salt.c is public domain.
f61e0e79 701 (license license:bsd-3)))
1e151896
LC
702
703(define-public mingetty
704 (package
705 (name "mingetty")
706 (version "1.08")
707 (source (origin
708 (method url-fetch)
de67e922
LF
709 (uri (string-append "mirror://sourceforge/mingetty/mingetty/"
710 version "/mingetty-" version ".tar.gz"))
1e151896
LC
711 (sha256
712 (base32
713 "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
714 (build-system gnu-build-system)
715 (arguments
dc1d3cde
KK
716 `(#:phases
717 (modify-phases %standard-phases
718 (replace 'configure
ba0e1406 719 (lambda* (#:key inputs outputs target #:allow-other-keys)
dc1d3cde
KK
720 (let* ((out (assoc-ref outputs "out"))
721 (man8 (string-append out "/share/man/man8"))
722 (sbin (string-append out "/sbin"))
723 (shadow (assoc-ref inputs "shadow"))
724 (login (string-append shadow "/bin/login")))
725 (substitute* "Makefile"
ba0e1406
MO
726 ,@(if (%current-target-system)
727 '((("CC=.*$")
728 (string-append "CC=" target "-gcc\n")))
729 '())
dc1d3cde
KK
730 (("^SBINDIR.*")
731 (string-append "SBINDIR = " out
732 "/sbin\n"))
733 (("^MANDIR.*")
734 (string-append "MANDIR = " out
735 "/share/man/man8\n")))
736
737 ;; Pick the right 'login' by default.
738 (substitute* "mingetty.c"
739 (("\"/bin/login\"")
740 (string-append "\"" login "\"")))
741
742 (mkdir-p sbin)
743 (mkdir-p man8))
744 #t)))
1e151896
LC
745 #:tests? #f)) ; no tests
746 (inputs `(("shadow" ,shadow)))
747
3b3b60d0 748 (home-page "https://sourceforge.net/projects/mingetty")
1e151896
LC
749 (synopsis "Getty for the text console")
750 (description
751 "Small console getty that is started on the Linux text console,
36a4366d
EF
752asks for a login name and then transfers over to @code{login}. It is extended
753to allow automatic login and starting any app.")
f61e0e79 754 (license license:gpl2+)))
c773aba8
LC
755
756(define-public net-base
757 (package
758 (name "net-base")
db719df7 759 (version "5.3")
c773aba8
LC
760 (source (origin
761 (method url-fetch)
762 (uri (string-append
34af3684 763 "mirror://debian/pool/main/n/netbase/netbase_"
db719df7 764 version ".tar.xz"))
c773aba8
LC
765 (sha256
766 (base32
db719df7 767 "12xqjwg3p4rzmmh2iib6sigm9l29y3dgk74mmnw64k84jnbwdxl1"))))
c773aba8
LC
768 (build-system trivial-build-system)
769 (arguments
770 `(#:modules ((guix build utils))
771 #:builder (begin
772 (use-modules (guix build utils)
773 (srfi srfi-26))
774
775 (let* ((source (assoc-ref %build-inputs "source"))
776 (tar (assoc-ref %build-inputs "tar"))
db719df7 777 (xz (assoc-ref %build-inputs "xz"))
c773aba8
LC
778 (output (assoc-ref %outputs "out"))
779 (etc (string-append output "/etc")))
db719df7 780 (setenv "PATH" (string-append xz "/bin"))
e3cfef22
MW
781 (invoke (string-append tar "/bin/tar") "xvf"
782 source)
c773aba8
LC
783 (chdir ,(string-append "netbase-" version))
784 (mkdir-p etc)
785 (for-each copy-file
786 '("etc-services" "etc-protocols" "etc-rpc")
787 (map (cut string-append etc "/" <>)
788 '("services" "protocols" "rpc")))
789 #t))))
790 (native-inputs `(("tar" ,tar)
f61e0e79 791 ("xz" ,xz)))
c773aba8
LC
792 (synopsis "IANA protocol, port, and RPC number assignments")
793 (description
794 "This package provides the /etc/services, /etc/protocols, and /etc/rpc
795files, which contain information about the IANA-assigned port, protocol, and
e881752c 796ONC RPC numbers.")
eeb8b0e6 797 (home-page "https://packages.debian.org/sid/netbase")
f61e0e79 798 (license license:gpl2)))
94c4a58a
LC
799
800(define-public netcat
801 (package
802 (name "netcat")
803 (version "0.7.1")
804 (source (origin
805 (method url-fetch)
de67e922
LF
806 (uri (string-append "mirror://sourceforge/netcat/netcat/" version
807 "/netcat-" version ".tar.bz2"))
94c4a58a
LC
808 (sha256
809 (base32
810 "1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm"))))
811 (build-system gnu-build-system)
0e4e89c2
MW
812 (arguments
813 `(#:configure-flags
814 ;; By default, man and info pages are put in PREFIX/{man,info},
815 ;; but we want them in PREFIX/share/{man,info}.
816 (let ((out (assoc-ref %outputs "out")))
817 (list (string-append "--mandir=" out "/share/man")
818 (string-append "--infodir=" out "/share/info")))))
94c4a58a
LC
819 (home-page "http://netcat.sourceforge.net")
820 (synopsis "Read and write data over TCP/IP")
821 (description
822 "Netcat is a featured networking utility which reads and writes data
823across network connections, using the TCP/IP protocol. It is designed to be a
824reliable \"back-end\" tool that can be used directly or easily driven by other
35b9e423 825programs and scripts. At the same time, it is a feature-rich network debugging
94c4a58a
LC
826and exploration tool, since it can create almost any kind of connection you
827would need and has several interesting built-in capabilities.")
f61e0e79 828 (license license:gpl2+)))
d038cac1 829
37760623
AG
830(define-public netcat-openbsd
831 (package
832 (name "netcat-openbsd")
05c29040 833 (version "1.217-2")
37760623
AG
834 (source (origin
835 (method git-fetch)
836 (uri (git-reference
837 (url "https://salsa.debian.org/debian/netcat-openbsd.git")
838 (commit (string-append "debian/" version))))
839 (file-name (git-file-name name version))
840 (sha256
841 (base32
05c29040 842 "19sr52ix14w344pv13ppb0c1wyg5dxhic1fw2q0s3qfmx57b9hhp"))))
37760623
AG
843 (build-system gnu-build-system)
844 (arguments
ae58ebba 845 `(#:tests? #f ; no test suite
37760623 846 #:make-flags
aea2a0f9 847 (list (string-append "CC=" ,(cc-for-target)))
37760623
AG
848 #:phases
849 (modify-phases %standard-phases
850 (delete 'configure)
851 (add-before 'build 'patch
852 (lambda _
853 (setenv "QUILT_PATCHES" "debian/patches")
854 (invoke "quilt" "push" "-a")
855 #t))
856 (replace 'install
857 (lambda* (#:key outputs #:allow-other-keys)
858 (let* ((out (assoc-ref outputs "out"))
859 (bin (string-append out "/bin"))
860 (man (string-append out "/share/man/man1"))
861 (doc (string-append out "/share/doc/netcat-openbsd-" ,version))
862 (examples (string-append doc "/examples")))
863 (install-file "nc" bin)
864 (install-file "nc.1" man)
865 (install-file "debian/copyright" doc)
866 (copy-recursively "debian/examples" examples)
867 #t))))))
868 (inputs `(("libbsd" ,libbsd)))
869 (native-inputs `(("pkg-config" ,pkg-config)
870 ("quilt" ,quilt)))
871 (home-page "https://packages.debian.org/sid/netcat-openbsd")
872 (synopsis "Read and write data over TCP/IP")
873 (description
874 "Netcat is a simple Unix utility which reads and writes data across
875network connections using TCP or UDP protocol. It is designed to be a reliable
876\"back-end\" tool that can be used directly or easily driven by other programs
877and scripts. At the same time it is a feature-rich network debugging and
878exploration tool, since it can create almost any kind of connection you would
879need and has several interesting built-in capabilities.
880
881This package contains the OpenBSD rewrite of netcat, including support for
882IPv6, proxies, and Unix sockets.")
883 (license (list license:bsd-3
884 license:bsd-2)))) ; atomicio.*, socks.c
885
8d0edc82
OP
886(define-public sipcalc
887 (package
888 (name "sipcalc")
889 (version "1.1.6")
890 (source
891 (origin
892 (method url-fetch)
893 (uri (string-append "http://www.routemeister.net/projects"
894 "/sipcalc/files/sipcalc" "-" version ".tar.gz"))
895 (sha256
896 (base32
897 "0mv3wndj4z2bsshh2k8d5sy3j8wxzgf8mzmmkvj1k8gpcz37dm6g"))))
898 (build-system gnu-build-system)
720aa977 899 (home-page "https://www.routemeister.net/projects/sipcalc/")
8d0edc82
OP
900 (synopsis "Command-line IP subnet calculator")
901 (description
902 "Sipcalc is an advanced command-line IP subnet calculator. It can take
903multiple forms of input (IPv4/IPv6/interface/hostname) and output a multitude
904of information about a given subnet.
905
906Features include:
907
908@itemize @bullet
909@item IPv4
910@itemize
911@item Retrieving of address information from interfaces.
912@item Classfull and CIDR output.
913@item Multiple address and netmask input and output formats (dotted quad, hex,
914number of bits).
915@item Output of broadcast address, network class, Cisco wildcard,
916hosts/range, network range.
917@item The ability to split a network based on a smaller netmask, now also with
918recursive runs on the generated subnets. (also IPv6)
919@end itemize
920@item IPv6
921@itemize
922@item Compressed and expanded input and output addresses.
923@item Standard IPv6 network output.
924@item v4 in v6 output.
925@item Reverse DNS address generation.
926@end itemize
927@end itemize\n")
928 (license license:bsd-3)))
929
d038cac1
LC
930(define-public alive
931 (package
932 (name "alive")
ef126b97 933 (version "2.0.3")
d038cac1
LC
934 (source (origin
935 (method url-fetch)
936 (uri (string-append "mirror://gnu/alive/alive-"
937 version ".tar.xz"))
938 (sha256
939 (base32
ef126b97 940 "053hfp7s66lnilm1ii4jrjmy44wpa2cwwh6f0sl8cyz0mm813x4b"))))
d038cac1
LC
941 (build-system gnu-build-system)
942 (arguments '(#:configure-flags '("alive_cv_nice_ping=yes")))
943 (inputs `(("guile" ,guile-2.0)
944 ("inetutils" ,inetutils)))
6fd52309 945 (home-page "https://www.gnu.org/software/alive/")
d038cac1
LC
946 (synopsis "Autologin and keep-alive daemon")
947 (description
948 "GNU Alive sends periodic pings to a server, generally to keep a
949connection alive.")
f61e0e79 950 (license license:gpl3+)))
c73d4c92
LC
951
952(define-public isc-dhcp
6548b1e1 953 (let* ((bind-major-version "9")
4e2432d1 954 (bind-minor-version "11")
dad963a4 955 (bind-patch-version "22")
f7780fdf
MW
956 (bind-release-type "") ; for patch release, use "-P"
957 (bind-release-version "") ; for patch release, e.g. "6"
6548b1e1
MW
958 (bind-version (string-append bind-major-version
959 "."
960 bind-minor-version
961 "."
962 bind-patch-version
963 bind-release-type
964 bind-release-version)))
965 (package
966 (name "isc-dhcp")
4bcc3908 967 (version "4.4.2")
6548b1e1
MW
968 (source (origin
969 (method url-fetch)
8198b3db 970 (uri (string-append "https://ftp.isc.org/isc/dhcp/"
6548b1e1
MW
971 version "/dhcp-" version ".tar.gz"))
972 (sha256
973 (base32
4bcc3908 974 "08a5003zdxgl41b29zjkxa92h2i40zyjgxg0npvnhpkfl5jcsz0s"))))
6548b1e1
MW
975 (build-system gnu-build-system)
976 (arguments
e54465ff 977 `(#:parallel-build? #f
445013b6 978 #:configure-flags '("--with-randomdev=/dev/random")
e54465ff 979 #:phases
6548b1e1
MW
980 (modify-phases %standard-phases
981 (add-after 'unpack 'replace-bundled-bind
f7780fdf 982 (lambda* (#:key inputs native-inputs #:allow-other-keys)
6548b1e1
MW
983 (delete-file "bind/bind.tar.gz")
984 (copy-file (assoc-ref inputs "bind-source-tarball")
985 "bind/bind.tar.gz")
986 (chmod "bind/bind.tar.gz" #o644)
987 (substitute* "bind/version.tmp"
988 (("^MAJORVER=.*")
989 (format #f "MAJORVER=~a\n" ,bind-major-version))
990 (("^MINORVER=.*")
991 (format #f "MINORVER=~a\n" ,bind-minor-version))
992 (("^PATCHVER=.*")
993 (format #f "PATCHVER=~a\n" ,bind-patch-version))
994 (("^RELEASETYPE=.*")
995 (format #f "RELEASETYPE=~a\n" ,bind-release-type))
996 (("^RELEASEVER=.*")
997 (format #f "RELEASEVER=~a\n" ,bind-release-version)))
998 #t))
f8cbe98e
MB
999 ,@(if (%current-target-system)
1000 '((add-before 'configure 'fix-bind-cross-compilation
1001 (lambda _
1002 (substitute* "configure"
1003 (("--host=\\$host")
1004 "--host=$host_alias"))
1005 ;; BIND needs a native compiler because the DHCP
1006 ;; build system uses the built 'gen' executable.
1007 (setenv "BUILD_CC" "gcc")
1008 #t)))
1009 '())
6548b1e1
MW
1010 (add-after 'configure 'post-configure
1011 (lambda* (#:key outputs #:allow-other-keys)
1012 ;; Point to the right client script, which will be
1013 ;; installed in a later phase.
1014 (substitute* "includes/dhcpd.h"
1015 (("#define[[:blank:]]+_PATH_DHCLIENT_SCRIPT.*")
1016 (let ((out (assoc-ref outputs "out")))
1017 (string-append "#define _PATH_DHCLIENT_SCRIPT \""
1018 out "/libexec/dhclient-script"
1019 "\"\n"))))
c73d4c92 1020
6548b1e1
MW
1021 ;; During the 'build' phase, 'bind.tar.gz' is extracted, so
1022 ;; we must patch shebangs in there and make sure the right
1023 ;; shell is used.
1024 (with-directory-excursion "bind"
1025 (substitute* "Makefile"
f7780fdf 1026 (("\\./configure ")
6548b1e1
MW
1027 (let ((sh (which "sh")))
1028 (string-append "./configure CONFIG_SHELL="
f7780fdf 1029 sh " SHELL=" sh " "))))
c73d4c92 1030
6548b1e1 1031 (let ((bind-directory (string-append "bind-" ,bind-version)))
d6acc9f8 1032 (invoke "tar" "xf" "bind.tar.gz")
6548b1e1
MW
1033 (for-each patch-shebang
1034 (find-files bind-directory ".*"))
f7780fdf
MW
1035 (substitute* (string-append bind-directory "/configure")
1036 (("/usr/bin/file")
1037 (which "file")))
d6acc9f8
MW
1038 (invoke "tar" "cf" "bind.tar.gz"
1039 bind-directory
1040 ;; avoid non-determinism in the archive
1041 "--sort=name"
1042 "--mtime=@0"
1043 "--owner=root:0"
1044 "--group=root:0")))))
6548b1e1
MW
1045 (add-after 'install 'post-install
1046 (lambda* (#:key inputs outputs #:allow-other-keys)
1047 ;; Install the dhclient script for GNU/Linux and make sure
1048 ;; if finds all the programs it needs.
1049 (let* ((out (assoc-ref outputs "out"))
1050 (libexec (string-append out "/libexec"))
17f168fc 1051 (coreutils (assoc-ref inputs "coreutils*"))
6548b1e1
MW
1052 (inetutils (assoc-ref inputs "inetutils"))
1053 (net-tools (assoc-ref inputs "net-tools"))
17f168fc 1054 (sed (assoc-ref inputs "sed*")))
6548b1e1
MW
1055 (substitute* "client/scripts/linux"
1056 (("/sbin/ip")
1057 (string-append (assoc-ref inputs "iproute")
1058 "/sbin/ip")))
c73d4c92 1059
6548b1e1
MW
1060 (mkdir-p libexec)
1061 (copy-file "client/scripts/linux"
1062 (string-append libexec "/dhclient-script"))
c73d4c92 1063
6548b1e1
MW
1064 (wrap-program
1065 (string-append libexec "/dhclient-script")
1066 `("PATH" ":" prefix
1067 ,(map (lambda (dir)
1068 (string-append dir "/bin:"
1069 dir "/sbin"))
d6acc9f8
MW
1070 (list inetutils net-tools coreutils sed))))
1071 #t))))))
c73d4c92 1072
f7780fdf
MW
1073 (native-inputs
1074 `(("perl" ,perl)
4bcc3908 1075 ("file" ,file)))
c73d4c92 1076
6548b1e1 1077 (inputs `(("inetutils" ,inetutils)
9ec263b4
JN
1078 ,@(if (hurd-target?) '()
1079 `(("net-tools" ,net-tools)
1080 ("iproute" ,iproute)))
dc343935 1081
4bcc3908
TGR
1082 ;; isc-dhcp bundles a copy of BIND, which has proved vulnerable
1083 ;; in the past. Use a BIND-VERSION of our choosing instead.
6548b1e1
MW
1084 ("bind-source-tarball"
1085 ,(origin
1086 (method url-fetch)
8198b3db 1087 (uri (string-append "https://ftp.isc.org/isc/bind9/"
6548b1e1
MW
1088 bind-version
1089 "/bind-" bind-version ".tar.gz"))
1090 (sha256
1091 (base32
dad963a4 1092 "1j9a4r83a77mp8k1y8z524c9rzdqgd8rzwczd6zwmw86a00xiimg"))))
c73d4c92 1093
17f168fc
MO
1094 ("coreutils*" ,coreutils)
1095 ("sed*" ,sed)))
6548b1e1 1096
8198b3db 1097 (home-page "https://www.isc.org/products/DHCP/")
6548b1e1
MW
1098 (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
1099 (description
1100 "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
c73d4c92
LC
1101reference implementation of all aspects of DHCP, through a suite of DHCP
1102tools: server, client, and relay agent.")
4e2432d1 1103 (license license:mpl2.0)
159a5e01 1104 (properties '((cpe-name . "dhcp"))))))
02c86a5e
LC
1105
1106(define-public libpcap
1107 (package
1108 (name "libpcap")
4cc0b485 1109 (version "1.9.1")
02c86a5e
LC
1110 (source (origin
1111 (method url-fetch)
eeb8b0e6 1112 (uri (string-append "https://www.tcpdump.org/release/libpcap-"
02c86a5e
LC
1113 version ".tar.gz"))
1114 (sha256
1115 (base32
4cc0b485 1116 "153h1378diqyc27jjgz6gg5nxmb4ddk006d9xg69nqavgiikflk3"))))
02c86a5e 1117 (build-system gnu-build-system)
24dd949c
TGR
1118 (native-inputs
1119 `(("bison" ,bison)
1120 ("flex" ,flex)))
1121 (arguments
1122 ;; There are some tests in testprogs/, but no automated test suite.
1123 '(#:tests? #f))
eeb8b0e6 1124 (home-page "https://www.tcpdump.org")
02c86a5e
LC
1125 (synopsis "Network packet capture library")
1126 (description
1127 "libpcap is an interface for user-level packet capture. It provides a
1128portable framework for low-level network monitoring. Applications include
1129network statistics collection, security monitoring, network debugging, etc.")
24dd949c
TGR
1130 (license (list license:bsd-4 ; fad-*.c and several other source files
1131 license:bsd-3 ; pcap/, sockutils.* & others
1132 license:bsd-2)))) ; the rest
02c86a5e 1133
1da34f5a
LC
1134(define-public tcpdump
1135 (package
1136 (name "tcpdump")
645d0c92 1137 (version "4.9.3")
1da34f5a
LC
1138 (source (origin
1139 (method url-fetch)
eeb8b0e6 1140 (uri (string-append "https://www.tcpdump.org/release/tcpdump-"
73a2ef36 1141 version ".tar.gz"))
1da34f5a
LC
1142 (sha256
1143 (base32
645d0c92 1144 "0434vdcnbqaia672rggjzdn4bb8p8dchz559yiszzdk0sjrprm1c"))))
1da34f5a 1145 (build-system gnu-build-system)
10db1e6c 1146 (inputs `(("libpcap" ,libpcap)
cc2b77df 1147 ("openssl" ,openssl)))
1da34f5a 1148 (native-inputs `(("perl" ,perl))) ; for tests
eeb8b0e6 1149 (home-page "https://www.tcpdump.org/")
1da34f5a
LC
1150 (synopsis "Network packet analyzer")
1151 (description
1152 "Tcpdump is a command-line tool to analyze network traffic passing
1153through the network interface controller.")
f61e0e79 1154 (license license:bsd-3)))
1da34f5a 1155
02c86a5e
LC
1156(define-public jnettop
1157 (package
1158 (name "jnettop")
1159 (version "0.13.0")
1160 (source (origin
1161 (method url-fetch)
53923b0f
BH
1162 (uri
1163 (string-append "https://web.archive.org/web/20161221100811/"
1164 "http://jnettop.kubs.info/dist/jnettop-"
1165 version ".tar.gz"))
02c86a5e
LC
1166 (sha256
1167 (base32
1168 "1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9"))))
1169 (build-system gnu-build-system)
1170 (native-inputs
1171 `(("pkg-config" ,pkg-config)))
1172 (inputs
1173 `(("glib" ,glib)
1174 ("ncurses" ,ncurses)
1175 ("libpcap" ,libpcap)))
53923b0f
BH
1176 (home-page
1177 "https://web.archive.org/web/20160703195221/http://jnettop.kubs.info/wiki/")
02c86a5e
LC
1178 (synopsis "Visualize network traffic by bandwidth use")
1179 (description
1180 "Jnettop is a traffic visualiser, which captures traffic going
1181through the host it is running from and displays streams sorted
1182by bandwidth they use.")
f61e0e79 1183 (license license:gpl2+)))
87216303
EB
1184
1185(define-public clusterssh
1186 (package
1187 (name "clusterssh")
c5829179 1188 (version "4.13.2")
87216303
EB
1189 (source (origin
1190 (method url-fetch)
1191 (uri (string-append "mirror://sourceforge/clusterssh/"
c5829179
KK
1192 "2.%20ClusterSSH%20Series%204/"
1193 "App-ClusterSSH-v" version ".tar.gz"))
87216303
EB
1194 (sha256
1195 (base32
c5829179
KK
1196 "0rmk2p3f2wz1h092anidjclh212rv3gxyk0c641qk3frlrjnw6mp"))))
1197 (build-system perl-build-system)
12ea2571
TGR
1198 (arguments
1199 `(#:phases
1200 (modify-phases %standard-phases
1201 (add-after 'unpack 'refer-to-inputs
1202 (lambda* (#:key inputs #:allow-other-keys)
1203 (substitute* (list "lib/App/ClusterSSH/Config.pm"
1204 "t/15config.t")
1205 (("xterm")
1206 (which "xterm")))
1207 #t))
1208 (add-before 'check 'delete-failing-tests
1209 (lambda _
1210 ;; This checks whether all code is nicely formatted. The above
1211 ;; ‘refer-to-inputs’ phase breaks this pedantry, so disable it.
1212 (delete-file "t/perltidy.t")
1213 ;; Update the manifest so t/manifest.t happily passes.
1214 (substitute* "MANIFEST"
1215 (("t/perltidy.t\n") ""))
332a2765
TGR
1216 #t))
1217 (add-after 'install 'augment-library-path
1218 (lambda* (#:key inputs outputs #:allow-other-keys)
1219 (let* ((out (assoc-ref outputs "out"))
1220 (bin (string-append out "/bin")))
1221 (with-directory-excursion bin
1222 (for-each
1223 (lambda (program)
1224 (wrap-program program
1225 `("PERL5LIB" ":" prefix
1226 ,(map (lambda (file-name)
1227 (string-append file-name
1228 "/lib/perl5/site_perl"))
1229 (cons out
1230 (map (lambda (input)
1231 (assoc-ref inputs input))
1232 ;; These may be propagated and hence
1233 ;; not explicitly listed as inputs.
1234 (list "perl-class-data-inheritable"
1235 "perl-devel-stacktrace"
1236 "perl-exception-class"
1237 "perl-tk"
1238 "perl-try-tiny"
1239 "perl-x11-protocol"
1240 "perl-x11-protocol-other")))))))
1241 (find-files "." ".*")))
1242 #t))))))
c5829179
KK
1243 (native-inputs
1244 `(("perl-cpan-changes" ,perl-cpan-changes)
1245 ("perl-file-slurp" ,perl-file-slurp)
1246 ("perl-file-which" ,perl-file-which)
1247 ("perl-module-build" ,perl-module-build)
1248 ("perl-readonly" ,perl-readonly)
1249 ("perl-test-differences" ,perl-test-differences)
1250 ("perl-test-distmanifest" ,perl-test-distmanifest)
1251 ("perl-test-perltidy" ,perl-test-perltidy)
1252 ("perl-test-pod" ,perl-test-pod)
1253 ("perl-test-pod-coverage" ,perl-test-pod-coverage)
1254 ("perl-test-trap" ,perl-test-trap)
1255 ("perltidy" ,perltidy)))
12ea2571 1256 (inputs
12ea2571 1257 `(("perl-exception-class" ,perl-exception-class)
b07aea69 1258 ("perl-sort-naturally" ,perl-sort-naturally)
c5829179
KK
1259 ("perl-tk" ,perl-tk)
1260 ("perl-try-tiny" ,perl-try-tiny)
1261 ("perl-x11-protocol" ,perl-x11-protocol)
332a2765
TGR
1262 ("perl-x11-protocol-other" ,perl-x11-protocol-other)
1263 ("xterm" ,xterm)))
87216303 1264 ;; The clusterssh.sourceforge.net address requires login to view
3b3b60d0 1265 (home-page "https://sourceforge.net/projects/clusterssh/")
87216303
EB
1266 (synopsis "Secure concurrent multi-server terminal control")
1267 (description
1268 "ClusterSSH controls a number of xterm windows via a single graphical
1269console window to allow commands to be interactively run on multiple servers
1270over ssh connections.")
f61e0e79 1271 (license license:gpl2+)))
fccf2fe0 1272
d1ce1125
MB
1273(define-public rename
1274 (package
1275 (name "rename")
0db873dd 1276 (version "1.10")
d1ce1125
MB
1277 (source (origin
1278 (method url-fetch)
1279 (uri (string-append
1280 "mirror://cpan/authors/id/R/RM/RMBARKER/File-Rename-"
1281 version ".tar.gz"))
1282 (sha256
1283 (base32
0db873dd 1284 "137m8s06r4n038ivlr5r1d9a7q9l7shmwpvnyx053r9ndhvbnkh5"))))
d1ce1125 1285 (build-system perl-build-system)
e6dcf9ca
TGR
1286 (arguments
1287 `(#:phases
1288 (modify-phases %standard-phases
1289 (add-after 'install 'find-itself
1290 ;; Fix run-time 'Can't locate File/Rename.pm in @INC' failure.
1291 (lambda* (#:key outputs #:allow-other-keys)
1292 (let* ((out (assoc-ref outputs "out"))
1293 (bin (string-append out "/bin")))
1294 (with-directory-excursion bin
1295 (for-each
1296 (lambda (program)
1297 (wrap-program program
1298 `("PERL5LIB" ":" prefix
1299 (,(string-append out "/lib/perl5/site_perl")))))
1300 (find-files "." ".*")))
1301 #t))))))
d1ce1125
MB
1302 (native-inputs
1303 `(("perl-module-build" ,perl-module-build)
1304 ("perl-test-pod" ,perl-test-pod)
1305 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
1306 (home-page "https://metacpan.org/pod/distribution/File-Rename/rename.PL")
1307 (synopsis "Perl extension for renaming multiple files")
1308 (description
1309 "This package provides a Perl interface (@code{Perl::Rename}) as well
1310as a command-line utility (@command{rename}) that can rename multiple files
1311at once based on a Perl regular expression.")
1312 (license license:perl-license)))
1313
fccf2fe0
LC
1314(define-public rottlog
1315 (package
1316 (name "rottlog")
1317 (version "0.72.2")
1318 (source (origin
1319 (method url-fetch)
1320 (uri (string-append "mirror://gnu/rottlog/rottlog-"
1321 version ".tar.gz"))
1322 (sha256
1323 (base32
1324 "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
1325 (modules '((guix build utils)))
1326 (snippet
6cbee49d
MW
1327 '(begin
1328 (substitute* "Makefile.in"
1329 (("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
1330 ;; Don't try to chown root.
1331 "")
1332 (("mkdir -p \\$\\(ROTT_STATDIR\\)")
1333 ;; Don't attempt to create /var/lib/rottlog.
1334 "true"))
1335 #t))))
fccf2fe0
LC
1336 (build-system gnu-build-system)
1337 (arguments
ef9652ef 1338 `(#:configure-flags (list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
fccf2fe0 1339 "--localstatedir=/var")
268ad34e
LC
1340
1341 ;; Install example config files in OUT/etc.
1342 #:make-flags (list (string-append "ROTT_ETCDIR="
1343 (assoc-ref %outputs "out")
1344 "/etc"))
1345
8dc0ecae 1346 #:phases (modify-phases %standard-phases
d436c6b5 1347 (add-after 'unpack 'patch-paths
72861d8e 1348 (lambda* (#:key inputs #:allow-other-keys)
d436c6b5 1349 (substitute* "rc/rc"
72861d8e
LLB
1350 (("/usr/sbin/sendmail")
1351 (string-append (assoc-ref inputs "mailutils")
1352 "/bin/mail")))
d436c6b5 1353 #t))
ef9652ef
MO
1354 (add-after 'unpack 'fix-configure
1355 (lambda* (#:key inputs native-inputs #:allow-other-keys)
1356 ;; Replace outdated config.sub and config.guess:
1357 (for-each (lambda (file)
1358 (install-file
1359 (string-append
1360 (assoc-ref
1361 (or native-inputs inputs) "automake")
1362 "/share/automake-"
1363 ,(version-major+minor
1364 (package-version automake))
1365 "/" file) "."))
1366 '("config.sub" "config.guess"))
1367 #t))
11e74634
JN
1368 (add-after 'build 'set-packdir
1369 (lambda _
1370 ;; Set a default location for archived logs.
1371 (substitute* "rc/rc"
1372 (("packdir=\"\"")
1373 "packdir=\"/var/log\""))
1374 #t))
309e523e 1375 (add-before 'install 'tweak-rc-weekly
d81b89bf 1376 (lambda* (#:key inputs #:allow-other-keys)
309e523e
LC
1377 (substitute* "rc/weekly"
1378 (("/bin/kill")
d81b89bf
MO
1379 (string-append (assoc-ref inputs "coreutils*")
1380 "/bin/kill"))
309e523e
LC
1381 (("syslogd\\.pid")
1382 ;; The file is called 'syslog.pid' (no 'd').
1383 "syslog.pid"))
1384 #t))
8dc0ecae
LC
1385 (add-after 'install 'install-info
1386 (lambda _
cb8ba848 1387 (invoke "make" "install-info"))))))
fccf2fe0 1388 (native-inputs `(("texinfo" ,texinfo)
ef9652ef 1389 ("automake" ,automake)
fccf2fe0 1390 ("util-linux" ,util-linux))) ; for 'cal'
72861d8e
LLB
1391 (inputs `(("coreutils*" ,coreutils)
1392 ("mailutils" ,mailutils)))
6fd52309 1393 (home-page "https://www.gnu.org/software/rottlog/")
fccf2fe0
LC
1394 (synopsis "Log rotation and management")
1395 (description
1396 "GNU Rot[t]log is a program for managing log files. It is used to
1397automatically rotate out log files when they have reached a given size or
1398according to a given schedule. It can also be used to automatically compress
1399and archive such logs. Rot[t]log will mail reports of its activity to the
1400system administrator.")
f61e0e79 1401 (license license:gpl3+)))
e1485c7b
LC
1402
1403(define-public sudo
1404 (package
1405 (name "sudo")
f849b057 1406 (version "1.9.5p1")
e1485c7b
LC
1407 (source (origin
1408 (method url-fetch)
1409 (uri
6baa83d2 1410 (list (string-append "https://www.sudo.ws/sudo/dist/sudo-"
e1485c7b
LC
1411 version ".tar.gz")
1412 (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
1413 version ".tar.gz")))
1414 (sha256
1415 (base32
f849b057 1416 "10kqdfbfpf3vk5ihz5gwynv4pxdf1lg6ircrlanyygb549yg7pad"))
6b7f1b6c
MB
1417 (modules '((guix build utils)))
1418 (snippet
6cbee49d
MW
1419 '(begin
1420 (delete-file-recursively "lib/zlib")
1421 #t))))
e1485c7b 1422 (build-system gnu-build-system)
165e0918 1423 (outputs (list "out"))
e1485c7b 1424 (arguments
0086ec73 1425 `(#:configure-flags
6fa393e2
TGR
1426 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1427 "/share/doc/" ,name "-" ,version)
1428
1429 "--with-logpath=/var/log/sudo.log"
8e950ee9 1430 "--with-rundir=/var/run/sudo" ; must be cleaned up at boot time
0086ec73
LC
1431 "--with-vardir=/var/db/sudo"
1432 "--with-iologdir=/var/log/sudo-io"
1433
1434 ;; 'visudo.c' expects _PATH_MV to be defined, but glibc doesn't
1435 ;; provide it.
1436 (string-append "CPPFLAGS=-D_PATH_MV='\""
1437 (assoc-ref %build-inputs "coreutils")
1438 "/bin/mv\"'"))
511495fb
LC
1439
1440 ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
1441 #:parallel-build? #f
1442
7fae2063
TGR
1443 #:phases
1444 (modify-phases %standard-phases
1445 (add-before 'configure 'pre-configure
1446 (lambda _
1447 (substitute* "src/sudo_usage.h.in"
1448 ;; Do not capture 'configure' arguments since we would
1449 ;; unduly retain references, and also because the
1450 ;; CPPFLAGS above would close the string literal
1451 ;; prematurely.
1452 (("@CONFIGURE_ARGS@") "\"\""))
1453 (substitute* (find-files "." "Makefile\\.in")
6f6dbf2a 1454 ;; Allow installation as non-root.
7fae2063 1455 (("-o [[:graph:]]+ -g [[:graph:]]+")
7fae2063 1456 "")
6f6dbf2a 1457 ;; Don't try to create /etc/sudoers.
7fae2063 1458 (("^install: (.*)install-sudoers(.*)" _ before after)
7fae2063 1459 (string-append "install: " before after "\n"))
6f6dbf2a 1460 ;; Don't try to create /run/sudo.
7fae2063 1461 (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
7fae2063 1462 "$(TMPDIR)/dummy")
6f6dbf2a
TGR
1463 ;; Install example sudo{,_logsrvd}.conf to the right place.
1464 (("\\$\\(DESTDIR\\)\\$\\(sysconfdir\\)")
1465 "$(DESTDIR)/$(docdir)/examples")
1466 ;; Don't try to create /var/db/sudo.
7fae2063 1467 (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
4b052c6a 1468 "$(TMPDIR)/dummy"))
cbaf756c
TGR
1469
1470 ;; ‘Checking existing [/etc/]sudoers file for syntax errors’ is
1471 ;; not the task of the build system, and fails.
1472 (substitute* "plugins/sudoers/Makefile.in"
1473 (("^pre-install:" match)
1474 (string-append match "\ndisabled-" match)))
165e0918 1475 #t)))
e1485c7b
LC
1476
1477 ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
1478 ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
1479 #:tests? #f))
913c8897 1480 (native-inputs
e42765b6
JN
1481 ;; XXX TODO: Remove on next rebuild cycle.
1482 (if (hurd-target?)
1483 '()
1484 `(("groff" ,groff))))
e1485c7b 1485 (inputs
452244e6
TGR
1486 `(("coreutils" ,coreutils)
1487 ("linux-pam" ,linux-pam)
452244e6 1488 ("zlib" ,zlib)))
6baa83d2 1489 (home-page "https://www.sudo.ws/")
e1485c7b
LC
1490 (synopsis "Run commands as root")
1491 (description
1492 "Sudo (su \"do\") allows a system administrator to delegate authority to
1493give certain users (or groups of users) the ability to run some (or all)
1494commands as root or another user while providing an audit trail of the
1495commands and their arguments.")
1496
1497 ;; See <http://www.sudo.ws/sudo/license.html>.
f61e0e79 1498 (license license:x11)))
952298d7 1499
248af684
MS
1500(define-public opendoas
1501 (package
1502 (name "opendoas")
8d2ee4c5 1503 (version "6.8")
248af684
MS
1504 (source (origin
1505 (method git-fetch)
1506 (uri (git-reference
b0e7b699 1507 (url "https://github.com/Duncaen/OpenDoas")
248af684
MS
1508 (commit (string-append "v" version))))
1509 (file-name (git-file-name name version))
1510 (sha256
1511 (base32
8d2ee4c5 1512 "1dlwnvy8r6slxcy260gfkximp1ms510wdslpfq9y6xvd2qi5izcb"))))
248af684
MS
1513 (build-system gnu-build-system)
1514 (arguments
1515 `(#:phases
1516 (modify-phases %standard-phases
1517 (replace 'configure
1518 ;; The configure script doesn't accept most of the default flags.
1519 (lambda* (#:key configure-flags #:allow-other-keys)
8d2ee4c5 1520 ;; The configure script can be told which compiler to use only
248af684
MS
1521 ;; through environment variables.
1522 (setenv "CC" ,(cc-for-target))
1523 (apply invoke "./configure" configure-flags)))
1524 (add-before 'install 'fix-makefile
1525 (lambda* (#:key outputs #:allow-other-keys)
8d2ee4c5 1526 (substitute* "GNUmakefile"
248af684
MS
1527 (("^\tchown.*$") ""))
1528 #t)))
1529 #:configure-flags
1530 (list (string-append "--prefix=" (assoc-ref %outputs "out"))
248af684
MS
1531 "--with-timestamp")
1532 ;; Compiler choice is not carried over from the configure script.
1533 #:make-flags
1534 (list (string-append "CC=" ,(cc-for-target)))
1535 #:tests? #f)) ; no test suite
1536 (native-inputs
1537 `(("bison" ,bison)))
1538 (home-page "https://github.com/Duncaen/OpenDoas")
1539 (synopsis "Portable version of OpenBSD's doas command")
1540 (description "Doas is a minimal replacement for the venerable sudo. It was
1541initially written by Ted Unangst of the OpenBSD project to provide 95% of the
1542features of sudo with a fraction of the codebase.")
1543 (license (list license:bsd-3 ; libbsd/*
1544 license:isc)))) ; everything else
1545
1ce6f43a 1546(define-public wpa-supplicant-minimal
952298d7 1547 (package
1ce6f43a 1548 (name "wpa-supplicant-minimal")
ba7ff983 1549 (version "2.9")
952298d7
LC
1550 (source (origin
1551 (method url-fetch)
1552 (uri (string-append
eeb8b0e6 1553 "https://w1.fi/releases/wpa_supplicant-"
aeb1ed1a 1554 version ".tar.gz"))
952298d7
LC
1555 (sha256
1556 (base32
ba7ff983 1557 "05qzak1mssnxcgdrafifxh9w86a4ha69qabkg4bsigk499xyxggw"))
aeb1ed1a
MB
1558 (modules '((guix build utils)))
1559 (snippet
1560 '(begin
1561 (substitute* "wpa_supplicant/defconfig"
1562 ;; Disable D-Bus to save ~14MiB on the closure size.
1563 (("^CONFIG_CTRL_IFACE_DBUS" line _)
1564 (string-append "#" line)))
1565 #t))))
952298d7
LC
1566 (build-system gnu-build-system)
1567 (arguments
8ec5adce 1568 `(#:phases
dc1d3cde
KK
1569 (modify-phases %standard-phases
1570 (replace 'configure
8ec5adce 1571 (lambda _
dc1d3cde
KK
1572 (chdir "wpa_supplicant")
1573 (copy-file "defconfig" ".config")
1574 (let ((port (open-file ".config" "al")))
1575 (display "
952298d7 1576 CONFIG_DEBUG_SYSLOG=y
40b4c6d6 1577
aeb1ed1a 1578 CONFIG_TLS=openssl
61bdd0d8 1579
952298d7
LC
1580 CONFIG_DRIVER_NL80211=y
1581 CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
1582 CONFIG_LIBNL32=y
1583 CONFIG_READLINE=y\n" port)
cb8ba848 1584 (close-port port))
8ec5adce
EF
1585 ;; Make sure we have a pkg-config when cross compiling
1586 (substitute* '(".config"
1587 "Android.mk"
1588 "Makefile"
1589 "dbus/Makefile")
1590 (("pkg-config")
1591 (or (which "pkg-config")
1592 (which (string-append ,(%current-target-system)
1593 "-pkg-config")))))
cb8ba848 1594 #t))
3b165f2a 1595 (add-after 'install 'install-documentation
dc1d3cde
KK
1596 (lambda* (#:key outputs #:allow-other-keys)
1597 (let* ((out (assoc-ref outputs "out"))
3b165f2a 1598 (doc (string-append out "/share/doc/wpa-supplicant"))
dc1d3cde
KK
1599 (man (string-append out "/share/man"))
1600 (man5 (string-append man "/man5"))
1601 (man8 (string-append man "/man8")))
1602 (define (copy-man-page target)
1603 (lambda (file)
1604 (install-file file target)))
1605
1606 (mkdir-p man5) (mkdir man8)
1607 (for-each (copy-man-page man5)
1608 (find-files "doc/docbook" "\\.5"))
1609 (for-each (copy-man-page man8)
1610 (find-files "doc/docbook" "\\.8"))
3b165f2a
TL
1611
1612 ;; wpa_supplicant.conf(5) does not explain all configuration
1613 ;; options but refers to the example config file, so install it
1614 ;; along with READMEs.
1615 (for-each (lambda (file)
1616 (install-file file doc))
1617 '("README" "README-DPP" "README-HS20"
1618 "README-P2P" "README-WPS"
1619 "wpa_supplicant.conf"))
dc1d3cde 1620 #t))))
952298d7 1621
8ec5adce 1622 #:make-flags (list (string-append "CC=" ,(cc-for-target))
952298d7
LC
1623 (string-append "BINDIR=" (assoc-ref %outputs "out")
1624 "/sbin")
1625 (string-append "LIBDIR=" (assoc-ref %outputs "out")
1626 "/lib"))
1627 #:tests? #f))
1628 (inputs
1629 `(("readline" ,readline)
1630 ("libnl" ,libnl)
aeb1ed1a 1631 ("openssl" ,openssl)))
952298d7
LC
1632 (native-inputs
1633 `(("pkg-config" ,pkg-config)))
eeb8b0e6 1634 (home-page "https://w1.fi/wpa_supplicant/")
952298d7
LC
1635 (synopsis "Connecting to WPA and WPA2-protected wireless networks")
1636 (description
1637 "wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
1638802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
1639the client stations. It implements key negotiation with a WPA Authenticator
1640and it controls the roaming and IEEE 802.11 authentication/association of the
1641WLAN driver.
1642
36a4366d
EF
1643This package provides the @code{wpa_supplicant} daemon and the @code{wpa_cli}
1644command.")
952298d7
LC
1645
1646 ;; In practice, this is linked against Readline, which makes it GPLv3+.
107b081e
LC
1647 (license license:bsd-3)
1648
1649 (properties `((cpe-name . "wpa_supplicant")))))
c6b76405 1650
4fb7e0de 1651(define-public wpa-supplicant
1ce6f43a 1652 (package (inherit wpa-supplicant-minimal)
4fb7e0de
MW
1653 (name "wpa-supplicant")
1654 (inputs `(("dbus" ,dbus)
1ce6f43a 1655 ,@(package-inputs wpa-supplicant-minimal)))
4fb7e0de 1656 (arguments
1ce6f43a 1657 (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
4fb7e0de 1658 ((#:phases phases)
dc1d3cde
KK
1659 `(modify-phases ,phases
1660 (add-after 'configure 'configure-for-dbus
1661 (lambda _
1662 (let ((port (open-file ".config" "al")))
1663 (display "
4fb7e0de
MW
1664 CONFIG_CTRL_IFACE_DBUS_NEW=y
1665 CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
dc1d3cde
KK
1666 (close-port port))
1667 #t))
3b165f2a 1668 (add-after 'install-documentation 'install-dbus-conf
dc1d3cde
KK
1669 (lambda* (#:key outputs #:allow-other-keys)
1670 (let* ((out (assoc-ref outputs "out"))
1671 (dir (string-append out "/etc/dbus-1/system.d")))
1672 (mkdir-p dir)
1673 (copy-file "dbus/dbus-wpa_supplicant.conf"
1674 (string-append dir "/wpa_supplicant.conf")))
1675 #t))))))))
4fb7e0de 1676
050e5756
MB
1677(define-public wpa-supplicant-gui
1678 (package
1679 (inherit wpa-supplicant)
1680 (name "wpa-supplicant-gui")
1681 (inputs `(("qtbase" ,qtbase)
1682 ("qtsvg" ,qtsvg)
1683 ,@(package-inputs wpa-supplicant)))
1684 (native-inputs
1685 ;; For icons.
1686 `(("imagemagick" ,imagemagick)
1687 ("inkscape" ,inkscape)
1688 ,@(package-native-inputs wpa-supplicant)))
1689 (arguments
1690 `(#:phases (modify-phases %standard-phases
1691 (add-after 'unpack 'chdir
1692 (lambda _
1693 (chdir "wpa_supplicant/wpa_gui-qt4")
1694 #t))
1695 (delete 'configure)
1696 (replace 'build
1697 (lambda _
1698 (invoke "qmake" "wpa_gui.pro")
1699 (invoke "make" "-j" (number->string (parallel-job-count)))
1700 (invoke "make" "-C" "icons")))
1701 (replace 'install
1702 (lambda* (#:key inputs outputs #:allow-other-keys)
1703 (let ((out (assoc-ref outputs "out"))
1704 (qt '("qtbase" "qtsvg")))
050e5756
MB
1705 (install-file "wpa_gui" (string-append out "/bin"))
1706 (install-file "wpa_gui.desktop"
1707 (string-append out "/share/applications"))
1708 (copy-recursively "icons/hicolor"
1709 (string-append out "/share/icons/hicolor"))
1710 (wrap-program (string-append out "/bin/wpa_gui")
1711 `("QT_PLUGIN_PATH" ":" prefix
1712 ,(map (lambda (label)
1713 (string-append (assoc-ref inputs label)
1714 "/lib/qt5/plugins/"))
1715 qt)))
1716 #t))))))
1717 (synopsis "Graphical user interface for WPA supplicant")))
1718
56038bac
LC
1719(define-public hostapd
1720 (package
1721 (name "hostapd")
f5bfaf32 1722 (version "2.9")
56038bac
LC
1723 (source (origin
1724 (method url-fetch)
1725 (uri (string-append "https://w1.fi/releases/hostapd-" version
1726 ".tar.gz"))
1727 (sha256
1728 (base32
f5bfaf32 1729 "1mrbvg4v7vm7mknf0n29mf88k3s4a4qj6r4d51wq8hmjj1m7s7c8"))))
56038bac
LC
1730 (build-system gnu-build-system)
1731 (arguments
afcf90c6 1732 `(#:phases
56038bac
LC
1733 (modify-phases %standard-phases
1734 (replace 'configure
afcf90c6 1735 (lambda _
56038bac
LC
1736 ;; This is mostly copied from 'wpa-supplicant' above.
1737 (chdir "hostapd")
1738 (copy-file "defconfig" ".config")
1739 (let ((port (open-file ".config" "al")))
1740 (display "
1741 CONFIG_LIBNL32=y
1742 CONFIG_IEEE80211R=y
1743 CONFIG_IEEE80211N=y
1744 CONFIG_IEEE80211AC=y\n" port)
1745 (close-port port))
1746 #t))
afcf90c6
EF
1747 (add-after 'unpack 'patch-pkg-config
1748 (lambda _
1749 (substitute* "src/drivers/drivers.mak"
1750 (("pkg-config")
1751 (or (which "pkg-config")
1752 (string-append ,(%current-target-system)
1753 "-pkg-config"))))
1754 #t))
56038bac
LC
1755 (add-after 'install 'install-man-pages
1756 (lambda* (#:key outputs #:allow-other-keys)
1757 (let* ((out (assoc-ref outputs "out"))
1758 (man (string-append out "/share/man"))
1759 (man1 (string-append man "/man1"))
1760 (man8 (string-append man "/man8")))
1761 (define (copy-man-page target)
1762 (lambda (file)
1763 (install-file file target)))
1764
1765 (for-each (copy-man-page man1)
1766 (find-files "." "\\.1"))
1767 (for-each (copy-man-page man8)
1768 (find-files "." "\\.8"))
1769 #t))))
1770
afcf90c6 1771 #:make-flags (list (string-append "CC=" ,(cc-for-target))
56038bac
LC
1772 (string-append "BINDIR=" (assoc-ref %outputs "out")
1773 "/sbin")
1774 (string-append "LIBDIR=" (assoc-ref %outputs "out")
1775 "/lib"))
1776 #:tests? #f))
1777 (native-inputs `(("pkg-config" ,pkg-config)))
1778
1779 ;; There's an optional dependency on SQLite.
1780 (inputs `(("openssl" ,openssl)
1781 ("libnl" ,libnl)))
1782 (home-page "https://w1.fi/hostapd/")
1783 (synopsis "Daemon for Wi-Fi access points and authentication servers")
1784 (description
1785 "hostapd is a user-space daemon for WiFi access points and authentication
1786servers. It implements IEEE 802.11 access point management, IEEE
1787802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS
1788authentication server.")
1789
1790 ;; Same license as wpa_supplicant.
1791 (license license:bsd-3)))
1792
c6b76405
LC
1793(define-public wakelan
1794 (package
1795 (name "wakelan")
1796 (version "1.1")
1797 (source (origin
1798 (method url-fetch)
1799 (uri (string-append
1800 "ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-"
1801 version ".tar.gz"))
1802 (sha256
1803 (base32
1804 "0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
1805 (build-system gnu-build-system)
1806 (arguments
dc1d3cde
KK
1807 '(#:phases
1808 (modify-phases %standard-phases
1809 (replace 'configure
1810 (lambda* (#:key outputs #:allow-other-keys)
1811 (let ((out (assoc-ref outputs "out")))
1812 (mkdir-p (string-append out "/bin"))
1813 (mkdir-p (string-append out "/share/man/man1"))
1814
1815 ;; It's an old configure script that doesn't understand
1816 ;; the extra options we pass.
1817 (setenv "CONFIG_SHELL" (which "bash"))
cb8ba848
MW
1818 (invoke "./configure"
1819 (string-append "--prefix=" out)
1820 (string-append "--mandir=" out
1821 "/share/man"))))))
c6b76405 1822 #:tests? #f))
eeb8b0e6 1823 (home-page "https://www.kernel.org") ; really, no home page
c6b76405
LC
1824 (synopsis "Send a wake-on-LAN packet")
1825 (description
1826 "WakeLan broadcasts a properly formatted UDP packet across the local area
1827network, which causes enabled computers to power on.")
f61e0e79 1828 (license license:gpl2+)))
d43f4296
LC
1829
1830(define-public dmidecode
1831 (package
1832 (name "dmidecode")
6f19c32b
TGR
1833 (version "3.3")
1834 (source
1835 (origin
1836 (method url-fetch)
1837 (uri (string-append "mirror://savannah/dmidecode/dmidecode-"
1838 version ".tar.xz"))
1839 (sha256
1840 (base32 "0m8lzg9rf1qssasiix672bxk5qwms90561g8hfkkhk31h2kkgiw2"))))
d43f4296
LC
1841 (build-system gnu-build-system)
1842 (arguments
6f19c32b
TGR
1843 `(#:tests? #f ; no 'check' target
1844 #:make-flags
1845 (list (string-append "CC=" ,(cc-for-target))
1846 (string-append "prefix="
1847 (assoc-ref %outputs "out")))
1848 #:phases
1849 (modify-phases %standard-phases
1850 (delete 'configure)))) ; no configure script
340978d7 1851 (home-page "https://www.nongnu.org/dmidecode/")
d43f4296
LC
1852 (synopsis "Read hardware information from the BIOS")
1853 (description
1854 "Dmidecode reports information about your system's hardware as described
1855in your system BIOS according to the SMBIOS/DMI standard. This typically
1856includes system manufacturer, model name, serial number, BIOS version, asset
1857tag as well as a lot of other details of varying level of interest and
1858reliability depending on the manufacturer. This will often include usage
1859status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
1860module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
f61e0e79 1861 (license license:gpl2+)))
42dc3af5 1862
13c8c2bf
MW
1863(define-public acpica
1864 (package
1865 (name "acpica")
ee858def 1866 (version "20210105")
13c8c2bf
MW
1867 (source (origin
1868 (method url-fetch)
1869 (uri (string-append
1870 "https://acpica.org/sites/acpica/files/acpica-unix2-"
1871 version ".tar.gz"))
1872 (sha256
1873 (base32
ee858def 1874 "1gi7qzfywg118g5nlqn5lawxk25pg2sz01gmbz40vvmikks4ri9r"))))
13c8c2bf
MW
1875 (build-system gnu-build-system)
1876 (native-inputs `(("flex" ,flex)
1877 ("bison" ,bison)))
1878 (arguments
12110f94
EF
1879 `(#:make-flags (list (string-append "PREFIX=" %output)
1880 (string-append "CC=" ,(cc-for-target))
13c8c2bf
MW
1881 "HOST=_LINUX"
1882 "OPT_CFLAGS=-Wall -fno-strict-aliasing")
e56feffe 1883 #:tests? #f ; no 'check' target
dc1d3cde 1884 #:phases (modify-phases %standard-phases (delete 'configure))))
6c441efc 1885 (home-page "https://acpica.org/")
018be4ca 1886 (synopsis "Tools for the development and debugging of ACPI tables")
13c8c2bf 1887 (description
4d1e4af4
TGR
1888 "The @acronym{ACPICA, ACPI Component Architecture} project provides an
1889OS-independent reference implementation of the @acronym{ACPI, Advanced
1890Configuration and Power Interface} specification. ACPICA code contains those
1891portions of ACPI meant to be directly integrated into the host OS as a
1892kernel-resident subsystem, and a small set of tools to assist in developing and
1893debugging ACPI tables.
1894
1895This package contains only the user-space tools needed for ACPI table
13c8c2bf 1896development, not the kernel implementation of ACPI.")
e56feffe 1897 (license license:gpl2))) ; dual GPLv2/ACPICA Licence
4cf7bd2b 1898
bee9f97e
CB
1899(define-public s-tui
1900 (package
1901 (name "s-tui")
54cab305 1902 (version "1.0.2")
bee9f97e
CB
1903 (source
1904 (origin
1905 (method url-fetch)
1906 (uri (pypi-uri "s-tui" version))
1907 (sha256
54cab305 1908 (base32 "0xkfdaz5np21311ffdvhks58155qby8j8scbcixhvjd913pj66qx"))))
bee9f97e
CB
1909 (build-system python-build-system)
1910 (inputs
1911 `(("python-psutil" ,python-psutil)
1912 ("python-urwid" ,python-urwid)))
1913 (home-page "https://github.com/amanusk/s-tui")
1914 (synopsis "Interactive terminal stress test and monitoring tool")
1915 (description
1916 "The Stress Terminal UI displays graphs of the CPU frequency,
1917utilization, temperature and power.")
1918 (license license:gpl2+)))
1919
4cf7bd2b
MW
1920(define-public stress
1921 (package
1922 (name "stress")
ca52937c 1923 (version "1.0.4")
4cf7bd2b
MW
1924 (source (origin
1925 (method url-fetch)
1926 (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
1927 version ".orig.tar.gz"))
1928 (sha256
1929 (base32
ca52937c 1930 "0nw210jajk38m3y7h8s130ps2qsbz7j75wab07hi2r3hlz14yzh5"))))
4cf7bd2b 1931 (build-system gnu-build-system)
abf7fed5 1932 (home-page "https://packages.debian.org/sid/stress")
9e771e3b 1933 (synopsis "Impose load on and stress test a computer system")
4cf7bd2b 1934 (description
35b9e423 1935 "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
4cf7bd2b
MW
1936or disk stress on a POSIX-compliant operating system and reports any errors it
1937detects.
1938
35b9e423 1939Stress is not a benchmark. It is a tool used by system administrators to
4cf7bd2b
MW
1940evaluate how well their systems will scale, by kernel programmers to evaluate
1941perceived performance characteristics, and by systems programmers to expose
1942the classes of bugs which only or more frequently manifest themselves when the
1943system is under heavy load.")
f61e0e79 1944 (license license:gpl2+)))
b36fcf95
EB
1945
1946(define-public detox
1947 (package
1948 (name "detox")
c2d512d3 1949 (version "1.3.0")
b36fcf95 1950 (source (origin
c2d512d3
EB
1951 (method git-fetch)
1952 (uri (git-reference
b0e7b699 1953 (url "https://github.com/dharple/detox")
c2d512d3 1954 (commit (string-append "v" version))))
f1d4d79f 1955 (file-name (git-file-name name version))
b36fcf95
EB
1956 (sha256
1957 (base32
c2d512d3 1958 "1dd608c7g65s5lj02cddvani3q9kzirddgkjqa22ap9d4f8b9xgr"))))
b36fcf95 1959 (build-system gnu-build-system)
c2d512d3
EB
1960 (native-inputs
1961 `(("autoconf" ,autoconf)
1962 ("automake" ,automake)
1963 ("flex" ,flex)))
b36fcf95 1964 (arguments
c2d512d3
EB
1965 `(#:tests? #f ;no 'check' target
1966 #:phases (modify-phases %standard-phases
1967 (add-after 'unpack 'delete-configure
1968 ;; The "configure" script is present, but otherwise the
1969 ;; project is not bootstrapped: missing install-sh and
1970 ;; Makefile.in, so delete it so the bootstrap phase will
1971 ;; take over.
1972 (lambda _ (delete-file "configure") #t)))))
1973 (home-page "https://github.com/dharple/detox")
e881752c 1974 (synopsis "Clean up file names")
b36fcf95
EB
1975 (description
1976 "Detox is a program that renames files to make them easier to work with
1977under Unix and related operating systems. Spaces and various other unsafe
1978characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
1979characters can be replaced as well, as can UTF-8 characters.")
f61e0e79 1980 (license license:bsd-3)))
c4492a16
LC
1981
1982(define-public testdisk
1983 (package
1984 (name "testdisk")
2b336e93 1985 (version "7.1")
c4492a16
LC
1986 (source (origin
1987 (method url-fetch)
e14c06d8 1988 (uri (string-append "https://www.cgsecurity.org/testdisk-"
c4492a16
LC
1989 version ".tar.bz2"))
1990 (sha256
1991 (base32
2b336e93 1992 "1zlh44w67py416hkvw6nrfmjickc2d43v51vcli5p374d5sw84ql"))))
c4492a16
LC
1993 (build-system gnu-build-system)
1994 (inputs
d6a08ec0 1995 `(("ntfs-3g" ,ntfs-3g)
bb93042c 1996 ("util-linux" ,util-linux "lib")
cc2b77df 1997 ("openssl" ,openssl)
2b336e93 1998 ;; FIXME: add reiserfs.
f61e0e79 1999 ("zlib" ,zlib)
c4492a16 2000 ("e2fsprogs" ,e2fsprogs)
4bd428a7 2001 ("libjpeg" ,libjpeg-turbo)
c4492a16 2002 ("ncurses" ,ncurses)))
8fc46a43 2003 (home-page "https://www.cgsecurity.org/wiki/TestDisk")
c4492a16
LC
2004 (synopsis "Data recovery tool")
2005 (description
2006 "TestDisk is a program for data recovery, primarily designed to help
2007recover lost partitions and/or make non-booting disks bootable again.")
f61e0e79 2008 (license license:gpl2+)))
c4492a16 2009
15926aec
AS
2010(define-public tree
2011 (package
2012 (name "tree")
1e2ebf7c 2013 (version "1.8.0")
15926aec
AS
2014 (source (origin
2015 (method url-fetch)
2016 (uri (string-append
2017 "http://mama.indstate.edu/users/ice/tree/src/tree-"
2018 version ".tgz"))
2019 (sha256
1e2ebf7c 2020 (base32 "1hmpz6k0mr6salv0nprvm1g0rdjva1kx03bdf1scw8a38d5mspbi"))))
15926aec
AS
2021 (build-system gnu-build-system)
2022 (arguments
dc1d3cde 2023 '(#:phases (modify-phases %standard-phases (delete 'configure))
15926aec
AS
2024 #:tests? #f ; no check target
2025 #:make-flags (let ((out (assoc-ref %outputs "out")))
2026 (list (string-append "prefix=" out)))))
2027 (synopsis "Recursively list the contents of a directory")
2028 (description
2029 "Tree is a recursive directory listing command that produces a depth
2030indented listing of files, which is colorized ala dircolors if the LS_COLORS
2031environment variable is set and output is to tty.")
2032 (home-page "http://mama.indstate.edu/users/ice/tree/")
2033 (license license:gpl2+)))
2034
c2619e10
LC
2035(define-public direvent
2036 (package
2037 (name "direvent")
857ff515 2038 (version "5.2")
c2619e10
LC
2039 (source (origin
2040 (method url-fetch)
2041 (uri (string-append "mirror://gnu/direvent/direvent-"
2042 version ".tar.gz"))
2043 (sha256
2044 (base32
857ff515 2045 "0m9vi01b1km0cpknflyzsjnknbava0s1n6393b2bpjwyvb6j5613"))
c2619e10 2046 (modules '((guix build utils)))
6cbee49d
MW
2047 (snippet '(begin
2048 (substitute* "tests/testsuite"
2049 (("#![[:blank:]]?/bin/sh")
2050 "#!$SHELL"))
2051 #t))))
c2619e10
LC
2052 (build-system gnu-build-system)
2053 (arguments
dc1d3cde
KK
2054 '(#:phases
2055 (modify-phases %standard-phases
2056 (add-before 'build 'patch-/bin/sh
2057 (lambda* (#:key inputs #:allow-other-keys)
2058 ;; Use the right shell when executing the watcher and
2059 ;; user-provided shell commands.
2060 (let ((bash (assoc-ref inputs "bash")))
2061 (substitute* '("src/direvent.c" "src/progman.c")
2062 (("\"/bin/sh\"")
2063 (string-append "\"" bash "/bin/sh\"")))
2064
2065 ;; Adjust the 'shell.at' test accordingly.
2066 (substitute* "tests/testsuite"
2067 (("SHELL=/bin/sh")
2068 (string-append "SHELL=" bash "/bin/sh")))
2069
2070 #t))))))
1977e857 2071 (home-page "https://www.gnu.org.ua/software/direvent/")
c2619e10
LC
2072 (synopsis "Daemon to monitor directories for events such as file removal")
2073 (description
2074 "A daemon that monitors directories for events, such as creating,
35b9e423 2075deleting or modifying files. It can monitor different sets of directories for
c2619e10
LC
2076different events. When an event is detected, direvent calls a specified
2077external program with information about the event, such as the location
c5779c93
LC
2078within the file system where it occurred. Thus, \"direvent\" provides an
2079easy way to react immediately if given files undergo changes, for example, to
c2619e10 2080track changes in important system configuration files.")
f61e0e79 2081 (license license:gpl3+)))
da6c3749
TUBK
2082
2083(define-public libcap-ng
2084 (package
2085 (name "libcap-ng")
7090159c 2086 (version "0.8")
da6c3749
TUBK
2087 (source (origin
2088 (method url-fetch)
2089 (uri (string-append
eeb8b0e6 2090 "https://people.redhat.com/sgrubb/libcap-ng/libcap-ng-"
da6c3749
TUBK
2091 version ".tar.gz"))
2092 (sha256
2093 (base32
7090159c 2094 "08cy59iassiwbmfxa5v0kb374r80290vv32f5q1mnip11av26kgi"))))
da6c3749 2095 (build-system gnu-build-system)
dd935df2
TGR
2096 (arguments
2097 `(#:configure-flags
2098 (list "--without-python")))
4a2982a1 2099 (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
da6c3749
TUBK
2100 (synopsis "Library for more easily working with POSIX capabilities")
2101 (description
2102 "The libcap-ng library is intended to make programming with POSIX
2103capabilities easier than the traditional libcap library. It includes
2104utilities that can analyse all currently running applications and print out
2105any capabilities and whether or not it has an open ended bounding set. The
2106included utilities are designed to let admins and developers spot apps from
2107various ways that may be running with too much privilege.")
2108 ;; The library is lgpl2.1+, but also ships some utils which are gpl2+.
f61e0e79 2109 (license (list license:lgpl2.1+ license:gpl2+))))
d02f2cc4
TUBK
2110
2111(define-public smartmontools
2112 (package
2113 (name "smartmontools")
da7fde00 2114 (version "7.2")
d02f2cc4
TUBK
2115 (source (origin
2116 (method url-fetch)
2117 (uri (string-append
2118 "mirror://sourceforge/smartmontools/smartmontools/"
2119 version "/smartmontools-" version ".tar.gz"))
2120 (sha256
2121 (base32
da7fde00 2122 "1mlc25sd5rgj5xmzcllci47inmfdw7cp185fday6hc9rwqkqmnaw"))))
d02f2cc4
TUBK
2123 (build-system gnu-build-system)
2124 (inputs `(("libcap-ng" ,libcap-ng)))
51b6a1dd 2125 (home-page "https://www.smartmontools.org/")
d02f2cc4
TUBK
2126 (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
2127 (description
2128 "The smartmontools package contains utility programs to control and
2129monitor storage systems using the Self-Monitoring, Analysis and Reporting
c115b2db
TGR
2130Technology System (@dfn{S.M.A.R.T.}) built into most modern ATA and SCSI hard
2131disks. In many cases, these utilities will provide advanced warning of disk
d02f2cc4 2132degradation and failure.")
f61e0e79 2133 (license license:gpl2+)))
6efd0823
RW
2134
2135(define-public fdupes
2136 (package
2137 (name "fdupes")
5a9f2ae1 2138 (version "2.1.2")
6efd0823
RW
2139 (source
2140 (origin
5a9f2ae1
TGR
2141 (method url-fetch)
2142 (uri (string-append "https://github.com/adrianlopezroche/fdupes/"
2143 "releases/download/v" version "/"
2144 "fdupes-" version ".tar.gz"))
6efd0823 2145 (sha256
5a9f2ae1 2146 (base32 "1g9p50xhi2sp0hqxml4w2k0kq9jv988q2yxm347z5349dlxvap6d"))))
6efd0823 2147 (build-system gnu-build-system)
5a9f2ae1
TGR
2148 (inputs
2149 `(("ncurses" ,ncurses)
2150 ("pcre2" ,pcre2)))
6efd0823
RW
2151 (home-page "https://github.com/adrianlopezroche/fdupes")
2152 (synopsis "Identify duplicate files")
2153 (description
2154 "fdupes is a program for identifying duplicate files residing within
2155specified directories.")
2156 (license license:expat)))
4ecfbda7
DT
2157
2158(define-public graphios
2159 (package
2160 (name "graphios")
2161 (version "2.0.3")
2162 (source
2163 (origin
2164 (method url-fetch)
4267aa75 2165 (uri (pypi-uri "graphios" version))
4ecfbda7
DT
2166 (sha256
2167 (base32
2168 "1h87hvc315wg6lklbf4l7csd3n5pgljwrfli1p3nasdi0izgn66i"))))
2169 (build-system python-build-system)
2170 (arguments
2171 ;; Be warned: Building with Python 3 succeeds, but the build process
2172 ;; throws a syntax error that is ignored.
2173 `(#:python ,python-2
2174 #:phases
2175 (modify-phases %standard-phases
2176 (add-before 'build 'fix-setup.py
2177 (lambda* (#:key outputs #:allow-other-keys)
2178 ;; Fix hardcoded, unprefixed file names.
2179 (let ((out (assoc-ref outputs "out")))
2180 (substitute* '("setup.py")
2181 (("/etc") (string-append out "/etc"))
2182 (("/usr") out)
2183 (("distro_ver = .*") "distro_ver = ''"))
2184 #t))))))
4ecfbda7
DT
2185 (home-page "https://github.com/shawn-sterling/graphios")
2186 (synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
2187 (description
2188 "Graphios is a script to emit nagios perfdata to various upstream metrics
2189processing and time-series systems. It's currently compatible with Graphite,
2190Statsd, Librato and InfluxDB. Graphios can emit Nagios metrics to any number
2191of supported upstream metrics systems simultaneously.")
2192 (license license:gpl2+)))
8d801045
ED
2193
2194(define-public ansible
2195 (package
2196 (name "ansible")
b2b77d86 2197 (version "2.9.16")
8d801045
ED
2198 (source
2199 (origin
2200 (method url-fetch)
697e86dd 2201 (uri (pypi-uri "ansible" version))
8d801045 2202 (sha256
b2b77d86 2203 (base32 "0j1icfqff25zm9sq6j41ipl6gcj3i67mb5bqbjf2f2q1yx6rm8sk"))))
8d801045
ED
2204 (build-system python-build-system)
2205 (native-inputs
504e26ed
KB
2206 `(("python-bcrypt" ,python-bcrypt)
2207 ("python-pynacl" ,python-pynacl)
2208 ("python-httplib2" ,python-httplib2)
2209 ("python-passlib" ,python-passlib)
2210 ("python-nose" ,python-nose)
2211 ("python-mock" ,python-mock)
2212 ("python-jinja2" ,python-jinja2)
2213 ("python-pyyaml" ,python-pyyaml)
2214 ("python-paramiko" ,python-paramiko)))
8d801045 2215 (inputs
504e26ed
KB
2216 `(("python-cryptography" ,python-cryptography)
2217 ("python-jinja2" ,python-jinja2)
2218 ("python-pyyaml" ,python-pyyaml)
2219 ("python-paramiko" ,python-paramiko)))
01cb4d47
AI
2220 (arguments
2221 `(#:phases
2222 (modify-phases %standard-phases
2223 ;; Several ansible commands (ansible-config, ansible-console, etc.)
2224 ;; are just symlinks to a single ansible executable. The ansible
2225 ;; executable behaves differently based on the value of
2226 ;; sys.argv[0]. This does not work well with our wrap phase, and
2227 ;; therefore the following two phases are required as a workaround.
2228 (add-after 'unpack 'hide-wrapping
2229 (lambda _
2230 ;; Overwrite sys.argv[0] to hide the wrapper script from it.
2231 (substitute* "bin/ansible"
2232 (("import traceback" all)
2233 (string-append all "
2234import re
2235sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
2236")))
2237 #t))
ba8551ec 2238 (add-after 'install 'replace-symlinks
01cb4d47 2239 (lambda* (#:key outputs #:allow-other-keys)
ba8551ec
AI
2240 ;; Replace symlinks with duplicate copies of the ansible
2241 ;; executable.
01cb4d47
AI
2242 (let ((out (assoc-ref outputs "out")))
2243 (for-each
2244 (lambda (subprogram)
ba8551ec
AI
2245 (delete-file (string-append out "/bin/ansible-" subprogram))
2246 (copy-file (string-append out "/bin/ansible")
2247 (string-append out "/bin/ansible-" subprogram)))
01cb4d47
AI
2248 (list "config" "console" "doc" "galaxy"
2249 "inventory" "playbook" "pull" "vault")))
2250 #t)))))
ff18d0f1 2251 (home-page "https://www.ansible.com/")
8d801045
ED
2252 (synopsis "Radically simple IT automation")
2253 (description "Ansible is a radically simple IT automation system. It
e22473ff
TGR
2254handles configuration management, application deployment, cloud provisioning,
2255ad hoc task execution, and multinode orchestration---including trivializing
2256things like zero-downtime rolling updates with load balancers.")
8d801045 2257 (license license:gpl3+)))
44157e9f 2258
6eb1d20b
HG
2259(define-public debops
2260 (package
2261 (name "debops")
2262 (version "1.1.0")
2263 (source
2264 (origin
2265 (method git-fetch)
2266 (uri (git-reference
2267 (url "https://github.com/debops/debops")
2268 (commit (string-append "v" version))))
2269 (file-name (git-file-name name version))
2270 (sha256
2271 (base32 "052b2dykdn35pdpn9s4prawl6nl6yzih8nyf54hpvhpisvjrm1v5"))
2272 (patches
2273 (search-patches "debops-constants-for-external-program-names.patch"
2274 "debops-debops-defaults-fall-back-to-less.patch"))))
2275 (build-system python-build-system)
2276 (native-inputs
2277 `(("git" ,git)))
2278 (inputs
2279 `(("ansible" ,ansible)
2280 ("encfs" ,encfs)
2281 ("fuse" ,fuse)
2282 ("util-linux" ,util-linux) ;; for umount
2283 ("findutils" ,findutils)
2284 ("gnupg" ,gnupg)
2285 ("which" ,which)))
2286 (propagated-inputs
2287 `(("python-future" ,python-future)
2288 ("python-distro" ,python-distro)))
2289 (arguments
2290 `(#:tests? #f
2291 #:phases
2292 (modify-phases %standard-phases
2293 (add-after 'unpack 'nuke-debops-update
2294 (lambda _
2295 (chmod "bin/debops-update" #o755) ; FIXME work-around git-fetch issue
2296 (with-output-to-file "bin/debops-update"
2297 (lambda ()
2298 (format #t "#!/bin/sh
2299echo 'debops is installed via guix. guix-update is useless in this case.
2300Please use `guix package -u debops` instead.'")))
2301 #t))
2302 ;; patch shebangs only in actuall scripts, not in files included in
2303 ;; roles (which are to be delivered to the targte systems)
2304 (delete `patch-generated-file-shebangs)
2305 (replace 'patch-source-shebangs
2306 (lambda _
2307 (for-each patch-shebang
2308 (find-files "bin"
2309 (lambda (file stat)
2310 ;; Filter out symlinks.
2311 (eq? 'regular (stat:type stat)))
2312 #:stat lstat))))
2313 (add-after 'unpack 'fix-paths
2314 (lambda _
2315 (define (substitute-program-names file)
2316 ;; e.g. ANSIBLE_PLAYBOOK = '/gnu/store/…/bin/ansible-playbook'
2317 (for-each
2318 (lambda (name)
2319 (let ((varname (string-upcase
2320 (string-map
2321 (lambda (c) (if (char=? c #\-) #\_ c))
2322 name))))
2323 (substitute* file
2324 (((string-append "^(" varname " = )'.*'") line prefix)
2325 (string-append prefix "'" (which name) "'")))))
2326 '("ansible-playbook" "encfs" "find" "fusermount"
2327 "umount" "gpg" "ansible" "which")))
2328 (for-each substitute-program-names
2329 '("bin/debops"
2330 "bin/debops-padlock"
2331 "bin/debops-task"
2332 "debops/__init__.py"
2333 "debops/cmds/__init__.py"))
2334 #t)))))
2335 (home-page "https://www.debops.org/")
2336 (synopsis "Collection of general-purpose Ansible roles")
2337 (description "The Ansible roles provided by that can be used to manage
2338Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can
2339be used to apply the provided roles in a controlled way, using Ansible
2340inventory groups.
2341
2342The roles are written with a high customization in mind, which can be done
2343using Ansible inventory. This way the role and playbook code can be shared
2344between multiple environments, with different configuration in to each one.
2345
2346Services can be managed on a single host, or spread between multiple hosts.
2347DebOps provides support for different SQL and NoSQL databases, web servers,
2348programming languages and specialized applications useful in a data center
2349environment or in a cluster. The project can also be used to deploy
2350virtualization environments using KVM/libvirt, Docker or LXC technologies to
2351manage virtual machines and/or containers.")
2352 (license license:gpl3+)))
2353
2b6164f0
OP
2354(define-public emacs-ansible-doc
2355 (let ((commit "86083a7bb2ed0468ca64e52076b06441a2f8e9e0"))
2356 (package
2357 (name "emacs-ansible-doc")
2358 (version (git-version "0.4" "1" commit))
2359 (source
2360 (origin
2361 (method git-fetch)
2362 (uri (git-reference
2363 (url "https://github.com/lunaryorn/ansible-doc.el")
2364 (commit commit)))
2365 (file-name (git-file-name name version))
2366 (sha256
2367 (base32
2368 "0lap404ch74w99n3xip176jr42b38xhyzkfnkyqg0g3wk2cd3aq8"))))
2369 (build-system emacs-build-system)
2370 ;; Unmaintained by upstream.
2371 (home-page "https://github.com/lunaryorn/ansible-doc.el")
2372 (synopsis "Ansible documentation for Emacs")
2373 (description
2374 "This package provides an Ansible documentation for GNU Emacs.
2375
2376@code{ansible-doc} allows you to view the documentation of an Ansible
2377module and @code{ansible-doc-mode} minor mode adds documentation
2378lookup to YAML Mode. You could enable the mode with @code{(add-hook
2379'yaml-mode-hook #'ansible-doc-mode)}.")
2380 (license license:gpl3+))))
2381
44157e9f
EB
2382(define-public cpulimit
2383 (package
2384 (name "cpulimit")
2385 (version "0.2")
2386 (source
2387 (origin
aa372292
TGR
2388 (method git-fetch)
2389 (uri (git-reference
b0e7b699 2390 (url "https://github.com/opsengine/cpulimit")
aa372292
TGR
2391 (commit (string-append "v" version))))
2392 (file-name (git-file-name name version))
44157e9f 2393 (sha256
aa372292 2394 (base32 "1dz045yhcsw1rdamzpz4bk8mw888in7fyqk1q1b3m1yk4pd1ahkh"))))
44157e9f
EB
2395 (build-system gnu-build-system)
2396 (arguments
2397 `(#:phases (modify-phases %standard-phases
2398 (delete 'configure)
cb8ba848 2399 (replace 'build
6e26bd5b
EF
2400 (lambda* (#:key make-flags #:allow-other-keys)
2401 (apply invoke "make" "-Csrc" make-flags)))
cb8ba848 2402 (replace 'check
d4560e0b
EF
2403 (lambda* (#:key tests? make-flags #:allow-other-keys)
2404 (when tests?
2405 (apply invoke "make" "-Ctests" make-flags))
2406 #t))
cb8ba848
MW
2407 (replace 'install
2408 (lambda* (#:key outputs #:allow-other-keys)
2409 (let* ((out (assoc-ref outputs "out"))
2410 (bin (string-append out "/bin")))
2411 (install-file "src/cpulimit" bin))
6e26bd5b
EF
2412 #t)))
2413 #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
44157e9f
EB
2414 (home-page "https://github.com/opsengine/cpulimit")
2415 (synopsis "Limit CPU usage")
2416 (description
2417 "Cpulimit limits the CPU usage of a process. It does not change the nice
2418value or other scheduling priority settings, but the real CPU usage, and is
2419able to adapt itself dynamically to the overall system load. Children
2420processes and threads of the specified process may optionally share the same
2421limits.")
2422 (license license:gpl2+)))
2328b47c
EB
2423
2424(define-public autojump
2425 (package
2426 (name "autojump")
0e684357 2427 (version "22.5.3")
2328b47c
EB
2428 (source
2429 (origin
24d459ce
TGR
2430 (method git-fetch)
2431 (uri (git-reference
b0e7b699 2432 (url "https://github.com/wting/autojump")
24d459ce
TGR
2433 (commit (string-append "release-v" version))))
2434 (file-name (git-file-name name version))
2328b47c 2435 (sha256
0e684357 2436 (base32 "1rgpsh70manr2dydna9da4x7p8ahii7dgdgwir5fka340n1wrcws"))))
2328b47c 2437 (build-system gnu-build-system)
24d459ce 2438 (native-inputs ; for tests
2328b47c
EB
2439 `(("python-mock" ,python-mock)
2440 ("python-pytest" ,python-pytest)))
2441 (inputs
2442 `(("python" ,python-wrapper)))
2443 (arguments
eb9dda9c
KK
2444 `(#:phases
2445 (modify-phases %standard-phases
24d459ce
TGR
2446 (add-after 'unpack 'make-git-checkout-writable
2447 ;; ‘install.py’ modifies files before installing them.
2448 (lambda _
2449 (for-each make-file-writable (find-files "."))
2450 #t))
eb9dda9c
KK
2451 (delete 'configure)
2452 (delete 'build)
2453 (replace 'check
2454 (lambda _
2455 (invoke "python" "tests/unit/autojump_utils_test.py")))
2456 (replace 'install
2457 (lambda* (#:key outputs #:allow-other-keys)
2458 (setenv "SHELL" (which "bash"))
2459 (invoke "python" "install.py"
2460 (string-append "--destdir="
2461 (assoc-ref outputs "out"))))))))
2328b47c 2462 (home-page "https://github.com/wting/autojump")
8f65585b 2463 (synopsis "Shell extension for file system navigation")
2328b47c 2464 (description
8f65585b 2465 "Autojump provides a faster way to navigate your file system, with a \"cd
2328b47c
EB
2466command that learns\". It works by maintaining a database of the directories
2467you use the most from the command line and allows you to \"jump\" to
2468frequently used directories by typing only a small pattern.")
2469 (license license:gpl3+)))
765973cd 2470
1ca0ac1e
EB
2471(define-public fasd
2472 (package
2473 (name "fasd")
2474 (version "1.0.1")
2475 (source (origin
2476 (method git-fetch)
2477 (uri (git-reference
b0e7b699 2478 (url "https://github.com/clvv/fasd")
1ca0ac1e
EB
2479 (commit version)))
2480 (file-name (git-file-name name version))
2481 (sha256
2482 (base32
2483 "1awi71jdv3mhjrmar2d4z1i90kn7apd7aq1w31sh6w4yibz9kiyj"))))
2484 (build-system gnu-build-system)
2485 (arguments
2486 `(#:phases (modify-phases %standard-phases
2487 (delete 'configure)) ;no configuration
2488 #:tests? #f ;no tests
2489 #:make-flags (list (string-append "PREFIX=" %output))))
2490 (home-page "https://github.com/clvv/fasd")
2491 (synopsis "Quick access to files and directories for shells")
2492 (description
2493 "Fasd (pronounced similar to \"fast\") is a command-line productivity
2494booster. Fasd offers quick access to files and directories for POSIX shells.
2495It is inspired by tools like autojump, z, and v. Fasd keeps track of files
2496and directories you have accessed so that you can quickly reference them in
2497the command line.")
2498 (license license:x11)))
2499
765973cd
LF
2500(define-public iftop
2501 (package
2502 (name "iftop")
2503 (version "1.0pre4")
2504 (source (origin
2505 (method url-fetch)
2506 (uri (string-append "http://www.ex-parrot.com/~pdw/iftop/download"
2507 "/iftop-" version ".tar.gz"))
2508 (sha256
2509 (base32
2510 "15sgkdyijb7vbxpxjavh5qm5nvyii3fqcg9mzvw7fx8s6zmfwczp"))))
2511 (build-system gnu-build-system)
2512 (inputs
2513 `(("libpcap" ,libpcap)
2514 ("ncurses" ,ncurses)))
2515 (synopsis "Monitor network usage")
2516 (description "Iftop does for network usage what @command{top} does
2517for CPU usage. It listens to network traffic on a named interface and
2518displays a table of current bandwidth usage by pairs of hosts.")
2519 (home-page "http://www.ex-parrot.com/~pdw/iftop/")
d4e21fbb 2520 (license license:gpl2+)))
f1957fc1
PP
2521
2522(define-public munge
2523 (package
2524 (name "munge")
5ee0e013 2525 (version "0.5.14")
f1957fc1
PP
2526 (source (origin
2527 (method url-fetch)
b52ae4de
EF
2528 (uri (string-append "https://github.com/dun/munge/releases/"
2529 "download/munge-" version "/munge-"
2530 version ".tar.xz"))
f1957fc1
PP
2531 (sha256
2532 (base32
5ee0e013 2533 "0h06sghb4rqvv1ywyd6mzsmbcgh712v6ygrff0gzm440y4ca41k6"))
8d080506
LC
2534 (modules '((guix build utils)))
2535 (snippet
2536 '(begin
2537 ;; Don't insist on write access to /var.
2538 (substitute* "src/etc/Makefile.in"
2539 (("\\$\\(INSTALL\\)(.*)localstatedir" _ middle)
5ee0e013
TGR
2540 (string-append "-$(INSTALL)" middle "localstatedir"))
2541 (("\\$\\(MKDIR_P\\) .*(local|run)statedir.*")
2542 ""))
8d080506 2543 #t))))
f1957fc1
PP
2544 (inputs
2545 `(("openssl" ,openssl)
2546 ("libgcrypt" ,libgcrypt)))
2547 (build-system gnu-build-system)
5ee0e013
TGR
2548 (arguments
2549 '(#:configure-flags
2550 (list "--localstatedir=/var"
2551 (string-append "--with-pkgconfigdir="
2552 (assoc-ref %outputs "out") "/lib/pkgconfig"))
2553 #:phases
2554 (modify-phases %standard-phases
2555 ;; XXX Many test series fail. Some might be fixable, others do no-no
2556 ;; things like invoking ‘sudo’.
2557 (add-after 'unpack 'skip-failing-tests
2558 (lambda _
2559 (for-each (lambda (test)
2560 (substitute* "t/Makefile.in"
2561 (((string-append test "\\.t ")) "")))
2562 (list "0100-munged-lock"
2563 "0010-basic"
2564 "0011-munged-cmdline"
2565 "0012-munge-cmdline"
2566 "0013-unmunge-cmdline"
2567 "0101-munged-security-socket"
2568 "0102-munged-security-keyfile"
2569 "0103-munged-security-logfile"
2570 "0110-munged-origin-addr"))
2571 #t)))))
b52ae4de 2572 (home-page "https://dun.github.io/munge/")
f1957fc1
PP
2573 (synopsis "Cluster computing authentication service")
2574 (description
2575 "Munge is an authentication service for creating and validating
2576credentials. It allows a process to authenticate the UID and GID of another
2577local or remote process within a group of hosts having common users and
2578groups. These hosts form a security realm that is defined by a shared
2579cryptographic key. Clients within this security realm can create and validate
2580credentials without the use of root privileges, reserved ports, or
2581platform-specific methods.")
2582 (license license:gpl3+)))
3d7a157c
RW
2583
2584(define-public audit
2585 (package
2586 (name "audit")
00f81f83 2587 (home-page "https://people.redhat.com/sgrubb/audit/")
b4e1f1ae 2588 (version "2.8.5")
3d7a157c
RW
2589 (source (origin
2590 (method url-fetch)
fe2f0166 2591 (uri (string-append home-page "audit-" version ".tar.gz"))
3d7a157c
RW
2592 (sha256
2593 (base32
b4e1f1ae 2594 "1dzcwb2q78q7x41shcachn7f4aksxbxd470yk38zh03fch1l2p8f"))))
3d7a157c 2595 (build-system gnu-build-system)
3d7a157c 2596 (arguments
8938b369
MB
2597 `(#:configure-flags (list "--with-python=no"
2598 "--disable-static")))
3d7a157c
RW
2599 (inputs
2600 `(("openldap" ,openldap)
1bafad56 2601 ("gnutls" ,gnutls)
3d7a157c
RW
2602 ("sasl" ,cyrus-sasl)))
2603 (synopsis "User-space component to the Linux auditing system")
2604 (description
2605 "auditd is the user-space component to the Linux auditing system, which
2606allows logging of system calls made by user-land processes. It's responsible
2607for writing audit records to the disk. Viewing the logs is done with the
2608@code{ausearch} or @code{aureport} utilities. Configuring the audit rules is
2609done with the @code{auditctl} utility.")
2610 (license license:gpl2+)))
d0457553
TUBK
2611
2612(define-public nmap
2613 (package
2614 (name "nmap")
86fec62f 2615 (version "7.80")
d0457553
TUBK
2616 (source (origin
2617 (method url-fetch)
2618 (uri (string-append "https://nmap.org/dist/nmap-" version
2619 ".tar.bz2"))
2620 (sha256
2621 (base32
86fec62f 2622 "1aizfys6l9f9grm82bk878w56mg0zpkfns3spzj157h98875mypw"))
d0457553
TUBK
2623 (modules '((guix build utils)))
2624 (snippet
6cbee49d
MW
2625 '(begin
2626 (for-each delete-file-recursively
2627 ;; Remove bundled lua, pcap, and pcre libraries.
2628 ;; FIXME: Remove bundled liblinear once packaged.
2629 '("liblua"
2630 "libpcap"
2631 "libpcre"
2632 ;; Remove pre-compiled binares.
2633 "mswin32"))
2634 #t))))
d0457553
TUBK
2635 (build-system gnu-build-system)
2636 (inputs
2637 `(("openssl" ,openssl)
2638 ("libpcap" ,libpcap)
2639 ("pcre" ,pcre)
2640 ("lua" ,lua)
069d0b7f
MB
2641 ("zlib" ,zlib) ;for NSE compression support
2642
d0457553
TUBK
2643 ;; For 'ndiff'.
2644 ("python" ,python-2)))
2645
2646 ;; TODO Add zenmap output.
2647 (outputs '("out" "ndiff"))
2648 (arguments
cc729d25 2649 `(#:configure-flags '("--without-zenmap")
d0457553
TUBK
2650 #:phases
2651 (modify-phases %standard-phases
f4dc22bc
MB
2652 (add-after 'configure 'patch-Makefile
2653 (lambda _
2654 (substitute* "Makefile"
2655 ;; Do not attempt to build lua.
2656 (("build-dnet build-lua") "build-dnet"))
2657 #t))
d0457553
TUBK
2658 (replace 'install
2659 (lambda* (#:key outputs #:allow-other-keys)
2660 (define (make out . args)
cb8ba848
MW
2661 (apply invoke "make"
2662 (string-append "prefix=" out)
2663 args))
d0457553 2664 (define (python-path dir)
cc729d25
EF
2665 (string-append dir "/lib/python"
2666 ,(version-major+minor
2667 (package-version python))
2668 "/site-packages"))
d0457553
TUBK
2669 (let ((out (assoc-ref outputs "out"))
2670 (ndiff (assoc-ref outputs "ndiff")))
2671 (for-each mkdir-p (list out ndiff))
2672 (make out
2673 "install-nmap"
2674 "install-nse"
2675 "install-ncat"
2676 "install-nping")
2677 (make ndiff "install-ndiff")
2678 (wrap-program (string-append ndiff "/bin/ndiff")
2679 `("PYTHONPATH" prefix
cb8ba848
MW
2680 (,(python-path ndiff)))))
2681 #t))
d0457553
TUBK
2682 ;; These are the tests that do not require network access.
2683 (replace 'check
cb8ba848
MW
2684 (lambda _ (invoke "make"
2685 "check-nse"
2686 "check-ndiff"
2687 "check-dns"))))
d0457553
TUBK
2688 ;; Nmap can't cope with out-of-source building.
2689 #:out-of-source? #f))
2690 (home-page "https://nmap.org/")
2691 (synopsis "Network discovery and security auditing tool")
2692 (description
2693 "Nmap (\"Network Mapper\") is a network discovery and security auditing
2694tool. It is also useful for tasks such as network inventory, managing service
2695upgrade schedules, and monitoring host or service uptime. It also provides an
2696advanced netcat implementation (ncat), a utility for comparing scan
2697results (ndiff), and a packet generation and response analysis tool (nping).")
2698 ;; This package uses nmap's bundled versions of libdnet and liblinear, which
2699 ;; both use a 3-clause BSD license.
2dba37e2 2700 (license (list license:nmap license:bsd-3))))
1a0346f0
P
2701
2702(define-public dstat
2703 (package
2704 (name "dstat")
ad20da2e 2705 (version "0.7.4")
fc204d24
TGR
2706 (source
2707 (origin
2708 (method git-fetch)
2709 (uri (git-reference
e620447f 2710 (url "https://github.com/dstat-real/dstat")
ad20da2e 2711 (commit (string-append "v" version))))
fc204d24
TGR
2712 (file-name (git-file-name "dstat" version))
2713 (sha256
10a32973
TGR
2714 (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))
2715 (patches (search-patches "dstat-fix-crash-when-specifying-delay.patch"
2716 "dstat-skip-devices-without-io.patch"))))
1a0346f0
P
2717 (build-system gnu-build-system)
2718 (arguments
fc204d24 2719 `(#:tests? #f ; no make check
5c8e8bc5
TGR
2720 #:make-flags
2721 (list (string-append "prefix=" (assoc-ref %outputs "out")))
5cc5364e
TGR
2722 #:phases
2723 (modify-phases %standard-phases
fa67073f
TGR
2724 (add-after 'unpack 'fix-python3-DeprecationWarning
2725 (lambda _
2726 (substitute* "dstat"
2727 (("collections") "collections.abc"))
2728 #t))
5cc5364e
TGR
2729 (delete 'configure) ; no configure script
2730 (add-after 'install 'wrap
2731 (lambda* (#:key outputs #:allow-other-keys)
2732 (let ((out (assoc-ref outputs "out")))
2733 (wrap-program (string-append out "/bin/dstat")
2734 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
2735 #t))))))
2736 (inputs
5cc5364e
TGR
2737 `(("python" ,python-wrapper)
2738 ("python-six" ,python-six)))
1a0346f0
P
2739 (synopsis "Versatile resource statistics tool")
2740 (description "Dstat is a versatile replacement for @command{vmstat},
2741@command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
2742some of their limitations and adds some extra features, more counters and
2743flexibility. Dstat is handy for monitoring systems during performance tuning
2744tests, benchmarks or troubleshooting.
2745
2746Dstat allows you to view all of your system resources in real-time, you can,
2747e.g., compare disk utilization in combination with interrupts from your IDE
2748controller, or compare the network bandwidth numbers directly with the disk
2749throughput (in the same interval).")
2750 (home-page "http://dag.wiee.rs/home-made/dstat/")
c59f62e9 2751 (license license:gpl2+)))
0405e5f4
EB
2752
2753(define-public thefuck
2754 (package
2755 (name "thefuck")
a48cf78a 2756 (version "3.30")
a0c693e1
TGR
2757 (source
2758 (origin
2759 (method git-fetch)
2760 (uri (git-reference
b0e7b699 2761 (url "https://github.com/nvbn/thefuck")
a0c693e1
TGR
2762 (commit version)))
2763 (file-name (git-file-name name version))
2764 (sha256
a48cf78a 2765 (base32 "0fnf78956pwhb9cgv1jmgypnkma5xzflkivfrkfiadbgin848yfg"))
a0c693e1 2766 (patches (search-patches "thefuck-test-environ.patch"))))
0405e5f4 2767 (build-system python-build-system)
1c1b67a3 2768 (arguments
bf5b6fb2
EB
2769 '(#:phases
2770 (modify-phases %standard-phases
2771 (delete 'check)
2772 (add-after 'install 'check
2773 (lambda* (#:key inputs outputs #:allow-other-keys)
2774 ;; Tests look for installed package
2775 (add-installed-pythonpath inputs outputs)
2776 ;; Some tests need write access to $HOME.
2777 (setenv "HOME" "/tmp")
2216b6f4
TGR
2778 (invoke "py.test" "-v")
2779 #t)))))
1c1b67a3 2780 (propagated-inputs
0405e5f4
EB
2781 `(("python-colorama" ,python-colorama)
2782 ("python-decorator" ,python-decorator)
2783 ("python-psutil" ,python-psutil)
2468ca04 2784 ("python-pyte" ,python-pyte)
0405e5f4 2785 ("python-six" ,python-six)))
2d1ac1d1 2786 (native-inputs
a48cf78a
TGR
2787 `(("go" ,go)
2788 ("python-mock" ,python-mock)
1c1b67a3 2789 ("python-pytest" ,python-pytest)
2468ca04 2790 ("python-pytest-mock" ,python-pytest-mock)))
0405e5f4
EB
2791 (home-page "https://github.com/nvbn/thefuck")
2792 (synopsis "Correct mistyped console command")
2793 (description
2794 "The Fuck tries to match a rule for a previous, mistyped command, creates
2795a new command using the matched rule, and runs it.")
2796 (license license:x11)))
61402398
JF
2797
2798(define-public di
2799 (package
2800 (name "di")
cfec1af9 2801 (version "4.48")
61402398
JF
2802 (source
2803 (origin
2804 (method url-fetch)
2805 (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz"))
2806 (sha256
cfec1af9 2807 (base32 "0crvvfsxh8ryc0j19a2x52i9zacvggm8zi6j3kzygkcwnpz4km8r"))))
61402398
JF
2808 (build-system gnu-build-system)
2809 (arguments
ad9baf38 2810 `(#:tests? #f ; obscure test failures
61402398
JF
2811 #:phases
2812 (modify-phases %standard-phases
ad9baf38 2813 (delete 'configure) ; no configure script
61402398
JF
2814 (add-before 'build 'setup-environment
2815 (lambda* (#:key outputs #:allow-other-keys)
aba98be5 2816 (setenv "CC" ,(cc-for-target))
61402398
JF
2817 (setenv "prefix" (assoc-ref outputs "out"))
2818 #t)))
2819 #:make-flags (list "--environment-overrides")))
f76c16d2 2820 (home-page "https://gentoo.com/di/")
61402398
JF
2821 (synopsis "Advanced df like disk information utility")
2822 (description
36a4366d 2823 "@code{di} is a disk information utility, displaying everything that your
26c6de8b
TGR
2824@code{df} command does and more. It features the ability to display your disk
2825usage in whatever format you prefer. It is designed to be highly portable and
2826produce uniform output across heterogeneous networks.")
61402398 2827 (license license:zlib)))
5ec8b02d 2828
2829(define-public cbatticon
2830 (package
2831 (name "cbatticon")
50db7df4 2832 (version "1.6.10")
d8d910e6
TGR
2833 (source
2834 (origin
2835 (method git-fetch)
2836 (uri (git-reference
b0e7b699 2837 (url "https://github.com/valr/cbatticon")
d8d910e6
TGR
2838 (commit version)))
2839 (sha256
50db7df4 2840 (base32 "0ivm2dzhsa9ir25ry418r2qg2llby9j7a6m3arbvq5c3kaj8m9jr"))
d8d910e6 2841 (file-name (git-file-name name version))))
5ec8b02d 2842 (build-system gnu-build-system)
2843 (arguments
d8d910e6 2844 `(#:tests? #f ; no tests
5ec8b02d 2845 #:make-flags
2846 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2847 "CC=gcc")
2848 #:phases
2849 (modify-phases %standard-phases
d8d910e6 2850 (delete 'configure)))) ; no configure script
5ec8b02d 2851 (inputs
2852 `(("gtk+" ,gtk+)
b94a6ca0 2853 ("gettext" ,gettext-minimal)
5ec8b02d 2854 ("libnotify" ,libnotify)))
2855 (native-inputs
2856 `(("pkg-config" ,pkg-config)))
2857 (synopsis "Lightweight battery icon for the system tray")
2858 (description "cbatticon is a lightweight battery icon that displays
2859the status of your battery in the system tray.")
2860 (home-page "https://github.com/valr/cbatticon")
2861 (license license:gpl2+)))
c08533b2 2862
2863(define-public interrobang
2864 (let ((revision "1")
2865 (commit "896543735e1c99144765fdbd7b6e6b5afbd8b881"))
2866 (package
2867 (name "interrobang")
807a3099
TGR
2868 (version (git-version "0.0.0" revision commit))
2869 (source
2870 (origin
2871 (method git-fetch)
2872 (uri (git-reference
b0e7b699 2873 (url "https://github.com/TrilbyWhite/interrobang")
807a3099
TGR
2874 (commit commit)))
2875 (file-name (git-file-name name version))
2876 (sha256
2877 (base32 "1n13m70p1hfba5dy3i8hfclbr6k9q3d9dai3dg4jvhdhmxcpjzdf"))))
c08533b2 2878 (build-system gnu-build-system)
2879 (arguments
807a3099 2880 `(#:tests? #f ; no tests
c08533b2 2881 #:phases
2882 (modify-phases %standard-phases
807a3099 2883 (delete 'configure)) ; no configure script
c08533b2 2884 #:make-flags (list (string-append "PREFIX="
2885 (assoc-ref %outputs "out")))))
2886 (inputs
2887 `(("libx11" ,libx11)))
2888 (native-inputs
2889 `(("pkg-config" ,pkg-config)))
2890 (synopsis "Scriptable launcher menu")
2891 (description "Interrobang is a scriptable launcher menu with a customizable
2892shortcut syntax and completion options.")
2893 (home-page "https://github.com/TrilbyWhite/interrobang")
2894 (license license:gpl3+))))
94c5dc8c 2895
94c5dc8c
JD
2896(define-public pam-krb5
2897 (package
2898 (name "pam-krb5")
0e6c242b 2899 (version "4.8")
94c5dc8c
JD
2900 (source (origin
2901 (method url-fetch)
ed683219
EF
2902 (uri
2903 (list (string-append
2904 "https://archives.eyrie.org/software/kerberos/"
2905 "pam-krb5-" version ".tar.xz")
2906 (string-append
2907 "https://archives.eyrie.org/software/ARCHIVE/"
2908 "pam-krb5/pam-krb5-" version ".tar.xz")))
653a51cb 2909 (patches (search-patches "pam-krb5-CVE-2020-10595.patch"))
94c5dc8c
JD
2910 (sha256
2911 (base32
0e6c242b 2912 "1qjp8i1s9bz7g6kiqrkzzkxn5pfspa4sy53b6z40fqmdf9przdfb"))))
94c5dc8c
JD
2913 (build-system gnu-build-system)
2914 (arguments
2915 `(#:phases
2916 (modify-phases %standard-phases
2917 (add-before 'configure 'disable-tests
2918 (lambda _
2919 ;; The build container seems to interfere with some tests.
2920 (substitute* "tests/TESTS"
2921 (("module/basic\n") ""))
2922 (substitute* "tests/TESTS"
2923 (("pam-util/vector\n") ""))
2924 #t)))))
2925 (inputs
2926 `(("linux-pam" ,linux-pam)
2927 ("mit-krb5" ,mit-krb5)))
2928 (native-inputs
2929 `(("perl" ,perl)
2930 ("perl-test-pod" ,perl-test-pod))) ; required for tests
2931 (synopsis "Kerberos PAM module")
2932 (description
2933 "Pam-krb5 is a Kerberos PAM module for either MIT Kerberos or Heimdal.
2934It supports ticket refreshing by screen savers, configurable
2935authorization handling, authentication of non-local accounts for network
2936services, password changing, and password expiration, as well as all the
2937standard expected PAM features. It works correctly with OpenSSH, even
45298300
TGR
2938with @code{ChallengeResponseAuthentication} and @code{PrivilegeSeparation}
2939enabled, and supports extensive configuration either by PAM options or in
94c5dc8c
JD
2940krb5.conf or both. PKINIT is supported with recent versions of both MIT
2941Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
ed683219 2942 (home-page "https://www.eyrie.org/~eagle/software/pam-krb5/")
94c5dc8c
JD
2943 ;; Dual licenced under a homebrew non-copyleft OR GPL (any version)
2944 ;; However, the tarball does not contain a copy of the GPL, so unless
2945 ;; we put one in, we cannot distribute it under GPL without violating
2946 ;; clause requiring us to give all recipients a copy.
2947 (license license:gpl1+)))
2948
208e7434 2949(define (sunxi-tools-source version)
b04ca7a1 2950 (origin
43eb601f
TGR
2951 (method git-fetch)
2952 (uri (git-reference
b0e7b699 2953 (url "https://github.com/linux-sunxi/sunxi-tools")
43eb601f 2954 (commit (string-append "v" version))))
b04ca7a1 2955 (sha256
43eb601f 2956 (base32 "04f3jqg8ww4jxsf9c6ddcdgy2xbhkyp0b3l5f1hvvbv94p81rjxd"))
7e917283
DM
2957 (patches
2958 (search-patches "sunxi-tools-remove-sys-io.patch"))
b04ca7a1
DM
2959 (modules '((guix build utils)))
2960 (snippet
2961 ;; Remove binaries contained in the tarball which are only for the
2962 ;; target and can be regenerated anyway.
6cbee49d
MW
2963 '(begin
2964 (delete-file-recursively "bin")
2965 #t))
208e7434
DM
2966 (file-name (git-file-name "sunxi-tools" version))))
2967
2968(define sunxi-target-tools
2969 (package
2970 (name "sunxi-target-tools")
2971 (version "1.4.2")
2972 (build-system gnu-build-system)
2973 (source
2974 (sunxi-tools-source version))
2975 (arguments
2976 `(#:system "armhf-linux"
2977 #:tests? #f
2978 #:make-flags (list (string-append "PREFIX="
2979 (assoc-ref %outputs "out"))
2980 (string-append "CROSS_COMPILE=")
2981 "CC=gcc")
2982 #:phases
2983 (modify-phases %standard-phases
2984 (delete 'configure)
2985 (replace 'build
2986 (lambda* (#:key make-flags #:allow-other-keys)
2987 (apply invoke "make" "target-tools" make-flags)))
2988 (replace 'install
2989 (lambda* (#:key make-flags #:allow-other-keys)
2990 (apply invoke "make" "install-target-tools"
2991 make-flags))))))
2992 (home-page "https://github.com/linux-sunxi/sunxi-tools")
2993 (synopsis "Hardware management tools for Allwinner computers")
2994 (description "This package contains tools for Allwinner devices:
2995@enumerate
2996@item @command{sunxi-meminfo}: Prints memory bus settings.
2997@end enumerate")
2998 (license license:gpl2+)))
2999
3000(define-public sunxi-tools
3001 (package
3002 (name "sunxi-tools")
3003 (version "1.4.2")
3004 (source
3005 (sunxi-tools-source version))
b04ca7a1 3006 (native-inputs
208e7434
DM
3007 `(("sunxi-target-tools" ,sunxi-target-tools)
3008 ("pkg-config" ,pkg-config)))
b04ca7a1
DM
3009 (inputs
3010 `(("libusb" ,libusb)))
3011 (build-system gnu-build-system)
3012 (arguments
faa6bdf8 3013 `(#:tests? #f ; no tests exist
b04ca7a1
DM
3014 #:make-flags (list (string-append "PREFIX="
3015 (assoc-ref %outputs "out"))
208e7434 3016 (string-append "CROSS_COMPILE=disabled")
faa6bdf8 3017 "CC=gcc")
b04ca7a1
DM
3018 #:phases
3019 (modify-phases %standard-phases
b054b26a 3020 (delete 'configure)
faa6bdf8
DM
3021 (replace 'build
3022 (lambda* (#:key make-flags #:allow-other-keys)
cb8ba848 3023 (apply invoke "make" "tools" "misc" make-flags)))
b054b26a 3024 (replace 'install
208e7434
DM
3025 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
3026 ;; Those tools have been built for armhf but are part of the
3027 ;; installation in the upstream package. So do the same
3028 ;; here.
3029 (copy-recursively (assoc-ref inputs "sunxi-target-tools")
3030 (assoc-ref outputs "out"))
3031 (apply invoke "make" "install-tools" "install-misc"
cb8ba848 3032 make-flags))))))
b04ca7a1
DM
3033 (home-page "https://github.com/linux-sunxi/sunxi-tools")
3034 (synopsis "Hardware management tools for Allwinner computers")
3035 (description "This package contains tools for Allwinner devices:
3036@enumerate
3037@item @command{sunxi-fexc}, @command{bin2fex}, @command{fex2bin}: Compile
3038a textual description of a board (.fex) to a binary representation (.bin).
3039@item @command{sunxi-fel}: Puts an Allwinner device into FEL mode which
3040makes it register as a special USB device (rather than USB host).
3041You can then connect it to another computer and flash it from there.
3042@item @command{sunxi-nand-part}: Partitions NAND flash.
3043@item @command{sunxi-bootinfo}: Reads out boot0 and boot1 (Allwinner
3044bootloader) parameters.
3045@item @command{sunxi-pio}: Sets GPIO parameters and oscillates a GPIO
3046in order to be able to find it.
3047@item @command{sunxi-meminfo}: Prints memory bus settings.
b054b26a 3048@item @command{sunxi-nand-image-builder}: Prepares raw NAND images.
b04ca7a1
DM
3049@end enumerate")
3050 (license license:gpl2+)))
a054777e 3051
3052(define-public sedsed
3053 (package
3054 (name "sedsed")
bde99125 3055 (version "1.1")
a054777e 3056 (source
3057 (origin
7d6e8fda
TGR
3058 (method git-fetch)
3059 (uri (git-reference
b0e7b699 3060 (url "https://github.com/aureliojargas/sedsed")
7d6e8fda
TGR
3061 (commit (string-append "v" version))))
3062 (file-name (git-file-name name version))
a054777e 3063 (sha256
bde99125 3064 (base32 "05cl35mwljdb9ynbbsfa8zx6ig8r0xncbg2cir9vwn5manndjj18"))))
a054777e 3065 (build-system python-build-system)
3066 (arguments
7d6e8fda 3067 `(#:tests? #f ; no tests
a054777e 3068 #:phases
3069 (modify-phases %standard-phases
3070 (add-after 'unpack 'patch-sed-in
3071 (lambda _
3072 (substitute* "sedsed.py"
3073 (("sedbin = 'sed'")
3074 (string-append "sedbin = '" (which "sed") "'")))
3075 #t))
3076 (delete 'build)
3077 (replace 'install
3078 (lambda* (#:key outputs #:allow-other-keys)
3079 (let* ((out (assoc-ref outputs "out"))
3080 (bin (string-append out "/bin")))
3081 ;; Just one file to copy around
3082 (install-file "sedsed.py" bin)
3083 #t)))
b7e26ec6 3084 (add-after 'wrap 'symlink
a054777e 3085 ;; Create 'sedsed' symlink to "sedsed.py".
3086 (lambda* (#:key outputs #:allow-other-keys)
3087 (let* ((out (assoc-ref outputs "out"))
3088 (bin (string-append out "/bin"))
3089 (sed (string-append bin "/sedsed"))
3090 (sedpy (string-append bin "/sedsed.py")))
b7e26ec6 3091 (symlink sedpy sed)
a054777e 3092 #t))))))
fbdabdad 3093 (home-page "https://aurelio.net/projects/sedsed")
a054777e 3094 (synopsis "Sed sed scripts")
3095 (description
975a0c15
TGR
3096 "@code{sedsed} can debug, indent, tokenize and HTMLize your @command{sed}
3097script.
a054777e 3098
975a0c15 3099In debug mode, it reads your script and adds extra commands to it. When
a054777e 3100executed you can see the data flow between the commands, revealing all the
975a0c15 3101magic sed performs on its internal buffers.
a054777e 3102
975a0c15 3103In indent mode, your script is reformatted with standard spacing.
a054777e 3104
975a0c15 3105In tokenize mode, you can see the elements of every command you use.
a054777e 3106
975a0c15 3107In HTMLize mode, your script is converted to a beautiful colored HTML file,
a054777e 3108with all the commands and parameters identified for your viewing pleasure.
3109
3110With sedsed you can master any sed script. No more secrets, no more hidden
3111buffers.")
3112 (license license:expat)))
d10fa5c7 3113
dca48d3c 3114(define-public igt-gpu-tools
d10fa5c7 3115 (package
dca48d3c 3116 (name "igt-gpu-tools")
ad7749a1 3117 (version "1.25")
e4d6746f
TGR
3118 (source
3119 (origin
3120 (method git-fetch)
3121 (uri (git-reference
3122 (url "https://gitlab.freedesktop.org/drm/igt-gpu-tools.git")
3123 (commit (string-append "igt-gpu-tools-" version))))
3124 (file-name (git-file-name name version))
3125 (sha256
ad7749a1
TGR
3126 (base32 "1lvhkdhilw0fn4nzkpfwvrhiv8d92h811qs2v6ac3p5w7v86a9zm"))))
3127 (build-system meson-build-system)
d10fa5c7 3128 (arguments
778d6b52 3129 `(#:tests? #f)) ; many of the tests try to load kernel modules
d10fa5c7 3130 (inputs
10082d30 3131 `(("cairo" ,cairo)
bdd5fbaf 3132 ("elfutils" ,elfutils) ; libdw
10082d30 3133 ("eudev" ,eudev)
10082d30 3134 ("kmod" ,kmod)
d10fa5c7
RW
3135 ("libdrm" ,libdrm)
3136 ("libpciaccess" ,libpciaccess)
d10fa5c7 3137 ("libunwind" ,libunwind)
8ae5fde2 3138 ("procps" ,procps)))
d10fa5c7 3139 (native-inputs
ad7749a1
TGR
3140 `(("bison" ,bison)
3141 ("flex" ,flex)
d10fa5c7 3142 ("pkg-config" ,pkg-config)))
49d41690 3143 (home-page "https://gitlab.freedesktop.org/drm/igt-gpu-tools")
d10fa5c7 3144 (synopsis "Tools for development and testing of the Intel DRM driver")
dca48d3c 3145 (description "IGT GPU Tools is a collection of tools for development and
d10fa5c7
RW
3146testing of the Intel DRM driver. There are many macro-level test suites that
3147get used against the driver, including xtest, rendercheck, piglit, and
3148oglconform, but failures from those can be difficult to track down to kernel
3149changes, and many require complicated build procedures or specific testing
dca48d3c 3150environments to get useful results. Therefore, IGT GPU Tools includes
d10fa5c7
RW
3151low-level tools and tests specifically for development and testing of the
3152Intel DRM Driver.")
9f375a4c 3153 (supported-systems '("i686-linux" "x86_64-linux"))
d10fa5c7 3154 (license license:expat)))
c1aba1a7 3155
b611f9c2
BS
3156(define-public fabric
3157 (package
3158 (name "fabric")
b8eeaaa2 3159 (version "1.14.1")
b611f9c2
BS
3160 (source
3161 (origin
3162 (method url-fetch)
3163 (uri (pypi-uri "Fabric" version))
3164 (sha256
3165 (base32
b8eeaaa2 3166 "1a3ndlpdw6bhn8fcw1jgznl117a8pnr84az9rb5fwnrypf1ph2b6"))))
b611f9c2
BS
3167 (build-system python-build-system)
3168 (arguments
e68e4a90
BS
3169 `(#:python ,python-2 ; Python 2 only
3170 #:phases
3171 (modify-phases %standard-phases
3172 (replace 'check
3173 (lambda _
3174 (invoke
3175 "nosetests" "-v" "tests/"
3176 ;; This test hangs indefinitely when run on a single core VM
3177 ;; (see GNU bug #26647 and Debian bug #850230).
3178 "--exclude=test_nested_execution_with_explicit_ports"
3179 ;; This test randomly fails in certain environments causing too
3180 ;; much noise to be useful (see Debian bug #854686).
3181 "--exclude=test_should_use_sentinel_for_tasks_that_errored"))))))
1b5b24c9 3182 (native-inputs
e68e4a90
BS
3183 `(("python2-fudge" ,python2-fudge) ; Requires < 1.0
3184 ("python2-jinja2" ,python2-jinja2) ; Requires < 3.0
3185 ("python2-nose" ,python2-nose) ; Requires < 2.0
a62d455d
RJ
3186 ("python2-pynacl" ,python2-pynacl)
3187 ("python2-bcrypt" ,python2-bcrypt)))
b611f9c2 3188 (propagated-inputs
b611f9c2 3189 `(("python2-paramiko" ,python2-paramiko)))
a06faea9 3190 (home-page "https://www.fabfile.org/")
b611f9c2
BS
3191 (synopsis "Simple Pythonic remote execution and deployment tool")
3192 (description
3193 "Fabric is designed to upload files and run shell commands on a number of
3194servers in parallel or serially. These commands are grouped in tasks (which
3195are regular Python functions) and specified in a @dfn{fabfile}.
3196
3197It is similar to Capistrano, except it's implemented in Python and doesn't
3198expect you to be deploying Rails applications. Fabric is a simple, Pythonic
3199tool for remote execution and deployment.")
3200 (license license:bsd-2)))
6e75ea48
EJ
3201
3202(define-public neofetch
816bce68
MR
3203 (package
3204 (name "neofetch")
1a9acdef 3205 (version "7.1.0")
816bce68
MR
3206 (source (origin
3207 (method git-fetch)
3208 (uri (git-reference
3209 (url "https://github.com/dylanaraps/neofetch")
3210 (commit version)))
3211 (file-name (git-file-name name version))
3212 (sha256
3213 (base32
1a9acdef 3214 "0i7wpisipwzk0j62pzaigbiq42y1mn4sbraz4my2jlz6ahwf00kv"))))
816bce68
MR
3215 (build-system gnu-build-system)
3216 (arguments
3217 `(#:tests? #f ; there are no tests
3218 #:make-flags
3219 (list (string-append "PREFIX=" %output))
3220 #:phases
3221 (modify-phases %standard-phases
3222 (delete 'configure)))) ; no configure script
3223 (home-page "https://github.com/dylanaraps/neofetch")
3224 (synopsis "System information script")
3225 (description "Neofetch is a command-line system information tool written in
2cd8e6e0 3226Bash. Neofetch displays information about your system next to an image, your OS
6e75ea48
EJ
3227logo, or any ASCII file of your choice. The main purpose of Neofetch is to be
3228used in screenshots to show other users what operating system or distribution
3229you are running, what theme or icon set you are using, etc.")
816bce68 3230 (license license:expat)))
a76ca052 3231
67648704 3232(define-public screenfetch
9dbda847
TGR
3233 (package
3234 (name "screenfetch")
89f51a9d 3235 (version "3.9.1")
9dbda847
TGR
3236 (source (origin
3237 (method git-fetch)
3238 (uri (git-reference
3239 (url "https://github.com/KittyKatt/screenFetch")
3240 (commit (string-append "v" version))))
3241 (file-name (git-file-name name version))
3242 (sha256
3243 (base32
89f51a9d 3244 "04l8aqr474pb115nagn9f6y48jw92n1qfszgw7dbhgl4mpn95lcr"))))
9dbda847
TGR
3245 (build-system trivial-build-system)
3246 (arguments
3247 `(#:modules ((guix build utils))
3248 #:builder
3249 (begin
3250 (use-modules (guix build utils))
3251 (let ((source (assoc-ref %build-inputs "source"))
3252 (out (assoc-ref %outputs "out")))
3253 (mkdir-p (string-append out "/bin/"))
3254 (copy-file (string-append source "/screenfetch-dev")
3255 (string-append out "/bin/screenfetch"))
3256 (install-file (string-append source "/screenfetch.1")
3257 (string-append out "/man/man1/"))
3258 (install-file (string-append source "/COPYING")
3259 (string-append out "/share/doc/" ,name "-" ,version))
3260 (substitute* (string-append out "/bin/screenfetch")
3261 (("/usr/bin/env bash")
3262 (string-append (assoc-ref %build-inputs "bash")
3263 "/bin/bash")))
3264 (wrap-program
67648704 3265 (string-append out "/bin/screenfetch")
9dbda847
TGR
3266 `("PATH" ":" prefix
3267 (,(string-append (assoc-ref %build-inputs "bc") "/bin:"
3268 (assoc-ref %build-inputs "scrot") "/bin:"
3269 (assoc-ref %build-inputs "xdpyinfo") "/bin"
3270 (assoc-ref %build-inputs "xprop") "/bin"))))
3271 (substitute* (string-append out "/bin/screenfetch")
3272 (("#!#f")
3273 (string-append "#!" (assoc-ref %build-inputs "bash")
3274 "/bin/bash")))))))
3275 (inputs
3276 `(("bash" ,bash)
3277 ("bc" ,bc)
3278 ("scrot" ,scrot)
3279 ("xdpyinfo" ,xdpyinfo)
3280 ("xprop" ,xprop)))
3281 (home-page "https://github.com/KittyKatt/screenFetch")
3282 (synopsis "System information script")
3283 (description "Bash screenshot information tool which can be used to
67648704
JK
3284generate those nifty terminal theme information and ASCII distribution logos in
3285everyone's screenshots nowadays.")
9dbda847 3286 (license license:gpl3)))
67648704 3287
ce9ea433
EB
3288(define-public ufetch
3289 (let ((commit "98b622023e03fe24dbc137e9a68104dfe1fbd04a")
3290 (revision "1"))
3291 (package
3292 (name "ufetch")
3293 (version (git-version "0.2" revision commit))
3294 (source (origin
3295 (method git-fetch)
3296 (uri (git-reference
3297 (url "https://gitlab.com/jschx/ufetch.git")
3298 (commit commit)))
3299 (file-name (git-file-name name version))
3300 (sha256
3301 (base32
3302 "09c4zmikza16xpydinnqbi3hmcibfrrn10wij7j0j1wv1pj2sl2l"))))
3303 (build-system trivial-build-system)
3304 (inputs
3305 `(("bash" ,bash)
3306 ("tput" ,ncurses)))
3307 (arguments
3308 `(#:modules ((guix build utils))
3309 #:builder
3310 (begin
3311 (use-modules (guix build utils))
3312 (let* ((source (assoc-ref %build-inputs "source"))
3313 (output (assoc-ref %outputs "out"))
3314 (bindir (string-append output "/bin"))
3315 (docdir (string-append output "/share/doc/ufetch-" ,version))
3316 (tput (string-append (assoc-ref %build-inputs "tput") "/bin/tput")))
3317 (install-file (string-append source "/LICENSE") docdir)
3318 (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") "/bin"))
3319 (mkdir-p bindir)
3320 (for-each (lambda (src)
3321 (let ((dst (string-append bindir "/" (basename src))))
3322 (copy-file src dst)
3323 (patch-shebang dst)
3324 (substitute* dst (("tput") tput))))
3325 (find-files source "ufetch-[[:alpha:]]*$"))
3326 ;; Note: the `ufetch` we create below will only work if run under
3327 ;; the Guix System. I.e. a user trying to run `ufetch` on a
3328 ;; foreign distro will not get great results. The `screenfetch`
3329 ;; program does actual runtime detection of the operating system,
3330 ;; and would be a better choice in such a situation.
3331 (symlink "ufetch-guix" (string-append bindir "/ufetch"))))))
3332 (home-page "https://gitlab.com/jschx/ufetch")
3333 (synopsis "Tiny system info")
3334 (description "This package provides a tiny system info utility.")
3335 (license license:isc))))
3336
67d621c5
EB
3337(define-public pfetch
3338 (let ((commit "e18a0959ab98b963744755ec4687e59dc11db3c5")
3339 (revision "0"))
3340 (package
3341 (name "pfetch")
3342 (version (git-version "0.7.0" revision commit))
3343 (source (origin
3344 (method git-fetch)
3345 (uri (git-reference
3346 (url "https://github.com/dylanaraps/pfetch")
3347 (commit commit)))
3348 (file-name (git-file-name name version))
3349 (sha256
3350 (base32
3351 "1md40av6i3xvvwig5jzhy4kf3s5sgxxk35r0vcyrjd8qyndk927l"))))
3352 (build-system trivial-build-system)
3353 (inputs `(("bash" ,bash)))
3354 (arguments
3355 `(#:modules ((guix build utils))
3356 #:builder
3357 (begin
3358 (use-modules (guix build utils))
3359 (let* ((source (lambda (f)
3360 (string-append (assoc-ref %build-inputs "source") "/" f)))
3361 (output (assoc-ref %outputs "out"))
3362 (docdir (string-append output "/share/doc/pfetch-" ,version)))
3363 (install-file (source "LICENSE.md") docdir)
3364 (install-file (source "README.md") docdir)
3365 (install-file (source "pfetch") (string-append output "/bin"))
3366 (patch-shebang
3367 (string-append output "/bin/pfetch")
3368 (list (string-append (assoc-ref %build-inputs "bash") "/bin")))
3369 #t))))
3370 (home-page "https://github.com/dylanaraps/pfetch")
3371 (synopsis "System information tool")
3372 (description "This package provides a simple, configurable system
3373information tool.")
3374 (license license:expat))))
3375
a76ca052
EJ
3376(define-public nnn
3377 (package
3378 (name "nnn")
6d15ff66 3379 (version "3.5")
eb5a6643
TGR
3380 (source
3381 (origin
3382 (method url-fetch)
3383 (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
16572d0e 3384 version "/nnn-v" version ".tar.gz"))
eb5a6643 3385 (sha256
6d15ff66 3386 (base32 "1ww18vvfjkvi36rcamw8kpix4bhk71w5bw9kmnh158crah1x8dp6"))))
a76ca052 3387 (build-system gnu-build-system)
eb5a6643
TGR
3388 (inputs
3389 `(("ncurses" ,ncurses)
3390 ("readline" ,readline)))
3391 (native-inputs
3392 `(("pkg-config" ,pkg-config)))
a76ca052 3393 (arguments
cbd104bf 3394 `(#:tests? #f ; no tests
a76ca052 3395 #:phases
a76ca052 3396 (modify-phases %standard-phases
cbd104bf
EF
3397 (delete 'configure) ; no configure script
3398 (add-after 'unpack 'patch-pkg-config
3399 (lambda _
3400 (substitute* "Makefile"
3401 (("pkg-config")
3402 (or (which "pkg-config")
3403 (string-append ,(%current-target-system)
3404 "-pkg-config"))))
3405 #t)))
a76ca052
EJ
3406 #:make-flags
3407 (list
3408 (string-append "PREFIX="
3409 (assoc-ref %outputs "out"))
cbd104bf 3410 (string-append "CC=" ,(cc-for-target)))))
a76ca052
EJ
3411 (home-page "https://github.com/jarun/nnn")
3412 (synopsis "Terminal file browser")
3413 (description "@command{nnn} is a fork of @command{noice}, a blazing-fast
3414lightweight terminal file browser with easy keyboard shortcuts for
3415navigation, opening files and running tasks. There is no config file and
3416mime associations are hard-coded. The incredible user-friendliness and speed
3417make it a perfect utility on modern distros.")
3418 (license license:bsd-2)))
58989684
CAW
3419
3420(define-public thermald
3421 (package
3422 (name "thermald")
88a26bfd 3423 (version "2.4.1")
58989684
CAW
3424 (source
3425 (origin
d09e84c2
EF
3426 (method git-fetch)
3427 (uri (git-reference
66741676 3428 (url "https://github.com/intel/thermal_daemon")
d09e84c2
EF
3429 (commit (string-append "v" version))))
3430 (file-name (git-file-name name version))
3431 (sha256
88a26bfd 3432 (base32 "0rlac7v1b59m7gh767hkd8a0r4p001nd24786fnmryygbxynd2s6"))))
58989684
CAW
3433 (build-system gnu-build-system)
3434 (arguments
12007839 3435 `(#:configure-flags
8fe36949 3436 (let ((out (assoc-ref %outputs "out")))
7a67a45f 3437 (list (string-append "--with-dbus-sys-dir="
58989684 3438 out "/etc/dbus-1/system.d")
c9188cdb
TGR
3439 "--localstatedir=/var"))
3440 #:make-flags
3441 (list "V=1") ; log build commands
3442 #:phases
3443 (modify-phases %standard-phases
3444 (add-before 'bootstrap 'no-early-./configure
3445 (lambda _
3446 (setenv "NO_CONFIGURE" "yet")
3447 ;; XXX thd_trip_point.h redefines "__STDC_LIMIT_MACROS" after
3448 ;; <xz>/include/lzma.h. ./configure forcibly appends -Werror
3449 ;; to CXXFLAGS, overriding any -Wno-error we'd add.
3450 (substitute* "configure.ac"
3451 (("-Werror") ""))
3452 #t)))))
58989684
CAW
3453 (native-inputs
3454 `(("autoconf" ,autoconf)
7a67a45f 3455 ("autoconf-archive" ,autoconf-archive)
58989684
CAW
3456 ("automake" ,automake)
3457 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
c9188cdb 3458 ("gtk-doc" ,gtk-doc)
58989684
CAW
3459 ("pkg-config" ,pkg-config)))
3460 (inputs
3461 `(("dbus-glib" ,dbus-glib)
c9188cdb
TGR
3462 ("libevdev" ,libevdev)
3463 ("libxml2" ,libxml2)
3464 ("upower" ,upower)
3465 ("xz" ,xz)))
58989684
CAW
3466 (home-page "https://01.org/linux-thermal-daemon/")
3467 (synopsis "CPU scaling for thermal management")
3468 (description "The Linux Thermal Daemon helps monitor and control temperature
3469on systems running the Linux kernel.")
b6315bc0 3470 ;; arm and aarch64 don't have cpuid.h.
86ee7625 3471 (supported-systems '("i686-linux" "x86_64-linux"))
7fb78380 3472 (license license:gpl2)))
d7c64ad5
LF
3473
3474(define-public masscan
3475 (package
3476 (name "masscan")
b4bf9516 3477 (version "1.0.5")
e956d76d
TGR
3478 (source
3479 (origin
3480 (method git-fetch)
3481 (uri (git-reference
b0e7b699 3482 (url "https://github.com/robertdavidgraham/masscan")
e956d76d
TGR
3483 (commit version)))
3484 (file-name (git-file-name name version))
3485 (sha256
3486 (base32 "0q0c7bsf0pbl8napry1qyg0gl4pd8wn872h4mz9b56dx4rx90vqg"))))
d7c64ad5
LF
3487 (build-system gnu-build-system)
3488 (inputs
3489 `(("libpcap" ,libpcap)))
3490 (arguments
164c4910 3491 `(#:test-target "regress"
b4bf9516 3492 #:make-flags
164c4910 3493 (list (string-append "CC=" ,(cc-for-target))
b4bf9516 3494 (string-append "PREFIX=" (assoc-ref %outputs "out")))
d7c64ad5
LF
3495 #:phases
3496 (modify-phases %standard-phases
b4bf9516 3497 (delete 'configure) ; no ./configure script
d7c64ad5
LF
3498 (add-after 'unpack 'patch-path
3499 (lambda* (#:key outputs inputs #:allow-other-keys)
3500 (let* ((out (assoc-ref outputs "out"))
3501 (pcap (assoc-ref inputs "libpcap")))
3502 (substitute* "src/rawsock-pcap.c"
3503 (("libpcap.so") (string-append pcap "/lib/libpcap.so")))
3504 #t))))))
3505 (synopsis "TCP port scanner")
3506 (description "MASSCAN is an asynchronous TCP port scanner. It can detect
3507open ports, and also complete the TCP connection and interact with the remote
3508application, collecting the information received.")
3509 (home-page "https://github.com/robertdavidgraham/masscan")
b4bf9516
TGR
3510 ;; 'src/siphash24.c' is the SipHash reference implementation, which
3511 ;; bears a CC0 Public Domain Dedication.
d7c64ad5 3512 (license license:agpl3+)))
82d57f12
TGR
3513
3514(define-public hungrycat
3515 (package
3516 (name "hungrycat")
3517 (version "0.4.1")
3518 (source (origin
3519 (method url-fetch)
3520 (uri (string-append "https://github.com/jwilk/hungrycat/"
3521 "releases/download/" version "/"
e20796dc 3522 "hungrycat-" version ".tar.gz"))
82d57f12
TGR
3523 (sha256
3524 (base32
3525 "03fc1zsrf99lvxa7b4ps6pbi43304wbxh1f6ci4q0vkal370yfwh"))))
3526 (build-system gnu-build-system)
3527 (native-inputs
3528 ;; For tests.
3529 `(("python" ,python-wrapper)
3530 ("python-nose" ,python-nose)))
3531 (arguments
3532 `(#:test-target "test"))
3533 (synopsis "A single tool that combines @command{cat} & @command{rm}")
3534 (description
3535 "hungrycat prints the contents of a file to standard output, while
3536simultaneously freeing the disk space it occupied. It is useful if you need
3537to process a large file, don't have enough space to store both the input and
3538output files, and don't need the input file afterwards.
3539While similar in principle to running @command{cat} immediately followed by
3540@command{rm}, @command{hungrycat} actually frees blocks as soon as they are
3541printed instead of after the entire file has been read, which is often too
3542late.")
3543 (home-page "https://jwilk.net/software/hungrycat")
3544 (license license:expat)))
3ebf2c29
PAR
3545
3546(define-public launchmon
3547 (package
3548 (name "launchmon")
3549 (version "1.0.2")
3550 (source (origin
3551 (method url-fetch)
3552 (uri (string-append
3553 "https://github.com/LLNL/LaunchMON/releases/download/v"
f44eca94 3554 version "/launchmon-v" version ".tar.gz"))
3ebf2c29
PAR
3555 (sha256
3556 (base32
989d564f
MB
3557 "0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))
3558 (modules '((guix build utils)))
3559 (snippet
3560 '(begin
3561 ;; Fix build failure with GCC 7 due to a conversion error.
3562 ;; Remove for versions > 1.0.2.
3563 (substitute* "launchmon/src/linux/lmon_api/lmon_coloc_spawner.cxx"
3564 ((" lmonpl = '\\\\0'")
3565 " *lmonpl = '\\0'"))
3566 #t))))
3ebf2c29
PAR
3567 (build-system gnu-build-system)
3568 (inputs
3569 `(("mpi" ,openmpi)
3570 ("munge" ,munge)
3571 ("boost" ,boost)
3572 ("libelf" ,libelf)
3573 ("libgcrypt" ,libgcrypt)
3574 ("libgpg-error" ,libgpg-error)))
3575 (synopsis "Infrastructue for large scale tool daemon launching")
3576 (description
3577 "LaunchMON is a software infrastructure that enables HPC run-time
3578tools to co-locate tool daemons with a parallel job. Its API allows a
3579tool to identify all the remote processes of a job and to scalably
3580launch daemons into the relevant nodes.")
3581 (home-page "https://github.com/LLNL/LaunchMON")
3582 (supported-systems '("i686-linux" "x86_64-linux"))
3583 (license license:lgpl2.1)))
541dac8a
PAR
3584
3585(define-public spindle
3586 (package
3587 (name "spindle")
3588 (version "0.10")
3589 (source (origin
3590 ;; We use git checkout to avoid github auto-generated tarballs
3591 (method git-fetch)
3592 (uri (git-reference
b0e7b699 3593 (url "https://github.com/hpc/Spindle")
541dac8a
PAR
3594 (commit (string-append "v" version))))
3595 (file-name (git-file-name name version))
3596 (sha256
3597 (base32
3598 "15n3ay0qq81r5v7fif61q1vdjcq44pp2nynkh3fvbzc9fj3c39wd"))))
3599 (build-system gnu-build-system)
3600 (arguments '(#:configure-flags '("--enable-sec-launchmon"
3601 "--enable-sec-munge"
3602 "--enable-sec-none")))
3603 (inputs
3604 `(("mpi" ,openmpi)
3605 ("munge" ,munge)
3606 ("launchmon" ,launchmon)
3607 ("libgcrypt" ,libgcrypt)))
3608 (synopsis "Scalable library loading in HPC environments")
3609 (description
3610 "Spindle is a tool for improving the performance of dynamic library and
3611Python loading in HPC environments.")
3612 (home-page "https://github.com/hpc/Spindle")
785f40df
EF
3613 ;; This package supports x86_64 and PowerPC64
3614 (supported-systems '("x86_64-linux"))
541dac8a 3615 (license license:lgpl2.1)))
bbc94ed0
PN
3616
3617(define-public inxi-minimal
3618 (let ((real-name "inxi"))
3619 (package
3620 (name "inxi-minimal")
ab9f194d 3621 (version "3.2.02-2")
bbc94ed0
PN
3622 (source
3623 (origin
b740a305
TGR
3624 (method git-fetch)
3625 (uri (git-reference
3626 (url "https://github.com/smxi/inxi")
3627 (commit version)))
7458ceac 3628 (file-name (git-file-name real-name version))
bbc94ed0 3629 (sha256
ab9f194d 3630 (base32 "0fwx798v9kwiwkgbj97w6rjdanwf7ap65vvq1fqy7gd9x78xcxsq"))))
bbc94ed0
PN
3631 (build-system trivial-build-system)
3632 (inputs
a49bbaa6
EF
3633 `(("bash" ,bash-minimal)
3634 ("perl" ,perl)
3635 ("procps" ,procps)))
bbc94ed0 3636 (native-inputs
b740a305 3637 `(("gzip" ,gzip)))
bbc94ed0
PN
3638 (arguments
3639 `(#:modules
3640 ((guix build utils)
3641 (ice-9 match)
3642 (srfi srfi-26))
3643 #:builder
3644 (begin
3645 (use-modules (guix build utils)
3646 (ice-9 match)
3647 (srfi srfi-26))
3648 (setenv "PATH" (string-append
3649 (assoc-ref %build-inputs "bash") "/bin" ":"
3650 (assoc-ref %build-inputs "gzip") "/bin" ":"
b740a305
TGR
3651 (assoc-ref %build-inputs "perl") "/bin" ":"))
3652 (copy-recursively (assoc-ref %build-inputs "source")
3653 ,(string-append real-name "-" version))
bbc94ed0
PN
3654 (with-directory-excursion ,(string-append real-name "-" version)
3655 (with-fluids ((%default-port-encoding #f))
3656 (substitute* "inxi" (("/usr/bin/env perl") (which "perl"))))
3657 (let ((bin (string-append %output "/bin")))
3658 (install-file "inxi" bin)
3659 (wrap-program (string-append bin "/inxi")
3660 `("PATH" ":" =
3661 ("$PATH"
3662 ,@(map (lambda (input)
3663 (match input
3664 ((name . store)
3665 (let ((store-append
3666 (cut string-append store <>)))
3667 (cond
3668 ((member name '("util-linux"))
3669 (string-append (store-append "/bin") ":"
3670 (store-append "/sbin")))
3671 ((member name '("dmidecode" "iproute2"))
3672 (store-append "/sbin"))
3673 (else (store-append "/bin")))))))
3674 %build-inputs)))
3675 `("PERL5LIB" ":" =
3676 ,(delete
3677 ""
3678 (map (match-lambda
3679 (((? (cut string-prefix? "perl-" <>) name) . dir)
3680 (string-append dir "/lib/perl5/site_perl"))
3681 (_ ""))
3682 %build-inputs)))))
3683 (invoke "gzip" "inxi.1")
3684 (install-file "inxi.1.gz"
55f5556e 3685 (string-append %output "/share/man/man1")))
bbc94ed0
PN
3686 #t)))
3687 (home-page "https://smxi.org/docs/inxi.htm")
4ee41a6a 3688 (synopsis "Full-featured system information script")
bbc94ed0
PN
3689 (description "Inxi is a system information script that can display
3690various things about your hardware and software to users in an IRC chatroom or
4ee41a6a 3691support forum. It runs with the @code{/exec} command in most IRC clients.")
bbc94ed0
PN
3692 (license license:gpl3+))))
3693
3694(define-public inxi
3695 (package
3696 (inherit inxi-minimal)
3697 (name "inxi")
3698 (inputs
3699 `(("dmidecode" ,dmidecode)
3700 ("file" ,file)
3701 ("bind:utils" ,isc-bind "utils") ; dig
3702 ("gzip" ,gzip)
3703 ("iproute2" ,iproute) ; ip
3704 ("kmod" ,kmod) ; modinfo
3705 ("lm-sensors" ,lm-sensors)
3706 ("mesa-utils" ,mesa-utils)
3707 ("pciutils" ,pciutils)
bbc94ed0
PN
3708 ("tar" ,tar)
3709 ("tree" ,tree)
3710 ("util-linux" ,util-linux) ; lsblk
3711 ("usbutils" ,usbutils) ; lsusb
3712 ("wmctrl" ,wmctrl)
3713 ("xdpyinfo" ,xdpyinfo)
3714 ("xprop" ,xprop)
3715 ("xrandr" ,xrandr)
3716 ("coreutils" ,coreutils) ; uptime
3717 ("inetutils" ,inetutils) ; ifconfig
3718 ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
3719 ("perl-http-tiny" ,perl-http-tiny)
3720 ("perl-io-socket-ssl" ,perl-io-socket-ssl)
3721 ("perl-json-xs" ,perl-json-xs)
3722 ("perl-time-hires" ,perl-time-hires)
04b0636e
TGR
3723 ("lvm2" ,lvm2) ; lvs
3724 ("mdadm" ,mdadm)
bbc94ed0
PN
3725 ;; TODO: Add more inputs:
3726 ;; ipmi-sensors
3727 ;; hddtemp
3728 ;; perl-xml-dumper
3729 ;; ipmitool
3730 ,@(package-inputs inxi-minimal)))))
b19f3337
OP
3731
3732(define-public pscircle
3733 (package
3734 (name "pscircle")
0b4ced58 3735 (version "1.3.1")
b19f3337
OP
3736 (source
3737 (origin
494b702a
TGR
3738 (method git-fetch)
3739 (uri (git-reference
3740 (url "https://gitlab.com/mildlyparallel/pscircle.git")
3741 (commit (string-append "v" version))))
3742 (file-name (git-file-name name version))
b19f3337 3743 (sha256
0b4ced58 3744 (base32 "1sm99423hh90kr4wdjqi9sdrrpk65j2vz2hzj65zcxfxyr6khjci"))))
b19f3337
OP
3745 (build-system meson-build-system)
3746 (native-inputs
3747 `(("pkg-config" ,pkg-config)))
3748 (inputs
3749 `(("cairo" ,cairo)
3750 ("libpng" ,libpng)
3751 ("libx11" ,libx11)))
3752 (home-page "https://gitlab.com/mildlyparallel/pscircle")
3753 (synopsis "Visualize Linux processes in a form of radial tree")
3754 (description
3755 "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
3756 (license license:gpl2+)))
ac94ccb9
DM
3757
3758(define-public python-pyudev
3759 (package
3760 (name "python-pyudev")
78fca231 3761 (version "0.22.0")
ac94ccb9
DM
3762 (source
3763 (origin
3764 (method url-fetch)
3765 (uri (pypi-uri "pyudev" version))
3766 (sha256
3767 (base32
78fca231 3768 "0xmj6l08iih2js9skjqpv4w7y0dhxyg91zmrs6v5aa65gbmipfv9"))))
ac94ccb9
DM
3769 (build-system python-build-system)
3770 (arguments
3771 `(#:tests? #f ; Tests require /sys
3772 #:phases
3773 (modify-phases %standard-phases
3774 (add-after 'unpack 'patch-ctypes-udev
3775 (lambda* (#:key inputs outputs #:allow-other-keys)
3776 (let ((eudev (assoc-ref inputs "eudev")))
3777 (substitute* "src/pyudev/core.py"
3778 (("'udev'")
3779 (string-append "'" eudev "/lib/libudev.so'")))
3780 (substitute* "src/pyudev/_ctypeslib/utils.py"
3781 ;; Use absolute paths instead of keys.
3782 (("= find_library") "= "))
3783 #t))))))
3784 (inputs
3785 `(("eudev" ,eudev)))
cbb1b168
RJ
3786 (propagated-inputs
3787 `(("python-six" ,python-six)))
ac94ccb9
DM
3788 (native-inputs
3789 `(("python-docutils" ,python-docutils)
3790 ("python-hypothesis" ,python-hypothesis)
3791 ("python-mock" ,python-mock)
3792 ("python-pytest" ,python-pytest)
3793 ("python-sphinx" ,python-sphinx)))
a20ede32 3794 (home-page "https://pyudev.readthedocs.io/")
ac94ccb9
DM
3795 (synopsis "Python udev binding")
3796 (description "This package provides @code{udev} bindings for Python.")
3797 (license license:lgpl2.1)))
15c56e82
DM
3798
3799(define-public solaar
3800 (package
3801 (name "solaar")
c3858182 3802 (version "1.0.4")
15c56e82
DM
3803 (source (origin
3804 (method git-fetch)
3805 (uri (git-reference
aed5b1ff 3806 (url "https://github.com/pwr-Solaar/Solaar")
15c56e82
DM
3807 (commit version)))
3808 (file-name (git-file-name name version))
3809 (sha256
3810 (base32
c3858182 3811 "15wzxxr2m5349kkvcs3k5clg1rsmvh6by2066qm4hlgvjwmigggy"))))
15c56e82
DM
3812 (build-system python-build-system)
3813 (arguments
3814 `(#:phases
3815 (modify-phases %standard-phases
210f5420 3816 (add-before 'build 'setenv-PATH
15c56e82
DM
3817 (lambda _
3818 (setenv "PYTHONPATH" (string-append "lib:" (getenv "PYTHONPATH")))
3819 #t)))))
3820 (propagated-inputs
3821 `(("python-pygobject" ,python-pygobject)
3822 ("python-pyudev" ,python-pyudev)))
3823 (home-page "https://smxi.org/docs/inxi.htm")
3824 (synopsis "Linux devices manager for the Logitech Unifying Receiver")
3825 (description "This package provides tools to manage clients of the
3826Logitech Unifying Receiver.")
3827 (license license:gpl2)))
4d26987d
AI
3828
3829(define-public lynis
3830 (package
3831 (name "lynis")
112dc8eb 3832 ;; Also update the ‘lynis-sdk’ input to the commit matching this release.
248f218e 3833 (version "2.7.5")
4d26987d
AI
3834 (source
3835 (origin
3836 (method git-fetch)
3837 (uri (git-reference
3838 (url "https://github.com/CISOfy/lynis")
3839 (commit version)))
3840 (file-name (git-file-name name version))
3841 (sha256
248f218e 3842 (base32 "1lkkbvxm0rgrrlx0szaxmf8ghc3d26wal96sgqk84m37mvs1f7p0"))
4d26987d
AI
3843 (modules '((guix build utils)))
3844 (snippet
3845 '(begin
3846 ;; Remove proprietary plugins. As of now, all plugins supplied with
3847 ;; lynis are proprietary. In the future, if free plugins are
3848 ;; provided, whitelist them from deletion.
3849 (for-each delete-file (find-files "plugins"))
3850 #t))))
3851 (build-system gnu-build-system)
3852 (native-inputs
3853 `(;; For tests
3854 ("lynis-sdk"
3855 ,(origin
3856 (method git-fetch)
3857 (uri (git-reference
3858 (url "https://github.com/CISOfy/lynis-sdk")
248f218e 3859 (commit "bf1c1d95121da9ca79a9eac5a15ed8d81e34094d")))
4d26987d
AI
3860 (file-name (git-file-name "lynis-sdk" version))
3861 (sha256
248f218e 3862 (base32 "1ndz5v0039dqa87cva2dk55a8hkw0fibsw8hh2ddmny9qkr4l3dp"))))))
4d26987d
AI
3863 (arguments
3864 `(#:phases
3865 (modify-phases %standard-phases
3866 (replace 'configure
3867 (lambda* (#:key inputs outputs #:allow-other-keys)
3868 (substitute* "lynis"
3869 (("/usr/share/lynis")
3870 (string-append (assoc-ref outputs "out") "/share/lynis")))
3871 (substitute* "include/functions"
3872 (("/usr/local/etc/lynis")
3873 (string-append (assoc-ref outputs "out") "/etc/lynis")))
3874 #t))
3875 (delete 'build)
3876 (replace 'install
3877 (lambda* (#:key outputs #:allow-other-keys)
3878 (let ((out (assoc-ref outputs "out")))
3879 (install-file "lynis" (string-append out "/bin/"))
3880 (install-file "default.prf" (string-append out "/etc/lynis"))
3881 (for-each
3882 (lambda (dir)
3883 (copy-recursively dir (string-append out "/share/lynis/" dir)))
3884 (list "db" "include" "plugins"))
3885 (install-file "lynis.8" (string-append out "/share/man/man8"))
3886 #t)))
3887 (replace 'check
3888 (lambda* (#:key inputs #:allow-other-keys)
3889 (copy-recursively (assoc-ref inputs "lynis-sdk") "../lynis-sdk")
3890 (setenv "LANG" "en_US.UTF-8")
3891 (let ((lynis-dir (getcwd)))
3892 (with-directory-excursion "../lynis-sdk"
3893 (substitute* "config"
3894 (("\\.\\./lynis") lynis-dir))
3895 (substitute* "unit-tests/tests-language-translations.sh"
3896 (("\\.\\./lynis") lynis-dir))
3897 (invoke "sh" "lynis-devkit" "run" "unit-tests"))))))))
3898 (home-page "https://cisofy.com/lynis/")
3899 (synopsis "Security auditing tool")
3900 (description "Lynis is a security auditing tool. It performs an in-depth
3901security scan and runs on the system itself. The primary goal is to test
3902security defenses and provide tips for further system hardening. It will also
3903scan for general system information, vulnerable software packages, and
3904possible configuration issues.")
3905 (license license:gpl3+)))
2eddeeba
PN
3906
3907(define-public ngrep
3908 (package
3909 (name "ngrep")
3910 (version "1.47")
3911 (source
3912 (origin
3913 (method git-fetch)
3914 (uri (git-reference
3915 (url "https://github.com/jpr5/ngrep/")
3916 (commit (string-append "V" (string-replace-substring version "." "_")))))
3917 (file-name (git-file-name name version))
3918 (sha256
3919 (base32
3920 "1x2fyd7wdqlj1r76ilal06cl2wmbz0ws6i3ys204sbjh1cj6dcl7"))))
3921 (build-system gnu-build-system)
3922 (inputs
3923 `(("libpcap" ,libpcap)))
3924 (arguments
3925 `(#:tests? #f ;; No tests.
3926 #:configure-flags (list (string-append "--with-pcap-includes="
3927 (assoc-ref %build-inputs "libpcap")
3928 "/include/pcap"))))
3929 (home-page "https://github.com/jpr5/ngrep/")
3930 (synopsis "Grep-like utility to search for network packets on an interface")
3931 (description "@command{ngrep} is like GNU grep applied to the network
3932layer. It's a PCAP-based tool that allows you to specify an extended regular
3933or hexadecimal expression to match against data payloads of packets. It
3934understands many kinds of protocols, including IPv4/6, TCP, UDP, ICMPv4/6,
3935IGMP and Raw, across a wide variety of interface types, and understands BPF
3936filter logic in the same fashion as more common packet sniffing tools, such as
3937tcpdump and snoop.")
3938 (license license:bsd-3)))
cd2ce8ab
GLV
3939
3940(define-public pam-mount
3941 (package
3942 (name "pam-mount")
6a84fddc 3943 (version "2.17")
cd2ce8ab
GLV
3944 (source
3945 (origin
3946 (method url-fetch)
3947 (uri (string-append "mirror://sourceforge/pam-mount/pam_mount/"
6a84fddc 3948 "pam_mount-" version ".tar.xz"))
cd2ce8ab 3949 (sha256
6a84fddc 3950 (base32 "1q2n6a2ah6nghdn8i6ad2wj247njwb5nx48cggxknaa6lqxylidy"))))
cd2ce8ab
GLV
3951 (build-system gnu-build-system)
3952 (native-inputs
3953 `(("perl" ,perl)
3954 ("pkg-config" ,pkg-config)))
3955 (inputs
3956 `(("cryptsetup" ,cryptsetup)
3957 ("libhx" ,libhx)
3958 ("libxml2" ,libxml2)
3959 ("linux-pam" ,linux-pam)
3960 ("lvm2" ,lvm2)
3961 ("openssl" ,openssl)
3962 ("pcre" ,pcre)
bb93042c 3963 ("libmount" ,util-linux "lib")
cd2ce8ab
GLV
3964 ("util-linux" ,util-linux)))
3965 (arguments
3966 `(#:configure-flags
3967 (list (string-append "--with-slibdir=" %output "/lib")
3968 (string-append "--with-ssbindir=" %output "/sbin"))
3969 #:phases
3970 (modify-phases %standard-phases
3971 (add-after 'unpack 'fix-program-paths
3972 (lambda* (#:key inputs outputs #:allow-other-keys)
3973 (let ((util-linux (assoc-ref inputs "util-linux"))
3974 (out (assoc-ref outputs "out")))
3975 (substitute* "src/mtcrypt.c"
3976 (("\"mount\";")
3977 (string-append "\"" util-linux "/bin/mount\";"))
3978 (("\"umount\";")
3979 (string-append "\"" util-linux "/bin/umount\";"))
3980 (("\"fsck\",")
3981 (string-append "\"" util-linux "/sbin/fsck\",")))
3982 (substitute* "src/rdconf1.c"
3983 (("\"mount\", \"")
3984 (string-append "\"" util-linux "/bin/mount\", \""))
3985 (("\"umount\", \"")
3986 (string-append "\"" util-linux "/bin/umount\", \""))
3987 (("\"fsck\", \"")
3988 (string-append "\"" util-linux "/sbin/fsck\", \""))
3989 (("\"pmvarrun\", \"")
3990 (string-append "\"" out "/sbin/pmvarrun\", \""))))
3991 #t)))))
3992 (home-page "http://pam-mount.sourceforge.net")
3993 (synopsis "PAM module to mount volumes for a user session")
3994 (description
3995 "Pam-mount is a PAM module that can mount volumes when a user logs in.
3996It supports mounting local filesystems of any kind the normal mount utility
3997supports. It can also mount encrypted LUKS volumes using the password
3998supplied by the user when logging in.")
3999 (license (list license:gpl2+ license:lgpl2.1+))))
ace3e549 4000
d8a046d5
OP
4001(define-public jc
4002 (package
4003 (name "jc")
b94cb3be
TGR
4004 (version "1.13.4")
4005 (source
4006 (origin
4007 ;; The PyPI tarball lacks the test suite.
4008 (method git-fetch)
4009 (uri (git-reference
4010 (url "https://github.com/kellyjonbrazil/jc")
4011 (commit (string-append "v" version))))
4012 (file-name (git-file-name name version))
4013 (sha256
4014 (base32 "0rwvyyrdnw43pixp8h51rncq2inc9pbbj1j2191y5si00pjw34zr"))))
d8a046d5
OP
4015 (build-system python-build-system)
4016 (propagated-inputs
b94cb3be
TGR
4017 `(("python-pygments" ,python-pygments)
4018 ("python-ruamel.yaml" ,python-ruamel.yaml)
4019 ("python-xmltodict" ,python-xmltodict)))
d8a046d5
OP
4020 (home-page "https://github.com/kellyjonbrazil/jc")
4021 (synopsis "Convert the output of command-line tools to JSON")
4022 (description "@code{jc} JSONifies the output of many CLI tools and
4023file-types for easier parsing in scripts.")
4024 (license license:expat)))
4025
ace3e549
OP
4026(define-public jtbl
4027 (package
4028 (name "jtbl")
4029 (version "1.1.6")
4030 (source (origin
4031 (method git-fetch)
4032 (uri (git-reference
b0e7b699 4033 (url "https://github.com/kellyjonbrazil/jtbl")
ace3e549
OP
4034 (commit (string-append "v" version))))
4035 (file-name (git-file-name name version))
4036 (sha256
4037 (base32
4038 "1zzd7rd63xva50f22d1rfja4r302aizrafarhwm67vv181swvdya"))))
4039 (build-system python-build-system)
4040 (inputs
4041 `(("python-tabulate" ,python-tabulate)))
4042 (home-page "https://github.com/kellyjonbrazil/jtbl")
4043 (synopsis "Command-line tool to print JSON data as a table in the terminal")
4044 (description "@code{jtbl} accepts piped JSON data from stdin and outputs a
4045text table representation to stdout.")
4046 (license license:expat)))
ceb233bb
OP
4047
4048(define-public hosts
4049 (package
4050 (name "hosts")
4051 (version "3.6.3")
4052 (source (origin
4053 (method git-fetch)
4054 (uri (git-reference
b0e7b699 4055 (url "https://github.com/xwmx/hosts")
ceb233bb
OP
4056 (commit version)))
4057 (file-name (git-file-name name version))
4058 (sha256
4059 (base32
4060 "1ni4z89kxzgwm26hhx908g04f2h0fypy7lgfa0rvsz8d0wslgcsn"))))
4061 (build-system trivial-build-system)
4062 (inputs
4063 `(("bats" ,bats) ;for test
4064 ("awk" ,gawk)
4065 ("bash" ,bash)
4066 ("coreutils" ,coreutils)
4067 ("diffutils" ,diffutils)
4068 ("grep" ,grep)
4069 ("ncurses" ,ncurses) ;tput
4070 ("sed" ,sed)))
4071 (arguments
4072 `(#:modules ((guix build utils))
4073 #:builder
4074 (begin
4075 (use-modules (guix build utils))
4076 ;; copy source
4077 (copy-recursively (assoc-ref %build-inputs "source") ".")
4078 ;; patch-shebang phase
4079 (setenv "PATH"
4080 (string-append (assoc-ref %build-inputs "bash") "/bin"
4081 ":" (assoc-ref %build-inputs "awk") "/bin"
4082 ":" (assoc-ref %build-inputs "coreutils") "/bin"
4083 ":" (assoc-ref %build-inputs "diffutils") "/bin"
4084 ":" (assoc-ref %build-inputs "grep") "/bin"
4085 ":" (assoc-ref %build-inputs "ncurses") "/bin"
4086 ":" (assoc-ref %build-inputs "sed") "/bin"
4087 ":" "/run/setuid-programs"
4088 ":" (getenv "PATH")))
4089 (substitute* "hosts"
4090 (("#!/usr/bin/env bash")
4091 (string-append "#!" (which "bash")
4092 "\nPATH=" (getenv "PATH"))))
4093 ;; check phase
4094 (setenv "TERM" "linux") ;set to tty for test
4095 (invoke (string-append (assoc-ref %build-inputs "bats") "/bin/bats")
4096 "test")
4097 ;; install phase
4098 (install-file "hosts" (string-append %output "/bin"))
4099 (let ((bash-completion
4100 (string-append %output "/etc/bash_completion.d")))
4101 (mkdir-p bash-completion)
4102 (copy-file "etc/hosts-completion.bash"
4103 (string-append bash-completion "/hosts")))
4104 (let ((zsh-completion
4105 (string-append %output "/share/zsh/site-functions")))
4106 (mkdir-p zsh-completion)
4107 (copy-file "etc/hosts-completion.zsh"
4108 (string-append zsh-completion "/_hosts")))
4109 (let ((doc (string-append %output "/share/doc/" ,name "-" ,version)))
4110 (mkdir-p doc)
4111 (install-file "LICENSE" doc)
4112 (install-file "README.md" doc))
4113 #t)))
4114 (home-page "https://github.com/xwmx/hosts/")
4a986753 4115 (synopsis "Script for editing a foreign distro's @file{/etc/hosts} file")
ceb233bb 4116 (description "Hosts is a command line program for managing
4a986753
JN
4117@file{/etc/hosts} entries. On Guix System, @file{/etc/hosts} is managed from
4118the system configuration; hosts only works when using the Guix package manager
4119on a foreign distro. @command{hosts} works with existing hosts files and
4120entries, providing commands to add, remove, comment, and search.")
ceb233bb 4121 (license license:expat)))
93d3cfec
DM
4122
4123(define-public nmrpflash
4124 (package
4125 (name "nmrpflash")
4126 (version "0.9.14")
4127 (source
4128 (origin
4129 (method git-fetch)
4130 (uri
4131 (git-reference
8ed4c468 4132 (url "https://github.com/jclehner/nmrpflash")
93d3cfec
DM
4133 (commit (string-append "v" version))))
4134 (sha256
4135 (base32 "1fdjrxhjs96rdclbkld57xarf592slhkp79h46z833npxpn12ck1"))
4136 (file-name (git-file-name name version))))
4137 (build-system gnu-build-system)
4138 (native-inputs
4139 `(("pkg-config" ,pkg-config)))
4140 (inputs
4141 `(("libnl" ,libnl)
4142 ("libpcap" ,libpcap)))
4143 (arguments
4144 `(#:tests? #f ; None exist
4145 #:make-flags
4146 (list (string-append "CC=" ,(cc-for-target))
4147 (string-append "PREFIX=" (assoc-ref %outputs "out")))
4148 #:phases
4149 (modify-phases %standard-phases
4150 (delete 'configure)
4151 (add-before 'install 'prepare-install
4152 (lambda* (#:key outputs #:allow-other-keys)
4153 (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
4154 #t)))))
4155 (home-page "https://github.com/jclehner/nmrpflash")
4156 (synopsis "Netgear unbrick utility")
4157 (description "This package provides a utility to flash a new firmware
4158image to a Netgear device. It has been tested on Netgear EX2700, EX6120,
4159EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800,
4160R8000, R8500, WNDR3800, but is likely to be compatible with many other
4161Netgear devices.")
4162 (license license:gpl3+)))
3728ed7c
LF
4163
4164(define-public atop
4165 (package
4166 (name "atop")
4167 (version "2.5.0")
4168 (source (origin
4169 (method url-fetch)
4170 (uri (string-append "https://www.atoptool.nl/download/atop-"
4171 version ".tar.gz"))
4172 (sha256
4173 (base32
4174 "0crzz4i2nabyh7d6xg7fvl65qls87nbca5ihidp3nijhrrbi14ab"))))
4175 (build-system gnu-build-system)
4176 (arguments
4177 `(#:tests? #f ; no test suite
4178 #:make-flags
4179 (list (string-append "CC=" ,(cc-for-target))
4180 ;; The installer requires a choice between systemd or SysV.
4181 "systemdinstall"
4182 (string-append "DESTDIR=" (assoc-ref %outputs "out"))
4183 (string-append "BINPATH=/bin")
4184 (string-append "SBINPATH=/sbin")
4185 (string-append "SYSDPATH=/etc/systemd/system")
4186 (string-append "PMPATHD=/etc/systemd/system-sleep")
4187 (string-append "MAN1PATH=/share/man/man1")
4188 (string-append "MAN5PATH=/share/man/man5")
4189 (string-append "MAN8PATH=/share/man/man8")
4190 ;; Or else it tries to create /var/log/atop...
4191 (string-append "LOGPATH="))
4192 #:phases
4193 (modify-phases %standard-phases
4194 (delete 'configure) ; No ./configure script
4195 (add-before 'build 'patch-build
4196 (lambda* (#:key outputs #:allow-other-keys)
4197 (substitute* "Makefile"
4198 ;; We don't need to chown things in the build environment.
4199 (("chown.*$") "")
4200 ;; We can't toggle the setuid bit in the build environment.
4201 (("chmod 04711") "chmod 0711")
4202 ;; Otherwise, it creates a blank configuration file as a "default".
4203 (("touch.*DEFPATH)/atop") "")
4204 (("chmod.*DEFPATH)/atop") ""))
4205 #t)))))
4206 (inputs
4207 `(("ncurses" ,ncurses)
4208 ("python" ,python-wrapper) ; for `atopgpud`
4209 ("zlib" ,zlib)))
4210 (home-page "https://www.atoptool.nl/")
4211 (synopsis "Linux performance monitoring console")
4212 (description "Atop is an ASCII full-screen performance monitor for Linux
4213that is capable of reporting the activity of all processes (even processes have
4214finished during the monitoring interval), daily logging of system and process
4215activity for long-term analysis, highlighting overloaded system resources by
4216using colors, etc. At regular intervals, it shows system-level activity related
4217to the CPU, memory, swap, disks (including LVM) and network layers, and for
4218every process (and thread) it shows e.g. the CPU utilization, memory growth,
4219disk utilization, priority, username, state, and exit code.")
4220 (license license:gpl2+)))
a94214f6
DM
4221
4222;; TODO: Unvendor u-root (pkg: forth, golang, testutil).
4223(define fiano
4224 (package
4225 (name "fiano")
4226 (version "5.0.0")
4227 (source (origin
4228 (method git-fetch)
4229 (uri (git-reference
4230 (url "https://github.com/linuxboot/fiano.git")
4231 (commit (string-append "v" version))))
4232 (file-name (string-append name "-" version "-checkout"))
4233 (sha256
4234 (base32
4235 "03ihdwwhb7g6bihx141cn0924sjs5ps6q3ps58pk1cg0g0srrr9h"))
4236 (modules '((guix build utils)))
4237 (snippet
4238 '(begin
4239 (delete-file-recursively "vendor/golang.org")
4240 (delete-file-recursively "vendor/github.com")
4241 #t))))
4242 (build-system go-build-system)
4243 (arguments
4244 `(#:import-path "github.com/linuxboot/fiano"
4245 #:unpack-path "github.com/linuxboot/fiano"))
4246 (native-inputs
4247 `())
4248 (inputs
4249 `(("go-golang-org-x-text" ,go-golang-org-x-text)
4250 ("go-github.com-ulikunitz-xz" ,go-github.com-ulikunitz-xz)))
4251 (synopsis "UEFI image editor")
4252 (description "This package provides a command-line UEFI image editor.")
4253 (home-page "https://github.com/linuxboot/fiano")
4254 (license license:bsd-3)))
4f318f74
DM
4255
4256(define-public fiano-utk
4257 (package
4258 (inherit fiano)
4259 (name "fiano-utk")
4260 (arguments
4261 `(#:import-path "github.com/linuxboot/fiano/cmds/utk"
4262 #:unpack-path "github.com/linuxboot/fiano"))))
ad012138
DM
4263
4264(define-public fiano-fmap
4265 (package
4266 (inherit fiano)
4267 (name "fiano-fmap")
4268 (arguments
4269 `(#:import-path "github.com/linuxboot/fiano/cmds/fmap"
4270 #:unpack-path "github.com/linuxboot/fiano"))))
00fb3976
DM
4271
4272(define-public novena-eeprom
4273 (package
4274 (name "novena-eeprom")
4275 (version "2.3")
4276 (source (origin
4277 (method git-fetch)
4278 (uri (git-reference
4279 (url "https://github.com/xobs/novena-eeprom.git")
4280 (commit (string-append "v" version))))
4281 (file-name (string-append name "-" version "-checkout"))
4282 (sha256
4283 (base32
4284 "00pd71mg0g20v0820ggp3ghf9nyj5s4wavaz9mkmrmsr91hcnf7i"))))
4285 (build-system gnu-build-system)
4286 (arguments
4287 `(#:tests? #f ; No tests exist
4288 #:make-flags
4289 (list (string-append "CC=" ,(cc-for-target)))
4290 #:phases
4291 (modify-phases %standard-phases
4292 (delete 'configure)
4293 (replace 'install
4294 (lambda* (#:key outputs #:allow-other-keys)
4295 (let* ((out (assoc-ref outputs "out"))
4296 (out-bin (string-append out "/bin"))
4297 (out-share-man (string-append out "/share/man/man8")))
4298 (install-file "novena-eeprom" out-bin)
4299 (install-file "novena-eeprom.8" out-share-man)))))))
4300 (inputs
4301 `(("i2c-tools" ,i2c-tools)))
4302 (synopsis "Novena EEPROM editor")
4303 (description "This package provides an editor for the Novena EEPROM.
4304Novena boards contain a device-dependent descriptive EEPROM that defines
4305various parameters such as serial number, MAC address, and featureset.
4306This program allows you to view and manipulate this EEPROM list.")
4307 (home-page "https://github.com/xobs/novena-eeprom/")
4308 (supported-systems '("armhf-linux"))
4309 (license license:bsd-3)))
74a83afd
DM
4310
4311(define-public lrzsz
4312 (package
4313 (name "lrzsz")
4314 (version "0.12.20")
4315 (source (origin
4316 (method url-fetch)
4317 (uri (string-append "https://www.ohse.de/uwe/releases/lrzsz-"
4318 version ".tar.gz"))
4319 (sha256
4320 (base32
4321 "1wcgfa9fsigf1gri74gq0pa7pyajk12m4z69x7ci9c6x9fqkd2y2"))))
4322 (build-system gnu-build-system)
4323 (arguments
4324 `(#:phases
4325 (modify-phases %standard-phases
4326 (replace 'configure
4327 (lambda* (#:key outputs #:allow-other-keys)
4328 (setenv "CONFIG_SHELL" (which "bash"))
4329 (invoke "./configure"
4330 (string-append "--prefix="
4331 (assoc-ref outputs "out"))))))))
4332 (synopsis "Implementation of XMODEM/YMODEM/ZMODEM transfer protocols")
4333 (description "This package provides programs that transfer files using
4334the XMODEM/YMODEM/ZMODEM file transfer protocols.")
4335 (home-page "https://ohse.de/uwe/software/lrzsz.html")
4336 (license license:gpl2+)))