projects/guix·blob python-team · refs

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