projects/guix·blob ruby-team · refs

7181 lines · 288.1 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2012-2026 Ludovic Courtès <[email protected]>
3;;; Copyright © 2013 Cyril Roelandt <[email protected]>
4;;; Copyright © 2013 Nikita Karetnikov <[email protected]>
5;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver <[email protected]>
6;;; Copyright © 2014, 2015-2018, 2020-2023 Eric Bavier <[email protected]>
7;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <[email protected]>
8;;; Copyright © 2015 Alex Sassmannshausen <[email protected]>
9;;; Copyright © 2015 Eric Dvorsak <[email protected]>
10;;; Copyright © 2016, 2017, 2020 Leo Famulari <[email protected]>
11;;; Copyright © 2016 Pjotr Prins <[email protected]>
12;;; Copyright © 2016, 2017, 2023 Ricardo Wurmus <[email protected]>
13;;; Copyright © 2016-2025 Efraim Flashner <[email protected]>
14;;; Copyright © 2016 Peter Feigl <[email protected]>
15;;; Copyright © 2016 John J. Foerch <[email protected]>
16;;; Copyright © 2016, 2017 Nikita <[email protected]>
17;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]>
18;;; Copyright © 2016 John Darrington <[email protected]>
19;;; Copyright © 2017 Ben Sturmfels <[email protected]>
20;;; Copyright © 2017 Ethan R. Jones <[email protected]>
21;;; Copyright © 2017 Christine Lemmer-Webber <[email protected]>
22;;; Copyright © 2017, 2018, 2020 Marius Bakke <[email protected]>
23;;; Copyright © 2018, 2019 Arun Isaac <[email protected]>
24;;; Copyright © 2018 Pierre-Antoine Rouby <[email protected]>
25;;; Copyright © 2018 Rutger Helling <[email protected]>
26;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
27;;; Copyright © 2019 Brett Gilio <[email protected]>
28;;; Copyright © 2019,2020 Björn Höfling <[email protected]>
29;;; Copyright © 2019 Jakob L. Kreuze <[email protected]>
30;;; Copyright © 2019 Hartmut Goebel <[email protected]>
31;;; Copyright © 2019 Alex Griffin <[email protected]>
32;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <[email protected]>
33;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <[email protected]>
34;;; Copyright © 2020 Oleg Pykhalov <[email protected]>
35;;; Copyright © 2020, 2023, 2024, 2025 Janneke Nieuwenhuizen <[email protected]>
36;;; Copyright © 2020, 2021, 2022 Michael Rohleder <[email protected]>
37;;; Copyright © 2020 Vincent Legoll <[email protected]>
38;;; Copyright © 2020 Morgan Smith <[email protected]>
39;;; Copyright © 2021-2025 Maxim Cournoyer <[email protected]>
40;;; Copyright © 2021, 2023, 2024 Zheng Junjie <[email protected]>
41;;; Copyright © 2021 Stefan Reichör <[email protected]>
42;;; Copyright © 2021 qblade <[email protected]>
43;;; Copyright © 2021 Hyunseok Kim <[email protected]>
44;;; Copyright © 2021 David Larsson <[email protected]>
45;;; Copyright © 2021 WinterHound <[email protected]>
46;;; Copyright © 2021 Brice Waegeneire <[email protected]>
47;;; Copyright © 2021 Maxime Devos <[email protected]>
48;;; Copyright © 2021 Roel Janssen <[email protected]>
49;;; Copyright © 2021, 2025 muradm <[email protected]>
50;;; Copyright © 2021 pineapples <[email protected]>
51;;; Copyright © 2021 Petr Hodina <[email protected]>
52;;; Copyright © 2021-2026 Artyom V. Poptsov <[email protected]>
53;;; Copyright © 2022 Wamm K. D. <[email protected]>
54;;; Copyright © 2022 Roman Riabenko <[email protected]>
55;;; Copyright © 2022 Petr Hodina <[email protected]>
56;;; Copyright © 2022 Andreas Rammhold <[email protected]>
57;;; Copyright © 2022 ( <[email protected]>
58;;; Copyright © 2022, 2023 Matthew James Kraai <[email protected]>
59;;; Copyright © 2022 jgart <[email protected]>
60;;; Copyright © 2023 Juliana Sims <[email protected]>
61;;; Copyright © 2023 Lu Hui <[email protected]>
62;;; Copyright © 2023 Yovan Naumovski <[email protected]>
63;;; Copyright © 2023 Alexey Abramov <[email protected]>
64;;; Copyright © 2023 Bruno Victal <[email protected]>
65;;; Copyright © 2023 Tobias Kortkamp <[email protected]>
66;;; Copyright © 2023 Jaeme Sifat <[email protected]>
67;;; Copyright © 2023 Nicolas Graves <[email protected]>
68;;; Copyright © 2023 Tomás Ortín Fernández <[email protected]>
69;;; Copyright © 2024 dan <[email protected]>
70;;; Copyright © 2024 gemmaro <[email protected]>
71;;; Copyright © 2024 Richard Sent <[email protected]>
72;;; Copyright © 2024 Vinicius Monego <[email protected]>
73;;; Copyright © 2024 nathan <[email protected]>
74;;; Copyright © 2024 Nikita Domnitskii <[email protected]>
75;;; Copyright © 2024 Roman Scherer <[email protected]>
76;;; Copyright © 2024-2026 Ashish SHUKLA <[email protected]>
77;;; Copyright © 2024 Ashvith Shetty <[email protected]>
78;;; Copyright © 2025 Dariqq <[email protected]>
79;;; Copyright © 2024 nik gaffney <[email protected]>
80;;; Copyright © 2025 Simon Streit <[email protected]>
81;;; Copyright © 2025 Luca Kredel <[email protected]>
82;;; Copyright © 2025 ROCKTAKEY <[email protected]>
83;;; Copyright © 2026 Andreas Enge <[email protected]>
84;;; Copyright © 2026 Luis Guilherme Coelho <[email protected]>
85;;; Copyright © 2026 Andy Tai <[email protected]>
86;;; Copyright © 2026 marderbot <[email protected]>
87;;;
88;;; This file is part of GNU Guix.
89;;;
90;;; GNU Guix is free software; you can redistribute it and/or modify it
91;;; under the terms of the GNU General Public License as published by
92;;; the Free Software Foundation; either version 3 of the License, or (at
93;;; your option) any later version.
94;;;
95;;; GNU Guix is distributed in the hope that it will be useful, but
96;;; WITHOUT ANY WARRANTY; without even the implied warranty of
97;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
98;;; GNU General Public License for more details.
99;;;
100;;; You should have received a copy of the GNU General Public License
101;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
102
103(define-module (gnu packages admin)
104 #:use-module (guix build-system cargo)
105 #:use-module (guix build-system cmake)
106 #:use-module (guix build-system copy)
107 #:use-module (guix build-system emacs)
108 #:use-module (guix build-system glib-or-gtk)
109 #:use-module (guix build-system gnu)
110 #:use-module (guix build-system go)
111 #:use-module (guix build-system meson)
112 #:use-module (guix build-system perl)
113 #:use-module (guix build-system pyproject)
114 #:use-module (guix build-system qt)
115 #:use-module (guix build-system ruby)
116 #:use-module (guix build-system trivial)
117 #:use-module (guix download)
118 #:use-module (guix git-download)
119 #:use-module (guix gexp)
120 #:use-module ((guix licenses) #:prefix license:)
121 #:use-module (guix packages)
122 #:use-module (guix platform)
123 #:use-module (guix utils)
124 #:use-module (gnu packages)
125 #:use-module (gnu packages acl)
126 #:use-module (gnu packages algebra)
127 #:use-module (gnu packages attr)
128 #:use-module (gnu packages autotools)
129 #:use-module (gnu packages base)
130 #:use-module (gnu packages bash)
131 #:use-module (gnu packages bison)
132 #:use-module (gnu packages boost)
133 #:use-module (gnu packages c)
134 #:use-module (gnu packages check)
135 #:use-module (gnu packages compression)
136 #:use-module (gnu packages cpp)
137 #:use-module (gnu packages crypto)
138 #:use-module (gnu packages cryptsetup)
139 #:use-module (gnu packages curl)
140 #:use-module (gnu packages cyrus-sasl)
141 #:use-module (gnu packages datastructures)
142 #:use-module (gnu packages dbm)
143 #:use-module (gnu packages debian)
144 #:use-module (gnu packages dns)
145 #:use-module (gnu packages elf)
146 #:use-module (gnu packages file)
147 #:use-module (gnu packages file-systems)
148 #:use-module (gnu packages compiler-tools)
149 #:use-module (gnu packages fonts)
150 #:use-module (gnu packages freedesktop)
151 #:use-module (gnu packages gawk)
152 #:use-module (gnu packages gettext)
153 #:use-module (gnu packages gcc)
154 #:use-module (gnu packages gl)
155 #:use-module (gnu packages glib)
156 #:use-module (gnu packages gnome)
157 #:use-module (gnu packages gnupg)
158 #:use-module (gnu packages golang)
159 #:use-module (gnu packages golang-build)
160 #:use-module (gnu packages golang-check)
161 #:use-module (gnu packages golang-compression)
162 #:use-module (gnu packages golang-crypto)
163 #:use-module (gnu packages golang-web)
164 #:use-module (gnu packages golang-xyz)
165 #:use-module (gnu packages groff)
166 #:use-module (gnu packages gtk)
167 #:use-module (gnu packages guile)
168 #:use-module (gnu packages guile-xyz)
169 #:use-module (gnu packages image)
170 #:use-module (gnu packages imagemagick)
171 #:use-module (gnu packages inkscape)
172 #:use-module (gnu packages kerberos)
173 #:use-module (gnu packages libbsd)
174 #:use-module (gnu packages libunwind)
175 #:use-module (gnu packages libusb)
176 #:use-module (gnu packages linux)
177 #:use-module (gnu packages logging)
178 #:use-module (gnu packages lsof)
179 #:use-module (gnu packages lua)
180 #:use-module (gnu packages m4)
181 #:use-module (gnu packages mail)
182 #:use-module (gnu packages man)
183 #:use-module (gnu packages maths)
184 #:use-module (gnu packages markup)
185 #:use-module (gnu packages mcrypt)
186 #:use-module (gnu packages mpi)
187 #:use-module (gnu packages ncurses)
188 #:use-module (gnu packages nettle)
189 #:use-module (gnu packages networking)
190 #:use-module (gnu packages openldap)
191 #:use-module (gnu packages package-management)
192 #:use-module (gnu packages patchutils)
193 #:use-module (gnu packages pciutils)
194 #:use-module (gnu packages pcre)
195 #:use-module (gnu packages perl)
196 #:use-module (gnu packages perl-check)
197 #:use-module (gnu packages pkg-config)
198 #:use-module (gnu packages polkit)
199 #:use-module (gnu packages python)
200 #:use-module (gnu packages python-build)
201 #:use-module (gnu packages python-check)
202 #:use-module (gnu packages python-crypto)
203 #:use-module (gnu packages python-xyz)
204 #:use-module (gnu packages qt)
205 #:use-module (gnu packages readline)
206 #:use-module (gnu packages regex)
207 #:use-module (gnu packages ruby)
208 #:use-module (gnu packages ruby-check)
209 #:use-module (gnu packages ruby-xyz)
210 #:use-module (gnu packages selinux)
211 #:use-module (gnu packages serialization)
212 #:use-module (gnu packages sqlite)
213 #:use-module (gnu packages ssh)
214 #:use-module (gnu packages sphinx)
215 #:use-module (gnu packages tcl)
216 #:use-module (gnu packages terminals)
217 #:use-module (gnu packages texinfo)
218 #:use-module (gnu packages time)
219 #:use-module (gnu packages tls)
220 #:use-module (gnu packages version-control)
221 #:use-module (gnu packages vulkan)
222 #:use-module (gnu packages web)
223 #:use-module (gnu packages xdisorg)
224 #:use-module (gnu packages xml)
225 #:use-module (gnu packages xorg))
226
227(define-public acct
228 (package
229 (name "acct")
230 (version "6.6.4")
231 (source
232 (origin
233 (method url-fetch)
234 (uri (string-append "mirror://gnu/acct/acct-"
235 version ".tar.gz"))
236 (sha256
237 (base32
238 "0gv6m8giazshvgpvwbng98chpas09myyfw1zr2y7hqxib0mvy5ac"))))
239 (build-system gnu-build-system)
240 (home-page "https://www.gnu.org/software/acct/")
241 (synopsis "Standard login and process accounting utilities")
242 (description
243 "GNU acct provides a means for system administrators to determine
244system usage patterns. It provides information on, for example, connections,
245programs executed, and system resources used.")
246 (license license:gpl3+)))
247
248(define-public aide
249 (package
250 (name "aide")
251 (version "0.19.3")
252 (source
253 (origin
254 (method url-fetch)
255 (uri (string-append "https://github.com/aide/aide/releases/download/v"
256 version "/aide-" version ".tar.gz"))
257 (sha256
258 (base32 "0irz58hmbrq3vci0aixlyap35x59i8nz0whvvl12ihmqnl5if4v5"))))
259 (build-system gnu-build-system)
260 (arguments
261 (list #:configure-flags #~(list "--with-posix-acl"
262 "--with-selinux"
263 "--with-xattr"
264 "--with-config-file=/etc/aide.conf"
265 "--without-fstype")))
266 (native-inputs
267 (list bison flex pkg-config))
268 (inputs
269 (list acl
270 attr
271 libgcrypt
272 libgpg-error
273 libselinux
274 nettle
275 pcre2
276 `(,zlib "static")
277 zlib))
278 (synopsis "File and directory integrity checker")
279 (description
280 "AIDE (Advanced Intrusion Detection Environment) is a file and directory
281integrity checker. It creates a database from the regular expression rules
282that it finds from its configuration files. Once this database is initialized
283it can be used to verify the integrity of the files. It has several message
284digest algorithms that are used to check the integrity of files. All of the
285usual file attributes can be checked for inconsistencies.")
286 (home-page "https://aide.github.io/")
287 (license license:gpl2+)))
288
289(define-public daemontools
290 (package
291 (name "daemontools")
292 (version "0.76")
293 (source (origin
294 (method url-fetch)
295 (uri (string-append
296 "https://cr.yp.to/daemontools/"
297 "daemontools-" version ".tar.gz"))
298 (sha256
299 (base32
300 "07scvw88faxkscxi91031pjkpccql6wspk4yrlnsbrrb5c0kamd5"))
301 (patches (search-patches "daemontools-gcc14.patch"))))
302 (build-system gnu-build-system)
303 (arguments
304 (list #:tests? #f ;; No tests as far as I can tell.
305 #:phases
306 #~(modify-phases %standard-phases
307 (add-after 'unpack 'chdir
308 (lambda _
309 (chdir #$(string-append "daemontools-" version))))
310 (delete 'configure)
311 (add-before 'build 'patch
312 (lambda _
313 (substitute* "src/error.h"
314 (("extern int errno;")
315 "#include <errno.h>"))))
316 (replace 'build
317 (lambda _
318 (invoke "package/compile")))
319 (replace 'install
320 (lambda _
321 (let ((bin (string-append #$output "/bin")))
322 (for-each (lambda (file)
323 (install-file file bin))
324 (find-files "command"))))))))
325 (synopsis "Tools for managing UNIX style services")
326 (description
327 "@code{daemontools} is a collection of tools for managing UNIX
328services.")
329 (license license:public-domain)
330 (home-page "https://cr.yp.to/daemontools.html")))
331
332(define-public detox
333 (package
334 (name "detox")
335 (version "3.0.1")
336 (source (origin
337 (method git-fetch)
338 (uri (git-reference
339 (url "https://github.com/dharple/detox")
340 (commit (string-append "v" version))))
341 (file-name (git-file-name name version))
342 (sha256
343 (base32
344 "0328w1hh279kgb4fn2vwbvwhmr32i7ayp665vs78pgjy84vhgxzy"))))
345 (build-system gnu-build-system)
346 (native-inputs
347 (list autoconf automake bison flex pkg-config))
348 (home-page "https://github.com/dharple/detox")
349 (synopsis "Clean up file names")
350 (description
351 "Detox is a program that renames files to make them easier to work with
352under Unix and related operating systems. Spaces and various other unsafe
353characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
354characters can be replaced as well, as can UTF-8 characters.")
355 (license license:bsd-3)))
356
357(define-public hetznercloud-cli
358 (package
359 (name "hetznercloud-cli")
360 (version "1.67.0")
361 (source
362 (origin
363 (method git-fetch)
364 (uri (git-reference
365 (url "https://github.com/hetznercloud/cli")
366 (commit (string-append "v" version))))
367 (file-name (git-file-name name version))
368 (sha256
369 (base32 "1py0bq2zynblyq93mv0ixlli7drn3swny4njpxwg4l5iq8cnf168"))))
370 (build-system go-build-system)
371 (arguments
372 (list
373 #:tests? #f
374 #:install-source? #f
375 #:import-path "github.com/hetznercloud/cli/cmd/hcloud"
376 #:unpack-path "github.com/hetznercloud/cli"
377 #:test-subdirs #~(list "../../...") ;test the whole library
378 #:phases
379 #~(modify-phases %standard-phases
380 (add-after 'install 'install-completions
381 (lambda _
382 (define (install-completion shell file)
383 (let ((file (string-append #$output file)))
384 (mkdir-p (dirname file))
385 (with-output-to-file file
386 (lambda _
387 (invoke (string-append #$output "/bin/hcloud")
388 "completion" shell)))))
389 (install-completion "bash" "/share/bash-completion/completions/hcloud")
390 (install-completion "fish" "/share/fish/vendor_completions.d/hcloud.fish")
391 (install-completion "zsh" "/share/zsh/site-functions/_hcloud"))))))
392 (native-inputs
393 (list go-github-com-burntsushi-toml
394 go-github-com-cheggaaa-pb-v3
395 go-github-com-dustin-go-humanize
396 go-github-com-fatih-color
397 go-github-com-fatih-structs
398 go-github-com-goccy-go-yaml
399 go-github-com-guptarohit-asciigraph
400 go-github-com-hetznercloud-hcloud-go-v2
401 go-github-com-jedib0t-go-pretty-v6
402 go-github-com-spf13-cast
403 go-github-com-spf13-cobra
404 go-github-com-spf13-pflag
405 go-github-com-spf13-viper
406 go-github-com-stretchr-testify
407 go-github-com-swaggest-assertjson
408 go-go-uber-org-mock
409 go-golang-org-x-crypto
410 go-golang-org-x-exp
411 go-golang-org-x-net
412 go-golang-org-x-term
413 go-golang-org-x-text))
414 (home-page "https://github.com/hetznercloud/cli")
415 (synopsis "Command-line interface for the Hetzner Cloud service")
416 (description
417 "This package provides the @code{hcloud} binary, a command-line interface
418for interacting with the @url{https://www.hetzner.com/,Hetzner Cloud}
419service.")
420 (license license:expat)))
421
422(define-public hungrycat
423 (package
424 (name "hungrycat")
425 (version "0.4.2")
426 (source
427 (origin
428 (method git-fetch)
429 (uri (git-reference
430 (url "https://github.com/jwilk/hungrycat/")
431 (commit version)))
432 (file-name (git-file-name name version))
433 (sha256
434 (base32 "0llfb7kh2k53aqwc1fagw77fmwhvwdxd5qlg0fyrhqq298gj8wif"))))
435 (build-system gnu-build-system)
436 (arguments
437 (list
438 ;; tests: Files=2, Tests=2334, 1 wallclock secs
439 #:test-target "test"
440 #:make-flags
441 #~(list (string-append "CC=" #$(cc-for-target)))
442 #:phases
443 #~(modify-phases %standard-phases
444 (add-after 'build 'build-doc
445 (lambda _
446 (invoke "make" "-C" "doc"))))))
447 (native-inputs
448 (list automake
449 autoconf
450 cppcheck
451 perl
452 perl-ipc-run
453 python-docutils))
454 (synopsis "Single tool that combines @command{cat} & @command{rm}")
455 (description
456 "hungrycat prints the contents of a file to standard output, while
457simultaneously freeing the disk space it occupied. It is useful if you need
458to process a large file, don't have enough space to store both the input and
459output files, and don't need the input file afterwards.
460While similar in principle to running @command{cat} immediately followed by
461@command{rm}, @command{hungrycat} actually frees blocks as soon as they are
462printed instead of after the entire file has been read, which is often too
463late.")
464 (home-page "https://jwilk.net/software/hungrycat")
465 (license license:expat)))
466
467;; This package uses su instead of sudo (because of SpaceFM).
468(define-public ktsuss
469 (package
470 (name "ktsuss")
471 (version "2.1")
472 (source
473 (origin
474 (method git-fetch)
475 (uri
476 (git-reference
477 (url "https://github.com/nomius/ktsuss")
478 (commit version)))
479 (sha256
480 (base32 "0q9931f9hp47v1n8scli4bdg2rkjpf5jf8v7jj2gdn83aia1r2hz"))
481 (file-name (git-file-name name version))))
482 (build-system glib-or-gtk-build-system)
483 (arguments
484 (list
485 #:configure-flags
486 #~(list "CFLAGS=-g -O2 -Wno-error=implicit-function-declaration")
487 #:phases
488 #~(modify-phases %standard-phases
489 (add-after 'unpack 'patch-file-names
490 (lambda _
491 (substitute* "configure.ac"
492 (("supath=`which su 2>/dev/null`")
493 "supath=/run/privileged/bin/su")))))))
494 (native-inputs
495 (list autoconf automake libtool pkg-config))
496 (inputs
497 (list glib gtk+-2))
498 (synopsis "Graphical front end for @command{su}")
499 (description
500 "Ktsuss stands for ``Keep the @command{su} simple, stupid''.
501It is a graphical version of @command{su} written in C and GTK+ 2, with
502simplicity in mind.")
503 (home-page "https://github.com/nomius/ktsuss")
504 (license license:bsd-3)))
505
506(define-public progress
507 (package
508 (name "progress")
509 (version "0.17")
510 (source
511 (origin
512 (method git-fetch)
513 (uri (git-reference
514 (url "https://github.com/Xfennec/progress")
515 (commit (string-append "v" version))))
516 (sha256
517 (base32 "1cg1vdk2891sdcbn7yc9a6mzdxplm63qsk1kq0jr4j8ym28v09xf"))
518 (file-name (git-file-name name version))))
519 (build-system gnu-build-system)
520 (native-inputs
521 (list pkg-config which))
522 (inputs
523 (list ncurses))
524 (arguments
525 (list #:tests? #f ; no test suite
526 #:make-flags
527 #~(list (string-append "CC=" #$(cc-for-target))
528 (string-append "PKG_CONFIG=" #$(pkg-config-for-target))
529 (string-append "PREFIX=" #$output))
530 #:phases
531 #~(modify-phases %standard-phases
532 (delete 'configure)))) ; no configure script
533 (home-page "https://github.com/Xfennec/progress")
534 (synopsis "Program to view the progress of the coreutils commands")
535 (description "A program that looks for coreutils basic commands (cp, mv,
536dd, tar, gzip/gunzip, cat, etc.) currently running on your system and displays
537the percentage of copied data. It can also show estimated time and throughput,
538and provides a \"top-like\" mode (monitoring).")
539 (license license:gpl3+)))
540
541(define-public shepherd-0.10
542 (package
543 (name "shepherd")
544 (version "0.10.5")
545 (source (origin
546 (method url-fetch)
547 (uri (string-append "mirror://gnu/shepherd/shepherd-"
548 version ".tar.gz"))
549 (sha256
550 (base32
551 "0k40n9qm5r5rqf94isa1857ghd4329zc5rjf3ll2572gpiw3ij4x"))))
552 (build-system gnu-build-system)
553 (arguments
554 (list #:configure-flags #~'("--localstatedir=/var")
555 #:make-flags #~'("GUILE_AUTO_COMPILE=0")
556 #:phases (if (%current-target-system)
557 #~(modify-phases %standard-phases
558 (add-before 'configure 'set-fibers-directory
559 (lambda _
560 ;; When cross-compiling, refer to the target
561 ;; Fibers, not the native one.
562 (substitute* '("herd.in" "shepherd.in")
563 (("%FIBERS_SOURCE_DIRECTORY%")
564 #$(file-append
565 (this-package-input "guile-fibers")
566 "/share/guile/site/3.0"))
567 (("%FIBERS_OBJECT_DIRECTORY%")
568 #$(file-append
569 (this-package-input "guile-fibers")
570 "/lib/guile/3.0/site-ccache"))))))
571 #~%standard-phases)))
572 (native-inputs (list pkg-config guile-3.0
573 ;; Work around
574 ;; <https://github.com/wingo/fibers/issues/89>. This
575 ;; affects any system without a functional real-time
576 ;; clock (RTC), but in practice these are typically Arm
577 ;; single-board computers.
578 (if (or (target-arm?)
579 (target-riscv64?))
580 guile-fibers-1.1
581 guile-fibers-1.3))) ;pinned version to avoid rebuilds
582 (propagated-inputs (list (this-package-native-input "guile-fibers")))
583 (inputs (list guile-3.0))
584 (synopsis "System service manager")
585 (description
586 "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises
587the execution of system services, replacing similar functionality found in
588typical init systems. It provides dependency-handling through a convenient
589interface and is based on GNU Guile.")
590 (license license:gpl3+)
591 (home-page "https://www.gnu.org/software/shepherd/")))
592
593(define-public shepherd-1.0
594 (package
595 (inherit shepherd-0.10)
596 (version "1.0.9")
597 (source (origin
598 (method url-fetch)
599 (uri (string-append "mirror://gnu/shepherd/shepherd-"
600 version ".tar.gz"))
601 (sha256
602 (base32
603 "1mh080060lnycys8yq6kkiy363wif8dsip3nyklgd3a1r22wb274"))))
604 (arguments
605 (list
606 #:configure-flags
607 #~(list "--localstatedir=/var"
608 ;; Gzip and zstd are used by the log rotation service.
609 (string-append "--with-gzip=" #$(this-package-input "gzip")
610 "/bin/gzip")
611 (string-append "--with-zstd=" #$(this-package-input "zstd")
612 "/bin/zstd"))
613 #:make-flags #~'("GUILE_AUTO_COMPILE=0")
614 #:phases (if (%current-target-system)
615 #~(modify-phases %standard-phases
616 (add-before 'configure 'set-fibers-directory
617 (lambda* (#:key inputs #:allow-other-keys)
618 ;; When cross-compiling, refer to the target
619 ;; Fibers, not the native one.
620 (let ((fibers
621 (search-input-file
622 inputs
623 "share/guile/site/3.0/fibers.scm"))
624 (fibers-go
625 (search-input-file
626 inputs
627 "lib/guile/3.0/site-ccache/fibers.go")))
628 (substitute* '("herd.in" "shepherd.in")
629 (("%FIBERS_SOURCE_DIRECTORY%")
630 (dirname fibers))
631 (("%FIBERS_OBJECT_DIRECTORY%")
632 (dirname fibers-go)))))))
633 #~%standard-phases)))
634 (native-inputs
635 (modify-inputs native-inputs
636 (replace "guile-fibers"
637 ;; Work around <https://codeberg.org/guile/fibers/issues/89>.
638 ;; This affects any system without a functional real-time
639 ;; clock (RTC), but in practice these are typically
640 ;; single-board computers.
641 (if (or (target-arm?)
642 (target-riscv64?))
643 guile-fibers-1.1
644 guile-fibers)))) ;use latest guile-fibers available
645 (propagated-inputs
646 (modify-inputs propagated-inputs
647 (replace "guile-fibers"
648 (this-package-native-input "guile-fibers"))))
649 (inputs
650 (modify-inputs inputs
651 (append gzip zstd)))))
652
653(define-public shepherd shepherd-0.10)
654
655(define-public shepherd-for-home
656 ;; Variant of shepherd without 'sbin' to not shadow 'halt' and 'reboot' on
657 ;; foreign distributions.
658 (let ((base shepherd-1.0))
659 (hidden-package
660 (package/inherit base
661 (name "shepherd-for-home")
662 (source #f)
663 (build-system trivial-build-system)
664 (arguments
665 (list
666 #:modules '((guix build union)
667 (guix build utils))
668 #:builder
669 #~(begin
670 (use-modules (guix build union)
671 (guix build utils))
672 (union-build #$output
673 (list #$(this-package-input "shepherd"))
674 #:create-all-directories? #t)
675 (delete-file-recursively
676 (string-append #$output "/sbin"))
677 (delete-file-recursively
678 (string-append #$output "/share/man/man8")))))
679 (synopsis
680 "The Shepherd for Guix Home, without @command{halt} and @command{reboot}")
681 (native-inputs '())
682 (inputs (list base))
683 (propagated-inputs '())))))
684
685(define-public shepherd-run
686 (package
687 (name "shepherd-run")
688 (version "0.2.0")
689 (source (origin
690 (method git-fetch)
691 (uri (git-reference
692 (url "https://git.sr.ht/~efraim/shepherd-run")
693 (commit version)))
694 (file-name (git-file-name name version))
695 (sha256
696 (base32
697 "0mvn5qi4bq9nsb1462pbzssb1z5w2s160lqd2ps3rjjc4z3f3gjj"))))
698 (build-system gnu-build-system)
699 (arguments
700 (list
701 #:make-flags #~(list (string-append "PREFIX=" #$output))
702 #:phases
703 #~(modify-phases %standard-phases
704 (delete 'configure) ; No configure script.
705 ;; First 'check checks the shell script which loads the gawk code.
706 ;; This 'check checks the installed gawk script.
707 (add-after 'patch-shebangs 'check-again
708 (lambda args
709 (apply (assoc-ref %standard-phases 'check)
710 (append args
711 (list #:make-flags
712 (list (string-append "BINARY=" %output
713 "/bin/shepherd-run"))))))))))
714 (native-inputs (list diffutils help2man))
715 (inputs (list gawk))
716 (synopsis "Create GNU Shepherd services from the command line")
717 (description
718 "Shepherd-run is a script which assists in creating one-off shepherd
719services from the command line. It is meant to partially fill the void left
720by @command{systemd-run}, since GNU Guix uses GNU Shepherd as its system service
721manager.")
722 (home-page "https://git.sr.ht/~efraim/shepherd-run")
723 (license license:gpl3+)))
724
725(define-public swineherd
726 (package
727 (name "swineherd")
728 (version "0.0.5")
729 (source (origin
730 (method git-fetch)
731 (uri (git-reference
732 (url "https://github.com/BIMSBbioinfo/swineherd")
733 (commit (string-append "v" version))))
734 (file-name (git-file-name name version))
735 (sha256
736 (base32
737 "1w3fvkdmqvbzqfx3xindm8qgam54wja46isgwasaiqmmhnla7p52"))))
738 (build-system gnu-build-system)
739 (arguments
740 '(#:configure-flags '("--localstatedir=/var")
741 #:make-flags '("GUILE_AUTO_COMPILE=0")))
742 (native-inputs
743 (list autoconf automake guile-3.0 pkg-config texinfo))
744 (propagated-inputs
745 (list btrfs-progs
746 guile-config
747 guile-fibers-1.3
748 guile-netlink
749 (lookup-package-input guix "guile")
750 guix
751 shepherd-1.0))
752 (home-page "https://github.com/BIMSBbioinfo/swineherd")
753 (synopsis "System container manager")
754 (description
755 "This project aims to provide an extension to the Shepherd, retraining it
756as a swineherd, a manager of crude system containers. It does this by
757providing a Shepherd service @code{swineherd} that talks to the Shepherd
758process to create Guix System containers as Shepherd services. It also comes
759with an optional HTTP API server.")
760 (license license:gpl3+)))
761
762(define-public cfm
763 (package
764 (name "cfm")
765 (version "0.6.6")
766 (source
767 (origin
768 (method git-fetch)
769 (uri (git-reference
770 (url "https://github.com/WillEccles/cfm")
771 (commit (string-append "v" version))))
772 (file-name (git-file-name name version))
773 (sha256
774 (base32 "14gapia902f29wa4dlrrj8jcwcff9bfvyhjccw9ddy2gxx2g8wmr"))))
775 (build-system gnu-build-system)
776 (arguments
777 `(#:tests? #f ; no test suite
778 #:make-flags
779 (list (string-append "CC=" ,(cc-for-target))
780 (string-append "PREFIX=" (assoc-ref %outputs "out")))
781 #:phases
782 (modify-phases %standard-phases
783 ;; Keeping xdg-open optional avoids a size increase of 293%.
784 (delete 'configure)))) ; no configure script
785 (home-page "https://eccles.dev/cfm/")
786 (synopsis
787 "Simple terminal file manager with @command{vi}-inspired key bindings")
788 (description
789 "The Cactus File Manager (@command{cfm}) helps you manage your files
790visually from a text terminal. It aims to be simple and fast, with key bindings
791inspired by @command{vi}.")
792 (license license:mpl2.0)))
793
794(define-public cloud-utils
795 (package
796 (name "cloud-utils")
797 (version "0.33")
798 (source
799 (origin
800 (method url-fetch)
801 (uri (string-append
802 "https://launchpad.net/cloud-utils/trunk/"
803 version "/+download/cloud-utils-" version ".tar.gz"))
804 (sha256
805 (base32
806 "0xxdi55lzw7j91zfajw7jhd2ilsqj2dy04i9brlk8j3pvb5ma8hk"))))
807 (build-system gnu-build-system)
808 (arguments
809 '(#:modules
810 ((guix build gnu-build-system)
811 (guix build utils)
812 (srfi srfi-26))
813 #:make-flags
814 (let ((out (assoc-ref %outputs "out")))
815 (list (string-append "BINDIR=" out "/bin")
816 (string-append "MANDIR=" out "/share/man/man1")
817 (string-append "DOCDIR=" out "/share/doc")))
818 #:phases
819 (modify-phases %standard-phases
820 (delete 'configure)
821 (delete 'check)
822 (add-after 'install 'wrap
823 (lambda* (#:key outputs inputs #:allow-other-keys)
824 (let ((growpart (string-append (assoc-ref outputs "out")
825 "/bin/growpart")))
826 (wrap-program growpart
827 `("PATH" ":" prefix
828 ,(map dirname
829 (map (cut search-input-file inputs <>)
830 (list "bin/readlink"
831 "sbin/sfdisk"
832 "bin/sed"
833 "bin/grep"
834 "bin/awk"
835 "bin/udevadm"
836 "bin/flock")))))))))))
837 (inputs
838 (list bash-minimal ;for wrap-program
839 coreutils ;for readlink and cat
840 sed ;growpart
841 grep ;growpart
842 gawk ;awk for growpart
843 eudev ;udevadm for growpart
844 python
845 util-linux)) ;sfdisk, flock, partx, blkid for growpart
846 (home-page "https://launchpad.net/cloud-utils")
847 (synopsis "Set of utilities for cloud computing environments")
848 (description
849 "This package contains a set of utilities for cloud computing
850environments:
851
852@itemize @bullet
853@item @command{cloud-localds} Create a disk for cloud-init to utilize nocloud
854@item @command{cloud-publish-image} Wrapper for cloud image publishing
855@item @command{cloud-publish-tarball} Wrapper for publishing cloud tarballs
856@item @command{cloud-publish-ubuntu} Import a Ubuntu cloud image
857@item @command{ec2metadata} Query and display @acronym{EC2,Amazon Elastic
858 Compute Cloud} metadata
859@item @command{growpart} Grow a partition to fill the device
860@item @command{mount-image-callback} Mount a file and run a command
861@item @command{resize-part-image} Resize a partition image to a new size
862@item @command{ubuntu-cloudimg-query} Get the latest Ubuntu
863 @acronym{AMI,Amazon Machine Image}
864@item @command{ubuntu-ec2-run} Run a @acronym{EC2,Amazon Elastic Compute
865 Cloud} instance using Ubuntu
866@item @command{vcs-run} Obtain a repository, and run a command
867@item @command{write-mime-multipart} Handle multipart
868 @acronym{MIME,Multipurpose Internet Mail Extensions} messages
869@end itemize")
870 (license license:gpl3)))
871
872(define-public collectl
873 (package
874 (name "collectl")
875 (version "4.3.1")
876 (source
877 (origin
878 (method url-fetch)
879 (uri (string-append
880 "mirror://sourceforge/collectl/collectl/collectl-" version
881 "/collectl-" version ".src.tar.gz"))
882 (sha256
883 (base32 "1wc9k3rmhqzh6cx5dcpqhlc3xcpadsn2ic54r19scdjbjx6jd1r1"))))
884 (build-system gnu-build-system)
885 (arguments
886 (list
887 #:tests? #f ; There are no tests.
888 #:phases
889 #~(modify-phases %standard-phases
890 (delete 'build) ; There's nothing to build.
891 (replace 'configure
892 (lambda _
893 (substitute* "INSTALL"
894 (("DESTDIR:=\"/\"") (format #f "DESTDIR:=~s" #$output))
895 (("DESTDIR/usr") "DESTDIR"))))
896 (replace 'install
897 (lambda _
898 (substitute* "collectl"
899 (("\\$configFile='';")
900 (string-append "$configFile='" #$output "/etc';")))
901 (invoke "./INSTALL"))))))
902 (inputs
903 (list perl))
904 (home-page "http://collectl.sourceforge.net")
905 (synopsis "Performance data collector")
906 (description
907 "This package provides a program that collects various performance
908measurement data like CPU, memory, disk and network performance numbers.")
909 (license license:artistic2.0)))
910
911(define-public daemonize
912 (package
913 (name "daemonize")
914 (version "1.7.8")
915 (source
916 (origin
917 (method git-fetch)
918 (uri (git-reference
919 (url "https://github.com/bmc/daemonize")
920 (commit (string-append "release-" version))))
921 (file-name (git-file-name name version))
922 (sha256
923 (base32 "0w4g0iyssyw7dd0061881z8s5czcl01mz6v00znax57zfxjqpvnm"))))
924 (build-system gnu-build-system)
925 (arguments '(#:tests? #f)) ; No tests available.
926 (home-page "https://software.clapper.org/daemonize/")
927 (synopsis "Command line utility to run a program as a daemon")
928 (description
929 "daemonize runs a command as a Unix daemon. It will close all open file
930descriptors, change working directory of the process to the root filesystem,
931reset its umask, run in the background, ignore I/O signals, handle
932@code{SIGCHLD}, etc. Most programs that are designed to be run as daemons do
933that work for themselves. However, you’ll occasionally run across one that
934does not. When you must run a daemon program that does not properly make
935itself into a true Unix daemon, you can use daemonize to force it to run as a
936true daemon.")
937 (license license:bsd-3)))
938
939(define-public dfc
940 (package
941 (name "dfc")
942 (version "3.1.1")
943 (source
944 (origin
945 (method url-fetch)
946 (uri (string-append
947 "https://projects.gw-computing.net/attachments/download/615/dfc-"
948 version ".tar.gz"))
949 (sha256
950 (base32
951 "0m1fd7l85ckb7bq4c5c3g257bkjglm8gq7x42pkmpp87fkknc94n"))))
952 (build-system cmake-build-system)
953 (arguments '(#:tests? #f)) ; There are no tests.
954 (native-inputs (list gettext-minimal))
955 (home-page "https://projects.gw-computing.net/projects/dfc")
956 (synopsis "Display file system space usage using graphs and colors")
957 (description
958 "dfc (df color) is a modern version of df. It uses colors, draws pretty
959graphs and can export its output to different formats.")
960 (license license:bsd-3)))
961
962(define-public facter
963 (package
964 (name "facter")
965 (version "4.4.1")
966 (source (origin
967 (method git-fetch)
968 (uri (git-reference
969 (url "https://github.com/puppetlabs/facter")
970 (commit version)))
971 (file-name (git-file-name name version))
972 (sha256
973 (base32
974 "080v0ml2svw2vbzfa659v8718pmhh2kav0l0q1jjvc6mm8sgnmmn"))))
975 (build-system ruby-build-system)
976 (arguments
977 (list
978 #:phases
979 #~(modify-phases %standard-phases
980 (add-after 'unpack 'delete-facter-ng-gemspec
981 (lambda _
982 ;; XXX: ruby-build-system incorrectly finds
983 ;; facter-ng.gemspec from this directory and tries to
984 ;; build that instead of the proper facter.gemspec.
985 ;; Just delete it as a workaround, as it appears to
986 ;; only exist for backwards-compatibility after the
987 ;; facter-ng->facter rename.
988 (delete-file "agent/facter-ng.gemspec")))
989 (add-after 'unpack 'embed-absolute-references
990 ;; Refer to absolute executable file names to avoid propagation.
991 (lambda* (#:key inputs #:allow-other-keys)
992 (substitute* (find-files "lib/facter/resolvers" "\\.rb$")
993 (("execute\\('(which |)([^ ']+)" _ _ name)
994 (string-append "execute('" (or (which name)
995 name))))))
996 (delete 'check)
997 (add-after 'wrap 'check
998 (lambda* (#:key tests? outputs #:allow-other-keys)
999 ;; XXX: The test suite wants to run Bundler and
1000 ;; complains that the gemspec is invalid. For now
1001 ;; just make sure that we can run the wrapped
1002 ;; executable directly.
1003 (if tests?
1004 (invoke (string-append (assoc-ref outputs "out")
1005 "/bin/facter")
1006 ;; Many facts depend on /sys, /etc/os-release,
1007 ;; etc, so we only run a small sample.
1008 "facterversion" "architecture"
1009 "kernel" "kernelversion")
1010 (format #t "tests disabled~%")))))))
1011 (inputs
1012 (list ruby-hocon
1013 ruby-sys-filesystem
1014 ruby-thor
1015
1016 ;; For ‘embed-absolute-references’.
1017 dmidecode
1018 inetutils ; for ‘hostname’
1019 iproute
1020 pciutils
1021 util-linux))
1022 (synopsis "Collect and display system facts")
1023 (description
1024 "Facter is a tool that gathers basic facts about nodes (systems) such
1025as hardware details, network settings, OS type and version, and more. These
1026facts can be collected on the command line with the @command{facter} command
1027or via the @code{facter} Ruby library.")
1028 (home-page "https://github.com/puppetlabs/facter")
1029 (license license:expat)))
1030
1031(define-public ttyload
1032 (let ((revision "1")
1033 (commit "f9495372801ce4b4dad98ad854203e694c31c1eb"))
1034 (package
1035 (name "ttyload")
1036 (version (git-version "0.5.3" revision commit))
1037 (source
1038 (origin
1039 (method git-fetch)
1040 (uri (git-reference
1041 (url "https://github.com/lindes/ttyload")
1042 (commit commit)))
1043 (file-name (git-file-name name version))
1044 (sha256
1045 (base32 "0ldb7a13b9v876c6cbrs78pkizj64drnqx95z5shfbwgpwfhr4im"))))
1046 (build-system gnu-build-system)
1047 (arguments
1048 (list #:tests? #f ; no tests
1049 #:make-flags
1050 #~(list (string-append "CC=" #$(cc-for-target)))
1051 #:phases
1052 #~(modify-phases %standard-phases
1053 (delete 'configure)
1054 (replace 'install
1055 (lambda _
1056 (let ((bin (string-append #$output "/bin")))
1057 (install-file "ttyload" bin)))))))
1058 (home-page "https://www.daveltd.com/src/util/ttyload/")
1059 (synopsis "Console based color-coded graphs of CPU load average")
1060 (description
1061 "Show graphs for 1 minute, 5 minute, 15 minute load averages on the
1062console.")
1063 ;; This package uses a modified version of the "ISC License".
1064 (license (license:non-copyleft "file://LICENSE")))))
1065
1066(define-public btop
1067 (package
1068 (name "btop")
1069 (version "1.4.7")
1070 (source (origin
1071 (method git-fetch)
1072 (uri (git-reference
1073 (url "https://github.com/aristocratos/btop")
1074 (commit (string-append "v" version))))
1075 (file-name (git-file-name name version))
1076 (sha256
1077 (base32
1078 "0d3cr5l6gpcwhxgnrizny5b5kg6fys2hy9a58bc68w4n2hc040fy"))))
1079 (build-system gnu-build-system)
1080 (native-inputs (list lowdown))
1081 (arguments
1082 (list #:tests? #f ;no test suite
1083 #:make-flags #~(list (string-append "PREFIX=" #$output)
1084 (string-append "CC=" #$(cc-for-target))
1085 (string-append "CXX=" #$(cxx-for-target)))
1086 #:phases #~(modify-phases %standard-phases
1087 (delete 'configure))))
1088 (home-page "https://github.com/aristocratos/btop")
1089 (synopsis "Resource monitor")
1090 (description "Btop++ provides unified monitoring of CPU, memory, network
1091and processes.")
1092 (license license:asl2.0)))
1093
1094(define-public smem
1095 (package
1096 (name "smem")
1097 (version "1.5")
1098 (source (origin
1099 (method url-fetch)
1100 (uri (string-append "https://selenic.com/repo/smem/archive/"
1101 version ".tar.bz2"))
1102 (file-name
1103 (string-append name "-" version ".tar.bz2"))
1104 (sha256
1105 (base32
1106 "19ibv1byxf2b68186ysrgrhy5shkc5mc69abark1h18yigp3j34m"))))
1107 (build-system gnu-build-system)
1108 (arguments
1109 (list #:tests? #f ; There is no test suite.
1110 #:make-flags #~(list "smemcap")
1111 #:phases
1112 #~(modify-phases %standard-phases
1113 (delete 'configure)
1114 (replace 'build
1115 (lambda _
1116 (let* ((system #$(cond ((target-x86?) "X86")
1117 ((target-arm?) "ARM")
1118 ((target-powerpc?) "POWER")
1119 (else "CROSS_FINGERS"))))
1120 (format #t "Building for ~a~%" system)
1121 (invoke #$(cc-for-target) "-o" "smemcap" "smemcap.c"
1122 "-g" "-Wall" "-D" system))))
1123 (replace 'install
1124 (lambda _
1125 (let ((bin (string-append #$output "/bin"))
1126 (man1 (string-append #$output "/share/man/man8")))
1127 (install-file "smemcap" bin)
1128 (install-file "smem" bin)
1129 (mkdir-p man1)
1130 (copy-file "smem.8" (string-append man1 "/smem.8"))))))))
1131 (native-inputs (list python-minimal-wrapper))
1132 (home-page "https://www.selenic.com/smem/")
1133 (synopsis "Memory reporting tool")
1134 (description
1135 "This package provides a command line tool that can give numerous reports
1136on memory usage on GNU/Linux systems.")
1137 (license license:gpl2+)))
1138
1139(define-public htop
1140 (package
1141 (name "htop")
1142 (version "3.5.2")
1143 (source
1144 (origin
1145 (method git-fetch)
1146 (uri (git-reference
1147 (url "https://github.com/htop-dev/htop")
1148 (commit version)))
1149 (sha256
1150 (base32 "1ym96qxyvm74wfm88r83dv4dnx5xlr1bpa6168kkx5dy92rg9av0"))
1151 (file-name (git-file-name name version))))
1152 (build-system gnu-build-system)
1153 (arguments
1154 (list
1155 #:configure-flags
1156 #~(list "--enable-sensors")
1157 #:phases
1158 #~(modify-phases %standard-phases
1159 (add-after 'unpack 'patch-dlopen
1160 (lambda* (#:key inputs #:allow-other-keys)
1161 (substitute* "linux/LibSensors.c"
1162 (("dlopen\\(\"libsensors\\.so")
1163 (string-append "dlopen(\""
1164 (search-input-file
1165 inputs "/lib/libsensors.so")))))))))
1166 (inputs
1167 (list ncurses (list lm-sensors "lib")))
1168 (native-inputs
1169 (list autoconf automake python-minimal-wrapper)) ; for scripts/MakeHeader.py
1170 (home-page "https://htop.dev")
1171 (synopsis "Interactive process viewer")
1172 (description
1173 "This is htop, an interactive process viewer. It is a text-mode
1174application (for console or X terminals) and requires ncurses.")
1175 (license license:gpl2)))
1176
1177(define-public bashtop
1178 (package
1179 (name "bashtop")
1180 (version "0.9.25")
1181 (source (origin
1182 (method git-fetch)
1183 (uri (git-reference
1184 (url "https://github.com/aristocratos/bashtop")
1185 (commit (string-append "v" version))))
1186 (file-name (git-file-name name version))
1187 (sha256
1188 (base32
1189 "07nlr6vmyb7yihaxj1fp424lmhwkdjl6mls92v90f6gsvikpa13v"))))
1190 (build-system gnu-build-system)
1191 (arguments
1192 '(#:make-flags (list (string-append "PREFIX=" %output))
1193 #:tests? #f ; bats test fails with loading load.bash
1194 #:phases (modify-phases %standard-phases (delete 'configure))))
1195 (home-page "https://github.com/aristocratos/bashtop")
1196 (synopsis "Linux/OSX/FreeBSD resource monitor")
1197 (description "Resource monitor that shows usage and stats for processor,
1198memory, disks, network and processes.")
1199 (license license:asl2.0)))
1200
1201(define-public bpytop
1202 (package
1203 (name "bpytop")
1204 (version "1.0.68")
1205 (source
1206 (origin
1207 (method url-fetch)
1208 (uri (pypi-uri "bpytop" version))
1209 (sha256
1210 (base32 "1clvajbv7pzlya9s1xs6dvjic8rv3kx7aqiwnjxapiypx246gdjk"))))
1211 (build-system pyproject-build-system)
1212 (arguments
1213 (list
1214 #:tests? #f ; No tests in Pypi archive.
1215 #:phases
1216 #~(modify-phases %standard-phases
1217 (add-after 'unpack 'use-poetry-core
1218 (lambda _
1219 ;; Patch to use the core poetry API.
1220 (substitute* "pyproject.toml"
1221 (("poetry.masonry.api")
1222 "poetry.core.masonry.api"))))
1223 (add-after 'install 'install-themes
1224 (lambda* (#:key inputs outputs #:allow-other-keys)
1225 (let ((themes (string-append (site-packages inputs outputs)
1226 "/bpytop-themes")))
1227 (mkdir-p themes)
1228 (copy-recursively "themes" themes)))))))
1229 (inputs
1230 (list python-psutil))
1231 (native-inputs
1232 (list python-poetry-core))
1233 (home-page "https://github.com/aristocratos/bpytop")
1234 (synopsis "Resource monitor")
1235 (description "Resource monitor that shows usage and stats for processor,
1236memory, disks, network and processes. It's a Python port and continuation of
1237@command{bashtop}.")
1238 (license license:asl2.0)))
1239
1240(define-public pies
1241 (package
1242 (name "pies")
1243 (version "1.8")
1244 (source
1245 (origin
1246 (method url-fetch)
1247 (uri (string-append "mirror://gnu/pies/pies-"
1248 version ".tar.bz2"))
1249 (sha256
1250 (base32
1251 "0v0xcq0mfil440xq2pa5mjkyva5c9ahqda54z5w2ksl2d78v8a35"))
1252 (snippet
1253 #~(begin
1254 (use-modules (guix build utils))
1255 (for-each delete-file
1256 (append
1257 ;; Generated by flex.
1258 (find-files "gres/src" "lex\\.c$")
1259 ;; Generated by bison.
1260 (find-files "gres/src" "-gram\\.[ch]$")))))))
1261 (build-system gnu-build-system)
1262 (arguments
1263 '(#:phases (modify-phases %standard-phases
1264 (add-before 'build 'patch-/bin/sh
1265 (lambda* (#:key inputs #:allow-other-keys)
1266 ;; Use the right shell when executing user-provided
1267 ;; shell commands.
1268 (let ((bash (assoc-ref inputs "bash")))
1269 (substitute* '("src/progman.c" "src/comp.c")
1270 (("\"/bin/sh\"")
1271 (string-append "\"" bash "/bin/sh\"")))))))))
1272 (native-inputs (list bison flex))
1273 (inputs (list libxcrypt))
1274 (home-page "https://www.gnu.org.ua/software/pies/")
1275 (synopsis "Program invocation and execution supervisor")
1276 (description
1277 "GNU pies is a program that supervises the invocation and execution of
1278other programs. It reads the list of programs to be started from its
1279configuration file, executes them, and then monitors their status,
1280re-executing them as necessary.")
1281 (license license:gpl3+)))
1282
1283(define-public inetutils
1284 (package
1285 (name "inetutils")
1286 (version "2.7")
1287 (source (origin
1288 (method url-fetch)
1289 (uri (string-append "mirror://gnu/inetutils/inetutils-"
1290 version ".tar.gz"))
1291 (sha256
1292 (base32
1293 "11n01vsd51r7qraaaylhhx04hq4s6vcq0896zkz0yp1wvqfbwmm1"))
1294 (patches (search-patches "inetutils-drop-test.patch"))))
1295 (build-system gnu-build-system)
1296 (arguments
1297 (list
1298 #:configure-flags
1299 #~(list "--localstatedir=/var"
1300
1301 ;; Make sure 'PATH_PROCNET_DEV' gets defined when
1302 ;; cross-compiling (by default it does not.)
1303 #$@(if (%current-target-system)
1304 '("--with-path-procnet-dev=/proc/net/dev")
1305 '())
1306 #$@(if (target-hurd?)
1307 '("--with-path-klog=/dev/klog"
1308 "--disable-rcp"
1309 "--disable-rexec"
1310 "--disable-rexecd"
1311 "--disable-rlogin"
1312 "--disable-rlogind"
1313 "--disable-rsh"
1314 "--disable-rshd"
1315 "--disable-uucpd"
1316 "--disable-whois")
1317 '()))
1318 ;; Make sure that canonical "coreutils" package is not referred.
1319 #:make-flags
1320 #~(list (string-append "CPPFLAGS=-DPATHDEF_CP=\\\""
1321 (search-input-file %build-inputs "bin/cp")
1322 "\\\""))
1323 ;; On some systems, 'libls.sh' may fail with an error such as:
1324 ;; "Failed to tell switch -a apart from -A".
1325 #:parallel-tests? #f))
1326 (inputs
1327 (list coreutils
1328 shadow ;for login (used in telnetd and rlogind)
1329 libxcrypt
1330 ncurses
1331 readline)) ;for 'ftp'
1332 (native-inputs
1333 (if (member (%current-system)
1334 (package-supported-systems net-tools))
1335 (list net-tools) ;for tests
1336 '()))
1337 (home-page "https://www.gnu.org/software/inetutils/")
1338 (synopsis "Basic networking utilities")
1339 (description
1340 "Inetutils is a collection of common network programs, such as an ftp
1341client and server, a telnet client and server, an rsh client and server, and
1342hostname.")
1343 (license license:gpl3+)))
1344
1345(define-public shadow
1346 (package
1347 (name "shadow")
1348 (version "4.19.0")
1349 (source (origin
1350 (method url-fetch)
1351 (uri (string-append
1352 "https://github.com/shadow-maint/shadow/releases/"
1353 "download/" version "/shadow-" version ".tar.xz"))
1354 (sha256
1355 (base32
1356 "0crbcfdp7ayyii33srinwd0yr27dkx9mbzglx1d0mvhr1z28xclw"))))
1357 (build-system gnu-build-system)
1358 (arguments
1359 `(;; Assume System V `setpgrp (void)', which is the default on GNU
1360 ;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
1361 #:configure-flags
1362 '(,@(if (target-hurd?)
1363 '()
1364 '("--with-libpam"))
1365 "--disable-logind" ;; no systemd
1366 "--without-libbsd" ;; no libbsd
1367 "shadow_cv_logdir=/var/log"
1368 "ac_cv_func_setpgrp_void=yes")
1369 #:phases
1370 (modify-phases %standard-phases
1371 (add-after 'unpack 'fix-linking-to-pam
1372 (lambda _
1373 ;; There's a build system problem in 4.9 that causes link
1374 ;; failures with the pam libraries (see:
1375 ;; https://github.com/shadow-maint/shadow/issues/407).
1376 (substitute* "libsubid/Makefile.in"
1377 (("\\$\\(LIBTCB\\)" all)
1378 (string-append all " $(LIBPAM)")))))
1379 ,@(if (%current-target-system)
1380 '((add-before 'configure 'set-runtime-shell
1381 (lambda* (#:key inputs #:allow-other-keys)
1382 (let ((shell (search-input-file inputs "/bin/bash")))
1383 (setenv "RUNTIME_SHELL" shell)
1384 (substitute* "configure.ac"
1385 (("\\$SHELL")
1386 "$RUNTIME_SHELL"))))))
1387 '())
1388 (add-before 'build 'set-nscd-file-name
1389 (lambda* (#:key inputs #:allow-other-keys)
1390 ;; Use the right file name for nscd.
1391 (let ((libc (assoc-ref inputs
1392 ,(if (%current-target-system)
1393 "cross-libc"
1394 "libc"))))
1395 (substitute* "lib/nscd.c"
1396 (("/usr/sbin/nscd")
1397 (string-append libc "/sbin/nscd"))))))
1398 (add-after 'install 'install-man-pages
1399 (lambda _
1400 ;; The top-level Makefile.am wrongfully has "SUBDIRS += man"
1401 ;; under "if ENABLE_REGENERATE_MAN", even though prebuilt man
1402 ;; pages are available. Thus, install them manually.
1403 (invoke "make" "-C" "man" "install"))))))
1404 (native-inputs (list pkg-config))
1405 (inputs
1406 (append (if (target-hurd?)
1407 '()
1408 (list linux-pam))
1409 (if (%current-target-system)
1410 (list bash-minimal)
1411 '())
1412 (list libxcrypt)))
1413 (home-page "https://github.com/shadow-maint/shadow")
1414 (synopsis "Authentication-related tools such as passwd, su, and login")
1415 (description
1416 "Shadow provides a number of authentication-related tools, including:
1417login, passwd, su, groupadd, and useradd.")
1418
1419 ;; The `vipw' program is GPLv2+.
1420 ;; libmisc/salt.c is public domain.
1421 (license license:bsd-3)))
1422
1423(define-public mingetty
1424 (package
1425 (name "mingetty")
1426 (version "1.08")
1427 (source (origin
1428 (method url-fetch)
1429 (uri (string-append "mirror://sourceforge/mingetty/mingetty/"
1430 version "/mingetty-" version ".tar.gz"))
1431 (sha256
1432 (base32
1433 "05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
1434 (build-system gnu-build-system)
1435 (arguments
1436 (list
1437 #:tests? #f ; no tests
1438 #:phases
1439 #~(modify-phases %standard-phases
1440 (replace 'configure
1441 (lambda* (#:key inputs #:allow-other-keys)
1442 (let* ((man8 (string-append #$output "/share/man/man8"))
1443 (sbin (string-append #$output "/sbin"))
1444 (login (search-input-file inputs "/bin/login")))
1445 (substitute* "Makefile"
1446 (("CC=.*$")
1447 (string-append "CC=" #$(cc-for-target) "\n"))
1448 (("^SBINDIR.*")
1449 (string-append "SBINDIR = " #$output "/sbin\n"))
1450 (("^MANDIR.*")
1451 (string-append "MANDIR = " #$output "/share/man/man8\n")))
1452
1453 ;; Pick the right 'login' by default.
1454 (substitute* "mingetty.c"
1455 (("\"/bin/login\"")
1456 (string-append "\"" login "\"")))
1457
1458 (mkdir-p sbin)
1459 (mkdir-p man8)))))))
1460 (inputs (list shadow))
1461 (home-page "https://sourceforge.net/projects/mingetty")
1462 (synopsis "Getty for the text console")
1463 (description
1464 "Small console getty that is started on the Linux text console,
1465asks for a login name and then transfers over to @code{login}. It is extended
1466to allow automatic login and starting any app.")
1467 (license license:gpl2+)))
1468
1469(define-public net-base
1470 (package
1471 (name "net-base")
1472 (version "5.3")
1473 (source (origin
1474 (method url-fetch)
1475 (uri (string-append
1476 "mirror://debian/pool/main/n/netbase/netbase_"
1477 version ".tar.xz"))
1478 (sha256
1479 (base32
1480 "12xqjwg3p4rzmmh2iib6sigm9l29y3dgk74mmnw64k84jnbwdxl1"))))
1481 (build-system trivial-build-system)
1482 (arguments
1483 `(#:modules ((guix build utils))
1484 ;; This package consists solely of architecture-independent
1485 ;; tables. Cross-compilation is pointless! Make sure we'll
1486 ;; always get the same derivation.
1487 #:target #f
1488 #:allowed-references ()
1489 #:builder (begin
1490 (use-modules (guix build utils)
1491 (srfi srfi-26))
1492
1493 (let* ((source (assoc-ref %build-inputs "source"))
1494 (tar (assoc-ref %build-inputs "tar"))
1495 (xz (assoc-ref %build-inputs "xz"))
1496 (output (assoc-ref %outputs "out"))
1497 (etc (string-append output "/etc")))
1498 (setenv "PATH" (string-append xz "/bin"))
1499 (invoke (string-append tar "/bin/tar") "xvf"
1500 source)
1501 (chdir ,(string-append "netbase-" version))
1502 (mkdir-p etc)
1503 (for-each copy-file
1504 '("etc-services" "etc-protocols" "etc-rpc")
1505 (map (cut string-append etc "/" <>)
1506 '("services" "protocols" "rpc")))
1507 #t))))
1508 (native-inputs (list tar xz))
1509 (synopsis "IANA protocol, port, and RPC number assignments")
1510 (description
1511 "This package provides the /etc/services, /etc/protocols, and /etc/rpc
1512files, which contain information about the IANA-assigned port, protocol, and
1513ONC RPC numbers.")
1514 (home-page "https://packages.debian.org/sid/netbase")
1515 (license license:gpl2)))
1516
1517(define-public netcat
1518 (package
1519 (name "netcat")
1520 (version "0.7.1")
1521 (source (origin
1522 (method url-fetch)
1523 (uri (string-append "mirror://sourceforge/netcat/netcat/" version
1524 "/netcat-" version ".tar.bz2"))
1525 (sha256
1526 (base32
1527 "1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm"))))
1528 (build-system gnu-build-system)
1529 (arguments
1530 `(#:configure-flags
1531 ;; By default, man and info pages are put in PREFIX/{man,info},
1532 ;; but we want them in PREFIX/share/{man,info}.
1533 (let ((out (assoc-ref %outputs "out")))
1534 (list (string-append "--mandir=" out "/share/man")
1535 (string-append "--infodir=" out "/share/info")))))
1536 (home-page "https://netcat.sourceforge.net")
1537 (synopsis "Read and write data over TCP/IP")
1538 (description
1539 "Netcat is a featured networking utility which reads and writes data
1540across network connections, using the TCP/IP protocol. It is designed to be a
1541reliable \"back-end\" tool that can be used directly or easily driven by other
1542programs and scripts. At the same time, it is a feature-rich network debugging
1543and exploration tool, since it can create almost any kind of connection you
1544would need and has several interesting built-in capabilities.")
1545 (license license:gpl2+)))
1546
1547(define-public netcat-openbsd
1548 (package
1549 (name "netcat-openbsd")
1550 (version "1.219-1")
1551 (source (origin
1552 (method git-fetch)
1553 (uri (git-reference
1554 (url "https://salsa.debian.org/debian/netcat-openbsd.git")
1555 (commit (string-append "debian/" version))))
1556 (file-name (git-file-name name version))
1557 (sha256
1558 (base32
1559 "1fhrmnbdl6bgsjk02vi78zy9i486mmniymbbbhdkzl8zfjbjkpxc"))))
1560 (build-system gnu-build-system)
1561 (arguments
1562 `(#:tests? #f ; no test suite
1563 #:make-flags
1564 (list (string-append "CC=" ,(cc-for-target)))
1565 #:phases
1566 (modify-phases %standard-phases
1567 (delete 'configure)
1568 (add-before 'build 'patch
1569 (lambda _
1570 (setenv "QUILT_PATCHES" "debian/patches")
1571 (invoke "quilt" "push" "-a")))
1572 (replace 'install
1573 (lambda* (#:key outputs #:allow-other-keys)
1574 (let* ((out (assoc-ref outputs "out"))
1575 (bin (string-append out "/bin"))
1576 (man (string-append out "/share/man/man1"))
1577 (doc (string-append out "/share/doc/netcat-openbsd-" ,version))
1578 (examples (string-append doc "/examples")))
1579 (install-file "nc" bin)
1580 (install-file "nc.1" man)
1581 (install-file "debian/copyright" doc)
1582 (copy-recursively "debian/examples" examples)))))))
1583 (inputs (list libbsd))
1584 (native-inputs (list pkg-config quilt))
1585 (home-page "https://packages.debian.org/sid/netcat-openbsd")
1586 (synopsis "Read and write data over TCP/IP")
1587 (description
1588 "Netcat is a simple Unix utility which reads and writes data across
1589network connections using TCP or UDP protocol. It is designed to be a reliable
1590\"back-end\" tool that can be used directly or easily driven by other programs
1591and scripts. At the same time it is a feature-rich network debugging and
1592exploration tool, since it can create almost any kind of connection you would
1593need and has several interesting built-in capabilities.
1594
1595This package contains the OpenBSD rewrite of netcat, including support for
1596IPv6, proxies, and Unix sockets.")
1597 (license (list license:bsd-3
1598 license:bsd-2)))) ; atomicio.*, socks.c
1599
1600(define-public nmon
1601 (package
1602 (name "nmon")
1603 (version "16p")
1604 (source
1605 (origin
1606 (method url-fetch)
1607 (uri (string-append "mirror://sourceforge/nmon/lmon" version ".c"))
1608 (sha256
1609 (base32 "0akbkv70zffdmc5p51r02rlxd8b3jvkgl64rjsd29qr5cxgh9ijx"))))
1610 (build-system gnu-build-system)
1611 (arguments
1612 (list #:tests? #f ; no test suite
1613 #:phases
1614 #~(modify-phases %standard-phases
1615 (replace 'unpack
1616 (lambda _
1617 (copy-file #$(package-source this-package) "lmon.c")))
1618 (delete 'configure) ; no build system
1619 (replace 'build
1620 ;; There is an example ‘Makefile’ in the .c file.
1621 (lambda _
1622 ;; These #defines aren't well-documented and, e.g., POWER was
1623 ;; not actually tested on every possible TARGET-POWERPC?.
1624 (let* ((system #$(cond ((target-x86?) "X86")
1625 ((target-arm?) "ARM")
1626 ((target-powerpc?) "POWER")
1627 (else "CROSS_FINGERS"))))
1628 (format #t "Building for ~a~%" system)
1629 (invoke #$(cc-for-target) "-o" "nmon" "lmon.c"
1630 "-g" "-Wall" "-D" system
1631 "-lncurses" "-lm"))))
1632 (replace 'install
1633 (lambda _
1634 (let ((bin (string-append #$output "/bin"))
1635 (man1 (string-append #$output "/share/man/man1")))
1636 (install-file "nmon" bin)
1637 (mkdir-p man1)
1638 (copy-file #$(this-package-native-input "man-page")
1639 (string-append man1 "/nmon.1"))))))))
1640 (native-inputs
1641 (list `("man-page"
1642 ,(origin
1643 ;; There is no man page upstream, so install Debian's.
1644 (method url-fetch)
1645 (uri (string-append "https://salsa.debian.org/carnil/nmon/"
1646 "-/raw/debian/" version "+debian-1/"
1647 "debian/nmon.1"))
1648 (sha256
1649 (base32
1650 "1gpvd2kjyhs18sh6sga5bk9wj8s78blfd4c0m38r0wl92jx2yv1b"))))))
1651 (inputs
1652 (list ncurses))
1653 (home-page "https://nmon.sourceforge.net/")
1654 (synopsis
1655 "Monitor system performance in a terminal or to a @file{.csv} log file")
1656 (description
1657 "@acronym{Nmon, Nigel's performance monitor} is yet another system monitor
1658useful in systems administration, debugging, tuning, and benchmarking.
1659
1660The configurable ncurses interface displays all the classic resource usage
1661statistics (CPU, memory, network, disk, ...) as real-time graphs or numbers.
1662It can also list the processes responsible in a @command{top}-like table.
1663
1664A less common nmon feature is its ability to create highly detailed log files
1665in @acronym{CSV, comma-separated values} format. These can be imported into
1666spreadsheets or fed straight into an @acronym{RRD, round-robin database} using
1667@command{rrdtool} for further analysis, or to create colourful graphs.")
1668 (license license:gpl3+)))
1669
1670(define-public sipcalc
1671 (package
1672 (name "sipcalc")
1673 (version "1.1.6")
1674 (source
1675 (origin
1676 (method url-fetch)
1677 (uri (string-append "http://www.routemeister.net/projects"
1678 "/sipcalc/files/sipcalc" "-" version ".tar.gz"))
1679 (sha256
1680 (base32
1681 "0mv3wndj4z2bsshh2k8d5sy3j8wxzgf8mzmmkvj1k8gpcz37dm6g"))))
1682 (build-system gnu-build-system)
1683 (home-page "https://www.routemeister.net/projects/sipcalc/")
1684 (synopsis "Command-line IP subnet calculator")
1685 (description
1686 "Sipcalc is an advanced command-line IP subnet calculator. It can take
1687multiple forms of input (IPv4/IPv6/interface/hostname) and output a multitude
1688of information about a given subnet.
1689
1690Features include:
1691
1692@itemize @bullet
1693@item IPv4
1694@itemize
1695@item Retrieving of address information from interfaces.
1696@item Classfull and CIDR output.
1697@item Multiple address and netmask input and output formats (dotted quad, hex,
1698number of bits).
1699@item Output of broadcast address, network class, Cisco wildcard,
1700hosts/range, network range.
1701@item The ability to split a network based on a smaller netmask, now also with
1702recursive runs on the generated subnets. (also IPv6)
1703@end itemize
1704@item IPv6
1705@itemize
1706@item Compressed and expanded input and output addresses.
1707@item Standard IPv6 network output.
1708@item v4 in v6 output.
1709@item Reverse DNS address generation.
1710@end itemize
1711@end itemize\n")
1712 (license license:bsd-3)))
1713
1714(define-public prips
1715 (package
1716 (name "prips")
1717 (version "1.2.2")
1718 (source
1719 (origin
1720 (method url-fetch)
1721 (uri (string-append "https://devel.ringlet.net/files/sys/"
1722 name "/" name "-" version ".tar.xz"))
1723 (sha256
1724 (base32 "1cm0hmd4wz5k683fqa6a2f9m2ky8j8q0kdrknrl9y3ga36x11mzr"))))
1725 (build-system gnu-build-system)
1726 (arguments
1727 (list #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
1728 #:test-target "test"
1729 #:phases #~(modify-phases %standard-phases
1730 (delete 'configure)
1731 (replace 'install
1732 (lambda _
1733 (install-file "prips"
1734 (string-append #$output "/bin")))))))
1735 (native-inputs (list perl-test-harness))
1736 (synopsis "Tool that prints the IP addresses in a given range")
1737 (description "Prips can be used to print all of the IP addresses in
1738 a given range. This allows the enhancement of tools only work
1739 on one host at a time (e.g. whois).")
1740 (home-page "https://devel.ringlet.net/sysutils/prips/")
1741 (license license:gpl2+)))
1742
1743(define-public alive
1744 (package
1745 (name "alive")
1746 (version "2.0.5")
1747 (source (origin
1748 (method url-fetch)
1749 (uri (string-append "mirror://gnu/alive/alive-"
1750 version ".tar.lz"))
1751 (sha256
1752 (base32
1753 "12ahlxbbrynm6md8qc872qr795lqpfkr8kwlsig40i4nznzkvkwl"))))
1754 (build-system gnu-build-system)
1755 (arguments '(#:configure-flags '("alive_cv_nice_ping=yes")))
1756 (inputs
1757 (list guile-3.0
1758 inetutils))
1759 (native-inputs
1760 (list lzip))
1761 (home-page "https://www.gnu.org/software/alive/")
1762 (synopsis "Autologin and keep-alive daemon")
1763 (description
1764 "GNU Alive sends periodic pings to a server, generally to keep a
1765connection alive.")
1766 (license license:gpl3+)))
1767
1768(define-public isc-dhcp
1769 (let* ((bind-major-version "9")
1770 (bind-minor-version "11")
1771 (bind-patch-version "37")
1772 (bind-release-type "") ; for patch release, use "-P"
1773 (bind-release-version "") ; for patch release, e.g. "6"
1774 (bind-version (string-append bind-major-version
1775 "."
1776 bind-minor-version
1777 "."
1778 bind-patch-version
1779 bind-release-type
1780 bind-release-version)))
1781 (package
1782 (name "isc-dhcp")
1783 (version "4.4.3-P1")
1784 (source (origin
1785 (method url-fetch)
1786 (uri (string-append "https://ftp.isc.org/isc/dhcp/"
1787 version "/dhcp-" version ".tar.gz"))
1788 (sha256
1789 (base32
1790 "1ivkvhhvqxap6c51cli7pa6xn76ngxri1zbl45ishz4ranxidi0a"))
1791 (patches (search-patches
1792 "dhclient-script-resolvconf-support.patch"))))
1793 (build-system gnu-build-system)
1794 (arguments
1795 `(#:parallel-build? #f
1796 #:configure-flags '("--with-randomdev=/dev/random")
1797 #:phases
1798 (modify-phases %standard-phases
1799 (add-after 'unpack 'replace-bundled-bind
1800 (lambda* (#:key inputs native-inputs #:allow-other-keys)
1801 (delete-file "bind/bind.tar.gz")
1802 (copy-file (assoc-ref inputs "bind-source-tarball")
1803 "bind/bind.tar.gz")
1804 (chmod "bind/bind.tar.gz" #o644)
1805 (substitute* "bind/version.tmp"
1806 (("^MAJORVER=.*")
1807 (format #f "MAJORVER=~a\n" ,bind-major-version))
1808 (("^MINORVER=.*")
1809 (format #f "MINORVER=~a\n" ,bind-minor-version))
1810 (("^PATCHVER=.*")
1811 (format #f "PATCHVER=~a\n" ,bind-patch-version))
1812 (("^RELEASETYPE=.*")
1813 (format #f "RELEASETYPE=~a\n" ,bind-release-type))
1814 (("^RELEASEVER=.*")
1815 (format #f "RELEASEVER=~a\n" ,bind-release-version)))))
1816 ,@(if (%current-target-system)
1817 `((add-before 'configure 'fix-bind-cross-compilation
1818 (lambda _
1819 (substitute* "configure"
1820 (("--host=\\$host")
1821 "--host=$host_alias --build=$build_alias"))
1822 ;; BIND needs a native compiler because the DHCP
1823 ;; build system uses the built 'gen' executable.
1824 (setenv "BUILD_CC" "gcc")
1825 ;; powerpc-linux needs to be told to use -latomic.
1826 ,@(if (target-ppc32?)
1827 `((setenv "LIBS" "-latomic"))
1828 '()))))
1829 '())
1830 (add-before 'configure 'update-config-scripts
1831 (lambda* (#:key native-inputs inputs #:allow-other-keys)
1832 (for-each (lambda (file)
1833 (install-file
1834 (search-input-file
1835 (or native-inputs inputs)
1836 (string-append "/bin/" file)) "."))
1837 '("config.guess" "config.sub"))))
1838 (add-before 'build 'update-config-scripts-for-bind
1839 (lambda* (#:key native-inputs inputs #:allow-other-keys)
1840 (for-each (lambda (file)
1841 (install-file
1842 (search-input-file
1843 (or native-inputs inputs)
1844 (string-append "/bin/" file))
1845 (string-append "bind/bind-" ,bind-version)))
1846 '("config.guess" "config.sub"))))
1847 (add-after 'configure 'post-configure
1848 (lambda* (#:key outputs #:allow-other-keys)
1849 ;; Point to the right client script, which will be
1850 ;; installed in a later phase.
1851 (substitute* "includes/dhcpd.h"
1852 (("#define[[:blank:]]+_PATH_DHCLIENT_SCRIPT.*")
1853 (let ((out (assoc-ref outputs "out")))
1854 (string-append "#define _PATH_DHCLIENT_SCRIPT \""
1855 out "/libexec/dhclient-script"
1856 "\"\n"))))
1857
1858 ;; During the 'build' phase, 'bind.tar.gz' is extracted, so
1859 ;; we must patch shebangs in there and make sure the right
1860 ;; shell is used.
1861 (with-directory-excursion "bind"
1862 (substitute* "Makefile"
1863 (("\\./configure ")
1864 (let ((sh (which "sh")))
1865 (string-append "./configure CONFIG_SHELL="
1866 sh " SHELL=" sh " "))))
1867
1868 (let ((bind-directory (string-append "bind-" ,bind-version)))
1869 (invoke "tar" "xf" "bind.tar.gz")
1870 (for-each patch-shebang
1871 (find-files bind-directory ".*"))
1872 (substitute* (string-append bind-directory "/configure")
1873 (("/usr/bin/file")
1874 (which "file")))
1875 (invoke "tar" "cf" "bind.tar.gz"
1876 bind-directory
1877 ;; avoid non-determinism in the archive
1878 "--sort=name"
1879 "--mtime=@0"
1880 "--owner=root:0"
1881 "--group=root:0")))))
1882 (add-after 'install 'post-install
1883 (lambda* (#:key inputs outputs #:allow-other-keys)
1884 ;; Install the dhclient script for GNU/Linux and make sure
1885 ;; if finds all the programs it needs.
1886 (let* ((out (assoc-ref outputs "out"))
1887 (libexec (string-append out "/libexec"))
1888 (coreutils (assoc-ref inputs "coreutils*"))
1889 (inetutils (assoc-ref inputs "inetutils"))
1890 (grep (assoc-ref inputs "grep*"))
1891 (resolvconf (assoc-ref inputs "resolvconf*"))
1892 (sed (assoc-ref inputs "sed*"))
1893 (debianutils (assoc-ref inputs "debianutils")))
1894 (substitute* "client/scripts/linux"
1895 (("/sbin/ip")
1896 (search-input-file inputs "/sbin/ip")))
1897
1898 (mkdir-p libexec)
1899 (copy-file "client/scripts/linux"
1900 (string-append libexec "/dhclient-script"))
1901
1902 (wrap-program
1903 (string-append libexec "/dhclient-script")
1904 `("PATH" ":" prefix
1905 ,(map (lambda (dir)
1906 (string-append dir "/bin:"
1907 dir "/sbin"))
1908 (list inetutils coreutils grep sed resolvconf
1909 debianutils))))))))))
1910
1911 (native-inputs
1912 (list config perl file))
1913
1914 (inputs `(("inetutils" ,inetutils)
1915 ("bash" ,bash-minimal)
1916 ,@(if (target-hurd?)
1917 '()
1918 `(("iproute" ,iproute)))
1919
1920 ;; dhclient-script provides hooks to users and uses run-parts in
1921 ;; order to list users defined hooks.
1922 ("debianutils" ,debianutils)
1923
1924 ;; isc-dhcp bundles a copy of BIND, which has proved vulnerable
1925 ;; in the past. Use a BIND-VERSION of our choosing instead.
1926 ("bind-source-tarball"
1927 ,(origin
1928 (method url-fetch)
1929 (uri (string-append "https://ftp.isc.org/isc/bind9/"
1930 bind-version
1931 "/bind-" bind-version ".tar.gz"))
1932 (sha256
1933 (base32
1934 "1zsszgxs9043dfpxb6xs1iwk9jg7nxkl5pbawj8dlshnxkkzp3hd"))))
1935
1936 ("coreutils*" ,coreutils)
1937 ("grep*" ,grep)
1938 ("resolvconf*" ,openresolv)
1939 ("sed*" ,sed)))
1940
1941 (home-page "https://www.isc.org/dhcp/")
1942 (synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
1943 (description
1944 "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
1945reference implementation of all aspects of DHCP, through a suite of DHCP
1946tools: server, client, and relay agent.
1947
1948This software is @emph{end-of-life}! ISC does not intend to issue any further
1949maintenance releases.")
1950 (license license:mpl2.0)
1951 (properties '((cpe-name . "dhcp"))))))
1952
1953(define-public dhcpcd
1954 (package
1955 (name "dhcpcd")
1956 (version "10.5.0")
1957 (source
1958 (origin
1959 (method git-fetch)
1960 (uri (git-reference
1961 (url "https://github.com/NetworkConfiguration/dhcpcd")
1962 (commit (string-append "v" version))))
1963 (file-name (git-file-name name version))
1964 (sha256
1965 (base32 "1mdi4pm44pha47ivfn2gsf9w9rdpyw4q19x4myvkbifjg6lf7r4i"))))
1966 (build-system gnu-build-system)
1967 (arguments
1968 (list
1969 #:test-target "test"
1970 #:configure-flags #~(list "--enable-ipv6"
1971 "--enable-privsep"
1972 "--privsepuser=dhcpcd"
1973 (string-append "--dbdir=" "/var/db/dhcpcd")
1974 (string-append "--rundir=" "/var/run/dhcpcd")
1975 (string-append "CC=" #$(cc-for-target)))
1976 #:phases
1977 #~(modify-phases %standard-phases
1978 (add-after 'unpack 'do-not-create-dbdir
1979 (lambda _
1980 ;; Make sure that the Makefile doesn't attempt to create
1981 ;; /var/db/dhcpcd for which it doesn't have permissions.
1982 (substitute* "src/Makefile"
1983 (("\\$\\{INSTALL\\} -m \\$\\{DBMODE\\} -d\
1984 \\$\\{DESTDIR\\}\\$\\{DBDIR\\}")
1985 ""))))
1986 (add-before 'build 'setenv
1987 (lambda _
1988 (setenv "HOST_SH" (which "sh"))))
1989 (add-after 'install 'wrap-hooks
1990 (lambda* (#:key inputs outputs #:allow-other-keys)
1991 ;; It's important that the 'resolvconf' binary used be that of
1992 ;; openresolv, which is the one responsible for maintaining
1993 ;; /etc/resolv.conf in Guix.
1994 (let* ((resolvconf (search-input-file inputs "sbin/resolvconf"))
1995 (rm (search-input-file inputs "bin/rm"))
1996 (sed (search-input-file inputs "bin/sed")))
1997 (wrap-program (string-append
1998 #$output "/libexec/dhcpcd-run-hooks")
1999 (list "PATH" 'suffix
2000 (list (dirname resolvconf)
2001 (dirname rm)
2002 (dirname sed))))))))))
2003 (inputs (list bash-minimal coreutils-minimal eudev openresolv sed))
2004 (home-page "https://roy.marples.name/projects/dhcpcd")
2005 (synopsis "Feature-rich DHCP and DHCPv6 client")
2006 (description
2007 "Provides a DHCP and a DHCPv6 client. Additionally,
2008dhcpcd is also an IPv4LL (aka ZeroConf) client. In layperson's terms,
2009dhcpcd runs on your machine and silently configures your computer to work
2010on the attached networks without trouble and mostly without configuration.")
2011 (license license:bsd-2)))
2012
2013(define-public radvd
2014 (package
2015 (name "radvd")
2016 (version "2.21")
2017 (source
2018 (origin
2019 (method git-fetch)
2020 (uri (git-reference
2021 (url "https://github.com/radvd-project/radvd")
2022 (commit (string-append "v" version))))
2023 (file-name (git-file-name name version))
2024 (sha256
2025 (base32 "18f0qznd2bksxgsnb5wf4ddy1x90skyr10yfsivlw2i7kwn6hrnk"))))
2026 (build-system gnu-build-system)
2027 (native-inputs
2028 (list autoconf
2029 automake
2030 bison
2031 check
2032 flex
2033 pkg-config))
2034 (inputs (list libbsd))
2035 (arguments
2036 (if (%current-target-system)
2037 (list)
2038 (list #:configure-flags #~(list "--with-check"))))
2039 (home-page "https://radvd.litech.org/")
2040 (synopsis "IPv6 Router Advertisement Daemon")
2041 (description
2042 "The Router Advertisement Daemon (radvd) is run on systems acting as IPv6
2043routers. It sends Router Advertisement messages specified by RFC 2461
2044periodically and when requested by a node sending a Router Solicitation
2045message. These messages are required for IPv6 stateless autoconfiguration.")
2046 (license (license:non-copyleft "file://COPYRIGHT"))))
2047
2048(define-public ndppd
2049 (package
2050 (name "ndppd")
2051 (version "0.2.6")
2052 (source
2053 (origin
2054 (method git-fetch)
2055 (uri (git-reference
2056 (url "https://github.com/DanielAdolfsson/ndppd")
2057 (commit version)))
2058 (file-name (git-file-name name version))
2059 (sha256
2060 (base32 "1b0xda2cr4yq2pj8zch9gvfxqvz1n5rjl4nyqn70jyrincvsi8qn"))))
2061 (build-system gnu-build-system)
2062 (arguments
2063 (list #:tests? #f ; There are no tests
2064 #:make-flags #~(list (string-append "PREFIX=" #$output))
2065 #:phases
2066 #~(modify-phases %standard-phases
2067 (delete 'configure)
2068 (add-after 'unpack 'fix-paths
2069 (lambda _
2070 (substitute* "Makefile"
2071 (("/bin/gzip") "gzip")))))))
2072 (synopsis "NDP Proxy Daemon")
2073 (description
2074 "The Neighbor Discovery Protocol Proxy Daemon (ndppd) proxies some IPv6
2075NDP messages between interfaces to allow IPv6 routing between machines that
2076are in the same network but not on the same local link. It currently only
2077supports Neighbor Solicitation and Neighbor Advertisement messages.")
2078 (home-page "https://github.com/DanielAdolfsson/ndppd")
2079 (license license:gpl3+)))
2080
2081(define-public libpcap
2082 (package
2083 (name "libpcap")
2084 (version "1.10.1")
2085 (source (origin
2086 (method url-fetch)
2087 (uri (string-append "https://www.tcpdump.org/release/libpcap-"
2088 version ".tar.gz"))
2089 (sha256
2090 (base32
2091 "1m5x26vlbymp90k1qh0w3nj2nxzyvfrmfmwpj17k81dgri55ya7d"))))
2092 (build-system gnu-build-system)
2093 (native-inputs
2094 (list bison flex))
2095 (arguments
2096 ;; There are some tests in testprogs/, but no automated test suite.
2097 `(#:tests? #f
2098 #:phases
2099 (modify-phases %standard-phases
2100 (add-after 'unpack 'omit-static-library
2101 ;; Neither build nor install libpcap.a.
2102 (lambda _
2103 (substitute* "Makefile.in"
2104 ((" libpcap\\.a") "")
2105 ((" install-archive ") " ")))))))
2106 (home-page "https://www.tcpdump.org")
2107 (synopsis "Network packet capture library")
2108 (description
2109 "libpcap is an interface for user-level packet capture. It provides a
2110portable framework for low-level network monitoring. Applications include
2111network statistics collection, security monitoring, network debugging, etc.")
2112 (license (list license:bsd-4 ; fad-*.c and several other source files
2113 license:bsd-3 ; pcap/, sockutils.* & others
2114 license:bsd-2)))) ; the rest
2115
2116(define-public tcpdump
2117 (package
2118 (name "tcpdump")
2119 (version "4.99.4")
2120 (source (origin
2121 (method url-fetch)
2122 (uri (string-append "https://www.tcpdump.org/release/tcpdump-"
2123 version ".tar.gz"))
2124 (sha256
2125 (base32
2126 "1slzwjk5f8sygwxqci4vkbas0qqcgs5a0w3f8br6p7gjn8dj6ch2"))))
2127 (build-system gnu-build-system)
2128 (inputs (list libpcap openssl))
2129 (native-inputs (list perl)) ; for tests
2130 (home-page "https://www.tcpdump.org/")
2131 (synopsis "Network packet analyzer")
2132 (description
2133 "Tcpdump is a command-line tool to analyze network traffic passing
2134through the network interface controller.")
2135 (license license:bsd-3)))
2136
2137(define-public jnettop
2138 (package
2139 (name "jnettop")
2140 (version "0.13.0")
2141 (source (origin
2142 (method url-fetch)
2143 (uri
2144 (string-append "https://web.archive.org/web/20161221100811/"
2145 "http://jnettop.kubs.info/dist/jnettop-"
2146 version ".tar.gz"))
2147 (sha256
2148 (base32
2149 "1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9"))))
2150 (build-system gnu-build-system)
2151 (arguments
2152 (list #:configure-flags
2153 #~'("CFLAGS=-O2 -g -Wno-implicit-function-declaration")))
2154 (native-inputs
2155 (list pkg-config))
2156 (inputs
2157 (list glib ncurses libpcap))
2158 (home-page
2159 "https://web.archive.org/web/20160703195221/http://jnettop.kubs.info/wiki/")
2160 (synopsis "Visualize network traffic by bandwidth use")
2161 (description
2162 "Jnettop is a traffic visualiser, which captures traffic going
2163through the host it is running from and displays streams sorted
2164by bandwidth they use.")
2165 (license license:gpl2+)))
2166
2167(define-public clusterssh
2168 (package
2169 (name "clusterssh")
2170 (version "4.13.2")
2171 (source (origin
2172 (method url-fetch)
2173 (uri (string-append "mirror://sourceforge/clusterssh/"
2174 "2.%20ClusterSSH%20Series%204/"
2175 "App-ClusterSSH-v" version ".tar.gz"))
2176 (sha256
2177 (base32
2178 "0rmk2p3f2wz1h092anidjclh212rv3gxyk0c641qk3frlrjnw6mp"))))
2179 (build-system perl-build-system)
2180 (arguments
2181 `(#:phases
2182 (modify-phases %standard-phases
2183 (add-after 'unpack 'refer-to-inputs
2184 (lambda* (#:key inputs #:allow-other-keys)
2185 (substitute* (list "lib/App/ClusterSSH/Config.pm"
2186 "t/15config.t")
2187 (("xterm")
2188 (which "xterm")))))
2189 (add-before 'check 'delete-failing-tests
2190 (lambda _
2191 ;; This checks whether all code is nicely formatted. The above
2192 ;; ‘refer-to-inputs’ phase breaks this pedantry, so disable it.
2193 (delete-file "t/perltidy.t")
2194 ;; Update the manifest so t/manifest.t happily passes.
2195 (substitute* "MANIFEST"
2196 (("t/perltidy.t\n") ""))))
2197 (add-after 'install 'augment-library-path
2198 (lambda* (#:key inputs outputs #:allow-other-keys)
2199 (let* ((out (assoc-ref outputs "out"))
2200 (bin (string-append out "/bin")))
2201 (with-directory-excursion bin
2202 (for-each
2203 (lambda (program)
2204 (wrap-program program
2205 `("PERL5LIB" ":" prefix
2206 ,(map (lambda (file-name)
2207 (string-append file-name
2208 "/lib/perl5/site_perl"))
2209 (cons out
2210 (map (lambda (input)
2211 (assoc-ref inputs input))
2212 ;; These may be propagated and hence
2213 ;; not explicitly listed as inputs.
2214 (list "perl-class-data-inheritable"
2215 "perl-devel-stacktrace"
2216 "perl-exception-class"
2217 "perl-tk"
2218 "perl-try-tiny"
2219 "perl-x11-protocol"
2220 "perl-x11-protocol-other")))))))
2221 (find-files "." ".*")))))))))
2222 (native-inputs
2223 (list perl-cpan-changes
2224 perl-file-slurp
2225 perl-file-which
2226 perl-module-build
2227 perl-readonly
2228 perl-test-differences
2229 perl-test-distmanifest
2230 perl-test-perltidy
2231 perl-test-pod
2232 perl-test-pod-coverage
2233 perl-test-trap
2234 perl-tidy))
2235 (inputs
2236 (list bash-minimal ;for wrap-program
2237 perl-exception-class
2238 perl-sort-naturally
2239 perl-tk
2240 perl-try-tiny
2241 perl-x11-protocol
2242 perl-x11-protocol-other
2243 xterm))
2244 ;; The clusterssh.sourceforge.net address requires login to view
2245 (home-page "https://sourceforge.net/projects/clusterssh/")
2246 (synopsis "Secure concurrent multi-server terminal control")
2247 (description
2248 "ClusterSSH controls a number of xterm windows via a single graphical
2249console window to allow commands to be interactively run on multiple servers
2250over ssh connections.")
2251 (license license:gpl2+)))
2252
2253(define-public realmd
2254 (package
2255 (name "realmd")
2256 (version "0.17.1")
2257 (source
2258 (origin
2259 (method git-fetch)
2260 (uri (git-reference
2261 (url "https://github.com/freedesktop/realmd")
2262 (commit version)))
2263 (file-name (git-file-name name version))
2264 (sha256
2265 (base32 "063cf4jkpfj548a7dxmffrpbh3j413nq3zy1zzj20lcfffnnaqwn"))))
2266 (build-system gnu-build-system)
2267 (arguments
2268 `(#:configure-flags '("--with-systemd-unit-dir=no"
2269 "--with-systemd-journal=no"
2270 "--with-distro=GNU guix"
2271 "--disable-doc")
2272 #:phases
2273 (modify-phases %standard-phases
2274 (add-before 'install 'fix-service
2275 (lambda* (#:key outputs #:allow-other-keys)
2276 ;; GNU Guix does not have service config file, therefore we remove
2277 ;; the line that copies the file.
2278 (substitute* "Makefile"
2279 ((".*/service/realmd-.*") "")))))))
2280 (native-inputs
2281 (list autoconf
2282 automake
2283 `(,glib "bin")
2284 intltool
2285 pkg-config
2286 python))
2287 (inputs
2288 (list glib mit-krb5 openldap polkit))
2289 (synopsis "DBus service for network authentication")
2290 (description "This package provides an on demand system DBus service.
2291It allows callers to configure network authentication and domain membership
2292in a standard way. Realmd discovers information about the domain or realm
2293automatically and does not require complicated configuration in order to join
2294a domain or realm. Dbus system service that manages discovery and enrollment in
2295realms/domains like Active Directory or IPA.")
2296 (home-page "https://www.freedesktop.org/software/realmd/")
2297 (license license:lgpl2.1+)))
2298
2299(define-public rename
2300 (package
2301 (name "rename")
2302 (version "2.02")
2303 (source (origin
2304 (method url-fetch)
2305 (uri (string-append
2306 "mirror://cpan/authors/id/R/RM/RMBARKER/File-Rename-"
2307 version ".tar.gz"))
2308 (sha256
2309 (base32
2310 "1pr0qmsb9gb5xqwpicabnr5jcxdbbvz1mgdqw3d3d0dn12060ysk"))))
2311 (build-system perl-build-system)
2312 (arguments
2313 `(#:phases
2314 (modify-phases %standard-phases
2315 (add-after 'install 'find-itself
2316 ;; Fix run-time 'Can't locate File/Rename.pm in @INC' failure.
2317 (lambda* (#:key outputs #:allow-other-keys)
2318 (let* ((out (assoc-ref outputs "out"))
2319 (bin (string-append out "/bin")))
2320 (with-directory-excursion bin
2321 (for-each
2322 (lambda (program)
2323 (wrap-program program
2324 `("PERL5LIB" ":" prefix
2325 (,(string-append out "/lib/perl5/site_perl")))))
2326 (find-files "." ".*")))))))))
2327 (native-inputs
2328 (list perl-module-build perl-test-pod perl-test-pod-coverage))
2329 (inputs (list bash-minimal)) ;for wrap-program
2330 (home-page "https://metacpan.org/pod/distribution/File-Rename/rename.PL")
2331 (synopsis "Perl extension for renaming multiple files")
2332 (description
2333 "This package provides a Perl interface (@code{Perl::Rename}) as well
2334as a command-line utility (@command{rename}) that can rename multiple files
2335at once based on a Perl regular expression.")
2336 (license license:perl-license)))
2337
2338(define-public rottlog
2339 (package
2340 (name "rottlog")
2341 (version "0.72.2")
2342 (source (origin
2343 (method url-fetch)
2344 (uri (string-append "mirror://gnu/rottlog/rottlog-"
2345 version ".tar.gz"))
2346 (sha256
2347 (base32
2348 "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
2349 (modules '((guix build utils)))
2350 (patches (search-patches "rottlog-direntry.patch"))
2351 (snippet
2352 '(begin
2353 ;; Delete outdated Autotools build system files.
2354 (for-each delete-file
2355 (list "Makefile.in"
2356 "config.guess"
2357 "config.sub"
2358 "configure"
2359 "depcomp"
2360 "install-sh"
2361 "mdate-sh"
2362 "missing"
2363 "mkinstalldirs"
2364 "texinfo.tex"))
2365 (substitute* "Makefile.am"
2366 (("mkdir -p \\$\\(ROTT_STATDIR\\)")
2367 ;; Don't attempt to create /var/lib/rottlog.
2368 "true"))))))
2369 (build-system gnu-build-system)
2370 (arguments
2371 (list
2372 #:configure-flags #~(list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
2373 "--localstatedir=/var")
2374 ;; Install example config files in OUT/etc.
2375 #:make-flags #~(list (string-append "ROTT_ETCDIR=" #$output "/etc")
2376 ;; Avoid the default -o root -g root arguments,
2377 ;; which fail due to not running as root.
2378 "INSTALL_RC=install"
2379 "INSTALL_SCRIPT=install")
2380 #:phases
2381 #~(modify-phases %standard-phases
2382 (add-after 'unpack 'patch-paths
2383 (lambda* (#:key inputs #:allow-other-keys)
2384 (substitute* "rc/rc"
2385 (("/usr/sbin/sendmail")
2386 (search-input-file inputs "/bin/mail")))
2387 (with-fluids ((%default-port-encoding "ISO-8859-1"))
2388 (substitute* "src/rottlog"
2389 (("awk")
2390 (search-input-file inputs "/bin/awk"))))))
2391 (add-after 'build 'set-packdir
2392 (lambda _
2393 ;; Set a default location for archived logs.
2394 (substitute* "rc/rc"
2395 (("packdir=\"\"")
2396 "packdir=\"/var/log\""))))
2397 (add-before 'install 'tweak-rc-weekly
2398 (lambda* (#:key inputs #:allow-other-keys)
2399 (substitute* "rc/weekly"
2400 (("/bin/kill")
2401 (search-input-file inputs "/bin/kill"))
2402 (("syslogd\\.pid")
2403 ;; The file is called 'syslog.pid' (no 'd').
2404 "syslog.pid"))))
2405 (add-after 'install 'install-info
2406 (lambda _
2407 (invoke "make" "install-info"))))))
2408 (native-inputs (list autoconf automake texinfo util-linux)) ; for 'cal'
2409 (inputs (list coreutils gawk mailutils))
2410 (home-page "https://www.gnu.org/software/rottlog/")
2411 (synopsis "Log rotation and management")
2412 (description
2413 "GNU Rot[t]log is a program for managing log files. It is used to
2414automatically rotate out log files when they have reached a given size or
2415according to a given schedule. It can also be used to automatically compress
2416and archive such logs. Rot[t]log will mail reports of its activity to the
2417system administrator.")
2418 (license license:gpl3+)))
2419
2420(define-public sudo
2421 (package
2422 (name "sudo")
2423 (version "1.9.17p1")
2424 (source (origin
2425 (method url-fetch)
2426 (uri
2427 (list (string-append "https://www.sudo.ws/sudo/dist/sudo-"
2428 version ".tar.gz")
2429 (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
2430 version ".tar.gz")))
2431 (sha256
2432 (base32
2433 "0cjx8lkwlqz03psnaia07rz9mpyn5ilpixvqi9rrf8872ykpwq7z"))
2434 (modules '((guix build utils)))
2435 (snippet
2436 '(begin
2437 (delete-file-recursively "lib/zlib")))))
2438 (build-system gnu-build-system)
2439 (outputs (list "out"))
2440 (arguments
2441 (list #:configure-flags
2442 #~(list (string-append "--docdir=" #$output
2443 "/share/doc/" #$name "-" #$version)
2444
2445 "--with-logpath=/var/log/sudo.log"
2446 "--with-rundir=/var/run/sudo" ; must be cleaned up at boot time
2447 "--with-vardir=/var/db/sudo"
2448 "--with-iologdir=/var/log/sudo-io"
2449 "--with-sendmail=/run/privileged/bin/sendmail"
2450
2451 ;; 'visudo.c' expects _PATH_MV to be defined, but glibc doesn't
2452 ;; provide it.
2453 (string-append "CPPFLAGS=-D_PATH_MV=\\\""
2454 (search-input-file %build-inputs "/bin/mv")
2455 "\\\"")
2456
2457 ;; When cross-compiling, assume we have a working 'snprintf' and
2458 ;; 'vsnprintf' (which we do, when using glibc). The default
2459 ;; choice fails with undefined references to 'sudo_snprintf' &
2460 ;; co. when linking.
2461 #$@(if (%current-target-system)
2462 '("ac_cv_have_working_snprintf=yes"
2463 "ac_cv_have_working_vsnprintf=yes")
2464 '()))
2465
2466 ;; Avoid non-determinism; see <http://bugs.gnu.org/21918>.
2467 #:parallel-build? #f
2468
2469 #:phases
2470 #~(modify-phases %standard-phases
2471 (add-before 'configure 'pre-configure
2472 (lambda _
2473 (substitute* "src/sudo_usage.h.in"
2474 ;; Do not capture 'configure' arguments since we would
2475 ;; unduly retain references, and also because the
2476 ;; CPPFLAGS above would close the string literal
2477 ;; prematurely.
2478 (("@CONFIGURE_ARGS@")
2479 "\"\""))
2480 (substitute* (find-files "." "Makefile\\.in")
2481 ;; Allow installation as non-root.
2482 (("-o [[:graph:]]+ -g [[:graph:]]+")
2483 "")
2484 ;; Don't try to create /etc/sudoers.
2485 (("^install: (.*)install-sudoers(.*)" _ before
2486 after)
2487 (string-append "install: " before after "\n"))
2488 ;; Don't try to create /run/sudo.
2489 (("\\$\\(DESTDIR\\)\\$\\(rundir\\)")
2490 "$(TMPDIR)/dummy")
2491 ;; Install example sudo{,_logsrvd}.conf to the right place.
2492 (("\\$\\(DESTDIR\\)\\$\\(sysconfdir\\)")
2493 "$(DESTDIR)/$(docdir)/examples")
2494 ;; Don't try to create /var/db/sudo.
2495 (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
2496 "$(TMPDIR)/dummy"))
2497
2498 ;; ‘Checking existing [/etc/]sudoers file for syntax errors’ is
2499 ;; not the task of the build system, and fails.
2500 (substitute* "plugins/sudoers/Makefile.in"
2501 (("^pre-install:" match)
2502 (string-append match "\ndisabled-" match))))))
2503
2504 ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
2505 ;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
2506 #:tests? #f))
2507 (native-inputs
2508 (list groff))
2509 (inputs
2510 (append (list coreutils zlib)
2511 (if (target-hurd?)
2512 (list libxcrypt)
2513 (list linux-pam))))
2514 (home-page "https://www.sudo.ws/")
2515 (synopsis "Run commands as root")
2516 (description
2517 "Sudo (su \"do\") allows a system administrator to delegate authority to
2518give certain users (or groups of users) the ability to run some (or all)
2519commands as root or another user while providing an audit trail of the
2520commands and their arguments.")
2521
2522 ;; See <http://www.sudo.ws/sudo/license.html>.
2523 (license license:x11)))
2524
2525(define-public opendoas
2526 (package
2527 (name "opendoas")
2528 (version "6.8.2")
2529 (source (origin
2530 (method git-fetch)
2531 (uri (git-reference
2532 (url "https://github.com/Duncaen/OpenDoas")
2533 (commit (string-append "v" version))))
2534 (file-name (git-file-name name version))
2535 (sha256
2536 (base32
2537 "1qrin7x9vcprk5pwjbr3w8z2qj8hk6xbvxicdhlk27xr6vcr1qzn"))))
2538 (build-system gnu-build-system)
2539 (arguments
2540 `(#:phases
2541 (modify-phases %standard-phases
2542 (add-before 'configure 'pre-configure
2543 (lambda* (#:key outputs #:allow-other-keys)
2544 (substitute* "GNUmakefile"
2545 (("^\tchown.*$") ""))
2546 ;; OpenDoas looks for binaries in safepath when a rule specifies a
2547 ;; relative command, such as “permit keepenv :wheel cmd guix”.
2548 (substitute* "doas.c"
2549 (("safepath =" match)
2550 (string-append match " \""
2551 "/run/privileged/bin:"
2552 "/run/current-system/profile/bin:"
2553 "/run/current-system/profile/sbin:"
2554 "\" ")))))
2555 (replace 'configure
2556 ;; The configure script doesn't accept most of the default flags.
2557 (lambda* (#:key configure-flags #:allow-other-keys)
2558 ;; The configure script can be told which compiler to use only
2559 ;; through environment variables.
2560 (setenv "CC" ,(cc-for-target))
2561 (apply invoke "./configure" configure-flags))))
2562 #:configure-flags
2563 (list (string-append "--prefix=" (assoc-ref %outputs "out"))
2564 "--with-timestamp")
2565 ;; Compiler choice is not carried over from the configure script.
2566 #:make-flags
2567 (list (string-append "CC=" ,(cc-for-target)))
2568 #:tests? #f)) ; no test suite
2569 (native-inputs
2570 (list bison))
2571 (inputs
2572 (list libxcrypt))
2573 (home-page "https://github.com/Duncaen/OpenDoas")
2574 (synopsis "Portable version of OpenBSD's doas command")
2575 (description "Doas is a minimal replacement for the venerable sudo. It was
2576initially written by Ted Unangst of the OpenBSD project to provide 95% of the
2577features of sudo with a fraction of the codebase.")
2578 (license (list license:bsd-3 ; libbsd/*
2579 license:isc)))) ; everything else
2580
2581(define-public wpa-supplicant-minimal
2582 (package
2583 (name "wpa-supplicant-minimal")
2584 (version "2.11")
2585 (source (origin
2586 (method url-fetch)
2587 (uri (string-append
2588 "https://w1.fi/releases/wpa_supplicant-"
2589 version ".tar.gz"))
2590 (sha256
2591 (base32
2592 "02pwqwdcirnyfmfzrc0xb66qs8gzrpb6905nzcv8w2p3fips0bli"))
2593 (modules '((guix build utils)))
2594 (snippet
2595 '(begin
2596 (substitute* "wpa_supplicant/defconfig"
2597 ;; Disable D-Bus to save ~14MiB on the closure size.
2598 (("^CONFIG_CTRL_IFACE_DBUS" line _)
2599 (string-append "#" line)))
2600 #t))))
2601 (build-system gnu-build-system)
2602 (arguments
2603 `(#:phases
2604 (modify-phases %standard-phases
2605 (replace 'configure
2606 (lambda _
2607 (chdir "wpa_supplicant")
2608 (copy-file "defconfig" ".config")
2609 (let ((port (open-file ".config" "al")))
2610 (display "
2611 CONFIG_DEBUG_SYSLOG=y
2612
2613 CONFIG_TLS=openssl
2614
2615 CONFIG_DRIVER_NL80211=y
2616 CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
2617 CONFIG_LIBNL32=y
2618 CONFIG_READLINE=y\n" port)
2619 (close-port port))
2620 ;; Make sure we have a pkg-config when cross compiling
2621 (substitute* '(".config"
2622 "Android.mk"
2623 "Makefile"
2624 "dbus/Makefile")
2625 (("pkg-config")
2626 (or (which "pkg-config")
2627 (which (string-append ,(%current-target-system)
2628 "-pkg-config")))))
2629 #t))
2630 (add-after 'install 'install-documentation
2631 (lambda* (#:key outputs #:allow-other-keys)
2632 (let* ((out (assoc-ref outputs "out"))
2633 (doc (string-append out "/share/doc/wpa-supplicant"))
2634 (man (string-append out "/share/man"))
2635 (man5 (string-append man "/man5"))
2636 (man8 (string-append man "/man8")))
2637 (define (copy-man-page target)
2638 (lambda (file)
2639 (install-file file target)))
2640
2641 (mkdir-p man5) (mkdir man8)
2642 (for-each (copy-man-page man5)
2643 (find-files "doc/docbook" "\\.5"))
2644 (for-each (copy-man-page man8)
2645 (find-files "doc/docbook" "\\.8"))
2646
2647 ;; wpa_supplicant.conf(5) does not explain all configuration
2648 ;; options but refers to the example config file, so install it
2649 ;; along with READMEs.
2650 (for-each (lambda (file)
2651 (install-file file doc))
2652 '("README" "README-DPP" "README-HS20"
2653 "README-P2P" "README-WPS"
2654 "wpa_supplicant.conf"))
2655 #t))))
2656
2657 #:make-flags (list (string-append "CC=" ,(cc-for-target))
2658 (string-append "BINDIR=" (assoc-ref %outputs "out")
2659 "/sbin")
2660 (string-append "LIBDIR=" (assoc-ref %outputs "out")
2661 "/lib"))
2662 #:tests? #f))
2663 (inputs
2664 (list readline libnl openssl))
2665 (native-inputs
2666 (list pkg-config))
2667 (home-page "https://w1.fi/wpa_supplicant/")
2668 (synopsis "Connecting to WPA and WPA2-protected wireless networks")
2669 (description
2670 "wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
2671802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
2672the client stations. It implements key negotiation with a WPA Authenticator
2673and it controls the roaming and IEEE 802.11 authentication/association of the
2674WLAN driver.
2675
2676This package provides the @code{wpa_supplicant} daemon and the @code{wpa_cli}
2677command.")
2678
2679 ;; In practice, this is linked against Readline, which makes it GPLv3+.
2680 (license license:bsd-3)
2681
2682 (properties `((cpe-name . "wpa_supplicant")))))
2683
2684(define-public wpa-supplicant
2685 (package (inherit wpa-supplicant-minimal)
2686 (name "wpa-supplicant")
2687 (inputs (modify-inputs inputs
2688 (prepend dbus)))
2689 (source (origin
2690 (inherit (package-source wpa-supplicant-minimal))
2691 (patches (search-patches
2692 "wpa-supplicant-dbus-group-policy.patch"))))
2693 (arguments
2694 (substitute-keyword-arguments arguments
2695 ((#:phases phases)
2696 `(modify-phases ,phases
2697 (add-after 'configure 'set-config-options
2698 (lambda _
2699 (let ((port (open-file ".config" "al")))
2700 ;; Enable Opportunistic Wireless Encryption (OWE) and D-Bus
2701 ;; support.
2702 (display "
2703 CONFIG_OWE=y
2704 CONFIG_CTRL_IFACE_DBUS_NEW=y
2705 CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
2706 (close-port port))))
2707 (add-after 'install-documentation 'install-dbus-conf
2708 (lambda* (#:key outputs #:allow-other-keys)
2709 (let* ((out (assoc-ref outputs "out"))
2710 (interfaces (string-append out "/etc/dbus-1/system.d"))
2711 (services (string-append out
2712 "/share/dbus-1/system-services")))
2713 (mkdir-p interfaces)
2714 (copy-file "dbus/dbus-wpa_supplicant.conf"
2715 (string-append interfaces "/wpa_supplicant.conf"))
2716 (mkdir-p services)
2717 (copy-file "dbus/fi.w1.wpa_supplicant1.service"
2718 (string-append services
2719 "/fi.w1.wpa_supplicant1.service")))
2720 #t))))))))
2721
2722(define-public wpa-supplicant-gui
2723 (package
2724 (inherit wpa-supplicant)
2725 (name "wpa-supplicant-gui")
2726 (inputs (modify-inputs inputs
2727 (prepend qtbase-5 qtsvg-5 qtwayland-5)))
2728 (native-inputs
2729 ;; For icons.
2730 (modify-inputs native-inputs
2731 (prepend imagemagick/stable
2732 inkscape/pinned)))
2733 (build-system qt-build-system)
2734 (arguments
2735 (list
2736 #:tests? #f ; no tests
2737 ;; Make sure the (rarely updated) package 'imagemagick/stable'
2738 ;; does not end up in the closure.
2739 #:disallowed-references (list (this-package-native-input "imagemagick"))
2740 #:modules '((guix build qt-build-system)
2741 ((guix build gnu-build-system) #:prefix gnu:)
2742 (guix build utils))
2743 #:phases
2744 #~(modify-phases %standard-phases
2745 (add-after 'unpack 'chdir
2746 (lambda _ (chdir "wpa_supplicant/wpa_gui-qt4")))
2747 (replace 'configure
2748 (lambda _ (invoke "qmake" "wpa_gui.pro")))
2749 (replace 'build (assoc-ref gnu:%standard-phases 'build))
2750 (add-after 'build 'build-icons
2751 (lambda _
2752 ;; Inkscape complains (but works) without a writable $HOME.
2753 (setenv "HOME" "/tmp")
2754 (invoke "make" "-C" "icons")))
2755 (replace 'install
2756 (lambda _
2757 (install-file "wpa_gui" (string-append #$output "/bin"))
2758 (install-file "wpa_gui.desktop"
2759 (string-append #$output
2760 "/share/applications"))
2761 (copy-recursively "icons/hicolor"
2762 (string-append #$output
2763 "/share/icons/hicolor")))))))
2764 (synopsis "Graphical user interface for WPA supplicant")))
2765
2766(define-public hostapd
2767 (package
2768 (name "hostapd")
2769 (version "2.10")
2770 (source (origin
2771 (method url-fetch)
2772 (uri (string-append "https://w1.fi/releases/hostapd-" version
2773 ".tar.gz"))
2774 (sha256
2775 (base32
2776 "0pcik0a6yin9nib02frjhaglmg44hwik086iwg1751b7kdwpqvi0"))))
2777 (build-system gnu-build-system)
2778 (arguments
2779 (list #:phases
2780 #~(modify-phases %standard-phases
2781 (replace 'configure
2782 (lambda _
2783 ;; This is mostly copied from 'wpa-supplicant' above.
2784 (chdir "hostapd")
2785 (copy-file "defconfig" ".config")
2786 (let ((port (open-file ".config" "al")))
2787 (display "CONFIG_LIBNL32=y
2788 CONFIG_IEEE80211R=y
2789 CONFIG_IEEE80211N=y
2790 CONFIG_IEEE80211AC=y
2791 CONFIG_FULL_DYNAMIC_VLAN=y
2792 CONFIG_ACS=y\n" port)
2793 (close-port port))))
2794 (add-after 'unpack 'patch-pkg-config
2795 (lambda _
2796 (substitute* "src/drivers/drivers.mak"
2797 (("pkg-config")
2798 #$(pkg-config-for-target)))))
2799 (add-after 'install 'install-man-pages
2800 (lambda* (#:key outputs #:allow-other-keys)
2801 (let* ((man (string-append #$output "/share/man"))
2802 (man1 (string-append man "/man1"))
2803 (man8 (string-append man "/man8")))
2804 (define (copy-man-page target)
2805 (lambda (file)
2806 (install-file file target)))
2807 (for-each (copy-man-page man1)
2808 (find-files "." "\\.1"))
2809 (for-each (copy-man-page man8)
2810 (find-files "." "\\.8"))))))
2811 #:make-flags
2812 #~(list (string-append "CC=" #$(cc-for-target))
2813 (string-append "BINDIR=" #$output "/sbin")
2814 (string-append "LIBDIR=" #$output "/lib"))
2815 #:tests? #f))
2816 (native-inputs (list pkg-config))
2817
2818 ;; There's an optional dependency on SQLite.
2819 (inputs (list openssl libnl))
2820 (home-page "https://w1.fi/hostapd/")
2821 (synopsis "Daemon for Wi-Fi access points and authentication servers")
2822 (description
2823 "hostapd is a user-space daemon for WiFi access points and authentication
2824servers. It implements IEEE 802.11 access point management, IEEE
2825802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS
2826authentication server.")
2827
2828 ;; Same license as wpa_supplicant.
2829 (license license:bsd-3)))
2830
2831(define-public dmidecode
2832 (package
2833 (name "dmidecode")
2834 (version "3.6")
2835 (source
2836 (origin
2837 (method url-fetch)
2838 (uri (string-append "mirror://savannah/dmidecode/dmidecode-"
2839 version ".tar.xz"))
2840 (sha256
2841 (base32 "1blbvmsxba71fmjxckh0cn7x68kim7qlx6ilv0df7brxxkrna374"))))
2842 (build-system gnu-build-system)
2843 (arguments
2844 (list #:tests? #f ; no 'check' target
2845 #:make-flags
2846 #~(list (string-append "CC=" #$(cc-for-target))
2847 (string-append "prefix=" #$output))
2848 #:phases
2849 #~(modify-phases %standard-phases
2850 (delete 'configure)))) ; no configure script
2851 (home-page "https://www.nongnu.org/dmidecode/")
2852 (synopsis "Read hardware information from the BIOS")
2853 (description
2854 "Dmidecode reports information about your system's hardware as described
2855in your system BIOS according to the SMBIOS/DMI standard. This typically
2856includes system manufacturer, model name, serial number, BIOS version, asset
2857tag as well as a lot of other details of varying level of interest and
2858reliability depending on the manufacturer. This will often include usage
2859status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
2860module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
2861 (license license:gpl2+)))
2862
2863(define-public acpica
2864 (package
2865 (name "acpica")
2866 (version "20250807")
2867 (source
2868 (origin
2869 (method git-fetch)
2870 (uri (git-reference
2871 (url "https://github.com/acpica/acpica")
2872 (commit version)))
2873 (file-name (git-file-name name version))
2874 (sha256
2875 (base32 "06jh7y9aimw132hgcivn144rp6br2r30jqizh7hrq3nl589f73ir"))))
2876 (build-system gnu-build-system)
2877 (native-inputs (list flex bison))
2878 (arguments
2879 (list
2880 #:make-flags
2881 #~(list (string-append "PREFIX=" #$output)
2882 (string-append "CC=" #$(cc-for-target))
2883 "HOST=_LINUX"
2884 "OPT_CFLAGS=-Wall -fno-strict-aliasing")
2885 #:tests? #f ;no test suite
2886 #:phases
2887 #~(modify-phases %standard-phases
2888 (delete 'configure)))) ;no configure script
2889 (home-page "https://acpica.org/")
2890 (synopsis "Tools for the development and debugging of ACPI tables")
2891 (description
2892 "The @acronym{ACPICA, ACPI Component Architecture} project provides an
2893OS-independent reference implementation of the @acronym{ACPI, Advanced
2894Configuration and Power Interface} specification. ACPICA code contains those
2895portions of ACPI meant to be directly integrated into the host OS as a
2896kernel-resident subsystem, and a small set of tools to assist in developing and
2897debugging ACPI tables.
2898
2899This package contains only the user-space tools needed for ACPI table
2900development, not the kernel implementation of ACPI.")
2901 (license license:gpl2))) ;dual GPLv2/ACPICA Licence
2902
2903(define-public s-tui
2904 (package
2905 (name "s-tui")
2906 (version "1.4.0")
2907 (source
2908 (origin
2909 (method git-fetch)
2910 (uri (git-reference
2911 (url "https://github.com/amanusk/s-tui")
2912 (commit (string-append "v" version))))
2913 (file-name (git-file-name name version))
2914 (sha256
2915 (base32 "1aj97xbdv01rsfjkn75g7y26knsyrw5nzr79x14vbixlnpgx6c1w"))))
2916 (build-system pyproject-build-system)
2917 (arguments
2918 (list
2919 #:phases #~(modify-phases %standard-phases
2920 (add-after 'unpack 'patch-/bin/sh
2921 (lambda _
2922 (substitute* (list "s_tui/sources/hook_script.py"
2923 "tests/test_hooks.py"
2924 "tests/test_helper_functions.py")
2925 (("/bin/sh") (which "sh"))))))))
2926 (native-inputs
2927 (list bash-minimal
2928 python-pytest
2929 python-pytest-mock
2930 python-setuptools))
2931 (inputs
2932 (list python-psutil
2933 python-urwid))
2934 (home-page "https://github.com/amanusk/s-tui")
2935 (synopsis "Interactive terminal stress test and monitoring tool")
2936 (description
2937 "The Stress Terminal UI displays graphs of the CPU frequency,
2938utilization, temperature and power.")
2939 (license license:gpl2+)))
2940
2941(define-public stress
2942 (package
2943 (name "stress")
2944 (version "1.0.7")
2945 (source (origin
2946 (method url-fetch)
2947 (uri (string-append "mirror://debian/pool/main/s/stress/stress_"
2948 version ".orig.tar.gz"))
2949 (sha256
2950 (base32
2951 "1cg0mklfrwfyzwqkzidd0151r8n2jgbiiqz1v0p3w4q62mkmdand"))
2952 (modules '((guix build utils)))
2953 (snippet
2954 #~(begin
2955 ;; The build fails with "implicit declaration of function
2956 ;; 'rpl_malloc'; did you mean 'realloc'?" when building
2957 ;; for RISCV64 target if "AC_FUNC_MALLOC" macro is present.
2958 ;; Remove it.
2959 (substitute* "configure.ac"
2960 (("AC_FUNC_MALLOC") ""))))))
2961 (build-system gnu-build-system)
2962 (native-inputs
2963 (list autoconf automake))
2964 (home-page "https://packages.debian.org/sid/stress")
2965 (synopsis "Impose load on and stress test a computer system")
2966 (description
2967 "Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
2968or disk stress on a POSIX-compliant operating system and reports any errors it
2969detects.
2970
2971Stress is not a benchmark. It is a tool used by system administrators to
2972evaluate how well their systems will scale, by kernel programmers to evaluate
2973perceived performance characteristics, and by systems programmers to expose
2974the classes of bugs which only or more frequently manifest themselves when the
2975system is under heavy load.")
2976 (license license:gpl2+)))
2977
2978(define-public stress-ng
2979 (package
2980 (name "stress-ng")
2981 (version "0.21.03")
2982 (source
2983 (origin
2984 (method git-fetch)
2985 (uri (git-reference
2986 (url "https://github.com/ColinIanKing/stress-ng")
2987 (commit (string-append "V" version))))
2988 (file-name (git-file-name name version))
2989 (sha256
2990 (base32 "01p6n2l2hv3f579vdb60x77wyj1zs7wvi44agx538b2hiwwvlkl2"))))
2991 (build-system gnu-build-system)
2992 (arguments
2993 ;; XXX The test suite seems to cause instability on the VisionFive 2
2994 ;; build machines, maybe it's stressing them as intended but this is
2995 ;; unhelpful.
2996 (list #:tests? (and (not (%current-target-system))
2997 (not (target-riscv64?)))
2998 #:make-flags
2999 #~(list (string-append "CC=" #$(cc-for-target))
3000 (string-append "BINDIR=" #$output "/bin")
3001 ;; XXX Really: MAN1DIR, or man pages won't be found.
3002 (string-append "MANDIR=" #$output "/share/man/man1")
3003 (string-append "JOBDIR=" #$output
3004 "/share/stress-ng/example-jobs")
3005 (string-append "BASHDIR=" #$output
3006 "/share/bash-completion/completions"))
3007 ;; There is also a fast-test-all that very briefly runs every single
3008 ;; stressor, but its utility is questionable compared to its cost.
3009 ;; See this package's git history for details & which tests to skip.
3010 #:test-target "lite-test"
3011 #:phases
3012 #~(modify-phases %standard-phases
3013 (delete 'configure)))) ;no configure script
3014 (inputs
3015 (list keyutils
3016 kmod
3017 libaio
3018 libbsd
3019 libcap
3020 libgcrypt
3021 zlib))
3022 (home-page "https://github.com/ColinIanKing/stress-ng")
3023 (synopsis "Load and stress-test a computer system in various ways")
3024 (description
3025 "stress-ng stress-tests a computer system by exercising both physical
3026subsystems as operating system kernel interfaces. It can stress the CPU, cache,
3027disk, memory, socket and pipe I/O, scheduling, and much more, in various
3028selectable ways. This can trip hardware issues such as thermal overruns as well
3029as operating system bugs that occur only when a system is being thrashed hard.
3030
3031You can also measure test throughput rates, which can be useful to observe
3032performance changes across different operating system releases or types of
3033hardware. However, stress-ng is not a benchmark. Use it with caution: some of
3034the tests can make poorly designed hardware run dangerously hot or make the
3035whole system lock up.
3036
3037Compared to its inspiration, @command{stress}, @command{stress-ng} offers many
3038additional options such as the number of bogo operations to run, execution
3039metrics, verification of memory and computational operations, and considerably
3040more stress mechanisms.")
3041 (license license:gpl2+)))
3042
3043(define-public tree
3044 (package
3045 (name "tree")
3046 (version "2.3.2")
3047 (source (origin
3048 (method url-fetch)
3049 (uri (string-append "https://oldmanprogrammer.net/tar/tree/"
3050 "tree-" version ".tgz"))
3051 (sha256
3052 (base32 "088f60s44x0dp5l4ipc1i5453hp0v044s3kha0r4vyzcrgb1v53b"))))
3053 (build-system gnu-build-system)
3054 (arguments
3055 (list
3056 #:phases
3057 #~(modify-phases %standard-phases
3058 (delete 'configure)) ; No configure script.
3059 #:tests? #f ; No check target.
3060 #:make-flags
3061 #~(list (string-append "PREFIX=" #$output)
3062 (string-append "CC=" #$(cc-for-target)))))
3063 (synopsis "Recursively list the contents of a directory")
3064 (description
3065 "Tree is a recursive directory listing command that produces a depth
3066indented listing of files, which is colorized ala dircolors if the LS_COLORS
3067environment variable is set and output is to tty.")
3068 (home-page "https://oldmanprogrammer.net/source.php?dir=projects/tree")
3069 (license license:gpl2+)))
3070
3071(define-public lr
3072 (package
3073 (name "lr")
3074 (version "2.0.1")
3075 (source
3076 (origin
3077 (method git-fetch)
3078 (uri (git-reference
3079 (url "https://git.vuxu.org/lr/")
3080 (commit (string-append "v" version))))
3081 (file-name (git-file-name name version))
3082 (sha256
3083 (base32 "0mqhcgi4v3zzic0ikf7ja4km1mik29gdp15q8qwjw5bmh22d74ff"))))
3084 (build-system gnu-build-system)
3085 (arguments
3086 (list #:tests? #f ; There are no tests.
3087 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
3088 (string-append "PREFIX=" #$output))
3089 #:phases #~(modify-phases %standard-phases
3090 (delete 'configure))))
3091 (synopsis "Tool to generate customized file listings")
3092 (description
3093 "lr is a tool for generating file listings, which includes the best
3094features of ls(1), find(1), stat(1) and du(1).")
3095 (home-page "https://git.vuxu.org/lr/about")
3096 (license license:expat)))
3097
3098(define-public direvent
3099 (package
3100 (name "direvent")
3101 (version "5.5")
3102 (source (origin
3103 (method url-fetch)
3104 (uri (string-append "mirror://gnu/direvent/direvent-"
3105 version ".tar.gz"))
3106 (sha256
3107 (base32
3108 "1dywdzwzjn1g7cpm2f1mz0iasdhjn0ddhcagkcz6gxz6nfsc05hf"))))
3109 (build-system gnu-build-system)
3110 (arguments
3111 (list #:phases
3112 #~(modify-phases %standard-phases
3113 (add-before 'build 'substitute-file-names
3114 (lambda _
3115 ;; Use the right shell when executing the watcher and
3116 ;; user-provided shell commands.
3117 (let ((bash #$(this-package-input "bash-minimal")))
3118 (substitute* '("src/direvent.c" "src/progman.c")
3119 (("\"/bin/sh\"")
3120 (string-append "\"" bash "/bin/sh\""))))
3121
3122 ;; Adjust the test suite similarly.
3123 (substitute* "tests/testsuite"
3124 (("(SHELL=|#![[:space:]]*)/bin/sh" _ prefix)
3125 (string-append prefix (which "sh")))
3126 (("/bin/kill")
3127 (which "kill"))))))))
3128 (inputs (list bash-minimal))
3129 (home-page "https://www.gnu.org.ua/software/direvent/")
3130 (synopsis "Daemon to monitor directories for events such as file removal")
3131 (description
3132 "A daemon that monitors directories for events, such as creating,
3133deleting or modifying files. It can monitor different sets of directories for
3134different events. When an event is detected, direvent calls a specified
3135external program with information about the event, such as the location
3136within the file system where it occurred. Thus, \"direvent\" provides an
3137easy way to react immediately if given files undergo changes, for example, to
3138track changes in important system configuration files.")
3139 (license license:gpl3+)))
3140
3141(define-public libcap-ng
3142 (package
3143 (name "libcap-ng")
3144 (version "0.9.5")
3145 (source (origin
3146 (method git-fetch)
3147 (uri (git-reference
3148 (url "https://github.com/stevegrubb/libcap-ng")
3149 (commit (string-append "v" version))))
3150 (file-name (git-file-name name version))
3151 (sha256
3152 (base32
3153 "1wvl84nhbh94dvz04xi2zkhh9s812m2b0i5yp26lk5jjh4z5p18x"))))
3154 (build-system gnu-build-system)
3155 (arguments
3156 (list
3157 #:configure-flags
3158 #~(list "--disable-static"
3159 "--without-python")))
3160 (inputs
3161 (list libbpf))
3162 (native-inputs
3163 (list autoconf automake libtool pkg-config))
3164 (home-page "https://people.redhat.com/sgrubb/libcap-ng/")
3165 (synopsis "Library for more easily working with POSIX capabilities")
3166 (description
3167 "The libcap-ng library is intended to make programming with POSIX
3168capabilities easier than the traditional libcap library. It includes
3169utilities that can analyse all currently running applications and print out
3170any capabilities and whether or not it has an open ended bounding set. The
3171included utilities are designed to let admins and developers spot apps from
3172various ways that may be running with too much privilege.")
3173 ;; The library is lgpl2.1+, but also ships some utils which are gpl2+.
3174 (license (list license:lgpl2.1+ license:gpl2+))))
3175
3176(define-public smartmontools
3177 (package
3178 (name "smartmontools")
3179 (version "7.5")
3180 (source
3181 (origin
3182 (method git-fetch)
3183 (uri (git-reference
3184 (url "https://github.com/smartmontools/smartmontools")
3185 (commit (string-append "RELEASE_"
3186 (string-replace-substring version "." "_")))))
3187 (file-name (git-file-name name version))
3188 (sha256
3189 (base32 "00c58xcqv73lzxf0baly2q0sqkyd2vncv93iabjj7jkvbzf7nqpz"))))
3190 (build-system gnu-build-system)
3191 (arguments
3192 (list
3193 #:make-flags
3194 #~(list "BUILD_INFO=\"(Guix)\"")
3195 #:phases
3196 #~(modify-phases %standard-phases
3197 (add-after 'unpack 'chdir
3198 (lambda _
3199 (chdir "smartmontools"))))
3200 #:configure-flags
3201 #~(list (format #f "--with-scriptpath=~{~a:~}$PATH"
3202 (map (lambda (pkg)
3203 (in-vicinity pkg "bin"))
3204 '#$(list (this-package-input "coreutils-minimal")
3205 (this-package-input "sed")))))))
3206 (inputs (list automake autoconf coreutils-minimal libcap-ng sed))
3207 (home-page "https://www.smartmontools.org/")
3208 (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
3209 (description
3210 "The smartmontools package contains utility programs to control and
3211monitor storage systems using the Self-Monitoring, Analysis and Reporting
3212Technology System (@dfn{S.M.A.R.T.}) built into most modern ATA and SCSI hard
3213disks. In many cases, these utilities will provide advanced warning of disk
3214degradation and failure.")
3215 (license license:gpl2+)))
3216
3217(define-public fdupes
3218 (package
3219 (name "fdupes")
3220 (version "2.4.0")
3221 (source
3222 (origin
3223 (method url-fetch)
3224 (uri (string-append "https://github.com/adrianlopezroche/fdupes/"
3225 "releases/download/v" version "/"
3226 "fdupes-" version ".tar.gz"))
3227 (sha256
3228 (base32 "0dhpgcylf99cnxz8h4i4dhv2i3124cs0n8lssbhwn783knijfysj"))))
3229 (build-system gnu-build-system)
3230 (inputs
3231 (list ncurses pcre2 sqlite))
3232 (home-page "https://github.com/adrianlopezroche/fdupes")
3233 (synopsis "Identify duplicate files")
3234 (description
3235 "fdupes is a program for identifying duplicate files residing within
3236specified directories.")
3237 (license license:expat)))
3238
3239(define-public ansible-core
3240 (package
3241 (name "ansible-core")
3242 (version "2.21.2")
3243 (source
3244 (origin
3245 (method url-fetch)
3246 (uri (pypi-uri "ansible_core" version))
3247 (sha256
3248 (base32 "0w6wv6k39d5xn60l5m4cbzwwgpsyz8mg2ab0y5dgn6ys5rk9w4y6"))))
3249 (build-system pyproject-build-system)
3250 (arguments
3251 (list
3252 #:test-flags
3253 #~(list "units"
3254 "--exclude" "test/units/cli/test_adhoc.py"
3255 "--exclude" "test/units/galaxy/test_collection_install.py"
3256 "--num-workers" (number->string (parallel-job-count)))
3257 #:phases
3258 #~(modify-phases %standard-phases
3259 (add-before 'build 'set-HOME
3260 (lambda _
3261 ;; Otherwise Ansible fails to create its config directory.
3262 (setenv "HOME" "/tmp")))
3263 (add-after 'unpack 'patch-paths
3264 (lambda* (#:key inputs #:allow-other-keys)
3265 (substitute* "lib/ansible/_internal/_encryption/_crypt.py"
3266 (("lib_so = ctypes\\.util\\.find_library\\(lib_config\\.name\\)")
3267 (string-append "lib_so = '"
3268 (search-input-file inputs "/lib/libcrypt.so.1")
3269 "'")))
3270 (substitute* "lib/ansible/module_utils/compat/selinux.py"
3271 (("libselinux.so.1")
3272 (search-input-file inputs "/lib/libselinux.so.1")))
3273 (substitute* "test/lib/ansible_test/_internal/ansible_util.py"
3274 (("PYTHONPATH=get_ansible_python_path\\(args\\)" all)
3275 (string-append all "+ ':' + os.environ['GUIX_PYTHONPATH']")))
3276 (substitute* "test/lib/ansible_test/_internal/commands/units/__init__.py"
3277 (("PYTHONPATH=get_units_ansible_python_path\\(args, test_context)" all)
3278 (string-append all "+ ':' + os.environ['GUIX_PYTHONPATH']")))
3279 (substitute* "test/units/modules/test_async_wrapper.py"
3280 (("/usr/bin/python")
3281 (search-input-file inputs "/bin/python3")))))
3282 (replace 'check
3283 (lambda* (#:key tests? test-flags #:allow-other-keys)
3284 (when tests?
3285 (setenv "PYTHONPATH"
3286 (string-append "lib:test/lib:"
3287 (getenv "GUIX_PYTHONPATH")))
3288 ;; The test suite needs to be run with 'ansible-test', which
3289 ;; does some extra environment setup. Taken from
3290 ;; https://raw.githubusercontent.com/ansible/ansible/\
3291 ;; devel/test/utils/shippable/shippable.sh.
3292 (apply invoke "python"
3293 (string-append "test/lib/ansible_test/_util/"
3294 "target/cli/ansible_test_cli_stub.py")
3295 test-flags)))))))
3296 (native-inputs
3297 (list openssh
3298 openssl
3299 python-mock
3300 python-pycryptodome
3301 python-pytest
3302 python-pytest-mock
3303 python-pytest-xdist
3304 python-pytz
3305 python-setuptools
3306 util-linux))
3307 (inputs ;optional dependencies captured in wrap scripts
3308 (list libselinux
3309 libxcrypt
3310 sshpass))
3311 (propagated-inputs ;core dependencies listed in egg-info/requires.txt
3312 (list python-cryptography
3313 python-jinja2
3314 python-packaging ;for version number parsing
3315 python-paramiko
3316 python-passlib
3317 python-pexpect
3318 python-pyyaml
3319 python-resolvelib))
3320 (home-page "https://www.ansible.com/")
3321 (synopsis "Radically simple IT automation")
3322 (description "Ansible aims to be a radically simple IT automation system.
3323It handles configuration management, application deployment, cloud
3324provisioning, ad-hoc task execution, network automation, and multi-node
3325orchestration. Ansible facilitates complex changes like zero-downtime rolling
3326updates with load balancers. This package is the core of Ansible, which
3327provides the following commands:
3328@itemize
3329@item ansible
3330@item ansible-config
3331@item ansible-connection
3332@item ansible-console
3333@item ansible-doc
3334@item ansible-galaxy
3335@item ansible-inventory
3336@item ansible-playbook
3337@item ansible-pull
3338@item ansible-test
3339@item ansible-vault
3340@end itemize")
3341 (license license:gpl3+)))
3342
3343(define-public ansible
3344 (package
3345 (name "ansible")
3346 (version "14.2.0")
3347 (source
3348 (origin
3349 (method url-fetch)
3350 (uri (pypi-uri "ansible" version))
3351 (sha256
3352 (base32 "098hji4slkli5hj015p7xwbbxycrmlxvc317fl0npli7j0wii3qw"))))
3353 (build-system pyproject-build-system)
3354 (arguments
3355 (list
3356 ;; XXX: All tests errored with:
3357 ;; from ...common.utils import (
3358 ;; E ImportError: attempted relative import with no known parent package
3359 ;;
3360 ;; tests: 17 skipped, 1 warning, 1132 errors
3361 #:tests? #f))
3362 (native-inputs
3363 (list python-setuptools))
3364 (propagated-inputs (list ansible-core))
3365 ;; The Ansible collections are found by ansible-core via the Python search
3366 ;; path; the following search path ensures that they are found even when
3367 ;; Python is not present in the profile.
3368 (native-search-paths
3369 ;; XXX: Attempting to use (package-native-search-paths python)
3370 ;; here would cause an error about python being an unbound
3371 ;; variable in the tests/import/cpan.scm test.
3372 (list (search-path-specification
3373 (variable "GUIX_PYTHONPATH")
3374 (files (list "lib/python3.12/site-packages")))))
3375 (home-page "https://www.ansible.com/")
3376 (synopsis "Radically simple IT automation")
3377 (description "Ansible aims to be a radically simple IT automation system.
3378It handles configuration management, application deployment, cloud
3379provisioning, ad-hoc task execution, network automation, and multi-node
3380orchestration. Ansible facilitates complex changes like zero-downtime rolling
3381updates with load balancers. This package provides a curated set of
3382community-maintained Ansible collections, which contain playbooks, roles,
3383modules and plugins that extend Ansible.")
3384 (license license:gpl3+)))
3385
3386(define-public debops
3387 (package
3388 (name "debops")
3389 (version "3.3.0")
3390 (source
3391 (origin
3392 (method git-fetch)
3393 (uri (git-reference
3394 (url "https://github.com/debops/debops")
3395 (commit (string-append "v" version))))
3396 (file-name (git-file-name name version))
3397 (sha256
3398 (base32 "0z6wck5kax5h2bjv1vw8pbd7fdcdhx87bj9fakh3h0rar9d2qksj"))
3399 (patches
3400 (search-patches "debops-setup-py-avoid-git.patch"))))
3401 (build-system pyproject-build-system)
3402 (native-inputs (list python-setuptools))
3403 (inputs
3404 (list ansible
3405 bash-minimal
3406 fuse
3407 util-linux ;; for umount
3408 findutils
3409 git
3410 git-crypt
3411 gnupg
3412 which))
3413 (propagated-inputs
3414 (list python-distro
3415 python-dotenv
3416 python-future
3417 python-gitpython
3418 python-jinja2
3419 python-pyxdg
3420 python-pyyaml
3421 python-toml))
3422 (arguments
3423 (list
3424 #:tests? #f ;no tests
3425 #:modules '((guix build pyproject-build-system)
3426 (guix build utils)
3427 (srfi srfi-26))
3428 #:phases #~(modify-phases %standard-phases
3429 (add-after 'sanity-check 'wrap-script
3430 (lambda* (#:key inputs #:allow-other-keys)
3431 (wrap-program (string-append #$output "/bin/debops")
3432 `("PATH" ":" prefix
3433 ,(map dirname
3434 (map (cut search-input-file inputs <>)
3435 (list ;; "bin/ansible" ;see above
3436 "bin/gpg"
3437 "bin/git"
3438 "bin/git-crypt"
3439 "bin/umount"))))))))))
3440 (home-page "https://www.debops.org/")
3441 (synopsis "Collection of general-purpose Ansible roles")
3442 (description "The Ansible roles provided by that can be used to manage
3443Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can
3444be used to apply the provided roles in a controlled way, using Ansible
3445inventory groups.
3446
3447The roles are written with a high customization in mind, which can be done
3448using Ansible inventory. This way the role and playbook code can be shared
3449between multiple environments, with different configuration in to each one.
3450
3451Services can be managed on a single host, or spread between multiple hosts.
3452DebOps provides support for different SQL and NoSQL databases, web servers,
3453programming languages and specialized applications useful in a data center
3454environment or in a cluster. The project can also be used to deploy
3455virtualization environments using KVM/libvirt, Docker or LXC technologies to
3456manage virtual machines and/or containers.")
3457 (license license:gpl3+)))
3458
3459(define-public cpulimit
3460 (package
3461 (name "cpulimit")
3462 (version "0.2")
3463 (source
3464 (origin
3465 (method git-fetch)
3466 (uri (git-reference
3467 (url "https://github.com/opsengine/cpulimit")
3468 (commit (string-append "v" version))))
3469 (file-name (git-file-name name version))
3470 (sha256
3471 (base32 "1dz045yhcsw1rdamzpz4bk8mw888in7fyqk1q1b3m1yk4pd1ahkh"))
3472 (patches (search-patches "cpulimit-with-glib-2.32.patch"))))
3473 (build-system gnu-build-system)
3474 (arguments
3475 `(#:phases (modify-phases %standard-phases
3476 (delete 'configure)
3477 (replace 'build
3478 (lambda* (#:key make-flags #:allow-other-keys)
3479 (apply invoke "make" "-Csrc" make-flags)))
3480 (replace 'check
3481 (lambda* (#:key tests? make-flags #:allow-other-keys)
3482 (when tests?
3483 (apply invoke "make" "-Ctests" make-flags))
3484 #t))
3485 (replace 'install
3486 (lambda* (#:key outputs #:allow-other-keys)
3487 (let* ((out (assoc-ref outputs "out"))
3488 (bin (string-append out "/bin")))
3489 (install-file "src/cpulimit" bin))
3490 #t)))
3491 #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
3492 (home-page "https://github.com/opsengine/cpulimit")
3493 (synopsis "Limit CPU usage")
3494 (description
3495 "Cpulimit limits the CPU usage of a process. It does not change the nice
3496value or other scheduling priority settings, but the real CPU usage, and is
3497able to adapt itself dynamically to the overall system load. Children
3498processes and threads of the specified process may optionally share the same
3499limits.")
3500 (license license:gpl2+)))
3501
3502(define-public corectrl
3503 (package
3504 (name "corectrl")
3505 (version "1.5.1")
3506 (source
3507 (origin
3508 (method git-fetch)
3509 (uri (git-reference
3510 (url "https://gitlab.com/corectrl/corectrl")
3511 (commit (string-append "v" version))))
3512 (file-name (git-file-name name version))
3513 (sha256
3514 (base32 "0y2qjp73kl7m6sx99kc0myfvvlf0rjx2yb3hff7jr6l87ayan09p"))
3515 (patches (search-patches "corectrl-locate-polkit-with-pkg-config.patch"))))
3516 (build-system qt-build-system)
3517 (arguments
3518 (list
3519 #:configure-flags #~(list "-DINSTALL_DBUS_FILES_IN_PREFIX=true"
3520 (string-append "-DPOLKIT_POLICY_INSTALL_DIR="
3521 #$output
3522 "/share/polkit-1/actions")
3523 (string-append "-DWITH_PCI_IDS_PATH="
3524 #$(this-package-input "hwdata")
3525 "/share/hwdata/pci.ids"))
3526 #:phases
3527 #~(modify-phases %standard-phases
3528 (add-after 'unpack 'embed-absolute-references
3529 (lambda* (#:key inputs #:allow-other-keys)
3530 (substitute* "src/core/info/common/cpuinfolscpu.cpp"
3531 (("\"lscpu\"")
3532 (string-append
3533 "\"" (search-input-file inputs "bin/lscpu") "\"")))
3534 (substitute* "src/core/info/common/gpuinfovulkan.cpp"
3535 (("\"vulkaninfo\"")
3536 (string-append
3537 "\"" (search-input-file inputs "bin/vulkaninfo") "\"")))
3538 (substitute* (list "src/core/info/common/swinfomesa.cpp"
3539 "src/core/info/common/gpuinfoopengl.cpp")
3540 (("\"glxinfo\"")
3541 (string-append
3542 "\"" (search-input-file inputs "bin/glxinfo") "\""))))))))
3543 (native-inputs (list catch2
3544 pkg-config
3545 qttools))
3546 (inputs (list dbus
3547 botan
3548 hwdata
3549 mesa-utils
3550 polkit
3551 procps
3552 pugixml
3553 qt5compat
3554 qtbase
3555 qtcharts
3556 qtdeclarative
3557 qtquickcontrols2-5
3558 qtsvg
3559 qtwayland
3560 quazip
3561 spdlog
3562 trompeloeil
3563 units
3564 util-linux
3565 vulkan-tools
3566 zlib))
3567 (home-page "https://gitlab.com/corectrl/corectrl")
3568 (synopsis "Profile based system control utility")
3569 (description
3570 "CoreCtrl allows you to control with ease your computer hardware using
3571application profiles.")
3572 (license (list license:gpl3))))
3573
3574(define-public autojump
3575 (package
3576 (name "autojump")
3577 (version "22.5.3")
3578 (source
3579 (origin
3580 (method git-fetch)
3581 (uri (git-reference
3582 (url "https://github.com/wting/autojump")
3583 (commit (string-append "release-v" version))))
3584 (file-name (git-file-name name version))
3585 (sha256
3586 (base32 "1rgpsh70manr2dydna9da4x7p8ahii7dgdgwir5fka340n1wrcws"))))
3587 (build-system gnu-build-system)
3588 (native-inputs ; for tests
3589 (list python-mock python-pytest))
3590 (inputs
3591 `(("python" ,python-wrapper)))
3592 (arguments
3593 `(#:phases
3594 (modify-phases %standard-phases
3595 (add-after 'unpack 'make-git-checkout-writable
3596 ;; ‘install.py’ modifies files before installing them.
3597 (lambda _
3598 (for-each make-file-writable (find-files "."))
3599 #t))
3600 (delete 'configure)
3601 (delete 'build)
3602 (replace 'check
3603 (lambda _
3604 (invoke "python" "tests/unit/autojump_utils_test.py")))
3605 (replace 'install
3606 (lambda* (#:key outputs #:allow-other-keys)
3607 (setenv "SHELL" (which "bash"))
3608 (invoke "python" "install.py"
3609 (string-append "--destdir="
3610 (assoc-ref outputs "out"))))))))
3611 (home-page "https://github.com/wting/autojump")
3612 (synopsis "Shell extension for file system navigation")
3613 (description
3614 "Autojump provides a faster way to navigate your file system, with a \"cd
3615command that learns\". It works by maintaining a database of the directories
3616you use the most from the command line and allows you to \"jump\" to
3617frequently used directories by typing only a small pattern.")
3618 (license license:gpl3+)))
3619
3620(define-public fasd
3621 (package
3622 (name "fasd")
3623 (version "1.0.2")
3624 (source (origin
3625 (method git-fetch)
3626 (uri (git-reference
3627 (url "https://github.com/whjvenyl/fasd")
3628 (commit version)))
3629 (file-name (git-file-name name version))
3630 (sha256
3631 (base32
3632 "0q72a54dcahc9pan5qkmnsvpqiqgjjxwdxzzm8pxzylpr329jjyh"))))
3633 (build-system gnu-build-system)
3634 (arguments
3635 `(#:phases (modify-phases %standard-phases
3636 (delete 'configure)) ;no configuration
3637 #:tests? #f ;no tests
3638 #:make-flags (list (string-append "PREFIX=" %output))))
3639 (home-page "https://github.com/whjvenyl/fasd")
3640 (synopsis "Quick access to files and directories for shells")
3641 (description
3642 "Fasd (pronounced similar to \"fast\") is a command-line productivity booster.
3643Fasd offers quick access to files and directories for POSIX shells. It is inspired
3644by tools like @code{autojump}, @code{z}, and @code{v}. Fasd keeps track of files and
3645directories you have accessed so that you can quickly reference them in the command
3646line.")
3647 (license license:expat)))
3648
3649(define-public iftop
3650 (package
3651 (name "iftop")
3652 (version "1.0pre4")
3653 (source (origin
3654 (method url-fetch)
3655 (uri (string-append "http://www.ex-parrot.com/~pdw/iftop/download"
3656 "/iftop-" version ".tar.gz"))
3657 (sha256
3658 (base32
3659 "15sgkdyijb7vbxpxjavh5qm5nvyii3fqcg9mzvw7fx8s6zmfwczp"))))
3660 (build-system gnu-build-system)
3661 (inputs
3662 (list libpcap ncurses))
3663 (arguments
3664 ;; Fix build failure with GCC 10
3665 '(#:configure-flags '("CFLAGS=-O2 -g -fcommon")))
3666 (synopsis "Monitor network usage")
3667 (description "Iftop does for network usage what @command{top} does
3668for CPU usage. It listens to network traffic on a named interface and
3669displays a table of current bandwidth usage by pairs of hosts.")
3670 (home-page "http://www.ex-parrot.com/~pdw/iftop/")
3671 (license license:gpl2+)))
3672
3673(define-public nettop
3674 (let ((revision "0")
3675 (commit "689d6557196e9fcc92cffba82e00fac0386419e5"))
3676 (package
3677 (name "nettop")
3678 (version (git-version "0.5" revision commit))
3679 (source
3680 (origin
3681 (method git-fetch)
3682 (uri (git-reference
3683 (url "https://github.com/Emanem/nettop")
3684 (commit commit)))
3685 (file-name (git-file-name name version))
3686 (sha256
3687 (base32 "0f6qkj4p4c0gap16ncnhkm802vi6dr7z9rjfz7gzvzhm7jg08aj8"))
3688 (modules '((guix build utils)))
3689 (snippet
3690 #~(begin
3691 (substitute* "Makefile"
3692 (("-lcurses" _) "-lncurses"))))))
3693 (build-system gnu-build-system)
3694 (arguments
3695 (list
3696 #:tests? #f ; no make check
3697 #:make-flags #~(list "release")
3698 #:phases
3699 #~(modify-phases %standard-phases
3700 (delete 'configure) ; no configure script
3701 (replace 'install ; no install target
3702 (lambda _
3703 (let ((out (string-append #$output "/bin")))
3704 (install-file "nettop" out)))))))
3705 (inputs (list libpcap ncurses))
3706 (synopsis "Monitor network usage by process and host")
3707 (description "nettop is a traffic visualizer for the terminal that
3708summarizes network bandwidth by process and remote host.")
3709 (home-page "https://github.com/Emanem/nettop")
3710 (license license:gpl3+))))
3711
3712(define-public munge
3713 (package
3714 (name "munge")
3715 (version "0.5.18")
3716 (source (origin
3717 (method git-fetch)
3718 (uri (git-reference
3719 (url "https://github.com/dun/munge")
3720 (commit (string-append "munge-" version))))
3721 (file-name (git-file-name name version))
3722 (sha256
3723 (base32
3724 "1b7gm680dlvmgvj9vxy7n0cqmnv1rl9n4563vasxdxx54f78j30s"))
3725 (modules '((guix build utils)))
3726 (snippet
3727 ;; Don't insist on write access to /var.
3728 #~(substitute* "src/etc/Makefile.am"
3729 (("\\$\\(MKDIR_P\\) .*(local|run)statedir.*" all)
3730 (string-append ": " all))))))
3731 (inputs
3732 (list openssl libgcrypt))
3733 (native-inputs
3734 (list autoconf
3735 automake
3736 libtool
3737 procps)) ;for tests
3738 (build-system gnu-build-system)
3739 (arguments
3740 (list #:configure-flags
3741 #~(list "--localstatedir=/var"
3742 "--disable-static"
3743 #$@(if (%current-target-system)
3744 ;; Assume yes on pipes when cross compiling.
3745 `("ac_cv_file__dev_spx=yes"
3746 "x_ac_cv_check_fifo_recvfd=yes")
3747 '())
3748
3749 ;; The '.pc' file is not installed when omitting this flag.
3750 (string-append "--with-pkgconfigdir="
3751 #$output "/lib/pkgconfig"))
3752 #:phases
3753 #~(modify-phases %standard-phases
3754 (add-before 'bootstrap 'pre-bootstrap
3755 (lambda _
3756 (for-each patch-shebang (find-files "build-aux"))))
3757 (add-after 'unpack 'skip-failing-tests
3758 (lambda _
3759 ;; Pass '--force' to 'munged'; without it, it fails with "Socket
3760 ;; is inaccessible" due to the build directory not being
3761 ;; world-readable.
3762 (substitute* "tests/sharness.d/03-munged.sh"
3763 (("--group-update-time=-1" all)
3764 (string-append all " --force")))
3765
3766 ;; The tests below invoke 'sudo' or have special expectations
3767 ;; about network interfaces.
3768 (for-each (lambda (test)
3769 (substitute* "tests/Makefile.am"
3770 (((string-append test "\\.t "))
3771 "")))
3772 (list "0100-munged-lock"
3773 "0101-munged-security-socket"
3774 "0102-munged-security-keyfile"
3775 "0103-munged-security-logfile"
3776 "0110-munged-origin-addr")))))))
3777 (home-page "https://dun.github.io/munge/")
3778 (synopsis "Cluster computing authentication service")
3779 (description
3780 "Munge is an authentication service for creating and validating
3781credentials. It allows a process to authenticate the UID and GID of another
3782local or remote process within a group of hosts having common users and
3783groups. These hosts form a security realm that is defined by a shared
3784cryptographic key. Clients within this security realm can create and validate
3785credentials without the use of root privileges, reserved ports, or
3786platform-specific methods.")
3787 (license license:gpl3+)))
3788
3789(define-public audit
3790 (package
3791 (name "audit")
3792 (home-page "https://people.redhat.com/sgrubb/audit/")
3793 (version "3.0.9")
3794 (source (origin
3795 (method url-fetch)
3796 (uri (string-append home-page "audit-" version ".tar.gz"))
3797 (sha256
3798 (base32
3799 "0y5w8pl91xapi49ih1pw7h48lac201cj7fm89hkklmzi9m2715gx"))))
3800 (build-system gnu-build-system)
3801 (arguments
3802 (list #:configure-flags
3803 #~(list #$@(cond ((target-aarch64?)
3804 '("--with-aarch64"))
3805 ((target-arm32?)
3806 '("--with-arm"))
3807 (else
3808 '()))
3809 "--with-python=no"
3810 "--disable-static")))
3811 (inputs
3812 (list openldap gnutls cyrus-sasl))
3813 (synopsis "User-space component to the Linux auditing system")
3814 (description
3815 "This is the user-space component to the Linux auditing system, which
3816allows logging of system calls made by user-land processes. @command{auditd} is
3817responsible for writing audit records to the disk. Viewing the logs is done
3818with the @code{ausearch} or @code{aureport} utilities. Configuring the audit
3819rules is done with the @code{auditctl} utility.")
3820 (license license:gpl2+)))
3821
3822(define-public nmap
3823 (package
3824 (name "nmap")
3825 (version "7.99")
3826 (source (origin
3827 (method url-fetch)
3828 (uri (string-append "https://nmap.org/dist/nmap-" version
3829 ".tar.bz2"))
3830 (sha256
3831 (base32
3832 "1cjibl1qq1ggzz45sib9wph8kgjvcgc2cvx04wxfa26izy928lfz"))
3833 (modules '((guix build utils)))
3834 (snippet
3835 '(begin
3836 (for-each delete-file-recursively
3837 ;; Remove bundled lua, pcap, and pcre libraries.
3838 ;; FIXME: Remove bundled liblinear once packaged.
3839 '("liblua"
3840 "libpcap"
3841 "libpcre"
3842 ;; Remove pre-compiled binares.
3843 "mswin32"))))))
3844 (build-system gnu-build-system)
3845 (outputs '("out" "ndiff")) ; TODO Add zenmap output
3846 (arguments
3847 (list
3848 #:configure-flags #~(list "--without-zenmap")
3849 #:phases
3850 #~(modify-phases %standard-phases
3851 (add-after 'unpack 'patch-Makefile.in
3852 (lambda _
3853 (substitute* "Makefile.in"
3854 (("\\$\\(PYTHON\\) -m build \\$\\(NDIFFDIR\\)/")
3855 "$(PYTHON) -m build --wheel --no-isolation $(NDIFFDIR)/")
3856 (("\\$\\(PYTHON\\) -m pip install \\$\\(NDIFFDIR\\).*")
3857 (string-append "pip"
3858 " --no-cache-dir"
3859 " --no-input"
3860 " install"
3861 " --no-build-isolation"
3862 " --no-deps"
3863 " --prefix"
3864 " $(prefix)"
3865 " $(NDIFFDIR)/\n")))))
3866 (replace 'install
3867 (lambda* (#:key inputs outputs #:allow-other-keys)
3868 (define (make out . args)
3869 (apply invoke "make"
3870 (string-append "PYTHON="
3871 (search-input-file inputs "/bin/python"))
3872 (string-append "CC=" #$(cc-for-target))
3873 (string-append "prefix=" out)
3874 args))
3875 (define (python-path dir)
3876 (string-append dir "/lib/python"
3877 #$(version-major+minor
3878 (package-version python))
3879 "/site-packages"))
3880 (let ((ndiff (assoc-ref outputs "ndiff")))
3881 (for-each mkdir-p (list #$output ndiff))
3882 (make #$output
3883 "install-nmap"
3884 "install-nse"
3885 "install-ncat"
3886 "install-nping")
3887 (make ndiff "install-ndiff")
3888 (wrap-program (string-append ndiff "/bin/ndiff")
3889 `("GUIX_PYTHONPATH" prefix
3890 (,(python-path ndiff)))))))
3891 (add-before 'check 'fix-tests-for-python-3.12
3892 (lambda _
3893 (substitute* "ndiff/ndifftest.py"
3894 (("import imp")
3895 "import importlib.util")
3896 (("ndiff = imp\\.load_source\\(\"ndiff\", \"ndiff\\.py\"\\)")
3897 (string-join
3898 '("spec = \
3899importlib.util.spec_from_file_location(\"ndiff\", \"ndiff.py\")"
3900 "ndiff = importlib.util.module_from_spec(spec)"
3901 "spec.loader.exec_module(ndiff)")
3902 "\n")))))
3903 ;; These are the tests that do not require network access.
3904 (replace 'check
3905 (lambda* (#:key tests? #:allow-other-keys)
3906 (when tests?
3907 (invoke "make"
3908 "check-nse"
3909 "check-ndiff")))))
3910 ;; Nmap can't cope with out-of-source building.
3911 #:out-of-source? #f))
3912 (native-inputs (list python-pypa-build python-setuptools python-wheel))
3913 (inputs
3914 (list bash-minimal ;for wrap-program
3915 libpcap
3916 lua-5.4
3917 openssl
3918 pcre2
3919 zlib ; for NSE compression
3920 perl
3921 python-wrapper)) ; for ndiff
3922 (home-page "https://nmap.org/")
3923 (synopsis "Network discovery and security auditing tool")
3924 (description
3925 "Nmap (\"Network Mapper\") is a network discovery and security auditing
3926tool. It is also useful for tasks such as network inventory, managing service
3927upgrade schedules, and monitoring host or service uptime. It also provides an
3928advanced netcat implementation (ncat), a utility for comparing scan
3929results (ndiff), and a packet generation and response analysis tool (nping).")
3930 ;; See <https://github.com/nmap/nmap/issues/2199#issuecomment-1380592744>.
3931 ;; This package uses nmap's bundled versions of libdnet and liblinear, which
3932 ;; both use a 3-clause BSD license.
3933 (license (list license:nmap license:bsd-3))))
3934
3935(define-public dstat
3936 (package
3937 (name "dstat")
3938 (version "0.7.4")
3939 (source
3940 (origin
3941 (method git-fetch)
3942 (uri (git-reference
3943 (url "https://github.com/dstat-real/dstat")
3944 (commit (string-append "v" version))))
3945 (file-name (git-file-name "dstat" version))
3946 (sha256
3947 (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))
3948 (patches (search-patches "dstat-fix-crash-when-specifying-delay.patch"
3949 "dstat-skip-devices-without-io.patch"))))
3950 (build-system gnu-build-system)
3951 (arguments
3952 (list
3953 #:tests? #f ; no make check
3954 #:make-flags
3955 #~(list (string-append "prefix=" #$output))
3956 #:phases
3957 #~(modify-phases %standard-phases
3958 (add-after 'unpack 'fix-python3-DeprecationWarning
3959 (lambda _
3960 (substitute* "dstat"
3961 (("collections") "collections.abc"))))
3962 (delete 'configure) ; no configure script
3963 (add-after 'install 'wrap
3964 (lambda _
3965 (wrap-program (string-append #$output "/bin/dstat")
3966 `("GUIX_PYTHONPATH" ":" prefix
3967 (,(getenv "GUIX_PYTHONPATH")))))))))
3968 (inputs
3969 (list bash-minimal ;for wrap-program
3970 python-wrapper
3971 python-six))
3972 (synopsis "Versatile resource statistics tool")
3973 (description "Dstat is a versatile replacement for @command{vmstat},
3974@command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
3975some of their limitations and adds some extra features, more counters and
3976flexibility. Dstat is handy for monitoring systems during performance tuning
3977tests, benchmarks or troubleshooting.
3978
3979Dstat allows you to view all of your system resources in real-time, you can,
3980e.g., compare disk utilization in combination with interrupts from your IDE
3981controller, or compare the network bandwidth numbers directly with the disk
3982throughput (in the same interval).")
3983 (home-page "http://dag.wiee.rs/home-made/dstat/")
3984 (license license:gpl2+)))
3985
3986(define-public dool
3987 (package
3988 (name "dool")
3989 (version "1.3.8")
3990 (source
3991 (origin
3992 (method git-fetch)
3993 (uri (git-reference
3994 (url "https://github.com/scottchiefbaker/dool")
3995 (commit (string-append "v" version))))
3996 (file-name (git-file-name name version))
3997 (sha256
3998 (base32 "17fqrd6kvsfzgh5z8vkkk2n2fysj9zdwbdgd85l7n2q0qnzri0b8"))))
3999 (build-system pyproject-build-system)
4000 (arguments
4001 (list
4002 #:phases
4003 #~(modify-phases %standard-phases
4004 (add-after 'unpack 'remove-symlinks-and-snap-packaging
4005 ;; Remove symlinks that make 'ensure-no-mtimes-pre-1980 fail.
4006 (lambda _
4007 (delete-file-recursively "packaging/snap")))
4008 (delete 'build)
4009 (replace 'install
4010 (lambda _
4011 (substitute* "install.py"
4012 (("(bin_dir *= ?).*" _ prefix)
4013 (string-append prefix "\"" #$output "/bin/\"\n"))
4014 (("(plugin_dir *= ?).*" _ prefix)
4015 (string-append prefix "\"" #$output "/share/dool/\"\n"))
4016 (("(manpage_dir *= ?).*" _ prefix)
4017 (string-append prefix "\"" #$output "/share/man/man1/\"\n")))
4018 (invoke "python" "install.py" "--root")))
4019 (replace 'check
4020 (lambda* (#:key tests? #:allow-other-keys)
4021 (when tests?
4022 (invoke "./dool" "--version")
4023 (invoke "./dool" "-ta" "1" "5")))))))
4024 (synopsis "Command line system resource monitoring tool")
4025 (description "Dool is a command line tool to monitor many aspects of your
4026system: CPU, Memory, Network, Load Average, etc. It also includes a robust
4027plug-in architecture to allow monitoring other system metrics.")
4028 (home-page "https://github.com/scottchiefbaker/dool")
4029 (license license:gpl2+)))
4030
4031(define-public thefuck
4032 ;; Latest release, 3.32, is not compatible with Python 3.12.
4033 (let ((revision "0")
4034 (commit "c7e7e1d884d3bb241ea6448f72a989434c2a35ec"))
4035 (package
4036 (name "thefuck")
4037 (version (git-version "3.32" revision commit))
4038 (source
4039 (origin
4040 (method git-fetch)
4041 (uri (git-reference
4042 (url "https://github.com/nvbn/thefuck")
4043 (commit commit)))
4044 (file-name (git-file-name name version))
4045 (sha256
4046 (base32 "1l3i2cpdf3vznpbzqw7b18l23xikqs7andx6yzqvm5415snaqg06"))
4047 (patches (search-patches "thefuck-test-environ.patch"))))
4048 (build-system pyproject-build-system)
4049 (arguments
4050 (list
4051 #:test-flags
4052 #~(list
4053 "--deselect=tests/test_utils.py::TestGetValidHistoryWithoutCurrent"
4054 "--ignore=tests/functional/conftest.py")
4055 #:phases
4056 #~(modify-phases %standard-phases
4057 (add-before 'check 'pre-check
4058 (lambda _
4059 ;; ModuleNotFoundError: No module named 'pytest_docker_pexpect'
4060 (delete-file "tests/functional/conftest.py")
4061 ;; Tests look for installed package
4062 ;; Some tests need write access to $HOME.
4063 (setenv "HOME" "/tmp")
4064 ;; Even with that, this function tries to mkdir /.config.
4065 (substitute* "tests/test_utils.py"
4066 (("settings\\.init\\(\\)") "")))))))
4067 (native-inputs
4068 (list go
4069 python-mock
4070 ;; Uses test markers that are incompatible with pytest 9.
4071 python-pytest-8
4072 python-pytest-mock
4073 python-setuptools))
4074 (inputs
4075 (list python-colorama
4076 python-decorator
4077 python-psutil
4078 python-pyte
4079 python-six))
4080 (home-page "https://github.com/nvbn/thefuck")
4081 (synopsis "Correct mistyped console command")
4082 (description
4083 "The Fuck tries to match a rule for a previous, mistyped command, creates
4084a new command using the matched rule, and runs it.")
4085 (license license:x11))))
4086
4087(define-public di
4088 (package
4089 (name "di")
4090 (version "4.53")
4091 (source
4092 (origin
4093 (method url-fetch)
4094 (uri (string-append "mirror://sourceforge/diskinfo-di/"
4095 "di-" version ".tar.gz"))
4096 (sha256
4097 (base32 "0gp806m7jk2rfymy5r62a2lfd8jq879qy94blrjqvb0xq7pmpp80"))))
4098 (build-system gnu-build-system)
4099 (arguments
4100 (list
4101 #:tests? #f ; obscure test failures
4102 #:phases
4103 #~(modify-phases %standard-phases
4104 (delete 'configure) ; no configure script
4105 (add-before 'build 'override-environment
4106 (lambda _
4107 (setenv "CC" #$(cc-for-target))
4108 (setenv "prefix" #$output))))
4109 #:make-flags
4110 #~(list "--environment-overrides")))
4111 (home-page "https://gentoo.com/di/")
4112 (synopsis "Advanced df like disk information utility")
4113 (description
4114 "@code{di} is a disk information utility, displaying everything that your
4115@code{df} command does and more. It features the ability to display your disk
4116usage in whatever format you prefer. It is designed to be highly portable and
4117produce uniform output across heterogeneous networks.")
4118 (license license:zlib)))
4119
4120(define-public cbatticon
4121 (package
4122 (name "cbatticon")
4123 (version "1.6.13")
4124 (source
4125 (origin
4126 (method git-fetch)
4127 (uri (git-reference
4128 (url "https://github.com/valr/cbatticon")
4129 (commit version)))
4130 (sha256
4131 (base32 "1xs37xrycvk0021r5l3xs4ijgf3lm25d2zhm8dppb5kx66xcj22m"))
4132 (file-name (git-file-name name version))))
4133 (build-system gnu-build-system)
4134 (arguments
4135 `(#:tests? #f ; no tests
4136 #:make-flags
4137 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
4138 ,(string-append "CC=" (cc-for-target)))
4139 #:phases
4140 (modify-phases %standard-phases
4141 (delete 'configure)))) ; no configure script
4142 (inputs
4143 `(("gtk+" ,gtk+)
4144 ("gettext" ,gettext-minimal)
4145 ("libnotify" ,libnotify)))
4146 (native-inputs
4147 (list pkg-config))
4148 (synopsis "Lightweight battery icon for the system tray")
4149 (description "cbatticon is a lightweight battery icon that displays
4150the status of your battery in the system tray.")
4151 (home-page "https://github.com/valr/cbatticon")
4152 (license license:gpl2+)))
4153
4154(define-public pam-hooks
4155 (package
4156 (name "pam-hooks")
4157 (version "0.2.0")
4158 (source
4159 (origin
4160 (method url-fetch)
4161 (uri (string-append "https://upsilon.cc/~zack/hacking/software/"
4162 name "/" name "_" version ".tar.gz"))
4163 (sha256
4164 (base32 "102azxhvs53akkhgg2dkqg8m0jd6804fx8v7gq7pp03qm3m7bhqi"))))
4165 (build-system gnu-build-system)
4166 (arguments
4167 (list #:make-flags #~`("CC=gcc"
4168 ,(string-append "DESTDIR=" #$output))
4169 #:phases #~(modify-phases %standard-phases
4170 (delete 'configure))
4171 ;; There is a test directory, but it's unclear how to run them.
4172 #:tests? #f))
4173 (inputs (list linux-pam))
4174 (home-page "https://upsilon.cc/~zack/hacking/software/pam-hooks/")
4175 (synopsis "Linux-PAM module for login/logout hooks")
4176 (description "@code{pam-hooks} is a tiny PAM module enabling the
4177execution of hook scripts when a PAM session is opened or closed. The
4178typical use case is the need of doing some per-user set-up when a user
4179logs via a PAM-aware login mechanism and/or the need of doing some
4180per-user clean-up when the user logs out.")
4181 (license license:gpl3+)))
4182
4183(define-public pam-krb5
4184 (package
4185 (name "pam-krb5")
4186 (version "4.11")
4187 (source (origin
4188 (method url-fetch)
4189 (uri
4190 (list (string-append
4191 "https://archives.eyrie.org/software/kerberos/"
4192 "pam-krb5-" version ".tar.xz")
4193 (string-append
4194 "https://archives.eyrie.org/software/ARCHIVE/"
4195 "pam-krb5/pam-krb5-" version ".tar.xz")))
4196 (sha256
4197 (base32
4198 "1a16506j35475mps9v3srh54fxcdvypw5gjlmf9vdbwrpykns998"))))
4199 (build-system gnu-build-system)
4200 (arguments
4201 (list
4202 #:phases
4203 #~(modify-phases %standard-phases
4204 (add-before 'configure 'disable-tests
4205 (lambda _
4206 ;; The build container seems to interfere with some tests.
4207 (substitute* "tests/TESTS"
4208 (("module/basic +valgrind\n") ""))
4209 (substitute* "tests/TESTS"
4210 (("module/long +valgrind\n") ""))
4211 (substitute* "tests/TESTS"
4212 (("pam-util/vector +valgrind\n") "")))))))
4213 (inputs
4214 (list linux-pam mit-krb5))
4215 (native-inputs
4216 (list perl perl-test-pod)) ; required for tests
4217 (synopsis "Kerberos PAM module")
4218 (description
4219 "Pam-krb5 is a Kerberos PAM module for either MIT Kerberos or Heimdal.
4220It supports ticket refreshing by screen savers, configurable
4221authorization handling, authentication of non-local accounts for network
4222services, password changing, and password expiration, as well as all the
4223standard expected PAM features. It works correctly with OpenSSH, even
4224with @code{ChallengeResponseAuthentication} and @code{PrivilegeSeparation}
4225enabled, and supports extensive configuration either by PAM options or in
4226krb5.conf or both. PKINIT is supported with recent versions of both MIT
4227Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
4228 (home-page "https://www.eyrie.org/~eagle/software/pam-krb5/")
4229 ;; Dual licenced under a homebrew non-copyleft OR GPL (any version)
4230 ;; However, the tarball does not contain a copy of the GPL, so unless
4231 ;; we put one in, we cannot distribute it under GPL without violating
4232 ;; clause requiring us to give all recipients a copy.
4233 (license license:gpl1+)))
4234
4235(define (sunxi-tools-source version)
4236 (origin
4237 (method git-fetch)
4238 (uri (git-reference
4239 (url "https://github.com/linux-sunxi/sunxi-tools")
4240 (commit (string-append "v" version))))
4241 (sha256
4242 (base32 "04f3jqg8ww4jxsf9c6ddcdgy2xbhkyp0b3l5f1hvvbv94p81rjxd"))
4243 (patches
4244 (search-patches "sunxi-tools-remove-sys-io.patch"))
4245 (modules '((guix build utils)))
4246 (snippet
4247 ;; Remove binaries contained in the tarball which are only for the
4248 ;; target and can be regenerated anyway.
4249 '(begin
4250 (delete-file-recursively "bin")
4251 #t))
4252 (file-name (git-file-name "sunxi-tools" version))))
4253
4254(define sunxi-target-tools
4255 (package
4256 (name "sunxi-target-tools")
4257 (version "1.4.2")
4258 (build-system gnu-build-system)
4259 (source
4260 (sunxi-tools-source version))
4261 (arguments
4262 `(#:system "armhf-linux"
4263 #:tests? #f
4264 #:make-flags (list (string-append "PREFIX="
4265 (assoc-ref %outputs "out"))
4266 (string-append "CROSS_COMPILE=")
4267 "CC=gcc")
4268 #:phases
4269 (modify-phases %standard-phases
4270 (delete 'configure)
4271 (replace 'build
4272 (lambda* (#:key make-flags #:allow-other-keys)
4273 (apply invoke "make" "target-tools" make-flags)))
4274 (replace 'install
4275 (lambda* (#:key make-flags #:allow-other-keys)
4276 (apply invoke "make" "install-target-tools"
4277 make-flags))))))
4278 (home-page "https://github.com/linux-sunxi/sunxi-tools")
4279 (synopsis "Hardware management tools for Allwinner computers")
4280 (description "This package contains tools for Allwinner devices:
4281@enumerate
4282@item @command{sunxi-meminfo}: Prints memory bus settings.
4283@end enumerate")
4284 (license license:gpl2+)))
4285
4286(define-public sunxi-tools
4287 (package
4288 (name "sunxi-tools")
4289 (version "1.4.2")
4290 (source
4291 (sunxi-tools-source version))
4292 (native-inputs
4293 (list sunxi-target-tools pkg-config))
4294 (inputs
4295 (list libusb))
4296 (build-system gnu-build-system)
4297 (arguments
4298 `(#:tests? #f ; no tests exist
4299 #:make-flags (list (string-append "PREFIX="
4300 (assoc-ref %outputs "out"))
4301 (string-append "CROSS_COMPILE=disabled")
4302 "CC=gcc")
4303 #:phases
4304 (modify-phases %standard-phases
4305 (delete 'configure)
4306 (replace 'build
4307 (lambda* (#:key make-flags #:allow-other-keys)
4308 (apply invoke "make" "tools" "misc" make-flags)))
4309 (replace 'install
4310 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4311 ;; Those tools have been built for armhf but are part of the
4312 ;; installation in the upstream package. So do the same
4313 ;; here.
4314 (copy-recursively (assoc-ref inputs "sunxi-target-tools")
4315 (assoc-ref outputs "out"))
4316 (apply invoke "make" "install-tools" "install-misc"
4317 make-flags))))))
4318 (home-page "https://github.com/linux-sunxi/sunxi-tools")
4319 (synopsis "Hardware management tools for Allwinner computers")
4320 (description "This package contains tools for Allwinner devices:
4321@enumerate
4322@item @command{sunxi-fexc}, @command{bin2fex}, @command{fex2bin}: Compile
4323a textual description of a board (.fex) to a binary representation (.bin).
4324@item @command{sunxi-fel}: Puts an Allwinner device into FEL mode which
4325makes it register as a special USB device (rather than USB host).
4326You can then connect it to another computer and flash it from there.
4327@item @command{sunxi-nand-part}: Partitions NAND flash.
4328@item @command{sunxi-bootinfo}: Reads out boot0 and boot1 (Allwinner
4329bootloader) parameters.
4330@item @command{sunxi-pio}: Sets GPIO parameters and oscillates a GPIO
4331in order to be able to find it.
4332@item @command{sunxi-meminfo}: Prints memory bus settings.
4333@item @command{sunxi-nand-image-builder}: Prepares raw NAND images.
4334@end enumerate")
4335 (license license:gpl2+)))
4336
4337(define-public sedsed
4338 (package
4339 (name "sedsed")
4340 (version "2.0.0")
4341 (source
4342 (origin
4343 (method git-fetch)
4344 (uri (git-reference
4345 (url "https://github.com/aureliojargas/sedsed")
4346 (commit (string-append "v" version))))
4347 (file-name (git-file-name name version))
4348 (sha256
4349 (base32 "0sy26d60j89fw4z2bfvc7zblb7r1ras5q7f06gaqfg2058z5wj8m"))))
4350 (build-system pyproject-build-system)
4351 (arguments
4352 (list
4353 #:tests? #f ; XXX: test suit requires git set up, run by "./test/run"
4354 #:phases
4355 #~(modify-phases %standard-phases
4356 (add-after 'unpack 'patch-sed-in
4357 (lambda _
4358 (substitute* "sedsed.py"
4359 (("sedbin = 'sed'")
4360 (string-append "sedbin = '" (which "sed") "'")))))
4361 (delete 'build)
4362 (replace 'install
4363 (lambda _
4364 (let ((bin (string-append #$output "/bin")))
4365 ;; Just one file to copy around
4366 (install-file "sedsed.py" bin))))
4367 (add-after 'wrap 'symlink
4368 ;; Create 'sedsed' symlink to "sedsed.py".
4369 (lambda _
4370 (let* ((bin (string-append #$output "/bin"))
4371 (sed (string-append bin "/sedsed"))
4372 (sedpy (string-append bin "/sedsed.py")))
4373 (symlink sedpy sed)))))))
4374 (native-inputs
4375 (list python-setuptools
4376 python-wheel))
4377 (home-page "https://aurelio.net/projects/sedsed")
4378 (synopsis "Sed sed scripts")
4379 (description
4380 "@code{sedsed} can debug, indent, tokenize and HTMLize your @command{sed}
4381script.
4382
4383In debug mode, it reads your script and adds extra commands to it. When
4384executed you can see the data flow between the commands, revealing all the
4385magic sed performs on its internal buffers.
4386
4387In indent mode, your script is reformatted with standard spacing.
4388
4389In tokenize mode, you can see the elements of every command you use.
4390
4391In HTMLize mode, your script is converted to a beautiful colored HTML file,
4392with all the commands and parameters identified for your viewing pleasure.
4393
4394With sedsed you can master any sed script. No more secrets, no more hidden
4395buffers.")
4396 (license license:expat)))
4397
4398(define-public igt-gpu-tools
4399 (package
4400 (name "igt-gpu-tools")
4401 (version "2.4")
4402 (source
4403 (origin
4404 (method git-fetch)
4405 (uri (git-reference
4406 (url "https://gitlab.freedesktop.org/drm/igt-gpu-tools.git")
4407 (commit (string-append "v" version))))
4408 (file-name (git-file-name name version))
4409 (sha256
4410 (base32 "0ijvfa5wamihzbl8l29sc27ml0kmgzlld83jm5mln6bb4bvny4gs"))))
4411 (build-system meson-build-system)
4412 (arguments
4413 `(#:tests? #f ; many of the tests try to load kernel modules
4414 #:phases
4415 (modify-phases %standard-phases
4416 (add-after 'unpack 'find-rst2man.py
4417 (lambda _
4418 (substitute* "man/meson.build"
4419 (("'rst2man'") "'rst2man.py'")))))))
4420 (inputs
4421 (list cairo
4422 elfutils ; libdw
4423 eudev
4424 kmod
4425 libdrm
4426 libpciaccess
4427 libunwind
4428 pciutils
4429 procps
4430 python))
4431 (native-inputs
4432 (list bison flex pkg-config python-docutils))
4433 (home-page "https://gitlab.freedesktop.org/drm/igt-gpu-tools")
4434 (synopsis "Tools for development and testing of the Intel DRM driver")
4435 (description "IGT GPU Tools is a collection of tools for development and
4436testing of the Intel DRM driver. There are many macro-level test suites that
4437get used against the driver, including xtest, rendercheck, piglit, and
4438oglconform, but failures from those can be difficult to track down to kernel
4439changes, and many require complicated build procedures or specific testing
4440environments to get useful results. Therefore, IGT GPU Tools includes
4441low-level tools and tests specifically for development and testing of the
4442Intel DRM Driver.")
4443 (supported-systems '("i686-linux" "x86_64-linux"))
4444 (license license:expat)))
4445
4446(define-public neofetch
4447 (package
4448 (name "neofetch")
4449 (version "7.1.0")
4450 (source (origin
4451 (method git-fetch)
4452 (uri (git-reference
4453 (url "https://github.com/dylanaraps/neofetch")
4454 (commit version)))
4455 (file-name (git-file-name name version))
4456 (sha256
4457 (base32
4458 "0i7wpisipwzk0j62pzaigbiq42y1mn4sbraz4my2jlz6ahwf00kv"))))
4459 (build-system gnu-build-system)
4460 (arguments
4461 (list #:tests? #f ; there are no tests
4462 #:make-flags
4463 #~(list (string-append "PREFIX=" #$output))
4464 #:phases
4465 #~(modify-phases %standard-phases
4466 (delete 'configure)))) ; no configure script
4467 (home-page "https://github.com/dylanaraps/neofetch")
4468 (synopsis "System information script")
4469 (description "Neofetch is a command-line system information tool written in
4470Bash. Neofetch displays information about your system next to an image, your OS
4471logo, or any ASCII file of your choice. The main purpose of Neofetch is to be
4472used in screenshots to show other users what operating system or distribution
4473you are running, what theme or icon set you are using, etc.")
4474 (license license:expat)))
4475
4476(define-public hyfetch
4477 (package
4478 (name "hyfetch")
4479 (version "2.0.5")
4480 (source
4481 (origin
4482 (method git-fetch)
4483 (uri (git-reference
4484 (url "https://github.com/hykilpikonna/hyfetch")
4485 (commit version)))
4486 (file-name (git-file-name name version))
4487 (sha256
4488 (base32 "1xb0m7mna6mm3gc823c40rfdhnw39afdr3g7kb4cqrc21s7fdd5y"))))
4489 (build-system pyproject-build-system)
4490 (native-inputs
4491 (list python-hatchling
4492 python-pytest))
4493 (inputs
4494 (list python-typing-extensions))
4495 (home-page "https://github.com/hykilpikonna/HyFetch")
4496 (synopsis "@code{neofetch} with pride flags <3")
4497 (description "HyFetch is a command-line system information tool fork of
4498@code{neofetch}. HyFetch displays information about your system next to your
4499OS logo in ASCII representation. The ASCII representation is then colored in
4500the pattern of the pride flag of your choice. The main purpose of HyFetch is to
4501be used in screenshots to show other users what operating system or distribution
4502you are running, what theme or icon set you are using, etc.")
4503 (license license:expat)))
4504
4505(define-public uwufetch
4506 (package
4507 (name "uwufetch")
4508 (version "2.1")
4509 (source (origin
4510 (method git-fetch)
4511 (uri (git-reference
4512 (url "https://github.com/TheDarkBug/uwufetch")
4513 (commit version)))
4514 (file-name (git-file-name name version))
4515 (sha256
4516 (base32
4517 "182jwkm4vacz2bhyn7v4jl9bxs7md51az958r0qfp9ky71m2q3vh"))))
4518 (build-system gnu-build-system)
4519 (arguments
4520 (list
4521 #:tests? #f ;no tests
4522 #:make-flags
4523 #~(list (string-append "DESTDIR=" #$output)
4524 (string-append "ETC_DIR=" #$output "/etc")
4525 (string-append "CC=" #$(cc-for-target)))
4526 #:phases
4527 #~(modify-phases %standard-phases
4528 (delete 'configure)
4529 (add-before 'build 'patch-source-paths
4530 (lambda* (#:key inputs #:allow-other-keys)
4531 (let ((grep (search-input-file inputs "/bin/grep"))
4532 (awk (search-input-file inputs "/bin/awk")))
4533 (substitute* "fetch.c"
4534 (("grep") grep)
4535 (("awk") awk))
4536 (substitute* "uwufetch.c"
4537 (("(/usr(/local)?)(.*;)" all _ _ rest)
4538 (string-append #$output rest))))))
4539 ;; TODO this will be fixed in the next release of uwufetch
4540 (add-before 'install 'make-include-dir
4541 (lambda _
4542 (mkdir-p (string-append #$output "/include")))))))
4543 (inputs (list lshw
4544 gawk
4545 grep
4546 ;; viu XXX not yet packaged in Guix
4547 xwininfo))
4548 (home-page "https://github.com/TheDarkBug/uwufetch")
4549 (synopsis "Meme system info tool based on Nyan/UwU trend")
4550 (description
4551 "UwUFetch is a system information tool in the lineage of NeoFetch,
4552PFetch, HyFetch, and the like. It prints ASCII art of your system's logo as
4553well as a summary of system information. UwUFetch's unique contribution is the
4554uwu-ification of various words used in the description. For example, Guix
4555becomes gUwUix.")
4556 (license license:gpl3+)))
4557
4558(define-public screenfetch
4559 (package
4560 (name "screenfetch")
4561 (version "3.9.9")
4562 (source (origin
4563 (method git-fetch)
4564 (uri (git-reference
4565 (url "https://github.com/KittyKatt/screenFetch")
4566 (commit (string-append "v" version))))
4567 (file-name (git-file-name name version))
4568 (sha256
4569 (base32
4570 "0fly580235wmrqxgpf2mlblj587q05mikpsgaw1qq7z1nl44rmjh"))))
4571 (build-system trivial-build-system)
4572 (arguments
4573 `(#:modules ((guix build utils))
4574 #:builder
4575 (begin
4576 (use-modules (guix build utils))
4577 (let ((source (assoc-ref %build-inputs "source"))
4578 (out (assoc-ref %outputs "out")))
4579 (mkdir-p (string-append out "/bin/"))
4580 (copy-file (string-append source "/screenfetch-dev")
4581 (string-append out "/bin/screenfetch"))
4582 (install-file (string-append source "/screenfetch.1")
4583 (string-append out "/man/man1/"))
4584 (install-file (string-append source "/COPYING")
4585 (string-append out "/share/doc/" ,name "-" ,version))
4586 (substitute* (string-append out "/bin/screenfetch")
4587 (("/usr/bin/env bash")
4588 (search-input-file %build-inputs "/bin/bash")))
4589 (wrap-program
4590 (string-append out "/bin/screenfetch")
4591 `("PATH" ":" prefix
4592 (,(string-append (assoc-ref %build-inputs "bc") "/bin:"
4593 (assoc-ref %build-inputs "scrot") "/bin:"
4594 (assoc-ref %build-inputs "xdpyinfo") "/bin"
4595 (assoc-ref %build-inputs "xprop") "/bin"))))
4596 (substitute* (string-append out "/bin/screenfetch")
4597 (("#!#f")
4598 (string-append "#!"
4599 (search-input-file %build-inputs
4600 "/bin/bash"))))))))
4601 (inputs
4602 (list bash bc scrot xdpyinfo xprop))
4603 (home-page "https://github.com/KittyKatt/screenFetch")
4604 (synopsis "System information script")
4605 (description "Bash screenshot information tool which can be used to
4606generate those nifty terminal theme information and ASCII distribution logos in
4607everyone's screenshots nowadays.")
4608 (license license:gpl3)))
4609
4610(define-public ufetch
4611 (package
4612 (name "ufetch")
4613 (version "0.4")
4614 (source (origin
4615 (method git-fetch)
4616 (uri (git-reference
4617 (url "https://gitlab.com/jschx/ufetch.git")
4618 (commit (string-append "v" version))))
4619 (file-name (git-file-name name version))
4620 (sha256
4621 (base32
4622 "0858hq9lannyh4ipvrlk3syc576r2x6f6hr08n0hfsn3x3ndzjl9"))))
4623 (build-system trivial-build-system)
4624 (inputs
4625 `(("bash" ,bash)
4626 ("tput" ,ncurses)))
4627 (arguments
4628 `(#:modules ((guix build utils))
4629 #:builder
4630 (begin
4631 (use-modules (guix build utils))
4632 (let* ((source (assoc-ref %build-inputs "source"))
4633 (output (assoc-ref %outputs "out"))
4634 (bindir (string-append output "/bin"))
4635 (docdir (string-append output "/share/doc/ufetch-" ,version))
4636 (tput (search-input-file %build-inputs "/bin/tput")))
4637 (install-file (string-append source "/LICENSE") docdir)
4638 (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") "/bin"))
4639 (mkdir-p bindir)
4640 (for-each (lambda (src)
4641 (let ((dst (string-append bindir "/" (basename src))))
4642 (copy-file src dst)
4643 (patch-shebang dst)
4644 (substitute* dst (("tput") tput))))
4645 (find-files source "ufetch-[[:alpha:]]*$"))
4646 ;; Note: the `ufetch` we create below will only work if run under
4647 ;; the Guix System. I.e. a user trying to run `ufetch` on a
4648 ;; foreign distro will not get great results. The `screenfetch`
4649 ;; program does actual runtime detection of the operating system,
4650 ;; and would be a better choice in such a situation.
4651 (symlink "ufetch-guix" (string-append bindir "/ufetch"))))))
4652 (home-page "https://gitlab.com/jschx/ufetch")
4653 (synopsis "Tiny system info")
4654 (description "This package provides a tiny system info utility.")
4655 (license license:expat)))
4656
4657(define-public pfetch
4658 (let ((commit "a906ff89680c78cec9785f3ff49ca8b272a0f96b")
4659 (revision "1"))
4660 (package
4661 (name "pfetch")
4662 (version (git-version "0.7.0" revision commit))
4663 (source (origin
4664 (method git-fetch)
4665 (uri (git-reference
4666 (url "https://github.com/dylanaraps/pfetch")
4667 (commit commit)))
4668 (file-name (git-file-name name version))
4669 (sha256
4670 (base32
4671 "1yhf8mxjn58gjfdii3bpn8522gfaicd8jxjxvmwi2jz7fgvp0zpn"))))
4672 (build-system trivial-build-system)
4673 (inputs (list bash))
4674 (arguments
4675 `(#:modules ((guix build utils))
4676 #:builder
4677 (begin
4678 (use-modules (guix build utils))
4679 (let* ((source (lambda (f)
4680 (string-append (assoc-ref %build-inputs "source") "/" f)))
4681 (output (assoc-ref %outputs "out"))
4682 (docdir (string-append output "/share/doc/pfetch-" ,version)))
4683 (install-file (source "LICENSE.md") docdir)
4684 (install-file (source "README.md") docdir)
4685 (install-file (source "pfetch") (string-append output "/bin"))
4686 (patch-shebang
4687 (string-append output "/bin/pfetch")
4688 (list (string-append (assoc-ref %build-inputs "bash") "/bin")))))))
4689 (home-page "https://github.com/dylanaraps/pfetch")
4690 (synopsis "System information tool")
4691 (description "This package provides a simple, configurable system
4692information tool.")
4693 (license license:expat))))
4694
4695(define-public fastfetch-minimal
4696 (package
4697 (name "fastfetch-minimal")
4698 (version "2.66.0")
4699 (source
4700 (origin
4701 (method git-fetch)
4702 (uri (git-reference
4703 (url "https://github.com/fastfetch-cli/fastfetch")
4704 (commit version)))
4705 (file-name (git-file-name name version))
4706 (sha256
4707 (base32 "19a5dmn13pnjygwqhj4frd8q0r9k2yb2j63s331wrhijy4837nxn"))
4708 (modules '((guix build utils)))
4709 (snippet #~(delete-file-recursively "src/3rdparty"))))
4710 (build-system cmake-build-system)
4711 (arguments
4712 (list
4713 #:configure-flags #~(list "-DENABLE_SYSTEM_YYJSON=ON"
4714 "-DENABLE_WCWIDTH=OFF"
4715 "-DBUILD_FLASHFETCH=OFF"
4716 "-DBUILD_TESTS=ON"
4717 "-DINSTALL_LICENSE=OFF")))
4718 (inputs (list yyjson))
4719 (native-inputs (list pkg-config python-minimal))
4720 (home-page "https://github.com/fastfetch-cli/fastfetch")
4721 (synopsis "Display system information in a stylized manner")
4722 (description
4723 "Fastfetch is a tool for fetching system information and displaying it in
4724a stylized way. Fastfetch displays this information next to a logo of the
4725system distribution, akin to many similar tools.")
4726 (license license:expat)))
4727
4728(define-public fastfetch
4729 (package
4730 (inherit fastfetch-minimal)
4731 (name "fastfetch")
4732 (arguments
4733 (substitute-keyword-arguments arguments
4734 ((#:configure-flags flags #~'())
4735 #~(append #$flags
4736 (list "-DBINARY_LINK_TYPE=dynamic"
4737 "-DENABLE_DIRECTX_HEADERS=OFF"
4738 (string-append "-DCUSTOM_PCI_IDS_PATH="
4739 #$(this-package-input "hwdata")
4740 "/share/hwdata/pci.ids")
4741 (string-append "-DCUSTOM_AMDGPU_IDS_PATH="
4742 #$(this-package-input "libdrm")
4743 "/share/libdrm/amdgpu.ids"))))))
4744 (inputs
4745 (modify-inputs inputs
4746 (append dbus
4747 glib
4748 hwdata
4749 imagemagick
4750 libdrm
4751 libxcb
4752 mesa
4753 wayland
4754 zlib ;for imagemagick and an #ifdef
4755 zfs)))))
4756
4757(define-public nnn
4758 (package
4759 (name "nnn")
4760 (version "5.2")
4761 (source
4762 (origin
4763 (method url-fetch)
4764 (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
4765 version "/nnn-v" version ".tar.gz"))
4766 (sha256
4767 (base32 "035xn433mqx6wzzwdavv40dk09m4k4m41gzwwd25glbl1widscfb"))))
4768 (build-system gnu-build-system)
4769 (inputs
4770 (list ncurses readline))
4771 (native-inputs
4772 (list pkg-config))
4773 (arguments
4774 (list #:tests? #f ; no tests
4775 #:make-flags
4776 #~(list
4777 (string-append "PREFIX=" #$output)
4778 (string-append "CC=" #$(cc-for-target))
4779 (string-append "PKG_CONFIG=" #$(pkg-config-for-target)))
4780 #:phases
4781 #~(modify-phases %standard-phases
4782 (delete 'configure)))) ; no configure script
4783 (home-page "https://github.com/jarun/nnn")
4784 (synopsis "Terminal file browser")
4785 (description
4786 "@command{nnn} is a fork of @command{noice}, a fast and minimal text
4787terminal file browser with keyboard shortcuts for navigation, opening files and
4788running tasks. There is no configuration file and MIME associations are
4789hard-coded.")
4790 (license license:bsd-2)))
4791
4792(define-public thermald
4793 (package
4794 (name "thermald")
4795 (version "2.5.12")
4796 (source
4797 (origin
4798 (method git-fetch)
4799 (uri (git-reference
4800 (url "https://github.com/intel/thermal_daemon")
4801 (commit (string-append "v" version))))
4802 (file-name (git-file-name name version))
4803 (sha256
4804 (base32 "1vwnigyygzch2pxszqbhs4vpjkzpc5pf0k7p5fxmsanmf5mp76m6"))))
4805 (build-system gnu-build-system)
4806 (arguments
4807 (list
4808 #:configure-flags
4809 #~(list (string-append "--with-dbus-sys-dir="
4810 #$output "/etc/dbus-1/system.d")
4811 "--localstatedir=/var"
4812 "--disable-werror")
4813 #:make-flags
4814 #~(list "V=1") ; log build commands
4815 #:phases
4816 #~(modify-phases %standard-phases
4817 (add-before 'bootstrap 'no-early-./configure
4818 (lambda _
4819 (setenv "NO_CONFIGURE" "yet"))))))
4820 (native-inputs
4821 (list autoconf
4822 autoconf-archive
4823 automake
4824 `(,glib "bin") ; for glib-genmarshal, etc.
4825 gtk-doc/stable
4826 pkg-config))
4827 (inputs
4828 (list dbus-glib libevdev libxml2 upower xz))
4829 (home-page "https://github.com/intel/thermal_daemon")
4830 (synopsis "CPU scaling for thermal management")
4831 (description "The Linux Thermal Daemon helps monitor and control temperature
4832on systems running the Linux kernel.")
4833 ;; arm and aarch64 don't have cpuid.h.
4834 (supported-systems '("i686-linux" "x86_64-linux"))
4835 (license license:gpl2)))
4836
4837(define-public tcptrack
4838 (package
4839 (name "tcptrack")
4840 (version "1.4.3")
4841 (source (origin
4842 (method git-fetch)
4843 (uri (git-reference
4844 (url "https://github.com/bchretien/tcptrack")
4845 (commit (string-append "v" version))))
4846 (file-name (git-file-name name version))
4847 (sha256
4848 (base32
4849 "08lh3l67wn4kq9q0nfspc7rj0jvp9dzwjgxpvqliwcif8cy5mi45"))))
4850 (build-system gnu-build-system)
4851 (inputs (list libpcap ncurses))
4852 (synopsis "TCP connections sniffer")
4853 (description
4854 "Tcptrack is a sniffer which displays information about TCP connections
4855it sees on a network interface. This is a fork of Steve Benson’s tcptrack.")
4856 (home-page "https://github.com/bchretien/tcptrack")
4857 (license license:lgpl2.1+)))
4858
4859(define-public masscan
4860 (package
4861 (name "masscan")
4862 (version "1.3.2")
4863 (source
4864 (origin
4865 (method git-fetch)
4866 (uri (git-reference
4867 (url "https://github.com/robertdavidgraham/masscan")
4868 (commit version)))
4869 (file-name (git-file-name name version))
4870 (sha256
4871 (base32 "1y0ka1y01afmzcad8rw4jgkmlc17yccc30wk8xldj00hdbz84wcs"))))
4872 (build-system gnu-build-system)
4873 (inputs
4874 (list libpcap))
4875 (arguments
4876 (list #:test-target "regress"
4877 #:make-flags
4878 #~(list (string-append "CC=" #$(cc-for-target))
4879 (string-append "PREFIX=" #$output))
4880 #:phases
4881 #~(modify-phases %standard-phases
4882 (delete 'configure) ; no ./configure script
4883 (add-after 'unpack 'patch-path
4884 (lambda* (#:key inputs #:allow-other-keys)
4885 (let ((pcap (assoc-ref inputs "libpcap")))
4886 (substitute* "src/stub-pcap.c"
4887 (("libpcap.so")
4888 (string-append pcap "/lib/libpcap.so")))))))))
4889 (synopsis "TCP port scanner")
4890 (description "MASSCAN is an asynchronous TCP port scanner. It can detect
4891open ports, and also complete the TCP connection and interact with the remote
4892application, collecting the information received.")
4893 (home-page "https://github.com/robertdavidgraham/masscan")
4894 ;; 'src/siphash24.c' is the SipHash reference implementation, which
4895 ;; bears a CC0 Public Domain Dedication.
4896 (license license:agpl3+)))
4897
4898(define-public launchmon
4899 (package
4900 (name "launchmon")
4901 (version "1.0.2")
4902 (source (origin
4903 (method url-fetch)
4904 (uri (string-append
4905 "https://github.com/LLNL/LaunchMON/releases/download/v"
4906 version "/launchmon-v" version ".tar.gz"))
4907 (sha256
4908 (base32
4909 "0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))
4910 (modules '((guix build utils)))
4911 (snippet
4912 '(begin
4913 ;; Fix build failure with GCC 7 due to a conversion error.
4914 ;; Remove for versions > 1.0.2.
4915 (substitute* "launchmon/src/linux/lmon_api/lmon_coloc_spawner.cxx"
4916 ((" lmonpl = '\\\\0'")
4917 " *lmonpl = '\\0'"))
4918 #t))))
4919 (build-system gnu-build-system)
4920 (arguments
4921 ;; GCC 11 defaults to c++17 but this package needs something older.
4922 (list #:configure-flags #~'("CXXFLAGS=-std=c++14 -O2 -g")))
4923 (inputs
4924 (list openmpi
4925 munge
4926 boost
4927 libelf
4928 libgcrypt
4929 libgpg-error))
4930 (synopsis "Infrastructure for large-scale tool daemon launching")
4931 (description
4932 "LaunchMON is a software infrastructure that enables HPC run-time
4933tools to co-locate tool daemons with a parallel job. Its API allows a
4934tool to identify all the remote processes of a job and to scalably
4935launch daemons into the relevant nodes.")
4936 (home-page "https://github.com/LLNL/LaunchMON")
4937 (supported-systems '("i686-linux" "x86_64-linux"))
4938 (license license:lgpl2.1)))
4939
4940(define-public spindle
4941 (package
4942 (name "spindle")
4943 (version "0.13")
4944 (source (origin
4945 ;; We use git checkout to avoid github auto-generated tarballs
4946 (method git-fetch)
4947 (uri (git-reference
4948 (url "https://github.com/hpc/Spindle")
4949 (commit (string-append "v" version))))
4950 (file-name (git-file-name name version))
4951 (sha256
4952 (base32
4953 "1z594nhash1him9v00qmyqv9jvikzrs4wxqy1cvnfwqwnrrkp707"))))
4954 (build-system gnu-build-system)
4955 (arguments '(#:configure-flags '("--enable-sec-launchmon"
4956 "--enable-sec-munge"
4957 "--enable-sec-none"
4958 ;; Fails to build as c++17.
4959 "CXXFLAGS=-std=c++14 -O2 -g")))
4960 (inputs
4961 (list openmpi munge launchmon libgcrypt zlib))
4962 (synopsis "Scalable library loading in HPC environments")
4963 (description
4964 "Spindle is a tool for improving the performance of dynamic library and
4965Python loading in HPC environments.")
4966 (home-page "https://github.com/hpc/Spindle")
4967 ;; This package supports x86_64 and PowerPC64
4968 (supported-systems '("x86_64-linux"))
4969 (license license:lgpl2.1)))
4970
4971(define-public inxi-minimal
4972 (let ((real-name "inxi"))
4973 (package
4974 (name "inxi-minimal")
4975 (version "3.3.40-1")
4976 (source
4977 (origin
4978 (method git-fetch)
4979 (uri (git-reference
4980 (url "https://codeberg.org/smxi/inxi")
4981 (commit version)))
4982 (file-name (git-file-name real-name version))
4983 (sha256
4984 (base32 "0ivj0dcx7d2hmmkhyql156sb08385rzw640z9kyq4cv1n8ndz58s"))))
4985 (build-system trivial-build-system)
4986 (inputs
4987 (list bash-minimal
4988 perl
4989 procps))
4990 (native-inputs
4991 (list gzip))
4992 (arguments
4993 `(#:modules ((guix build utils))
4994 #:builder
4995 (begin
4996 (use-modules (guix build utils)
4997 (ice-9 match)
4998 (srfi srfi-26))
4999 (setenv "PATH" (string-join
5000 (map (lambda (file)
5001 (dirname (search-input-file %build-inputs
5002 file)))
5003 (list "bin/bash"
5004 "bin/gzip"
5005 "bin/perl"))
5006 ":"))
5007 (copy-recursively (assoc-ref %build-inputs "source")
5008 ,(string-append real-name "-" version))
5009 (with-directory-excursion ,(string-append real-name "-" version)
5010 (patch-shebang "inxi" (list (dirname (search-input-file
5011 %build-inputs "bin/perl"))))
5012 (let ((bin (string-append %output "/bin")))
5013 (install-file "inxi" bin)
5014 (wrap-program (string-append bin "/inxi")
5015 `("PATH" ":" =
5016 ("$PATH"
5017 ,@(map (lambda (input)
5018 (match input
5019 ((name . store)
5020 (let ((store-append
5021 (cut string-append store <>)))
5022 (cond
5023 ((member name '("util-linux"))
5024 (string-append (store-append "/bin") ":"
5025 (store-append "/sbin")))
5026 ((member name '("dmidecode" "iproute2" "lvm2"
5027 "mdadm"))
5028 (store-append "/sbin"))
5029 (else (store-append "/bin")))))))
5030 %build-inputs)))
5031 `("PERL5LIB" ":" =
5032 ,(delete
5033 ""
5034 (map (match-lambda
5035 (((? (cut string-prefix? "perl-" <>) name) . dir)
5036 (string-append dir "/lib/perl5/site_perl"))
5037 (_ ""))
5038 %build-inputs)))))
5039 (invoke "gzip" "-n" "inxi.1")
5040 (install-file "inxi.1.gz"
5041 (string-append %output "/share/man/man1"))))))
5042 (home-page "https://smxi.org/docs/inxi.htm")
5043 (synopsis "Full-featured system information script")
5044 (description "Inxi is a system information script that can display
5045various things about your hardware and software to users in an IRC chatroom or
5046support forum. It runs with the @code{/exec} command in most IRC clients.")
5047 (license license:gpl3+))))
5048
5049(define-public inxi
5050 (package
5051 (inherit inxi-minimal)
5052 (name "inxi")
5053 (inputs
5054 `(("dmidecode" ,dmidecode)
5055 ("eudev" ,eudev)
5056 ("file" ,file)
5057 ("bind:utils" ,isc-bind "utils") ; dig
5058 ("gzip" ,gzip)
5059 ("iproute2" ,iproute) ; ip
5060 ("kmod" ,kmod) ; modinfo
5061 ("lm-sensors" ,lm-sensors)
5062 ("mesa-utils" ,mesa-utils)
5063 ("pciutils" ,pciutils)
5064 ("tar" ,tar)
5065 ("tree" ,tree)
5066 ("util-linux" ,util-linux) ; lsblk
5067 ("usbutils" ,usbutils) ; lsusb
5068 ("wmctrl" ,wmctrl)
5069 ("xdpyinfo" ,xdpyinfo)
5070 ("xprop" ,xprop)
5071 ("xrandr" ,xrandr)
5072 ("coreutils" ,coreutils) ; uptime
5073 ("inetutils" ,inetutils) ; ifconfig
5074 ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
5075 ("perl-http-tiny" ,perl-http-tiny)
5076 ("perl-io-socket-ssl" ,perl-io-socket-ssl)
5077 ("perl-json-xs" ,perl-json-xs)
5078 ("perl-time-hires" ,perl-time-hires)
5079 ("lvm2" ,lvm2) ; lvs
5080 ("mdadm" ,mdadm)
5081 ("wayland-utils" ,wayland-utils)
5082 ;; TODO: Add more inputs:
5083 ;; ipmi-sensors
5084 ;; hddtemp
5085 ;; perl-xml-dumper
5086 ;; ipmitool
5087 ;; wlr-randr
5088 ;; vulkan-tools
5089 ,@(package-inputs inxi-minimal)))))
5090
5091(define-public pscircle
5092 (package
5093 (name "pscircle")
5094 (version "1.4.0")
5095 (source
5096 (origin
5097 (method git-fetch)
5098 (uri (git-reference
5099 (url "https://gitlab.com/mildlyparallel/pscircle")
5100 (commit (string-append "v" version))))
5101 (file-name (git-file-name name version))
5102 (sha256
5103 (base32 "0vdllrv2hxw71zhi1xrchkqvq0si4xas1qcsbqmgld8wvc2d19kf"))))
5104 (build-system meson-build-system)
5105 (native-inputs
5106 (list pkg-config))
5107 (inputs
5108 (list cairo libpng libx11))
5109 (home-page "https://gitlab.com/mildlyparallel/pscircle")
5110 (synopsis "Visualize Linux processes in a form of radial tree")
5111 (description
5112 "@code{pscircle} visualizes Linux processes in the form of a radial tree.")
5113 (license license:gpl2+)))
5114
5115(define-public python-pyudev
5116 (package
5117 (name "python-pyudev")
5118 (version "0.24.4")
5119 (source
5120 (origin
5121 (method git-fetch)
5122 (uri (git-reference
5123 (url "https://github.com/pyudev/pyudev")
5124 (commit (string-append "v" version))))
5125 (file-name (git-file-name name version))
5126 (sha256
5127 (base32
5128 "1m7xrsazbij5dcmnirn9hq6cwrfmzam5mr3kmvvcgnh24nhm401x"))))
5129 (build-system pyproject-build-system)
5130 (arguments
5131 (list
5132 ;; tests: 46 passed, 36 skipped, 79 deselected, 2 warnings
5133 #:test-flags
5134 ;; These tests actually try to read /sys/devices:
5135 #~(list "-k" (string-join
5136 (list "not test_action"
5137 "test_action_mock"
5138 "test_ancestors"
5139 "test_anything"
5140 "test_asbool"
5141 "test_asint"
5142 "test_asstring"
5143 "test_attributes"
5144 "test_contains_mock"
5145 "test_deprecated_handler"
5146 "test_device_node"
5147 "test_device_number"
5148 "test_device_ordering"
5149 "test_device_path"
5150 "test_device_sys_name"
5151 "test_driver"
5152 "test_equality"
5153 "test_fake"
5154 "test_fake_monitor"
5155 "test_find_parent_no_devtype_mock"
5156 "test_find_parent_with_devtype_mock"
5157 "test_from_device_file"
5158 "test_from_device_number"
5159 "test_from_device_number_wrong_type"
5160 "test_from_name"
5161 "test_from_name_no_device_in_existing_subsystem"
5162 "test_from_path"
5163 "test_from_path_strips_leading_slash"
5164 "test_from_sys_path"
5165 "test_getitem"
5166 "test_getitem"
5167 "test_getitem_nonexisting"
5168 "test_hash"
5169 "test_inequality"
5170 "test_is_initialized"
5171 "test_is_initialized_mock"
5172 "test_iteration"
5173 "test_iteration_mock"
5174 "test_key_subset"
5175 "test_length"
5176 "test_links"
5177 "test_match"
5178 "test_match_parent"
5179 "test_match_property_bool"
5180 "test_match_subsystem"
5181 "test_match_subsystem_nomatch_complete"
5182 "test_match_subsystem_nomatch_unfulfillable"
5183 "test_name"
5184 "test_non_iterable"
5185 "test_parent"
5186 "test_path"
5187 "test_sequence_number"
5188 "test_subsystem"
5189 "test_sys_number"
5190 "test_sys_path"
5191 "test_tags"
5192 "test_time_since_initialized"
5193 "test_time_since_initialized_mock"
5194 "test_traverse"
5195 "test_type"
5196 "test_unsetitem")
5197 " and not "))
5198 #:phases
5199 #~(modify-phases %standard-phases
5200 (add-after 'unpack 'patch-ctypes-udev
5201 (lambda* (#:key inputs #:allow-other-keys)
5202 (substitute* "src/pyudev/core.py"
5203 (("\"udev\"")
5204 (format #f "~s"
5205 (search-input-file inputs "/lib/libudev.so"))))
5206 (substitute* "src/pyudev/_ctypeslib/utils.py"
5207 ;; Use absolute paths instead of keys.
5208 (("= find_library") "= ")))))))
5209 (native-inputs
5210 (list python-pytest
5211 python-setuptools))
5212 (inputs
5213 (list eudev))
5214 (home-page "https://pyudev.readthedocs.io/")
5215 (synopsis "Python udev binding")
5216 (description "This package provides @code{udev} bindings for Python.")
5217 (license license:lgpl2.1)))
5218
5219(define-public undervolt
5220 (package
5221 (name "undervolt")
5222 (version "0.4.0")
5223 (source
5224 (origin
5225 (method git-fetch)
5226 (uri (git-reference
5227 (url "https://github.com/georgewhewell/undervolt")
5228 (commit version)))
5229 (file-name (git-file-name name version))
5230 (sha256
5231 (base32 "136j8rqqra84yg57vn3nqwk1b36y9y7sjkynr0fl8pnrb7z8mq0v"))))
5232 (build-system pyproject-build-system)
5233 (arguments
5234 (list #:tests? #f)) ;no tests
5235 (native-inputs
5236 (list python-setuptools))
5237 (home-page "https://github.com/georgewhewell/undervolt")
5238 (synopsis "Undervolt Intel CPUs under Linux")
5239 (description
5240 "Undervolt is a program for undervolting Intel CPUs under Linux. It
5241works in a similar manner to the Windows program ThrottleStop (i.e, MSR
52420x150). A fixed voltage offset may be applied to one of 5 voltage planes,
5243which overrides systems' temperature target (CPU will throttle when this
5244temperature is reached).")
5245 (license license:gpl2+)))
5246
5247(define-public vmtouch
5248 (package
5249 (name "vmtouch")
5250 (version "1.3.1")
5251 (source
5252 (origin
5253 (method git-fetch)
5254 (uri (git-reference
5255 (url "https://github.com/hoytech/vmtouch/")
5256 (commit (string-append "v" version))))
5257 (file-name (git-file-name name version))
5258 (sha256
5259 (base32 "08da6apzfkfjwasn4dxrlfxqfx7arl28apdzac5nvm0fhvws0dxk"))))
5260 (build-system gnu-build-system)
5261 (native-inputs
5262 (list perl))
5263 (arguments
5264 `(#:tests? #f ; no tests
5265 #:make-flags
5266 (list
5267 (string-append "CC=" ,(cc-for-target))
5268 (string-append "PREFIX=" (assoc-ref %outputs "out")))
5269 #:phases
5270 (modify-phases %standard-phases
5271 (delete 'configure))))
5272 (home-page "https://github.com/hoytech/vmtouch/")
5273 (synopsis "Portable file system cache diagnostics and control")
5274 (description
5275 "vmtouch is a tool for learning about and controlling the file system
5276cache of unix and unix-like systems.")
5277 (license license:bsd-3)))
5278
5279(define-public solaar
5280 (package
5281 (name "solaar")
5282 (version "1.1.20")
5283 (source
5284 (origin
5285 (method git-fetch)
5286 (uri (git-reference
5287 (url "https://github.com/pwr-Solaar/Solaar")
5288 (commit version)))
5289 (file-name (git-file-name name version))
5290 (sha256
5291 (base32 "1a5n5js26ibsv0qc1nm71fyy945gxrqpb70xf852fcpd8k5s5yw7"))))
5292 (build-system pyproject-build-system)
5293 (arguments
5294 (list #:phases
5295 #~(modify-phases %standard-phases
5296 (replace 'wrap
5297 (lambda _
5298 (wrap-program (string-append #$output "/bin/solaar")
5299 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))))))))
5300 (native-inputs
5301 (list gobject-introspection
5302 python-pytest
5303 python-pytest-mock
5304 python-setuptools
5305 python-typing-extensions))
5306 (propagated-inputs
5307 (list python-pycairo
5308 python-pygobject
5309 python-pyudev
5310 python-dbus
5311 python-evdev
5312 ;; For GUI.
5313 python-pyyaml
5314 python-psutil
5315 python-typing-extensions
5316 python-xlib
5317 gtk+
5318 python-pygobject))
5319 (inputs (list bash-minimal libappindicator))
5320 (home-page "https://pwr-solaar.github.io/Solaar/")
5321 (synopsis "Linux devices manager for the Logitech Unifying Receiver")
5322 (description "This package provides tools to manage clients of the
5323Logitech Unifying Receiver.")
5324 (license license:gpl2)))
5325
5326(define-public lynis
5327 (package
5328 (name "lynis")
5329 ;; Also update the ‘lynis-sdk’ input to the commit matching this release.
5330 (version "3.1.1")
5331 (source
5332 (origin
5333 (method git-fetch)
5334 (uri (git-reference
5335 (url "https://github.com/CISOfy/lynis")
5336 (commit version)))
5337 (file-name (git-file-name name version))
5338 (sha256
5339 (base32 "05bh16i916xz9w8p8fz8flzj9ayyzg7wpbi7q61ylrlahhc03nqd"))
5340 (modules '((guix build utils)))
5341 (snippet
5342 '(begin
5343 ;; Remove proprietary plugins. As of now, all plugins supplied with
5344 ;; lynis are proprietary. In the future, if free plugins are
5345 ;; provided, whitelist them from deletion.
5346 (for-each delete-file (find-files "plugins"))))))
5347 (build-system gnu-build-system)
5348 (native-inputs
5349 `(;; For tests
5350 ("lynis-sdk"
5351 ,(origin
5352 (method git-fetch)
5353 (uri (git-reference
5354 (url "https://github.com/CISOfy/lynis-sdk")
5355 (commit "f4f885f1f049f59940487a6ffc2d53806c729d12")))
5356 (file-name (git-file-name "lynis-sdk" version))
5357 (sha256
5358 (base32 "09d98wmvan7nlchm056kls5xm939d1231pwsvlp4q2aznz8cmg42"))))))
5359 (arguments
5360 (list
5361 #:phases
5362 #~(modify-phases %standard-phases
5363 (replace 'unpack
5364 ;; XXX Remove after fixing <https://issues.guix.gnu.org/55287>.
5365 (lambda* (#:key source #:allow-other-keys)
5366 (mkdir "source")
5367 (chdir "source")
5368 (copy-recursively source "."
5369 #:keep-mtime? #t)))
5370 (replace 'configure
5371 (lambda _
5372 (substitute* "lynis"
5373 (("/usr/share/lynis")
5374 (string-append #$output "/share/lynis")))
5375 (substitute* "include/functions"
5376 (("/usr/local/etc/lynis")
5377 (string-append #$output "/etc/lynis")))))
5378 (delete 'build)
5379 (replace 'install
5380 (lambda _
5381 (install-file "lynis" (string-append #$output "/bin/"))
5382 (install-file "default.prf" (string-append #$output "/etc/lynis"))
5383 (for-each
5384 (lambda (dir)
5385 (copy-recursively
5386 dir (string-append #$output "/share/lynis/" dir)))
5387 (list "db" "include" "plugins"))
5388 (install-file "lynis.8"
5389 (string-append #$output "/share/man/man8"))))
5390 (replace 'check
5391 (lambda _
5392 (copy-recursively #$(this-package-native-input "lynis-sdk")
5393 "../lynis-sdk")
5394 (setenv "LANG" "en_US.UTF-8")
5395 (let ((lynis-dir (getcwd)))
5396 (with-directory-excursion "../lynis-sdk"
5397 (substitute* "config"
5398 (("\\.\\./lynis") lynis-dir))
5399 (substitute* "unit-tests/tests-language-translations.sh"
5400 (("\\.\\./lynis") lynis-dir))
5401 (invoke "sh" "lynis-devkit" "run" "unit-tests"))))))))
5402 (home-page "https://cisofy.com/lynis/")
5403 (synopsis "Security auditing tool")
5404 (description "Lynis is a security auditing tool. It performs an in-depth
5405security scan and runs on the system itself. The primary goal is to test
5406security defenses and provide tips for further system hardening. It will also
5407scan for general system information, vulnerable software packages, and
5408possible configuration issues.")
5409 (license license:gpl3+)))
5410
5411(define-public ngrep
5412 (package
5413 (name "ngrep")
5414 (version "1.47")
5415 (source
5416 (origin
5417 (method git-fetch)
5418 (uri (git-reference
5419 (url "https://github.com/jpr5/ngrep/")
5420 (commit (string-append "V" (string-replace-substring version "." "_")))))
5421 (file-name (git-file-name name version))
5422 (sha256
5423 (base32
5424 "1x2fyd7wdqlj1r76ilal06cl2wmbz0ws6i3ys204sbjh1cj6dcl7"))))
5425 (build-system gnu-build-system)
5426 (inputs
5427 (list libpcap))
5428 (arguments
5429 `(#:tests? #f ;; No tests.
5430 #:configure-flags (list (string-append "--with-pcap-includes="
5431 (assoc-ref %build-inputs "libpcap")
5432 "/include/pcap"))))
5433 (home-page "https://github.com/jpr5/ngrep/")
5434 (synopsis "Grep-like utility to search for network packets on an interface")
5435 (description "@command{ngrep} is like GNU grep applied to the network
5436layer. It's a PCAP-based tool that allows you to specify an extended regular
5437or hexadecimal expression to match against data payloads of packets. It
5438understands many kinds of protocols, including IPv4/6, TCP, UDP, ICMPv4/6,
5439IGMP and Raw, across a wide variety of interface types, and understands BPF
5440filter logic in the same fashion as more common packet sniffing tools, such as
5441tcpdump and snoop.")
5442 (license license:bsd-3)))
5443
5444(define-public pam-mount
5445 (package
5446 (name "pam-mount")
5447 (version "2.20")
5448 (source
5449 (origin
5450 (method url-fetch)
5451 (uri (string-append "https://inai.de/files/pam_mount/pam_mount-"
5452 version ".tar.xz"))
5453 (sha256
5454 (base32 "1vbc6fd826qgj5qq5g06hc64x6n372xhb92bfvhzi02n91x209jl"))))
5455 (build-system gnu-build-system)
5456 (arguments
5457 (list
5458 #:configure-flags
5459 #~(list (string-append "--with-slibdir=" #$output "/lib")
5460 (string-append "--with-ssbindir=" #$output "/sbin")
5461 "--with-cryptsetup")
5462 #:phases
5463 #~(modify-phases %standard-phases
5464 (add-after 'unpack 'patch-file-names
5465 (lambda* (#:key inputs outputs #:allow-other-keys)
5466 (let ((out (assoc-ref outputs "out")))
5467 (substitute* "src/mtcrypt.c"
5468 (("\"(mount|umount)\";" _ command)
5469 (format #f "\"~a\";"
5470 (search-input-file inputs
5471 (string-append "bin/" command))))
5472 (("\"(fsck)\"," _ command)
5473 (format #f "\"~a\","
5474 (search-input-file inputs
5475 (string-append "sbin/" command)))))
5476 (substitute* "src/rdconf1.c"
5477 (("\"(mount|umount)\", \"" _ command)
5478 (format #f "\"~a\", \""
5479 (search-input-file inputs
5480 (string-append "bin/" command))))
5481 (("\"(fsck)\", \"" _ command)
5482 (format #f "\"~a\", \""
5483 (search-input-file inputs
5484 (string-append "sbin/" command))))
5485 (("\"pmvarrun\", \"")
5486 (format #f "\"~a/sbin/pmvarrun\", \"" out)))))))))
5487 (native-inputs
5488 (list perl pkg-config))
5489 (inputs
5490 (append
5491 (cons cryptsetup-minimal (libcryptsetup-propagated-inputs))
5492 (list libhx
5493 libxml2
5494 linux-pam
5495 openssl
5496 pcre2
5497 util-linux
5498 eudev)))
5499 (home-page "https://inai.de/projects/pam_mount/")
5500 (synopsis "PAM module to mount volumes for a user session")
5501 (description
5502 "Pam-mount is a PAM module to mount volumes when a user logs in.
5503It can mount all local file systems supported by @command{mount}, as well as
5504LUKS volumes encrypted with the user's log-in password.")
5505 (license (list license:gpl2+ license:lgpl2.1+))))
5506
5507(define-public pam-uaccess
5508 (let ((commit "54fbf043c63cc500b4850b0b4a12ea14078f2b53")
5509 (revision "0"))
5510 (package
5511 (name "pam-uaccess")
5512 (version (git-version "0.0.0" revision commit))
5513 (source (origin
5514 (method git-fetch)
5515 (uri (git-reference
5516 (url "https://git.sr.ht/~kennylevinsen/pam_uaccess")
5517 (commit commit)))
5518 (file-name (git-file-name name version))
5519 (sha256
5520 (base32
5521 "08068cw4nvcanym8b5dyccnnb3qc3f09pbvi6fcfiz227yx73npc"))))
5522 (build-system meson-build-system)
5523 (native-inputs (list pkg-config))
5524 (inputs (list acl eudev linux-pam))
5525 (home-page "https://git.sr.ht/~kennylevinsen/pam_uaccess")
5526 (synopsis
5527 "PAM module that grants access to devices tagged @code{uaccess} in udev")
5528 (description
5529 "@code{pam_uaccess} is a PAM module that grants access to devices tagged
5530@code{uaccess} in udev for the duration of the users' session, replacing
5531elogind's uaccess feature.")
5532 (license license:expat))))
5533
5534(define-public jc
5535 (package
5536 (name "jc")
5537 (version "1.25.7")
5538 (source
5539 (origin
5540 ;; The PyPI tarball lacks the test suite.
5541 (method git-fetch)
5542 (uri (git-reference
5543 (url "https://github.com/kellyjonbrazil/jc")
5544 (commit (string-append "v" version))))
5545 (file-name (git-file-name name version))
5546 (sha256
5547 (base32 "05fcif1midcqvj93msn1mpllqdni3fr0iz1ab56w589rwr3w1rva"))))
5548 (build-system pyproject-build-system)
5549 (arguments
5550 (list
5551 #:phases
5552 #~(modify-phases %standard-phases
5553 ;; XXX Guix's America/Los_Angeles time zone is somehow broken.
5554 (add-before 'check 'hack-time-zone
5555 (lambda _
5556 (setenv "TZ" "PST8PDT")
5557 (substitute* (find-files "tests" "^test.*\\.py$")
5558 (("America/Los_Angeles") "PST8PDT"))))
5559 (add-before 'wrap 'install-completions
5560 (lambda _
5561 (define (install-completion option file)
5562 (let ((jc (string-append #$output "/bin/jc"))
5563 (file (string-append #$output file)))
5564 (mkdir-p (dirname file))
5565 (with-output-to-file file
5566 (lambda _ (invoke jc option)))))
5567 (install-completion "-B" "/share/bash-completion/completions/jc")
5568 (install-completion "-Z" "/share/zsh/site-functions/_jc"))))))
5569 (native-inputs
5570 (list python-pytest
5571 python-setuptools))
5572 (propagated-inputs
5573 (list python-pygments
5574 python-ruamel.yaml
5575 python-xmltodict))
5576 (home-page "https://github.com/kellyjonbrazil/jc")
5577 (synopsis "Convert the output of command-line tools to JSON")
5578 (description "@code{jc} JSONifies the output of many CLI tools and
5579file-types for easier parsing in scripts.")
5580 (license license:expat)))
5581
5582(define-public jtbl
5583 (package
5584 (name "jtbl")
5585 (version "1.6.0")
5586 (source
5587 (origin
5588 (method git-fetch)
5589 (uri (git-reference
5590 (url "https://github.com/kellyjonbrazil/jtbl")
5591 (commit (string-append "v" version))))
5592 (file-name (git-file-name name version))
5593 (sha256
5594 (base32 "1gryjfjchvfb2nv797h5ba2qz54ig5kkjwcq8ycfdffdk1931d10"))))
5595 (build-system pyproject-build-system)
5596 (native-inputs
5597 (list python-pytest
5598 python-setuptools
5599 python-wheel))
5600 (inputs
5601 (list python-tabulate))
5602 (home-page "https://github.com/kellyjonbrazil/jtbl")
5603 (synopsis "Command-line tool to print JSON data as a table in the terminal")
5604 (description
5605 "@code{jtbl} accepts piped JSON data from stdin and outputs a text table
5606representation to stdout.")
5607 (license license:expat)))
5608
5609(define-public hosts
5610 (package
5611 (name "hosts")
5612 (version "3.6.5")
5613 (source
5614 (origin
5615 (method git-fetch)
5616 (uri (git-reference
5617 (url "https://github.com/xwmx/hosts")
5618 (commit version)))
5619 (file-name (git-file-name name version))
5620 (sha256
5621 (base32 "1kzd4lxlflam87dhbx1jx7bj6v6sa4f2024mfxj2768kp9qapraj"))))
5622 (build-system copy-build-system)
5623 (native-inputs
5624 (list bats)) ;for tests
5625 (inputs
5626 (list gawk
5627 bash-minimal
5628 coreutils
5629 diffutils
5630 grep
5631 ncurses ;for tput
5632 sed))
5633 (arguments
5634 (list
5635 #:install-plan
5636 #~'(("hosts" "bin/hosts")
5637 ("etc/hosts-completion.bash" "/etc/bash_completion.d/hosts")
5638 ("etc/hosts-completion.zsh" "/share/zsh/site-functions/_hosts")
5639 ("README.md"
5640 #$(string-append "/share/doc/" name "-" version "/README.md")))
5641 #:phases
5642 #~(modify-phases %standard-phases
5643 (add-after 'unpack 'patch-hosts
5644 (lambda* (#:key inputs #:allow-other-keys)
5645 (substitute* "test/test_helper.bash"
5646 (("export _HOSTS=.*")
5647 (string-append "export _HOSTS=" #$output "/bin/hosts")))
5648 (substitute* (cons* "hosts"
5649 ;; *.bash and *.bats.
5650 (find-files "test" "\\.bat?sh?.*$"))
5651 (("\\btput\\b") (search-input-file inputs "bin/tput"))
5652 (("\\bsed\\b") (search-input-file inputs "bin/sed"))
5653 (("\\bawk\\b") (search-input-file inputs "bin/awk"))
5654 (("\\bgrep\\b") (search-input-file inputs "bin/grep"))
5655 (("\\bdiff\\b") (search-input-file inputs "bin/diff"))
5656 (("\\bcp\\b") (search-input-file inputs "bin/cp"))
5657 (("\\bchmod\\b") (search-input-file inputs "bin/chmod")))))
5658 (add-after 'install 'check
5659 (lambda* (#:key tests? inputs #:allow-other-keys)
5660 (if tests?
5661 (begin
5662 (delete-file "hosts") ;Ensure installed hosts is checked.
5663 (setenv "PATH" "") ;Ensure substitutions were correct.
5664 (setenv "TERM" "linux") ;Set to tty for test.
5665 (invoke (search-input-file inputs "/bin/bats")
5666 "test"))))))))
5667 (home-page "https://github.com/xwmx/hosts/")
5668 (synopsis "Script for editing a foreign distro's @file{/etc/hosts} file")
5669 (description "Hosts is a command line program for managing
5670@file{/etc/hosts} entries. On Guix System, @file{/etc/hosts} is managed from
5671the system configuration; hosts only works when using the Guix package manager
5672on a foreign distro. @command{hosts} works with existing hosts files and
5673entries, providing commands to add, remove, comment, and search.")
5674 (license license:expat)))
5675
5676(define-public nmrpflash
5677 (package
5678 (name "nmrpflash")
5679 (version "0.9.27")
5680 (source
5681 (origin
5682 (method git-fetch)
5683 (uri
5684 (git-reference
5685 (url "https://github.com/jclehner/nmrpflash")
5686 (commit (string-append "v" version))))
5687 (sha256
5688 (base32 "1fi64cqdllxsradh1iczyxsqgn2kcncdfaf94xll30ghpyz06jb2"))
5689 (file-name (git-file-name name version))))
5690 (build-system gnu-build-system)
5691 (arguments
5692 (list
5693 #:tests? #f ; none exist
5694 #:make-flags
5695 #~(list (string-append "CC=" #$(cc-for-target))
5696 (string-append "PREFIX=" #$output))
5697 #:phases
5698 #~(modify-phases %standard-phases
5699 (delete 'configure)
5700 (add-before 'install 'prepare-install
5701 (lambda _
5702 (mkdir-p (string-append #$output "/bin")))))))
5703 (native-inputs
5704 (list pkg-config))
5705 (inputs
5706 (list libnl libpcap))
5707 (home-page "https://github.com/jclehner/nmrpflash")
5708 (synopsis "Reflash (``unbrick'') Netgear devices with corrupted firmware")
5709 (description "This package provides a utility to flash a new firmware
5710image to a Netgear device. It has been tested on Netgear EX2700, EX6120,
5711EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800,
5712R8000, R8500, WNDR3800, but is likely to be compatible with many other
5713Netgear devices.")
5714 (license license:gpl3+)))
5715
5716(define-public atop
5717 (package
5718 (name "atop")
5719 (version "2.13.0")
5720 (source (origin
5721 (method url-fetch)
5722 (uri (string-append "https://www.atoptool.nl/download/atop-"
5723 version ".tar.gz"))
5724 (sha256
5725 (base32
5726 "0x58wrkaz9hp6cwr4bsg19029x3zz7gifkxgwliajb7mr622y67a"))))
5727 (build-system gnu-build-system)
5728 (arguments
5729 (list
5730 #:tests? #f ; no test suite
5731 #:make-flags
5732 #~(list (string-append "CC=" #$(cc-for-target))
5733 (string-append "DESTDIR=" #$output)
5734 (string-append "SYSDPATH=/etc/systemd/system")
5735 (string-append "PMPATHD=/etc/systemd/system-sleep")
5736 ;; Or else it tries to create /var/log/atop...
5737 (string-append "LOGPATH="))
5738 #:phases
5739 #~(modify-phases %standard-phases
5740 (delete 'configure) ; No ./configure script
5741 (add-before 'build 'patch-build
5742 (lambda _
5743 (substitute* "Makefile"
5744 ;; Don't use /usr as a prefix.
5745 (("/usr") "")
5746 ;; Otherwise, it creates a blank configuration file as a "default".
5747 (("touch.*DEFPATH)/atop") "")
5748 (("chmod.*DEFPATH)/atop") "")))))))
5749 (native-inputs (list pkg-config))
5750 (inputs
5751 (list glib
5752 ncurses
5753 python-wrapper ; for `atopgpud`
5754 zlib))
5755 (home-page "https://www.atoptool.nl/")
5756 (synopsis "Linux performance monitoring console")
5757 (description "Atop is an ASCII full-screen performance monitor for Linux
5758that is capable of reporting the activity of all processes (even processes have
5759finished during the monitoring interval), daily logging of system and process
5760activity for long-term analysis, highlighting overloaded system resources by
5761using colors, etc. At regular intervals, it shows system-level activity related
5762to the CPU, memory, swap, disks (including LVM) and network layers, and for
5763every process (and thread) it shows e.g. the CPU utilization, memory growth,
5764disk utilization, priority, username, state, and exit code.")
5765 (properties
5766 `((release-monitoring-url . "https://www.atoptool.nl/downloadatop.php")))
5767 (license license:gpl2+)))
5768
5769(define-public fiano
5770 (package
5771 (name "fiano")
5772 ;; The versioning count has been changed since commit <2021-12-01>
5773 ;; 1eb599564549691603589219c2be34f966a32ff1.
5774 (version "1.2.0")
5775 (source
5776 (origin
5777 (method git-fetch)
5778 (uri (git-reference
5779 (url "https://github.com/linuxboot/fiano")
5780 (commit (string-append "v" version))))
5781 (file-name (git-file-name name version))
5782 (sha256
5783 (base32 "0s5fx4lhgb68qbx4ql34rcm678qdf0c4xl97bgc8dx9xwwqifza1"))))
5784 (build-system go-build-system)
5785 (arguments
5786 (list
5787 #:install-source? #f
5788 #:import-path "github.com/linuxboot/fiano/cmds/..."
5789 #:unpack-path "github.com/linuxboot/fiano"))
5790 (inputs
5791 (list go-github-com-dustin-go-humanize
5792 go-github-com-fatih-camelcase
5793 go-github-com-hashicorp-go-multierror
5794 go-github-com-jedib0t-go-pretty-v6
5795 go-github-com-jessevdk-go-flags
5796 go-github-com-klauspost-compress
5797 go-github-com-pierrec-lz4
5798 go-github-com-spf13-pflag
5799 go-github-com-stretchr-testify
5800 go-github-com-tjfoc-gmsm
5801 go-github-com-u-root-u-root
5802 go-github-com-ulikunitz-xz
5803 go-github-com-xaionaro-go-bytesextra
5804 go-github-com-xaionaro-go-gosrc
5805 go-golang-org-x-text))
5806 (home-page "https://github.com/linuxboot/fiano")
5807 (synopsis "UEFI image editor")
5808 (description
5809 "This package provides a command-line UEFI image editor, including cbfs,
5810create-ffs, fmap, fspinfo, glzma, guid2english, microcode and utk CLI
5811utilities.")
5812 (license license:bsd-3)))
5813
5814(define-public novena-eeprom
5815 (package
5816 (name "novena-eeprom")
5817 (version "2.3")
5818 (source (origin
5819 (method git-fetch)
5820 (uri (git-reference
5821 (url "https://github.com/xobs/novena-eeprom.git")
5822 (commit (string-append "v" version))))
5823 (file-name (string-append name "-" version "-checkout"))
5824 (sha256
5825 (base32
5826 "00pd71mg0g20v0820ggp3ghf9nyj5s4wavaz9mkmrmsr91hcnf7i"))))
5827 (build-system gnu-build-system)
5828 (arguments
5829 `(#:tests? #f ; No tests exist
5830 #:make-flags
5831 (list (string-append "CC=" ,(cc-for-target)))
5832 #:phases
5833 (modify-phases %standard-phases
5834 (delete 'configure)
5835 (replace 'install
5836 (lambda* (#:key outputs #:allow-other-keys)
5837 (let* ((out (assoc-ref outputs "out"))
5838 (out-bin (string-append out "/bin"))
5839 (out-share-man (string-append out "/share/man/man8")))
5840 (install-file "novena-eeprom" out-bin)
5841 (install-file "novena-eeprom.8" out-share-man)))))))
5842 (inputs
5843 (list i2c-tools-3))
5844 (synopsis "Novena EEPROM editor")
5845 (description "This package provides an editor for the Novena EEPROM.
5846Novena boards contain a device-dependent descriptive EEPROM that defines
5847various parameters such as serial number, MAC address, and featureset.
5848This program allows you to view and manipulate this EEPROM list.")
5849 (home-page "https://github.com/xobs/novena-eeprom/")
5850 (supported-systems '("armhf-linux"))
5851 (license license:bsd-3)))
5852
5853(define-public lrzsz
5854 (package
5855 (name "lrzsz")
5856 (version "0.12.20")
5857 (source (origin
5858 (method url-fetch)
5859 (uri (string-append "https://www.ohse.de/uwe/releases/lrzsz-"
5860 version ".tar.gz"))
5861 (sha256
5862 (base32
5863 "1wcgfa9fsigf1gri74gq0pa7pyajk12m4z69x7ci9c6x9fqkd2y2"))))
5864 (build-system gnu-build-system)
5865 (arguments
5866 `(#:phases
5867 (modify-phases %standard-phases
5868 (replace 'configure
5869 (lambda* (#:key outputs #:allow-other-keys)
5870 (setenv "CONFIG_SHELL" (which "bash"))
5871 (setenv "CFLAGS"
5872 (string-append "-g -O2 "
5873 "-Wno-error=implicit-int "
5874 "-Wno-error=implicit-function-declaration "
5875 "-Wno-error=incompatible-pointer-types"))
5876 (invoke "./configure"
5877 (string-append "--prefix="
5878 (assoc-ref outputs "out"))))))))
5879 (synopsis "Implementation of XMODEM/YMODEM/ZMODEM transfer protocols")
5880 (description "This package provides programs that transfer files using
5881the XMODEM/YMODEM/ZMODEM file transfer protocols.")
5882 (home-page "https://ohse.de/uwe/software/lrzsz.html")
5883 (license license:gpl2+)))
5884
5885(define-public nq
5886 (package
5887 (name "nq")
5888 (version "1.0")
5889 (source
5890 (origin
5891 (method git-fetch)
5892 (uri (git-reference
5893 (url "https://github.com/leahneukirchen/nq")
5894 (commit (string-append "v" version))))
5895 (file-name (git-file-name name version))
5896 (sha256
5897 (base32 "0pl84vrjg7l0gyjar7v0qn4v63n30b93nbldxawbmqls9m443mc1"))))
5898 (build-system gnu-build-system)
5899 (native-inputs
5900 (list perl))
5901 (arguments
5902 (list #:make-flags
5903 #~(list (string-append "CC=" #$(cc-for-target))
5904 (string-append "PREFIX=" #$output))
5905 #:phases
5906 #~(modify-phases %standard-phases
5907 (delete 'configure))))
5908 (synopsis "Unix command line queue utility")
5909 (description
5910 "@code{nq} can create very lightweight job queue systems which require no
5911setup, maintenance, supervision, or any long-running processes.")
5912 (home-page "https://github.com/leahneukirchen/nq")
5913 (license license:public-domain)))
5914
5915(define-public lsofgraph
5916 (let ((commit "1d414bdc727c00a8c6cbfffc3c43128c60d6f0de")
5917 (revision "1"))
5918 (package
5919 (name "lsofgraph")
5920 (version (git-version "0.0.1" revision commit)) ;no upstream release
5921 (source (origin
5922 (method git-fetch)
5923 (uri (git-reference
5924 (url "https://github.com/zevv/lsofgraph")
5925 (commit commit)))
5926 (file-name (git-file-name name version))
5927 (sha256
5928 (base32
5929 "058x04yp6bc77hbl3qchqm7pa8f9vqfl9jryr88m8pzl7kvpif54"))))
5930 (build-system trivial-build-system)
5931 (inputs
5932 (list lua))
5933 (arguments
5934 `(#:modules ((guix build utils))
5935 #:builder
5936 (begin
5937 (use-modules (guix build utils))
5938 ;; copy source
5939 (copy-recursively (assoc-ref %build-inputs "source") ".")
5940 ;; patch-shebang phase
5941 (setenv "PATH"
5942 (string-append (assoc-ref %build-inputs "lua") "/bin"
5943 ":" (getenv "PATH")))
5944 (substitute* "lsofgraph"
5945 (("#!/usr/bin/env lua")
5946 (string-append "#!" (which "lua"))))
5947 ;; install phase
5948 (install-file "lsofgraph" (string-append %output "/bin"))
5949 (let ((doc (string-append
5950 %output "/share/doc/" ,name "-" ,version)))
5951 (mkdir-p doc)
5952 (install-file "LICENSE" doc)
5953 (install-file "README.md" doc))
5954 #t)))
5955 (home-page "https://github.com/zevv/lsofgraph")
5956 (synopsis "Convert @code{lsof} output to @code{graphviz}")
5957 (description "Utility to convert @code{lsof} output to a graph showing
5958FIFO and UNIX interprocess communication.")
5959 (license license:bsd-2))))
5960
5961(define-public runitor
5962 (package
5963 (name "runitor")
5964 (version "1.3.0-build.4")
5965 (source
5966 (origin
5967 (method git-fetch)
5968 (uri (git-reference
5969 (url "https://github.com/bdd/runitor")
5970 (commit (string-append "v" version))))
5971 (file-name (git-file-name name version))
5972 (sha256
5973 (base32 "00l83jcjmf5kcq8yzq575kk6ljkkr2xhm5cx27zzb1yhxn93xj7n"))))
5974 (build-system go-build-system)
5975 (arguments
5976 `(#:unpack-path "bdd.fi/x/runitor"
5977 #:build-flags '(,(string-append "-ldflags=-X main.Version=" version))
5978 #:import-path "bdd.fi/x/runitor/cmd/runitor"
5979 #:install-source? #f))
5980 (home-page "https://github.com/bdd/runitor")
5981 (synopsis "Command runner with healthchecks.io integration")
5982 (description
5983 "Runitor runs the supplied command, captures its output, and based on its
5984exit code reports successful or failed execution to
5985@url{https://healthchecks.io,https://healthchecks.io} or your private instance.")
5986 (license license:bsd-0)))
5987
5988(define-public udpcast
5989 (package
5990 (name "udpcast")
5991 (version "20250223")
5992 (source
5993 (origin
5994 (method url-fetch)
5995 ;; XXX: Original server is at https://www.udpcast.linux.lu is not
5996 ;; reliable.
5997 (uri (list (string-append
5998 "https://fossies.org/linux/privat/udpcast-"
5999 version ".tar.gz")
6000 (string-append
6001 "https://www.udpcast.linux.lu/download/udpcast-"
6002 version ".tar.gz")))
6003 (sha256
6004 (base32 "19qa6yp0svhvyra4898c6kjs56bn7yr9cavxk1vbrqbpr1a7bzff"))))
6005 (build-system gnu-build-system)
6006 (native-inputs
6007 (list autoconf automake m4 perl))
6008 (arguments
6009 (list #:tests? #f ;no test suite
6010 #:make-flags #~(list (string-append "sbindir=" #$output "/sbin/"))))
6011 (synopsis "Multicast file transfer tool")
6012 (description
6013 "UDPcast is a file transfer tool that can send data simultaneously to
6014many destinations on a LAN. This can for instance be used to install entire
6015classrooms of PC's at once. The advantage of UDPcast over using other
6016methods (nfs, ftp, whatever) is that UDPcast uses UDP's multicast abilities:
6017it won't take longer to install 15 machines than it would to install just 2.")
6018 (home-page "https://www.udpcast.linux.lu")
6019 (license license:gpl2+)))
6020
6021(define-public greetd
6022 (package
6023 (name "greetd")
6024 (version "0.10.3")
6025 (home-page "https://git.sr.ht/~kennylevinsen/greetd")
6026 (source (origin
6027 (method git-fetch)
6028 (uri (git-reference
6029 (url home-page)
6030 (commit version)))
6031 (file-name (git-file-name name version))
6032 (sha256
6033 (base32 "1j3c7skby9scsq6p1f6nacbiy9b26y1sswchdsp8p3vv7fgdh2wf"))))
6034 (build-system cargo-build-system)
6035 (arguments
6036 `(#:install-source? #f
6037 #:phases
6038 (modify-phases %standard-phases
6039 (add-after 'unpack 'patch-/bin/sh
6040 (lambda* (#:key inputs #:allow-other-keys)
6041 (substitute* "greetd/src/session/worker.rs"
6042 (("/bin/sh") (search-input-file inputs "/bin/sh")))))
6043 (add-after 'build 'build-man-pages
6044 (lambda* (#:key inputs #:allow-other-keys)
6045 (define (scdoc-cmd doc lvl)
6046 (system (string-append "scdoc < "
6047 doc "-" lvl ".scd > "
6048 doc "." lvl)))
6049 (with-directory-excursion "man"
6050 (scdoc-cmd "greetd" "1")
6051 (scdoc-cmd "greetd" "5")
6052 (scdoc-cmd "greetd-ipc" "7")
6053 (scdoc-cmd "agreety" "1"))))
6054 (replace 'install
6055 (lambda* (#:key inputs outputs #:allow-other-keys)
6056 (let* ((out (assoc-ref outputs "out"))
6057 (bin (string-append out "/bin"))
6058 (sbin (string-append out "/sbin"))
6059 (share (string-append out "/share"))
6060 (man (string-append share "/man"))
6061 (man1 (string-append man "/man1"))
6062 (man5 (string-append man "/man5"))
6063 (man7 (string-append man "/man7"))
6064 (release ,(if (%current-target-system)
6065 (string-append
6066 "target/"
6067 (platform-rust-target
6068 (lookup-platform-by-target
6069 (%current-target-system)))
6070 "/release")
6071 "target/release"))
6072 (greetd-bin (string-append release "/greetd"))
6073 (agreety-bin (string-append release "/agreety")))
6074 (install-file greetd-bin sbin)
6075 (install-file agreety-bin bin)
6076 (with-directory-excursion "man"
6077 (install-file "greetd.1" man1)
6078 (install-file "greetd.5" man5)
6079 (install-file "greetd-ipc.7" man7)
6080 (install-file "agreety.1" man1))))))))
6081 (inputs
6082 ;; Full bash, not bash-minimal. See https://issues.guix.gnu.org/76105.
6083 (cons* bash linux-pam (cargo-inputs 'greetd)))
6084 (native-inputs
6085 (list scdoc))
6086 (synopsis "Minimal and flexible login manager daemon")
6087 (description
6088 "greetd is a minimal and flexible login manager daemon
6089that makes no assumptions about what you want to launch.
6090
6091If you can run it from your shell in a TTY, greetd can start it.
6092
6093If it can be taught to speak a simple JSON-based IPC protocol,
6094then it can be a greeter.")
6095 (license license:gpl3+)))
6096
6097(define-public greetd-pam-mount
6098 (package
6099 (inherit pam-mount)
6100 (name "greetd-pam-mount")
6101 (arguments
6102 (substitute-keyword-arguments arguments
6103 ((#:configure-flags flags ''())
6104 #~(cons* "--with-rundir=/run/greetd" #$flags))
6105 ((#:phases phases)
6106 #~(modify-phases #$phases
6107 (add-after 'unpack 'patch-config-file-name
6108 (lambda* (#:key inputs #:allow-other-keys)
6109 (substitute* "src/pam_mount.c"
6110 ((".*define CONFIGFILE .*$")
6111 "#define CONFIGFILE \"/etc/security/greetd_pam_mount.conf.xml\"\n")
6112 (("pam_mount_config") "greetd_pam_mount_config")
6113 (("pam_mount_system_authtok") "greetd_pam_mount_system_authtok"))))))))
6114 (synopsis "PAM module to mount volumes for a user session (greetd variant)")
6115 (description
6116 "Pam-mount is a PAM module to mount volumes when a user logs in.
6117It can mount all local file systems supported by @command{mount}, as well as
6118LUKS volumes encrypted with the user's log-in password.
6119
6120This package inherits pam-mount but is compiled specifically for use with
6121the @command{greetd} log-in manager. It uses a different configuration
6122location and PAM name space from the original.
6123
6124This allows greetd-pam-mount to auto-(un)mount @env{XDG_RUNTIME_DIR} without
6125interfering with any pam-mount configuration.")))
6126
6127(define-public wlgreet
6128 (package
6129 (name "wlgreet")
6130 (version "0.5.0")
6131 (source (origin
6132 (method git-fetch)
6133 (uri (git-reference
6134 (url "https://git.sr.ht/~kennylevinsen/wlgreet")
6135 (commit version)))
6136 (file-name (git-file-name name version))
6137 (sha256
6138 (base32
6139 "0d7lfx5jg2w7fp7llwrirnbsp27nv74f21mhrspd9ilk2cacf12d"))))
6140 (build-system cargo-build-system)
6141 (arguments
6142 (list #:phases
6143 #~(modify-phases %standard-phases
6144 (add-after 'unpack 'remove-bundled-fonts
6145 (lambda _
6146 (delete-file-recursively "fonts")))
6147 (add-after 'remove-bundled-fonts 'fix-font-references
6148 (lambda* (#:key inputs #:allow-other-keys)
6149 (substitute* "src/draw.rs"
6150 (("\\.\\./fonts/dejavu/DejaVuSansMono\\.ttf")
6151 (search-input-file
6152 inputs
6153 "share/fonts/truetype/DejaVuSansMono.ttf"))
6154 (("\\.\\./fonts/Roboto-Regular\\.ttf")
6155 (search-input-file
6156 inputs
6157 "share/fonts/truetype/Roboto-Regular.ttf")))))
6158 (add-after 'configure 'fix-library-references
6159 (lambda* (#:key inputs vendor-dir #:allow-other-keys)
6160 (substitute* (find-files vendor-dir "\\.rs$")
6161 (("lib(wayland-.*|xkbcommon)\\.so" so-file)
6162 (search-input-file
6163 inputs
6164 (string-append "lib/" so-file)))))))))
6165 (inputs
6166 (cons* font-dejavu
6167 font-google-roboto
6168 libxkbcommon
6169 wayland
6170 (cargo-inputs 'wlgreet)))
6171 (home-page "https://git.sr.ht/~kennylevinsen/wlgreet")
6172 (synopsis "Bare-bones Wayland-based greeter for @command{greetd}")
6173 (description
6174 "@command{wlgreet} provides a @command{greetd} greeter
6175that runs on a Wayland compositor such as @command{sway}. It
6176is implemented with pure Wayland APIs, so it does not depend
6177on a GUI toolkit.")
6178 (license license:gpl3)))
6179
6180(define-public gtkgreet
6181 (package
6182 (name "gtkgreet")
6183 (version "0.8")
6184 (source
6185 (origin
6186 (method git-fetch)
6187 (uri (git-reference
6188 (url "https://git.sr.ht/~kennylevinsen/gtkgreet")
6189 (commit version)))
6190 (file-name (git-file-name name version))
6191 (sha256
6192 (base32 "0bqxz39lc8vh6bkirvrbn2lgf1qz5b04lfwgp5xa1ki1bnm5i80q"))))
6193 (build-system meson-build-system)
6194 (native-inputs (list pkg-config scdoc))
6195 (inputs (list gtk+ gtk-layer-shell json-c))
6196 (synopsis "GTK-based greeter for greetd")
6197 (description
6198 "GTK-based greeter for greetd, to be run under a compositor such as Cage.")
6199 (home-page "https://git.sr.ht/~kennylevinsen/gtkgreet")
6200 (license license:gpl3+)))
6201
6202(define-public tuigreet
6203 (package
6204 (name "tuigreet")
6205 (version "0.9.1")
6206 (source (origin
6207 (method git-fetch)
6208 (uri (git-reference
6209 (url "https://github.com/apognu/tuigreet")
6210 (commit version)))
6211 (file-name (git-file-name name version))
6212 (sha256
6213 (base32
6214 "15h2b97clllbhlw5jc4lwkmir18njnyk56zghafsas84m6jjsikv"))))
6215 (build-system cargo-build-system)
6216 (arguments (list #:install-source? #f))
6217 (inputs (cargo-inputs 'tuigreet))
6218 (home-page "https://github.com/apognu/tuigreet")
6219 (synopsis "Graphical console greeter for @code{greetd}")
6220 (description
6221 "This package provides a graphical console greeter for @code{greetd}. It
6222doesn't need a Wayland compositor to be used.")
6223 (license license:gpl3+)))
6224
6225(define-public libseat
6226 (package
6227 (name "libseat")
6228 (version "0.9.2")
6229 (source (origin
6230 (method git-fetch)
6231 (uri (git-reference
6232 (url "https://git.sr.ht/~kennylevinsen/seatd")
6233 (commit version)))
6234 (file-name (git-file-name name version))
6235 (sha256
6236 (base32
6237 "1rmi2f38g5zx50zzy5qicy314a5jmzjwdx3giy4yzb7rfwz0hlq7"))))
6238 (build-system meson-build-system)
6239 (arguments
6240 (list #:configure-flags #~(list "-Dlibseat-logind=elogind"
6241 "-Dserver=disabled")))
6242 (native-inputs
6243 (list pkg-config))
6244 (propagated-inputs
6245 (list elogind))
6246 (home-page "https://sr.ht/~kennylevinsen/seatd")
6247 (synopsis "Seat management library")
6248 (description
6249 "This package provides a universal seat management library that
6250allows applications to use whatever seat management is available.")
6251 (license license:expat)))
6252
6253(define-public seatd
6254 (package
6255 (inherit libseat)
6256 (name "seatd")
6257 (arguments
6258 (list #:configure-flags #~(list "-Dlibseat-logind=elogind")
6259 #:phases
6260 #~(modify-phases %standard-phases
6261 (add-after 'install 'remove-libs
6262 (lambda* (#:key outputs #:allow-other-keys)
6263 (with-directory-excursion (assoc-ref outputs "out")
6264 (for-each delete-file-recursively '("lib" "include"))))))))
6265 (native-inputs
6266 (list pkg-config
6267 scdoc))
6268 (inputs '())
6269 (synopsis "Seat management daemon")
6270 (description
6271 "This package provides a minimal seat management daemon whose task is to
6272mediate access to shared devices, such as graphics and input, for applications
6273that require it.")
6274 (license license:expat)))
6275
6276(define-public sysdig
6277 (package
6278 (name "sysdig")
6279 (version "0.40.1")
6280 (source (origin
6281 (method git-fetch)
6282 (uri (git-reference
6283 (url "https://github.com/draios/sysdig")
6284 (commit version)))
6285 (file-name (git-file-name name version))
6286 (sha256
6287 (base32
6288 "1npm630fix7vssd7hiv2sh3jbs43jl748zbrhwpx8gly25zqvy1h"))))
6289 (build-system cmake-build-system)
6290 (arguments
6291 (list #:tests? #f ;no test suite
6292 #:configure-flags
6293 #~(list "-DUSE_BUNDLED_DEPS=OFF"
6294 ;; Already built and part of falcosecurity-libs, but
6295 ;; needed for the 'HAS_MODERN_BPF' define.
6296 "-DBUILD_SYSDIG_MODERN_BPF=ON"
6297 #$(string-append "-DSYSDIG_VERSION=" version))))
6298 (native-inputs (list pkg-config))
6299 (inputs
6300 (list falcosecurity-libs
6301 luajit
6302 ncurses
6303 nlohmann-json
6304 yaml-cpp
6305 zlib))
6306 (home-page "https://github.com/draios/sysdig")
6307 (synopsis "System exploration and troubleshooting tool")
6308 (description "Sysdig is a simple tool for deep system visibility, with
6309native support for containers. It combines features of multiple system
6310administration tools such as the @command{strace}, @command{tcpdump},
6311@command{htop}, @command{iftop} and @command{lsof} into a single interface.
6312The novel architecture of the tool means that the performance impact of the
6313tracing on the system is very light, compared to the likes of
6314@command{strace}. The @command{sysdig} command has an interface similar to
6315@command{strace}, while the @command{csysdig} command is better suited for
6316interactive used, and has a user interface similar to @command{htop}.
6317
6318If you use Guix System, the kernel Linux has @acronym{BPF, Berkeley Packet
6319Filter} support, and you should launch this tool using the @samp{--modern-bpf}
6320argument of the @command{sysdig} or @command{csysdig} commands. The following
6321Bash aliases can be added to your @file{~/.bash_profile} file, for example:
6322
6323alias sysdig=sudo sysdig --modern-bpf
6324alias cysdig=sudo csysdig --modern-bpf
6325") ;XXX no @example Texinfo support
6326 (license license:asl2.0)))
6327
6328(define-public fail2ban
6329 (package
6330 (name "fail2ban")
6331 (version "1.1.0")
6332 (source
6333 (origin
6334 (method git-fetch)
6335 (uri (git-reference
6336 (url "https://github.com/fail2ban/fail2ban")
6337 (commit version)))
6338 (file-name (git-file-name name version))
6339 (sha256
6340 (base32 "0lfakna6ad2xwz95sjxzkavipcsxiy7ybavkdkf9zzmspf2ws4yk"))
6341 (modules '((guix build utils)))
6342 (snippet #~(begin
6343 ;; Replacing those by our own paths-guix.conf
6344 (with-directory-excursion "config"
6345 (for-each delete-file
6346 '("paths-arch.conf" "paths-debian.conf"
6347 "paths-fedora.conf" "paths-freebsd.conf"
6348 "paths-opensuse.conf" "paths-osx.conf")))))
6349 (patches (search-patches "fail2ban-fix-sshd-filter.patch"
6350 "fail2ban-paths-guix-conf.patch"))))
6351 (build-system pyproject-build-system)
6352 (arguments
6353 (list
6354 #:phases
6355 #~(modify-phases %standard-phases
6356 (add-after 'unpack 'avoid-external-binary-in-/bin
6357 (lambda _
6358 (delete-file "fail2ban/setup.py")
6359 (substitute* '("bin/fail2ban-testcases" "setup.py")
6360 ((".*updatePyExec.*")
6361 ""))))
6362 (add-after 'unpack 'patch-setup.py
6363 (lambda _
6364 ;; Get rid of absolute file names.
6365 (substitute* "setup.py"
6366 (("/etc/fail2ban")
6367 "etc/fail2ban")
6368 (("/var/lib/fail2ban")
6369 "var/lib/fail2ban")
6370 (("\"/usr/bin/\"")
6371 "\"usr/bin/\"")
6372 (("\"/usr/lib/fail2ban/\"")
6373 "\"usr/lib/fail2ban/\"")
6374 (("'/usr/share/doc/fail2ban'")
6375 "'usr/share/doc/fail2ban'"))))
6376 (add-after 'unpack 'disable-some-tests
6377 (lambda _
6378 (define (make-suite-regex tests)
6379 (string-append "tests.addTest\\(loadTests\\(("
6380 (string-join tests "|")
6381 ")\\)\\)"))
6382 ;; disable tests performing unacceptable side-effects
6383 (substitute* "fail2ban/tests/utils.py"
6384 (((make-suite-regex (list "actiontestcase.CommandActionTest"
6385 "misctestcase.SetupTest"
6386 "filtertestcase.DNSUtilsNetworkTests"
6387 "filtertestcase.IgnoreIPDNS"
6388 "filtertestcase.GetFailures"
6389 "fail2banclienttestcase.Fail2banServerTest"
6390 "servertestcase.ServerConfigReaderTests")))
6391 ""))))
6392 (add-before 'build 'fix-default-config
6393 (lambda _
6394 (substitute* '("config/paths-common.conf"
6395 "fail2ban/tests/utils.py"
6396 "fail2ban/client/configreader.py"
6397 "fail2ban/client/fail2bancmdline.py"
6398 "fail2ban/client/fail2banregex.py")
6399 (("/etc/fail2ban")
6400 (string-append #$output "/etc/fail2ban")))))
6401 (replace 'check
6402 (lambda* (#:key tests? test-flags #:allow-other-keys)
6403 (when tests?
6404 (invoke "./bin/fail2ban-testcases"))))
6405 (add-after 'fix-default-config 'set-action-dependencies
6406 (lambda* (#:key inputs #:allow-other-keys)
6407 ;; deleting things that are not feasible to fix
6408 ;; or won't be used any way
6409 (with-directory-excursion "config/action.d"
6410 (for-each delete-file
6411 '("apf.conf"
6412 "bsd-ipfw.conf"
6413 "dshield.conf"
6414 "ipfilter.conf"
6415 "ipfw.conf"
6416 "firewallcmd-allports.conf"
6417 "firewallcmd-common.conf"
6418 "firewallcmd-ipset.conf"
6419 "firewallcmd-multiport.conf"
6420 "firewallcmd-new.conf"
6421 "firewallcmd-rich-logging.conf"
6422 "firewallcmd-rich-rules.conf"
6423 "osx-afctl.conf"
6424 "osx-ipfw.conf"
6425 "pf.conf"
6426 "nginx-block-map.conf"
6427 "npf.conf"
6428 "shorewall.conf"
6429 "shorewall-ipset-proto6.conf"
6430 "ufw.conf")))
6431 (define (lookup dir file)
6432 (search-input-file inputs (string-append "/" dir "/" file)))
6433
6434 (substitute* (find-files "config/action.d" "\\.conf$")
6435 ;; TODO: deal with geoiplookup ..
6436 (("(awk|curl|dig|jq)" all cmd)
6437 (lookup "bin" cmd))
6438 (("(cat|echo|grep|head|printf|wc) " all cmd)
6439 (string-append (lookup "bin" cmd) " "))
6440 ((" (date|rm|sed|tail|touch|tr) " all cmd)
6441 (string-append " " (lookup "bin" cmd) " "))
6442 (("cut -d")
6443 (string-append (lookup "bin" "cut") " -d"))
6444 (("`date`")
6445 (string-append "`" (lookup "bin" "date") "`"))
6446 (("id -")
6447 (string-append (lookup "bin" "id") " -"))
6448 (("ip (route|-[46] addr)" all rest)
6449 (string-append (lookup "sbin" "ip") rest))
6450 (("ipset ")
6451 (string-append (lookup "sbin" "ipset") " "))
6452 (("(iptables|ip6tables) <" all cmd)
6453 (string-append (lookup "sbin" cmd) " <"))
6454 (("/usr/bin/nsupdate")
6455 (lookup "bin" "nsupdate"))
6456 (("mail -E")
6457 (string-append (lookup "sbin" "sendmail") " -E"))
6458 (("nftables = nft")
6459 (string-append "nftables = " (lookup "sbin" "nft")))
6460 (("perl -e")
6461 (string-append (lookup "bin" "perl") " -e"))
6462 (("/usr/sbin/sendmail")
6463 (lookup "sbin" "sendmail"))
6464 (("test -e")
6465 (string-append (lookup "bin" "test") " -e"))
6466 (("_whois = whois")
6467 (string-append "_whois = " (lookup "bin" "whois"))))
6468
6469 (substitute* "config/jail.conf"
6470 (("before = paths-debian\\.conf")
6471 "before = paths-guix.conf"))))
6472 (add-after 'install 'copy-man-pages
6473 (lambda _
6474 (define (install-man m)
6475 (lambda (f)
6476 (install-file (string-append f "." m)
6477 (string-append #$output "man/man" m))))
6478
6479 (with-directory-excursion "man"
6480 (for-each (install-man "1")
6481 '("fail2ban" "fail2ban-client" "fail2ban-python"
6482 "fail2ban-regex" "fail2ban-server"
6483 "fail2ban-testcases"))
6484 ((install-man "5") "jail.conf")))))))
6485 (native-inputs (list python-aiosmtpd
6486 python-setuptools))
6487 (inputs (list gawk
6488 coreutils-minimal
6489 curl
6490 grep
6491 jq
6492 iproute
6493 ipset
6494 iptables
6495 `(,isc-bind "utils")
6496 nftables
6497 perl
6498 python-pyinotify
6499 sed
6500 sendmail
6501 sqlite
6502 whois))
6503 (home-page "http://www.fail2ban.org")
6504 (synopsis "Daemon to ban hosts that cause multiple authentication errors")
6505 (description
6506 "Fail2Ban scans log files like @file{/var/log/auth.log} and bans IP
6507addresses conducting too many failed login attempts. It does this by updating
6508system firewall rules to reject new connections from those IP addresses, for a
6509configurable amount of time. Fail2Ban comes out-of-the-box ready to read many
6510standard log files, such as those for sshd and Apache, and is easily
6511configured to read any log file of your choosing, for any error you wish.
6512
6513Though Fail2Ban is able to reduce the rate of incorrect authentication
6514attempts, it cannot eliminate the risk presented by weak authentication. Set
6515up services to use only two factor, or public/private authentication
6516mechanisms if you really want to protect services.")
6517 (license license:gpl2+)))
6518
6519(define-public restartd
6520 (let* ((commit "7044125ac55056f2663536f7137170edf92ebd75")
6521 ;; Version is 0.2.4 in the version file in the repo
6522 ;; but not in github tags.
6523 ;; It is released as 0.2.3-1.1 for other distributions.
6524 ;; Probably because of the lack of activity upstream.
6525 (revision "1"))
6526 (package
6527 (name "restartd")
6528 (version (git-version "0.2.3" revision commit))
6529 (source
6530 (origin
6531 (method git-fetch)
6532 (uri (git-reference
6533 (url "https://github.com/ajraymond/restartd")
6534 (commit commit)))
6535 (file-name (git-file-name name version))
6536 (sha256
6537 (base32
6538 "1m1np00b4zvvwx63gzysbi38i5vj1jsjvh2s0p9czl6dzyz582z0"))
6539 (patches (search-patches "restartd-update-robust.patch"))))
6540 (build-system gnu-build-system)
6541 (arguments
6542 (list
6543 #:tests? #f ; no tests
6544 #:make-flags
6545 #~(list (string-append "CC=" #$(cc-for-target)))
6546 #:phases
6547 #~(modify-phases %standard-phases
6548 (delete 'configure)
6549 (replace 'install
6550 (lambda _
6551 (install-file "restartd.conf" (string-append #$output "/etc"))
6552 (install-file "restartd" (string-append #$output "/sbin"))
6553 (install-file "restartd.8"
6554 (string-append #$output "/share/man/man8"))
6555 (mkdir-p (string-append #$output "/share/man/fr/man8"))
6556 (copy-file
6557 "restartd.fr.8"
6558 (string-append #$output "/share/man/fr/man8/restartd.8")))))))
6559 (home-page "https://launchpad.net/debian/+source/restartd")
6560 (synopsis "Daemon for restarting processes")
6561 (description "This package provides a daemon for checking running and
6562not running processes. It reads the @file{/proc} directory every @var{n}
6563seconds and does a POSIX regexp on the process names. The daemon runs a
6564user-provided script when it detects a program in the running processes, or an
6565alternate script if it doesn't detect the program. The daemon can only be
6566called by the root user, but can use @command{sudo -u user} in the process
6567called if needed.")
6568 (license license:gpl2+))))
6569
6570(define-public rex
6571 (package
6572 (name "rex")
6573 (version "4.1")
6574 (source (origin
6575 (method url-fetch)
6576 (uri (string-append
6577 "https://download.gnu.org.ua/pub/releases/rex/rex-"
6578 version ".tar.gz"))
6579 (sha256
6580 (base32
6581 "1arb8z602invwavskq36nhwy42a3v14iyhi06iqlngfai2k93fai"))))
6582 (build-system gnu-build-system)
6583 (arguments
6584 (list
6585 #:tests? #f ; no tests
6586 #:phases
6587 #~(modify-phases %standard-phases
6588 ;; No configure script and Makefile.
6589 (delete 'configure)
6590 (delete 'build)
6591 (add-before 'install 'patch-exec-expect
6592 (lambda _
6593 (substitute* "rex"
6594 (("exec expect") (string-append "exec " (which "expect"))))))
6595 (replace 'install
6596 (lambda _
6597 (invoke "./install"
6598 (string-append "--prefix=" #$output)))))))
6599 (inputs (list expect))
6600 (home-page "https://www.gnu.org.ua/software/rex/")
6601 (synopsis "Remote execution utility")
6602 (description "@command{rex} runs a supplied command or shell script on
6603several hosts in succession or in parallel. It can also be used to copy a
6604file or files to several hosts.")
6605 (license license:gpl3+)))
6606
6607(define-public doctl
6608 (package
6609 (name "doctl")
6610 (version "1.120.0")
6611 (source (origin
6612 (method git-fetch)
6613 (uri (git-reference
6614 (url "https://github.com/digitalocean/doctl")
6615 (commit (string-append "v" version))))
6616 (file-name (git-file-name name version))
6617 (sha256
6618 (base32
6619 "12fgymgiv6894ghar7ljg69hb7mi18pa2a74sp7fyymqvyhiv6z9"))
6620 (snippet
6621 ;; TODO: Unbundle more.
6622 #~(begin (use-modules (guix build utils))
6623 (for-each delete-file-recursively
6624 (list "vendor/golang.org"))))))
6625 (build-system go-build-system)
6626 (arguments
6627 (list #:import-path "github.com/digitalocean/doctl/cmd/doctl"
6628 #:unpack-path "github.com/digitalocean/doctl"
6629 #:build-flags
6630 #~(list (string-append "-ldflags=-X github.com/digitalocean/doctl.Label=release"
6631 " -X github.com/digitalocean/doctl.Major="
6632 (car (string-split #$version #\.))
6633 " -X github.com/digitalocean/doctl.Minor="
6634 (cadr (string-split #$version #\.))
6635 " -X github.com/digitalocean/doctl.Patch="
6636 (caddr (string-split #$version #\.))))
6637 #:install-source? #f
6638 #:phases
6639 #~(modify-phases %standard-phases
6640 (add-after 'install 'install-completions
6641 (lambda _
6642 (define (install-completion shell file)
6643 (let ((file (string-append #$output file)))
6644 (mkdir-p (dirname file))
6645 (with-output-to-file file
6646 (lambda _
6647 (invoke (string-append #$output "/bin/doctl")
6648 "completion" shell)))))
6649 (install-completion "bash" "/etc/bash_completion.d/doctl")
6650 (install-completion "fish"
6651 "/etc/fish/completions/doctl.fish")
6652 (install-completion "zsh"
6653 "/etc/zsh/site-functions/_doctl"))))))
6654 (native-inputs
6655 (list go-golang-org-x-crypto
6656 go-golang-org-x-mod
6657 go-golang-org-x-net
6658 go-golang-org-x-oauth2
6659 go-golang-org-x-sync
6660 go-golang-org-x-sys
6661 go-golang-org-x-term
6662 go-golang-org-x-text
6663 go-golang-org-x-time
6664 go-golang-org-x-tools))
6665 (home-page "https://github.com/digitalocean/doctl")
6666 (synopsis "Command line client for DigitalOcean")
6667 (description
6668 "@code{doctl} provides a unified command line interface to the DigitalOcean API.")
6669 (license license:asl2.0)))
6670
6671(define-public du-dust
6672 (package
6673 (name "du-dust")
6674 (version "1.2.4")
6675 (source
6676 (origin
6677 (method url-fetch)
6678 (uri (crate-uri "du-dust" version))
6679 (file-name (string-append name "-" version ".tar.gz"))
6680 (sha256
6681 (base32 "0lksdw44s4fwyfscn79f8c8s3a5ijwfbxny539lgq0fsv5nx6bid"))))
6682 (build-system cargo-build-system)
6683 (arguments
6684 (list
6685 #:imported-modules (append %copy-build-system-modules
6686 %cargo-build-system-modules)
6687 #:modules '((guix build cargo-build-system)
6688 ((guix build copy-build-system) #:prefix copy:)
6689 (guix build utils))
6690 #:install-source? #f
6691 #:phases
6692 #~(modify-phases %standard-phases
6693 (add-after 'install 'install-extras
6694 (lambda args
6695 (apply (assoc-ref copy:%standard-phases 'install)
6696 #:install-plan
6697 '(("completions/dust.bash"
6698 "share/bash-completion/completions/dust")
6699 ("completions/dust.elv"
6700 "share/elvish/lib/dust")
6701 ("completions/dust.fish"
6702 "share/fish/vendor_completions.d/")
6703 ("completions/_dust"
6704 "share/zsh/site-functions/")
6705 ("man-page/dust.1" "share/man/man1/"))
6706 args))))))
6707 (inputs (cargo-inputs 'du-dust))
6708 (home-page "https://github.com/bootandy/dust")
6709 (synopsis "Graphical disk usage analyzer")
6710 (description "This package provides a graphical disk usage analyzer in
6711text mode.")
6712 (license license:asl2.0)))
6713
6714(define-public mactelnet
6715 (package
6716 (name "mactelnet")
6717 (version "0.4.4")
6718 (source (origin
6719 (method git-fetch)
6720 (uri (git-reference
6721 (url "https://github.com/haakonnessjoen/MAC-Telnet")
6722 (commit (string-append "v" version))))
6723 (file-name (git-file-name name version))
6724 (sha256
6725 (base32
6726 "1z63dz22crrvrm0sh2cwpyqb7wqd9m45m6f2641mwmyp6hcpf4k4"))
6727 (patches (search-patches "mactelnet-remove-init.patch"))
6728 (modules '((guix build utils)))
6729 (snippet
6730 #~(begin
6731 (delete-file "src/utlist.h")
6732 (substitute* (find-files "src/" "\\.c$")
6733 (("\"utlist\\.h\"") "<utlist.h>"))))))
6734 (build-system gnu-build-system)
6735 (arguments
6736 (list
6737 #:tests? #f)) ; no tests
6738 (native-inputs (list autoconf automake gettext-minimal))
6739 (inputs (list uthash))
6740 (synopsis "MAC-Telnet utilities for communicating with RouterOS devices")
6741 (description "This package provides an implementation of the MAC-Telnet protocol
6742used by RouterOS devices. It provides the following commands:
6743@table @command
6744@item{macping}
6745Ping RouterOS devices or @command{mactelnetd} hosts.
6746@item{mactelnetd}
6747MAC-Telnet daemon.
6748@item{mactelnet}
6749MAC-Telnet client.
6750@item{mndp}
6751Discover other RouterOS devices or @command{mactelnetd} hosts.
6752@end table")
6753 (home-page "https://lunatic.no/2010/10/routeros-mac-telnet-application-for-linux-users/")
6754 (license
6755 (list license:gpl2+
6756 ;; Note: applies to src/md5.{c,h}
6757 ;; This file is likely to be gone in the next release.
6758 license:zlib))))
6759
6760(define-public bfs
6761 (package
6762 (name "bfs")
6763 (version "4.1.4")
6764 (source (origin
6765 (method git-fetch)
6766 (uri (git-reference
6767 (url "https://github.com/tavianator/bfs")
6768 (commit version)))
6769 (file-name (git-file-name name version))
6770 (sha256
6771 (base32
6772 "08ym2mzms87vipim8q360drabrlhh8nkj1jzidck19mvkvvx0hvs"))))
6773 (build-system gnu-build-system)
6774 (arguments
6775 (list
6776 #:phases
6777 #~(modify-phases %standard-phases
6778 (replace 'configure
6779 (lambda _
6780 ;; bfs uses a custom configure script.
6781 (invoke "./configure"
6782 "--enable-release"
6783 (string-append "CC=" #$(cc-for-target))
6784 (string-append "--prefix=" #$output))))
6785 (add-before 'check 'disable-exec-no-path-test
6786 (lambda _
6787 ;; This test unsets PATH. It then probably cannot find
6788 ;; echo since it's not inside _PATH_STDPATH (?). We
6789 ;; delete the test to disable it.
6790 (delete-file "tests/posix/exec_nopath.sh")))
6791 (add-after 'disable-exec-no-path-test 'set-paths-in-tests
6792 (lambda* (#:key inputs tests? #:allow-other-keys)
6793 (when tests?
6794 (substitute* '("tests/bfs/execdir_path_relative_slash.sh"
6795 "tests/gnu/execdir_self.sh"
6796 "tests/xspawn.c")
6797 (("/bin/sh\\>") (search-input-file inputs "bin/sh")))))))))
6798 (inputs (list acl attr libcap liburing oniguruma))
6799 (synopsis "Breadth-first search for your files")
6800 (description
6801 "Bfs is a variant of the UNIX @command{find} command that operates
6802breadth-first rather than depth-first. It is otherwise compatible with many
6803versions of @command{find}, including POSIX, GNU, and *BSD find.")
6804 (home-page "https://tavianator.com/projects/bfs.html")
6805 (license license:bsd-0)))
6806
6807(define-public rdfind
6808 (package
6809 (name "rdfind")
6810 (version "1.8.0")
6811 (source
6812 (origin
6813 (method url-fetch)
6814 (uri (string-append "https://rdfind.pauldreik.se/" name "-" version
6815 ".tar.gz"))
6816 (sha256
6817 (base32 "0ddgwx9131ba8ym75xnrz2rcy7l1rjdn8yzf6h0xrhic00r0sb8a"))))
6818 (build-system gnu-build-system)
6819 (native-inputs (list which))
6820 (inputs (list nettle))
6821 (arguments
6822 (list
6823 #:phases #~(modify-phases %standard-phases
6824 (add-before 'check 'patch-tests
6825 (lambda _
6826 (substitute* (list "testcases/hardlink_fails.sh"
6827 "testcases/symlinking_action.sh")
6828 (("\"/bin/sh -c\"")
6829 (format #f
6830 "\"~a -c\""
6831 (search-input-file %build-inputs "/bin/sh"))))
6832 (substitute* "testcases/common_funcs.sh"
6833 (("/bin/echo")
6834 (search-input-file %build-inputs "/bin/echo"))))))))
6835 (home-page "https://rdfind.pauldreik.se")
6836 (synopsis "Find duplicate files")
6837 (description
6838 "Rdfind is a command line tool that finds duplicate files based on
6839their content instead of their file names. It is useful for compressing
6840backup directories or just finding duplicate files.")
6841 (license license:gpl2+)))
6842
6843(define-public sshguard
6844 (package
6845 (name "sshguard")
6846 (version "2.5.1")
6847 (source
6848 (origin
6849 (method git-fetch)
6850 (uri (git-reference
6851 (url "https://bitbucket.org/sshguard/sshguard")
6852 (commit (string-append "v" version))))
6853 (file-name (git-file-name name version))
6854 (sha256
6855 (base32 "1wpxvqwk4k40liq6x5ada6zy77mnp319zz1w0cs2wyq3a5ilpnvr"))))
6856 (build-system gnu-build-system)
6857 (native-inputs
6858 (list autoconf automake bison flex python-docutils))
6859 (arguments
6860 (list #:phases
6861 #~(modify-phases %standard-phases
6862 ;; patch sshguard to find configuration through
6863 ;; environment variable
6864 (add-after 'unpack 'patch-sshguard
6865 (lambda _
6866 (substitute* "src/sshguard.in"
6867 (("^config=.*$")
6868 "config=${SSHGUARD_CONFIG_FILE:-@sysconfdir@/sshguard.conf}\n")))))))
6869 (home-page "https://sshguard.net/")
6870 (synopsis "Daemon to blocks SSH brute-force attacks")
6871 (description
6872 "SSHGuard protects hosts from brute-force attacks against SSH and other
6873services. It aggregates system logs and blocks repeat offenders using one of
6874several firewall backends.")
6875 (license license:isc)))
6876
6877(define-public px
6878 (package
6879 (name "px")
6880 (version "3.6.12")
6881 (source
6882 (origin
6883 (method git-fetch)
6884 (uri (git-reference
6885 (url "https://github.com/walles/px")
6886 (commit version)))
6887 (file-name (git-file-name name version))
6888 (sha256
6889 (base32 "06jg6izya1k5gk71pygv8691fcaa6zfnzns57fjknnihz3c42pzw"))))
6890 (build-system pyproject-build-system)
6891 (arguments
6892 (list
6893 #:test-flags
6894 ;; Tests requiring networking setup or root access.
6895 #~(list "-k" (string-join
6896 (list "not test_get_all_defaultlocale"
6897 "test_get_all_swedish"
6898 "test_match"
6899 "test_ps_line_to_process_1"
6900 "test_ps_line_to_process_2"
6901 "test_ps_line_to_process_unicode"
6902 "test_stdfds_ipc_and_network"
6903 "test_str_resolve"
6904 "test_to_screen_lines_unbounded"
6905 "test_to_screen_lines_unicode")
6906 " and not "))
6907 #:phases
6908 #~(modify-phases %standard-phases
6909 (add-after 'unpack 'patch-git
6910 (lambda* (#:key inputs #:allow-other-keys)
6911 (substitute* (find-files "px" "\\.py$")
6912 ;; We don't have MacOS X programs.
6913 (("px_exec_util[.]run[(]\\[\"(vm_stat)\"" all x)
6914 (string-append "px_exec_util.run([\""
6915 "/bin/false"
6916 "\""))
6917 ;; Patch names of executables in "sbin".
6918 (("px_exec_util[.]run[(]\\[\"(sysctl)\"" all x)
6919 (string-append "px_exec_util.run([\""
6920 (search-input-file inputs
6921 (string-append "sbin/" x))
6922 "\""))
6923 ;; Patch names of executables in "bin".
6924 (("px_exec_util[.]run[(]\\[\"([^/\"]*)\"" all x)
6925 (string-append "px_exec_util.run([\""
6926 (search-input-file inputs
6927 (string-append "bin/" x))
6928 "\"")))
6929 (substitute* "px/px_process.py"
6930 ;; Patch path name of "ps" executable.
6931 (("\"/bin/ps\"") (string-append "\""
6932 (assoc-ref inputs "procps")
6933 "/bin/ps\"")))
6934 (substitute* "setup.py"
6935 ;; Patch "git describe", replacing it by its result.
6936 (("\\[\"git\", \"describe\", \"--dirty\"\\]")
6937 (string-append "[\"echo\", \"" #$version "\"]"))))))))
6938 (native-inputs
6939 (list pkg-config
6940 python-setuptools
6941 python-wheel
6942 python-pytest
6943 python-dateutil))
6944 (inputs
6945 (list lsof
6946 net-tools
6947 procps
6948 sysstat
6949 util-linux))
6950 (home-page "https://github.com/walles/px")
6951 (synopsis "Alternative to @command{ps}, @command{top} and @command{pstree}")
6952 (description
6953 "This package provides a way to figure out which processes communicate
6954with which other processes. It provides more usable versions of @command{ps},
6955@command{top} and @command{pstree}.")
6956 (license license:expat)))
6957
6958(define-public witr
6959 (package
6960 (name "witr")
6961 (version "0.3.3")
6962 (source
6963 (origin
6964 (method git-fetch)
6965 (uri (git-reference
6966 (url "https://github.com/pranshuparmar/witr")
6967 (commit (string-append "v" version))))
6968 (file-name (git-file-name name version))
6969 (sha256
6970 (base32 "0c995b1c267sngg21546n60pqh09vc2pm6xbdy48kx5fwmi01w4h"))))
6971 (build-system go-build-system)
6972 (arguments
6973 (list
6974 #:install-source? #f
6975 #:import-path "github.com/pranshuparmar/witr/cmd/witr"
6976 #:unpack-path "github.com/pranshuparmar/witr"
6977 #:build-flags #~(list "-ldflags"
6978 (string-append "-X main.version=" #$version))))
6979 (home-page "https://github.com/pranshuparmar/witr")
6980 (synopsis "Utility to show why the process is running")
6981 (description
6982 "The @dfn{witr} (why-is-this-running), is a utility to show:
6983@enumerate
6984@item What is running?
6985@item How did it start?
6986@item What is keeping it running?
6987@item What context does it belong to?
6988@end enumerate
6989It shows which process uses the port, and its information like process tree,
6990working directory, user, pid, command, and so on.")
6991 (license license:asl2.0)))
6992
6993(define-public radius
6994 (package
6995 (name "radius")
6996 (version "1.7")
6997 (source
6998 (origin
6999 (method url-fetch)
7000 (uri (string-append "mirror://gnu/radius/radius-" version ".tar.xz"))
7001 (sha256
7002 (base32 "0n9k30ma7n9xmjwlvsv9x333g52lfplbpzcyg0vh2wmm423bvy36"))))
7003 (build-system gnu-build-system)
7004 (arguments
7005 (list
7006 #:configure-flags
7007 #~(list "--with-log-dir=/var/log"
7008 #$@(if (target-hurd?)
7009 '()
7010 '("--with-libpam")))
7011 #:phases
7012 #~(modify-phases %standard-phases
7013 (add-before 'check 'skip-failing-tests
7014 (lambda _
7015 (for-each (lambda (test)
7016 (substitute* "tests/testsuite.at"
7017 ((test)
7018 "")))
7019 (list "execwait")))))))
7020 (inputs (append (if (target-hurd?)
7021 '()
7022 (list linux-pam util-linux))
7023 (list acl
7024 gawk
7025 gdbm
7026 gettext-minimal
7027 guile-3.0
7028 libxcrypt
7029 readline)))
7030 (native-inputs (list autoconf
7031 bash-minimal
7032 bison
7033 flex
7034 groff
7035 m4
7036 procps
7037 texinfo))
7038 (home-page "https://www.gnu.org/software/radius/")
7039 (synopsis "Authentication and accounting services and daemon")
7040 (description
7041 "GNU Radius is a server for remote user authentication and accounting. It
7042is generally useful for networks that require a centralized authentication
7043and accounting services for its workstations. Authentication can be
7044performed in a variety of ways, such as via @file{/etc/passwd} or credentials
7045stored in an SQL database.")
7046 (license license:gpl3+)))
7047
7048(define-public xfel
7049 (package
7050 (name "xfel")
7051 (version "1.3.5")
7052 (source
7053 (origin
7054 (method git-fetch)
7055 (uri (git-reference
7056 (url "https://github.com/xboot/xfel")
7057 (commit (string-append "v" version))))
7058 (sha256
7059 (base32 "1vmb3dr3vplxdxn9i8i4chdnfihb429rakvkqsfccb885ivkkn3b"))
7060 (file-name (git-file-name name version))))
7061 (native-inputs
7062 (list pkg-config))
7063 (inputs
7064 (list libusb))
7065 (build-system gnu-build-system)
7066 (arguments
7067 (list #:tests? #f ; No tests exist
7068 #:make-flags #~(list "PREFIX="
7069 (string-append "DESTDIR=" #$output))
7070 #:phases
7071 #~(modify-phases %standard-phases
7072 (delete 'configure)
7073 (add-after 'unpack 'patch-makefile
7074 (lambda _
7075 (substitute* "Makefile"
7076 (("/usr/local")
7077 #$output)
7078 (("/usr/share")
7079 (string-append #$output "/share/"))
7080 (("/etc/udev/rules.d")
7081 (string-append #$output "/lib/udev/rules.d"))))))))
7082 (home-page "https://github.com/xboot/xfel")
7083 (synopsis "Remote debugging tool for Allwinner devices")
7084 (description "This package contains a debugging tool for Allwinner devices
7085(connects via USB OTG).")
7086 (license license:expat)))
7087
7088(define-public yoctofetch
7089 (package
7090 (name "yoctofetch")
7091 (version "2.0.0")
7092 (source
7093 (origin
7094 (method git-fetch)
7095 (uri (git-reference
7096 (url "https://codeberg.org/Phosphenius/yoctofetch.git")
7097 (commit (string-append "v" version))))
7098 (file-name (git-file-name name version))
7099 (sha256
7100 (base32 "0smkaydv74p2231gafibvqbwsy469w56hya8gz8wq0gw7m2l7zh3"))))
7101 ; Support for other platforms not available per upstream:
7102 ; https://codeberg.org/Phosphenius/yoctofetch#supported-platforms
7103 (supported-systems '("x86_64-linux" "aarch64-linux"))
7104 (build-system gnu-build-system)
7105 (arguments
7106 (list
7107 #:tests? #f)) ; No tests available.
7108 (home-page "https://codeberg.org/Phosphenius/yoctofetch")
7109 (synopsis "Fast and low footprint system fetch tool for the Linux UAPI")
7110 (description
7111 "This package provides a system fetch tool, similar to
7112@command{neofetch}, @command{fastfetch}, etc. It is lightweight and
7113has a focus on performance. It can be used as a greeter by starting
7114it from @file{~/.bashrc} for example.")
7115 (license license:agpl3+)))
7116
7117(define-public zeptofetch
7118 (package
7119 (name "zeptofetch")
7120 (version "2.1")
7121 (source
7122 (origin
7123 (method git-fetch)
7124 (uri (git-reference
7125 (url "https://gitlab.archlinux.org/gurov/zeptofetch")
7126 (commit (string-append "v" version))))
7127 (file-name (git-file-name name version))
7128 (sha256
7129 (base32 "0fg8c5lsvcjspwb64c8hax80i3h0nq1jswf93n3vdgf48l76jpyh"))))
7130 (build-system gnu-build-system)
7131 (arguments
7132 (list
7133 #:tests? #f ; No tests available.
7134 #:make-flags
7135 #~(list (string-append "PREFIX=" #$output)
7136 (string-append "CC=" #$(cc-for-target)))
7137 #:phases
7138 #~(modify-phases %standard-phases
7139 (delete 'configure)))) ; No configure script.
7140 (home-page "https://gitlab.archlinux.org/gurov/zeptofetch")
7141 (synopsis
7142 "Fast, minimal system information tool for Linux")
7143 (description
7144 "This package provides a system fetch tool, similar to
7145@command{neofetch}, @command{fastfetch}, etc. It is lightweight and
7146has a focus on performance.")
7147 (license license:gpl3+)))
7148
7149(define-public zzz
7150 (package
7151 (name "zzz")
7152 (version "20250212")
7153 (source
7154 (origin
7155 (method git-fetch)
7156 (uri (git-reference
7157 (url "https://github.com/void-linux/void-runit")
7158 (commit version)))
7159 (file-name (git-file-name name version))
7160 (sha256
7161 (base32
7162 "00nbnjmxwvqj5hf0g00ma26hb29i9mr05g8ls24icp1409c2ykkc"))))
7163 (build-system copy-build-system)
7164 (arguments
7165 (list #:install-plan
7166 #~'(("zzz" "sbin/")
7167 ("zzz.8" "share/man/man8/"))
7168 #:phases
7169 #~(modify-phases %standard-phases
7170 (add-after 'unpack 'patch-zzz
7171 (lambda* (#:key inputs #:allow-other-keys)
7172 (substitute* "zzz"
7173 (("flock") (search-input-file inputs "bin/flock"))
7174 (("grep") (search-input-file inputs "bin/grep"))))))))
7175 (inputs
7176 (list grep util-linux))
7177 (home-page "https://github.com/void-linux/void-runit")
7178 (synopsis "Simple script to suspend or hibernate your computer")
7179 (description "Simple script to suspend or hibernate your computer. It
7180supports hooks before and after suspending.")
7181 (license license:cc0)))