projects/guix·blob python-team · refs

1521 lines · 54.9 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <[email protected]>
3;;; Copyright © 2015 Amirouche Boubekki <[email protected]>
4;;; Copyright © 2016 Al McElrath <[email protected]>
5;;; Copyright © 2016, 2017 Nikita <[email protected]>
6;;; Copyright © 2015 Dmitry Bogatov <[email protected]>
7;;; Copyright © 2015, 2023 Leo Famulari <[email protected]>
8;;; Copyright © 2016 Eric Bavier <[email protected]>
9;;; Copyright © 2017 Alex Griffin <[email protected]>
10;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <[email protected]>
11;;; Copyright © 2021 Raghav Gururajan <[email protected]>
12;;; Copyright © 2021 Alexandru-Sergiu Marton <[email protected]>
13;;; Copyright © 2021 Nikolay Korotkiy <[email protected]>
14;;; Copyright © 2022 Jai Vetrivelan <[email protected]>
15;;; Copyright © 2022 jgart <[email protected]>
16;;; Copyright © 2022 Antero Mejr <[email protected]>
17;;; Copyright © 2022 Ivan Vilata i Balaguer <[email protected]>
18;;; Copyright © 2024 Clément Lassieur <[email protected]>
19;;; Copyright © 2024 Zheng Junjie <[email protected]>
20;;; Copyright © 2024 cage <[email protected]>
21;;; Copyright © 2025, 2026 Artyom V. Poptsov <[email protected]>
22;;;
23;;; This file is part of GNU Guix.
24;;;
25;;; GNU Guix is free software; you can redistribute it and/or modify it
26;;; under the terms of the GNU General Public License as published by
27;;; the Free Software Foundation; either version 3 of the License, or (at
28;;; your option) any later version.
29;;;
30;;; GNU Guix is distributed in the hope that it will be useful, but
31;;; WITHOUT ANY WARRANTY; without even the implied warranty of
32;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33;;; GNU General Public License for more details.
34;;;
35;;; You should have received a copy of the GNU General Public License
36;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
37
38(define-module (gnu packages suckless)
39 #:use-module (gnu packages)
40 #:use-module (gnu packages base)
41 #:use-module (gnu packages bash)
42 #:use-module (gnu packages crypto)
43 #:use-module (gnu packages compression)
44 #:use-module (gnu packages cups)
45 #:use-module (gnu packages fonts)
46 #:use-module (gnu packages fontutils)
47 #:use-module (gnu packages freedesktop)
48 #:use-module (gnu packages gawk)
49 #:use-module (gnu packages gcc)
50 #:use-module (gnu packages glib)
51 #:use-module (gnu packages gnome)
52 #:use-module (gnu packages gtk)
53 #:use-module (gnu packages image)
54 #:use-module (gnu packages imagemagick)
55 #:use-module (gnu packages libbsd)
56 #:use-module (gnu packages linux)
57 #:use-module (gnu packages mpd)
58 #:use-module (gnu packages ncurses)
59 #:use-module (gnu packages pkg-config)
60 #:use-module (gnu packages shells)
61 #:use-module (gnu packages webkit)
62 #:use-module (gnu packages xorg)
63 #:use-module (gnu packages xdisorg)
64 #:use-module (guix build-system cargo)
65 #:use-module (guix build-system glib-or-gtk)
66 #:use-module (guix build-system gnu)
67 #:use-module (guix build-system meson)
68 #:use-module (guix download)
69 #:use-module (guix gexp)
70 #:use-module (guix git-download)
71 #:use-module ((guix licenses) #:prefix license:)
72 #:use-module (guix scripts)
73 #:use-module (guix utils)
74 #:use-module (guix packages))
75
76(define-public slscroll
77 (package
78 (name "slscroll")
79 (version "0.1")
80 (source
81 (origin
82 (method url-fetch)
83 (uri (string-append "https://dl.suckless.org/tools/scroll-"
84 version ".tar.gz"))
85 (sha256
86 (base32 "1mpfrvn122lnaqid1pi99ckpxd6x679b0w91pl003xmdwsfdbcly"))))
87 (build-system gnu-build-system)
88 (arguments
89 (list
90 #:tests? #f ; no check target
91 #:make-flags
92 #~(list
93 (string-append "CC=" #$(cc-for-target))
94 (string-append "PREFIX=" #$output))
95 #:phases
96 #~(modify-phases %standard-phases
97 (delete 'configure)))) ; no configure script
98 (home-page "https://tools.suckless.org/scroll/")
99 (synopsis "Scroll-back buffer program for st")
100 (description "Scroll is a program that provides a scroll back buffer for
101terminal like @code{st}.")
102 (license license:isc)))
103
104(define-public tabbed
105 (package
106 (name "tabbed")
107 (version "0.9")
108 (source
109 (origin
110 (method url-fetch)
111 (uri (string-append "https://dl.suckless.org/tools/tabbed-"
112 version ".tar.gz"))
113 (sha256
114 (base32 "1a0842lw666cnx5mx2xqqrad4ipvbz4wxad3pxpyc6blgd2qgkqa"))))
115 (build-system gnu-build-system)
116 (arguments
117 (list
118 #:tests? #f ; no check target
119 #:phases
120 #~(modify-phases %standard-phases
121 (add-after 'unpack 'patch
122 (lambda* (#:key inputs outputs #:allow-other-keys)
123 (substitute* "Makefile"
124 (("/usr/local") #$output)
125 (("/usr/X11R6") #$(this-package-input "libx11"))
126 (("/usr/include/freetype2")
127 (string-append #$(this-package-input "freetype")
128 "/include/freetype2"))
129 (("\\$\\{CC\\}")
130 (string-append #$(cc-for-target))))))
131 (delete 'configure)))) ; no configure script
132 (inputs
133 (list fontconfig
134 freetype
135 libx11
136 libxft))
137 (home-page "https://tools.suckless.org/tabbed/")
138 (synopsis "Tab interface for application supporting Xembed")
139 (description "Tabbed is a generic tabbed frontend to xembed-aware
140applications. It was originally designed for surf but also usable with many
141other applications, i.e., st, uzbl, urxvt and xterm.")
142 (license
143 ;; Dual-licensed.
144 (list
145 license:expat
146 license:x11))))
147
148(define-public slstatus
149 (package
150 (name "slstatus")
151 (version "1.1")
152 (source
153 (origin
154 (method git-fetch)
155 (uri
156 (git-reference
157 (url "git://git.suckless.org/slstatus")
158 (commit version)))
159 (file-name (git-file-name name version))
160 (sha256
161 (base32 "1bxmhvagmlqjyi9ws8i71r0k7fd6fg8286zv2b5zkcjhkayyh41i"))))
162 (build-system gnu-build-system)
163 (arguments
164 (list
165 #:tests? #f ;no test suite
166 #:phases
167 #~(modify-phases %standard-phases
168 (add-after 'unpack 'patch
169 (lambda* (#:key inputs outputs #:allow-other-keys)
170 (substitute* "config.mk"
171 (("/usr/local") #$output)
172 (("/usr/X11R6") #$(this-package-input "libx11"))
173 (("CC = cc")
174 (string-append "CC = " #$(cc-for-target))))))
175 (delete 'configure)))) ;no configure script
176 (inputs (list libx11))
177 (home-page "https://tools.suckless.org/slstatus/")
178 (synopsis "Status monitor for window managers")
179 (description "SlStatus is a suckless status monitor for window managers
180that use WM_NAME or stdin to fill the status bar.
181It provides the following features:
182@itemize
183@item Battery percentage/state/time left
184@item CPU usage
185@item CPU frequency
186@item Custom shell commands
187@item Date and time
188@item Disk status (free storage, percentage, total storage and used storage)
189@item Available entropy
190@item Username/GID/UID
191@item Hostname
192@item IP address (IPv4 and IPv6)
193@item Kernel version
194@item Keyboard indicators
195@item Keymap
196@item Load average
197@item Network speeds (RX and TX)
198@item Number of files in a directory (hint: Maildir)
199@item Memory status (free memory, percentage, total memory and used memory)
200@item Swap status (free swap, percentage, total swap and used swap)
201@item Temperature
202@item Uptime
203@item Volume percentage
204@item WiFi signal percentage and ESSID
205@end itemize")
206 (license license:isc)))
207
208(define-public blind
209 (package
210 (name "blind")
211 (version "1.1")
212 (source (origin
213 (method url-fetch)
214 (uri (string-append "https://dl.suckless.org/tools/blind-"
215 version ".tar.gz"))
216 (sha256
217 (base32
218 "0nncvzyipvkkd7zlgzwbjygp82frzs2hvbnk71gxf671np607y94"))))
219 (build-system gnu-build-system)
220 (arguments
221 (list
222 #:tests? #f ; no check target
223 #:make-flags
224 #~(list (string-append "CC=" #$(cc-for-target))
225 (string-append "PREFIX=" #$output))
226 #:phases
227 #~(modify-phases %standard-phases
228 (delete 'configure)))) ; no configure script
229 (synopsis "Command line video editing utilities")
230 (home-page "https://tools.suckless.org/blind/")
231 (description
232 "Blind is a collection of command line video editing utilities. It uses
233a custom raw video format with a simple container.")
234 (license license:isc)))
235
236(define-public dwm
237 (package
238 (name "dwm")
239 (version "6.8")
240 (synopsis "Dynamic Window Manager")
241 (source (origin
242 (method git-fetch)
243 (uri (git-reference
244 (url "https://git.suckless.org/dwm")
245 (commit version)))
246 (file-name (git-file-name name version))
247 (sha256
248 (base32 "1jim52kp34dbkzna1m2l0dhz9fjgzv3mpaiifj9m2dbxlnd0ahws"))))
249 (build-system gnu-build-system)
250 (arguments
251 (list
252 #:tests? #f
253 #:make-flags
254 #~(list
255 (string-append "CC=" #$(cc-for-target))
256 "PREFIX="
257 (string-append "DESTDIR=" #$output)
258 (string-append "FREETYPEINC="
259 #$(this-package-input "freetype")
260 "/include/freetype2"))
261 #:phases
262 #~(modify-phases %standard-phases
263 (delete 'configure)
264 (add-after 'build 'install-xsession
265 (lambda _
266 ;; Add a .desktop file to xsessions.
267 (let ((apps (string-append #$output "/share/xsessions")))
268 (mkdir-p apps)
269 (make-desktop-entry-file
270 (string-append apps "/dwm.desktop")
271 #:name "dwm"
272 #:generic-name #$synopsis
273 #:exec (string-append #$output "/bin/dwm")
274 #:comment
275 `(("en" ,#$synopsis)
276 (#f ,#$synopsis)))))))))
277 (inputs
278 (list freetype libx11 libxft libxinerama))
279 (home-page "https://dwm.suckless.org/")
280 (description
281 "dwm is a dynamic window manager for X. It manages windows in tiled,
282monocle and floating layouts. All of the layouts can be applied dynamically,
283optimising the environment for the application in use and the task performed.")
284 (license license:x11)))
285
286(define-public dmenu
287 (package
288 (name "dmenu")
289 (version "5.4")
290 (source (origin
291 (method url-fetch)
292 (uri (string-append "https://dl.suckless.org/tools/dmenu-"
293 version ".tar.gz"))
294 (sha256
295 (base32
296 "0lyldkxshbgh7alz7a50l167pk1d4lcb2rhhhvz81aj710mcxflg"))))
297 (build-system gnu-build-system)
298 (arguments
299 (list
300 #:tests? #f ; no tests
301 #:make-flags
302 #~(list
303 (string-append "CC=" #$(cc-for-target))
304 (string-append "PREFIX=" #$output)
305 (string-append "FREETYPEINC="
306 #$(this-package-input "freetype")
307 "/include/freetype2"))
308 #:phases
309 #~(modify-phases %standard-phases (delete 'configure))))
310 (inputs
311 (list freetype libxft libx11 libxinerama))
312 (home-page "https://tools.suckless.org/dmenu/")
313 (synopsis "Dynamic menu")
314 (description
315 "A dynamic menu for X, originally designed for dwm. It manages large
316numbers of user-defined menu items efficiently.")
317 (license license:x11)))
318
319(define-public dmenu-wayland
320 ;; No fresh release since 20219.
321 (let ((commit "a380201dff5bfac2dace553d7eaedb6cea6855f9")
322 (revision "0"))
323 (package
324 (name "dmenu-wayland")
325 (version (git-version "0.1" revision commit))
326 (source
327 (origin
328 (method git-fetch)
329 (uri (git-reference
330 (url "https://github.com/nyyManni/dmenu-wayland")
331 (commit commit)))
332 (file-name (git-file-name name version))
333 (sha256
334 (base32 "1d920lzgchqgp9j72hg61qnwr5cbf3knwrn1kwxlqq4id59nz8bn"))))
335 (build-system meson-build-system)
336 (arguments
337 (list
338 #:configure-flags
339 ;; Fix GCC 14 build
340 #~(list "-Dc_args=-Wno-format")
341 #:phases
342 #~(modify-phases %standard-phases
343 (add-after 'unpack 'fix-hardcoded-paths
344 (lambda* _
345 (substitute* "dmenu-wl_run"
346 (("dmenu-wl_path")
347 (string-append #$output "/bin/dmenu-wl_path"))
348 (("dmenu-wl ")
349 (string-append #$output "/bin/dmenu-wl "))))))))
350 (native-inputs
351 (list pkg-config))
352 (inputs
353 (list bash-minimal
354 cairo
355 pango
356 glib
357 libxkbcommon
358 wayland
359 wayland-protocols))
360 (home-page "https://github.com/nyyManni/dmenu-wayland")
361 (synopsis "Dynamic menu for wayland")
362 (description
363 "This package implements a functionality to display newline-separated
364input stdin as a menubar for Wayland and @code{wlroots}.")
365 (license license:expat))))
366
367(define-public spoon
368 (package
369 (name "spoon")
370 (version "0.6")
371 (source
372 (origin
373 (method url-fetch)
374 (uri (string-append "https://dl.2f30.org/releases/"
375 "spoon-" version ".tar.gz"))
376 (sha256
377 (base32
378 "1jpmg9k9f4f3lpz0k3cphqjswlyf8lz2sm8ccifiip93kd4rrdj0"))))
379 (build-system gnu-build-system)
380 (arguments
381 `(#:tests? #f ; no tests
382 #:make-flags
383 (list (string-append "CC=" ,(cc-for-target))
384 (string-append "PREFIX=" %output))))
385 (inputs
386 (list libx11 libxkbfile alsa-lib ; tinyalsa (unpackaged) would suffice
387 libmpdclient))
388 (home-page "https://git.2f30.org/spoon/")
389 (synopsis "Set dwm status")
390 (description
391 "Spoon can be used to set the dwm status.")
392 (license license:isc)))
393
394(define-public slock
395 (package
396 (name "slock")
397 (version "1.7")
398 (source
399 (origin
400 (method git-fetch)
401 (uri (git-reference
402 (url "git://git.suckless.org/slock/")
403 (commit version)))
404 (file-name (git-file-name name version))
405 (sha256
406 (base32
407 "0y52kmdayypqpx69ns9lyjgmjr553xs36qa32vnp2lq873j3knfy"))))
408 (build-system gnu-build-system)
409 (arguments
410 (list #:tests? #f ; no tests
411 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
412 (string-append "PREFIX=" #$output))
413 #:phases #~(modify-phases %standard-phases
414 (delete 'configure))))
415 (inputs
416 (list libx11 libxcrypt libxext libxinerama libxrandr))
417 (home-page "https://tools.suckless.org/slock/")
418 (synopsis "Simple X session lock")
419 (description
420 "Simple X session lock with trivial feedback on password entry.")
421 (license license:x11)))
422
423(define-public st
424 (package
425 (name "st")
426 (version "0.9.3")
427 (source
428 (origin
429 (method url-fetch)
430 (uri (string-append "https://dl.suckless.org/st/st-"
431 version ".tar.gz"))
432 (sha256
433 (base32 "16v4dsjrsh5jwah38ygg8808zc536szwxj1qxm6kswgdrnmzxncy"))))
434 (build-system gnu-build-system)
435 (arguments
436 (list
437 #:tests? #f ;no tests
438 #:make-flags
439 #~(list
440 (string-append "CC=" #$(cc-for-target))
441 (string-append "PKG_CONFIG=" #$(pkg-config-for-target))
442 (string-append "TERMINFO=" #$output "/share/terminfo")
443 (string-append "PREFIX=" #$output))
444 #:phases
445 #~(modify-phases %standard-phases
446 (delete 'configure))))
447 (inputs
448 (list libx11
449 libxft
450 fontconfig
451 freetype))
452 (native-inputs
453 (list ncurses ;provides tic program
454 pkg-config))
455 (home-page "https://st.suckless.org/")
456 (synopsis "Simple terminal emulator")
457 (description
458 "St implements a simple and lightweight terminal emulator. It
459implements 256 colors, most VT10X escape sequences, utf8, X11 copy/paste,
460antialiased fonts (using fontconfig), fallback fonts, resizing, and line
461drawing.")
462 (license (list license:x11
463 license:expat))))
464
465(define-public xst
466 (package
467 (inherit st)
468 (name "xst")
469 (version "0.10.0")
470 (source
471 (origin
472 (method git-fetch)
473 (uri (git-reference
474 (url "https://github.com/gnotclub/xst")
475 (commit (string-append "v" version))))
476 (file-name (git-file-name name version))
477 (sha256
478 (base32 "186kqvrn0rksmvz0yhllsrxqsvsxwwcdr417jxs1fk5d9psx35fs"))))
479 (home-page "https://github.com/gnotclub/xst")
480 (synopsis "Fork of st that uses Xresources")
481 (description
482 "@command{xst} uses Xresources and applies the following patches to
483@command{st}:
484@itemize
485@item @uref{https://st.suckless.org/patches/alpha/, alpha}
486@item @uref{https://st.suckless.org/patches/boxdraw/, boxdraw}
487@item @uref{https://st.suckless.org/patches/clipboard/, clipboard}
488@item @uref{https://st.suckless.org/patches/disable_bold_italic_fonts/, disable_bold_italic_fonts}
489@item @uref{https://st.suckless.org/patches/externalpipe/, externalpipe}
490@item @uref{https://st.suckless.org/patches/scrollback/, scrollback}
491@item @uref{https://st.suckless.org/patches/spoiler/, spoiler}
492@item @uref{https://st.suckless.org/patches/vertcenter/, vertcenter}
493@end itemize")
494 (license (list license:x11
495 license:expat))))
496
497(define-public lukesmithxyz-st
498 (let ((commit "62ebf677d3ad79e0596ff610127df5db034cd234")
499 (revision "1"))
500 (package
501 (inherit st)
502 (name "lukesmithxyz-st")
503 (version (git-version "0.8.4" revision commit))
504 (source
505 (origin
506 (method git-fetch)
507 (uri (git-reference
508 (url "https://github.com/LukeSmithxyz/st")
509 (commit commit)))
510 (file-name (git-file-name name version))
511 (sha256
512 (base32 "1cqnl8zlxccqg0901gx21h06j9wk3ja6lr8wp4k85ni4msf4m09g"))))
513 (arguments
514 (substitute-keyword-arguments arguments
515 ((#:phases phases)
516 #~(modify-phases #$phases
517 (add-after 'unpack 'remove-calls-to-git
518 (lambda _
519 (substitute* "Makefile"
520 (("git submodule init") "")
521 (("git submodule update") ""))))))))
522 (inputs (modify-inputs inputs
523 (prepend libxext harfbuzz)))
524 (home-page "https://github.com/LukeSmithxyz/st")
525 (synopsis "Luke Smith's fork of st")
526 (description
527 "This package is Luke's fork of the suckless simple terminal (st) with
528Vim bindings and Xresource compatibility.")
529 (license license:expat))))
530
531(define-public sxmo-st
532 (package
533 (inherit st)
534 (name "sxmo-st")
535 (version "0.8.4.1")
536 (source
537 (origin
538 (method git-fetch)
539 (uri
540 (git-reference
541 (url "https://git.sr.ht/~mil/sxmo-st")
542 (commit version)))
543 (file-name (git-file-name name version))
544 (sha256
545 (base32 "1nl40q1pxf46hpbibz9m9d0giiy1p3lrhr9agw0fkyba2vzbbafa"))))
546 (home-page "https://git.sr.ht/~mil/sxmo-st")
547 (synopsis "St terminal emulator for the Simple X Mobile PinePhone environment")
548 (license license:expat)))
549
550(define-public surf
551 (package
552 (name "surf")
553 (version "2.1")
554 (source
555 (origin
556 (method url-fetch)
557 (uri (string-append "https://dl.suckless.org/surf/surf-"
558 version ".tar.gz"))
559 (sha256
560 (base32 "0mrj0kp01bwrgrn4v298g81h6zyq64ijsg790di68nm21f985rbj"))))
561 (build-system glib-or-gtk-build-system)
562 (arguments
563 (list
564 #:tests? #f ; no tests
565 #:make-flags
566 #~(list (string-append "CC=" #$(cc-for-target))
567 (string-append "PREFIX=" #$output))
568 #:phases
569 #~(modify-phases %standard-phases
570 (delete 'configure)
571 ;; Use the right file name for dmenu and xprop.
572 (add-before 'build 'set-dmenu-and-xprop-file-name
573 (lambda* (#:key inputs #:allow-other-keys)
574 (substitute* "config.def.h"
575 (("dmenu") (search-input-file inputs "/bin/dmenu"))
576 (("xprop") (search-input-file inputs "/bin/xprop"))))))))
577 (inputs
578 (list dmenu
579 gcr-3
580 glib-networking
581 gsettings-desktop-schemas
582 webkitgtk-with-libsoup2
583 xprop))
584 (native-inputs
585 (list pkg-config))
586 (home-page "https://surf.suckless.org/")
587 (synopsis "Simple web browser")
588 (description
589 "Surf is a simple web browser based on WebKit/GTK+. It is able to
590display websites and follow links. It supports the XEmbed protocol which
591makes it possible to embed it in another application. Furthermore, one can
592point surf to another URI by setting its XProperties.")
593 (license (list license:expat
594 license:x11))))
595
596(define-public sent
597 (package
598 (name "sent")
599 (version "1")
600 (source (origin
601 (method url-fetch/tarbomb)
602 (uri (string-append "https://dl.suckless.org/tools/sent-"
603 version ".tar.gz"))
604 (sha256
605 (base32
606 "0cxysz5lp25mgww73jl0mgip68x7iyvialyzdbriyaff269xxwvv"))))
607 (build-system gnu-build-system)
608 (arguments
609 (list
610 #:phases
611 #~(modify-phases %standard-phases
612 (delete 'configure) ;no configuration
613 (add-before 'build 'patch-farbfeld
614 (lambda* (#:key inputs #:allow-other-keys)
615 (substitute* "config.def.h"
616 (("2ff") (search-input-file inputs "/bin/2ff")))))
617 (add-after 'install 'install-doc
618 (lambda _
619 (install-file "README.md"
620 (string-append
621 #$output "/share/doc/"
622 #$name
623 "-"
624 #$(package-version this-package))))))
625 #:tests? #f ;no test suite
626 #:make-flags
627 #~(let ((pkg-config (lambda (flag)
628 (string-append "$(shell pkg-config " flag " "
629 "xft fontconfig x11 libpng)"))))
630 (list (string-append "CC=" #$(cc-for-target))
631 (string-append "PREFIX=" #$output)
632 (string-append "INCS=-I. " (pkg-config "--cflags"))
633 (string-append "LIBS=" (pkg-config "--libs") " -lm")))))
634 (native-inputs (list pkg-config))
635 (inputs (list farbfeld libpng libx11 libxft fontconfig))
636 (synopsis "Plain-text presentation tool")
637 (description
638 "Sent uses plain-text files and PNG images to create slideshow
639presentations. Each paragraph represents a slide in the presentation.
640Especially for presentations using the Takahashi method this is very nice and
641allows you to write down the presentation for a quick lightning talk within a
642few minutes.")
643 (home-page "https://tools.suckless.org/sent/")
644 (license license:isc)))
645
646(define-public wmname
647 (package
648 (name "wmname")
649 (version "0.1")
650 (source
651 (origin
652 (method url-fetch)
653 (uri (string-append "https://dl.suckless.org/tools/wmname-"
654 version ".tar.gz"))
655 (sha256
656 (base32 "1i82ilhbk36hspc2j0fbpg27wjj7xnvzpv1ppgf6fccina4d36jm"))))
657 (build-system gnu-build-system)
658 (arguments
659 `(#:tests? #f ; no tests
660 #:make-flags
661 (list (string-append "CC=" ,(cc-for-target))
662 (string-append "PREFIX=" %output))
663 #:phases ; no tests
664 (modify-phases %standard-phases
665 (delete 'configure)))) ; no configure script
666 (inputs
667 (list libx11))
668 (home-page "https://tools.suckless.org/x/wmname/")
669 (synopsis "Print or set the window manager name")
670 (description "@command{wmname} prints/sets the window manager name
671property of the root window similar to how @command{hostname} behaves. It is
672useful for fixing problems with JDK versions and other broken programs
673assuming a reparenting window manager for instance.")
674 (license (list license:x11
675 license:expat))))
676
677(define-public xbattmon
678 (package
679 (name "xbattmon")
680 (version "1.1")
681 (source
682 (origin
683 (method url-fetch)
684 (uri (string-append "https://dl.2f30.org/releases/"
685 "xbattmon-" version ".tar.gz"))
686 (sha256
687 (base32
688 "1zr6y8lml9xkx0a3dbbsds2qz1bjxvskp7wsckkf8mlsqrbb3xsg"))))
689 (build-system gnu-build-system)
690 (arguments
691 `(#:tests? #f ; no tests
692 #:make-flags
693 (list (string-append "CC=" ,(cc-for-target))
694 (string-append "PREFIX=" %output))))
695 (inputs
696 (list libx11))
697 (home-page "https://git.2f30.org/xbattmon/")
698 (synopsis "Simple battery monitor for X")
699 (description
700 "Xbattmon is a simple battery monitor for X.")
701 (license license:isc)))
702
703(define-public wificurse
704 (package
705 (name "wificurse")
706 (version "0.3.9")
707 (source
708 (origin
709 (method url-fetch)
710 (uri (string-append "https://dl.2f30.org/releases/"
711 "wificurse-" version ".tar.gz"))
712 (sha256
713 (base32
714 "067ghr1xly5ca41kc83xila1p5hpq0bxfcmc8jvxi2ggm6wrhavn"))))
715 (build-system gnu-build-system)
716 (arguments
717 `(#:tests? #f ; No tests
718 #:make-flags (list
719 (string-append "PREFIX=" %output)
720 "CFLAGS=-Wno-error=implicit-function-declaration")
721 #:phases
722 (modify-phases %standard-phases
723 (delete 'configure)))) ; No configure script
724 (home-page "https://git.2f30.org/wificurse/")
725 (synopsis "Wifi DoS attack tool")
726 (description
727 "Wificurses listens for beacons sent from wireless access points
728in the range of your wireless station. Once received the program
729extracts the BSSID of the AP and transmits deauthentication packets
730using the broadcast MAC address. This results to the disconnection
731of all clients connected to the AP at the time of the attack. This
732is essentially a WiFi DoS attack tool created for educational
733purposes only. It works only in Linux and requires wireless card
734drivers capable of injecting packets in wireless networks.")
735 (license license:gpl3+)))
736
737(define-public skroll
738 (package
739 (name "skroll")
740 (version "0.6")
741 (source
742 (origin
743 (method url-fetch)
744 (uri (string-append "https://dl.2f30.org/releases/"
745 "skroll-" version ".tar.gz"))
746 (sha256
747 (base32
748 "0km6bjfz4ssb1z0xwld6iiixnn7d255ax8yjs3zkdm42z8q9yl0f"))))
749 (build-system gnu-build-system)
750 (arguments
751 `(#:tests? #f ; no tests
752 #:make-flags
753 (list (string-append "CC=" ,(cc-for-target))
754 (string-append "PREFIX=" %output))
755 #:phases
756 (modify-phases %standard-phases
757 (delete 'configure)))) ; no configure script
758 (home-page "https://2f30.org/")
759 (synopsis "Commandline utility which scrolls text")
760 (description
761 "Skroll is a small utility that you can use to make a text scroll.
762Pipe text to it, and it will scroll a given number of letters from right to
763left.")
764 (license license:wtfpl2)))
765
766(define-public sbm
767 (package
768 (name "sbm")
769 (version "0.9")
770 (source
771 (origin
772 (method url-fetch)
773 (uri (string-append "https://dl.2f30.org/releases/"
774 "sbm-" version ".tar.gz"))
775 (sha256
776 (base32
777 "1nks5mkh5wn30kyjzlkjlgi31bv1wq52kbp0r6nzbyfnvfdlywik"))))
778 (build-system gnu-build-system)
779 (arguments
780 `(#:tests? #f ; no tests
781 #:make-flags
782 (list (string-append "CC=" ,(cc-for-target))
783 (string-append "PREFIX=" %output))
784 #:phases
785 (modify-phases %standard-phases
786 (delete 'configure)))) ; no configure script
787 (home-page "https://git.2f30.org/sbm/")
788 (synopsis "Simple bandwidth monitor")
789 (description
790 "Sbm is a simple bandwidth monitor.")
791 (license license:isc)))
792
793(define-public prout
794 (package
795 (name "prout")
796 (version "0.2")
797 (source
798 (origin
799 (method url-fetch)
800 (uri (string-append "https://dl.2f30.org/releases/"
801 "prout-" version ".tar.gz"))
802 (sha256
803 (base32
804 "1s6c3ygg1h1fyxkh8gd7nzjk6qhnwsb4535d2k780kxnwns5fzas"))))
805 (build-system gnu-build-system)
806 (arguments
807 `(#:tests? #f ; no tests
808 #:make-flags
809 (list (string-append "CC=" ,(cc-for-target))
810 (string-append "PREFIX=" %output))
811 #:phases
812 (modify-phases %standard-phases
813 (delete 'configure)))) ; no configure script
814 (inputs
815 (list cups-minimal zlib))
816 (home-page "https://git.2f30.org/prout/")
817 (synopsis "Smaller lp command")
818 (description
819 "Prout (PRint OUT) is a small utility one can use to send
820documents to a printer.
821It has no feature, and does nothing else. Just set your default
822printer in client.conf(5) and start printing. No need for a local
823cups server to be installed.")
824 (license license:wtfpl2)))
825
826(define-public noice
827 (package
828 (name "noice")
829 (version "0.8")
830 (source
831 (origin
832 (method url-fetch)
833 (uri (string-append "https://dl.2f30.org/releases/"
834 "noice-" version ".tar.gz"))
835 (sha256
836 (base32 "0g01iwzscdv27c1idv93gd74kjzy3n9kazgm6qz08rygp96qx4xw"))))
837 (build-system gnu-build-system)
838 (arguments
839 `(#:tests? #f ; no tests
840 #:make-flags
841 (list (string-append "CC=" ,(cc-for-target))
842 (string-append "PREFIX=" %output))
843 #:phases
844 (modify-phases %standard-phases
845 (delete 'configure) ; no configure script
846 (add-before 'build 'curses
847 (lambda _
848 (substitute* "Makefile"
849 (("lcurses") "lncurses")))))))
850 (inputs
851 (list ncurses))
852 (home-page "https://git.2f30.org/noice/")
853 (synopsis "Small file browser")
854 (description
855 "Noice is a small curses-based file browser.")
856 (license license:bsd-2)))
857
858(define-public human
859 (package
860 (name "human")
861 (version "0.3")
862 (source
863 (origin
864 (method git-fetch)
865 (uri (git-reference
866 (url "git://git.2f30.org/human.git")
867 (commit version)))
868 (file-name (git-file-name name version))
869 (sha256
870 (base32
871 "0y0bsmvpwfwb2lwspi6a799y34h1faxc6yfanyw6hygxc8661mga"))))
872 (build-system gnu-build-system)
873 (arguments
874 `(#:tests? #f ; no tests
875 #:make-flags
876 (list (string-append "CC=" ,(cc-for-target))
877 (string-append "PREFIX=" %output))
878 #:phases
879 (modify-phases %standard-phases
880 (delete 'configure)))) ; no configure script
881 (home-page "https://git.2f30.org/human/")
882 (synopsis "Convert bytes to human readable formats")
883 (description
884 "Human is a small program which translate numbers into a
885human readable format. By default, it tries to detect the best
886factorisation, but you can force its output.
887You can adjust the number of decimals with the @code{SCALE}
888environment variable.")
889 (license license:wtfpl2)))
890
891(define-public fortify-headers
892 (package
893 (name "fortify-headers")
894 (version "3.0")
895 (source
896 (origin
897 (method git-fetch)
898 (uri (git-reference
899 (url "git://git.2f30.org/fortify-headers/")
900 (commit version)))
901 (file-name (git-file-name name version))
902 (sha256
903 (base32 "1jyqcxang020r55l7wnlm9s1kl5z3hqb83cryd3gnl34748gs06k"))))
904 (build-system gnu-build-system)
905 (arguments
906 (list
907 #:tests? #f ; no tests
908 #:make-flags
909 #~(list (string-append "CC=" #$(cc-for-target))
910 (string-append "PREFIX=" #$output))
911 #:phases
912 #~(modify-phases %standard-phases
913 (delete 'configure)))) ; no configure script
914 (home-page "https://git.2f30.org/fortify-headers/")
915 (synopsis "Standalone fortify-source implementation")
916 (description
917 "This is a standalone implementation of fortify source. It provides
918compile time buffer checks. It is libc-agnostic and simply overlays the
919system headers by using the @code{#include_next} extension found in GCC. It
920was initially intended to be used on musl-based Linux distributions.
921
922@itemize
923@item It is portable, works on *BSD, Linux, Solaris and possibly others.
924@item It will only trap non-conformant programs. This means that fortify
925 level 2 is treated in the same way as level 1.
926@item Avoids making function calls when undefined behaviour has already been
927 invoked. This is handled by using @code{__builtin_trap()}.
928@item Support for out-of-bounds read interfaces, such as @code{send()},
929 @code{write()}, @code{fwrite()}, etc.
930@item No ABI is enforced. All of the fortify check functions are inlined
931 into the resulting binary.
932@end itemize\n")
933 (license license:isc)))
934
935(define-public colors
936 (package
937 (name "colors")
938 (version "0.3")
939 (source
940 (origin
941 (method url-fetch)
942 (uri (string-append "https://dl.2f30.org/releases/"
943 "colors-" version ".tar.gz"))
944 (sha256
945 (base32
946 "1lckmqpgj89841splng0sszbls2ag71ggkgr1wsv9y3v6y87589z"))))
947 (build-system gnu-build-system)
948 (arguments
949 `(#:tests? #f ; no tests
950 #:make-flags
951 (list (string-append "CC=" ,(cc-for-target))
952 (string-append "PREFIX=" %output))
953 #:phases
954 (modify-phases %standard-phases
955 (delete 'configure)))) ; no configure script
956 (inputs
957 (list libpng))
958 (home-page "https://git.2f30.org/colors/")
959 (synopsis "Extract colors from pictures")
960 (description
961 "Extract colors from PNG files. It is similar to
962strings(1) but for pictures. For a given input file it outputs a
963colormap to stdout.")
964 (license license:isc)))
965
966(define-public libgrapheme
967 (package
968 (name "libgrapheme")
969 (version "3.0.0")
970 (source
971 (origin
972 (method git-fetch)
973 (uri (git-reference
974 (url "https://git.suckless.org/libgrapheme")
975 (commit version)))
976 (file-name (git-file-name name version))
977 (sha256
978 (base32 "13aa73dd3znnrcfx7qq8x97mr84cywyiglwyi0hhfg2zaizlsqk8"))))
979 (build-system gnu-build-system)
980 (arguments
981 (list #:tests? #f ;only 18420/19338 conformance tests passed
982 #:test-target "test"
983 #:phases #~(modify-phases %standard-phases
984 (add-after 'configure 'post-configure
985 (lambda _
986 ;; Remove ldconfing invocation in Makefile, which
987 ;; is not needed in Guix.
988 (substitute* "config.mk"
989 (("ldconfig") "")))))
990 #:make-flags
991 #~(list (string-append "CC=" #$(cc-for-target))
992 (string-append "PREFIX=" #$output))))
993 (home-page "https://libs.suckless.org/libgrapheme/")
994 (synopsis "C99 library for Unicode strings")
995 (description "Libgrapheme is a simple freestanding C99 library providing
996utilities to handle strings according to the Unicode standard.")
997 (license license:isc)))
998
999;; No new releases were made at github, this repository is more active than
1000;; the one at http://git.suckless.org/libutf/ and it is
1001;; done by the same developer.
1002(define-public libutf
1003 (let ((revision "1")
1004 (commit "ee5074db68f498a5c802dc9f1645f396c219938a"))
1005 (package
1006 (name "libutf")
1007 (version (git-version "0.1" revision commit))
1008 (source
1009 (origin
1010 (method git-fetch)
1011 (uri (git-reference
1012 (url "https://github.com/cls/libutf")
1013 (commit commit)))
1014 (file-name (git-file-name name version))
1015 (sha256
1016 (base32
1017 "1112azq05xhssqny4a2kqwiw8zdqhdgf18xwfs6z5p4cq2csh256"))))
1018 (build-system gnu-build-system)
1019 (arguments
1020 (list
1021 #:tests? #f ; no tests
1022 #:make-flags
1023 #~(list (string-append "CC=" #$(cc-for-target))
1024 (string-append "PREFIX=" #$output))
1025 #:phases
1026 #~(modify-phases %standard-phases
1027 (delete 'configure)))) ; no configure script
1028 (inputs
1029 (list gawk))
1030 (home-page "https://github.com/cls/libutf")
1031 (synopsis "Plan 9 compatible UTF-8 library")
1032 (description
1033 "This is a C89 UTF-8 library, with an API compatible with that of
1034Plan 9's libutf, but with a number of improvements:
1035
1036@itemize
1037@item Support for runes beyond the Basic Multilingual Plane.
1038@item utflen and utfnlen cannot overflow on 32- or 64-bit machines.
1039@item chartorune treats all invalid codepoints as though Runeerror.
1040@item fullrune, utfecpy, and utfnlen do not overestimate the length
1041of malformed runes.
1042@item An extra function, charntorune(p,s,n), equivalent to
1043fullrune(s,n) ? chartorune(p,s): 0.
1044@item Runeerror may be set to an alternative replacement value, such
1045as -1, to be used instead of U+FFFD.
1046@end itemize\n")
1047 (license license:expat))))
1048
1049(define-public lchat
1050 (package
1051 (name "lchat")
1052 (version "1.0")
1053 (source
1054 (origin
1055 (method git-fetch)
1056 (uri (git-reference
1057 (url "git://git.suckless.org/lchat/")
1058 (commit version)))
1059 (file-name (git-file-name name version))
1060 (sha256
1061 (base32 "0829dqa8vgq0rdcjb04hzaxnbc3mqgn5mzmcibrggzrgw110gv5k"))))
1062 (build-system gnu-build-system)
1063 (arguments
1064 (list
1065 #:test-target "test"
1066 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
1067 (string-append "PREFIX=" #$output))
1068 #:phases #~(modify-phases %standard-phases
1069 (delete 'configure) ; no configure script
1070 (replace 'install
1071 (lambda _
1072 (let ((bin (string-append #$output "/bin"))
1073 (man (string-append #$output "/share/man/man1")))
1074 (install-file "lchat" bin)
1075 (install-file "lchat.1" man)))))))
1076 (inputs
1077 (list grep libbsd libgrapheme libutf ncurses))
1078 (home-page "https://tools.suckless.org/lchat/")
1079 (synopsis "Line chat is a frontend for the irc client ii from suckless")
1080 (description
1081 "Lchat (line chat) is the little and small brother of cii.
1082It is a front end for ii-like chat programs. It uses @code{tail -f} to get
1083the chat output in the background.")
1084 (license license:isc)))
1085
1086(define-public snooze
1087 (package
1088 (name "snooze")
1089 (version "0.6")
1090 (source
1091 (origin
1092 (method git-fetch)
1093 (uri
1094 (git-reference
1095 (url "https://github.com/leahneukirchen/snooze")
1096 (commit (string-append "v" version))))
1097 (file-name (git-file-name name version))
1098 (sha256
1099 (base32 "0w782i9fjd82i6p7254iqvwfyw2hgw4r2adar1lf4xpvzmdpbwlw"))))
1100 (build-system gnu-build-system)
1101 (arguments
1102 `(#:tests? #f ; There are no tests.
1103 #:make-flags
1104 (list (string-append "CC=" ,(cc-for-target))
1105 ;; Set prefix path to root of package path in store instead
1106 ;; of /usr/local.
1107 (string-append "PREFIX=" %output))
1108 #:phases
1109 (modify-phases %standard-phases
1110 (delete 'configure))))
1111 (home-page "https://github.com/leahneukirchen/snooze")
1112 (synopsis "Run a command at a particular time")
1113 (description
1114"@command{snooze} is a tool for waiting until a particular time and then
1115running a command.")
1116 (license license:cc0)))
1117
1118(define-public sbase
1119 (package
1120 (name "sbase")
1121 (version "0.1")
1122 (source
1123 (origin
1124 (method git-fetch)
1125 (uri
1126 (git-reference
1127 (url "https://git.suckless.org/sbase/")
1128 (commit version)))
1129 (file-name (git-file-name name version))
1130 (sha256
1131 (base32 "1sbn258s06rl9prflkpif3hfgllxszf0nq7zdkxr5dj3248zgvmz"))))
1132 (build-system gnu-build-system)
1133 (arguments
1134 (list
1135 #:tests? #f ;no test suite
1136 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
1137 (string-append "PREFIX=" #$output))
1138 #:phases
1139 #~(modify-phases %standard-phases
1140 (delete 'configure))))
1141 (home-page "https://core.suckless.org/sbase/")
1142 (synopsis "Collection of UNIX tools")
1143 (description "@command{sbase} is a collection of UNIX tools similar to those of GNU
1144Coreutils, containing utilities commands such as @command{grep}, @command{cp},
1145@command{rm}, etc.")
1146 (license license:expat)))
1147
1148(define-public scron
1149 (package
1150 (name "scron")
1151 (version "0.4")
1152 (source
1153 (origin
1154 (method url-fetch)
1155 (uri (string-append "https://dl.2f30.org/releases/"
1156 "scron-" version ".tar.gz"))
1157 (sha256
1158 (base32
1159 "066fwa55kqcgfrsqgxh94sqbkxfsr691360xg4ljxr4i75d25s2a"))))
1160 (build-system gnu-build-system)
1161 (arguments
1162 `(#:tests? #f ; no tests
1163 #:make-flags
1164 (list (string-append "CC=" ,(cc-for-target))
1165 (string-append "PREFIX=" %output))
1166 #:phases
1167 (modify-phases %standard-phases
1168 (delete 'configure)))) ; no configure script
1169 (home-page "https://git.2f30.org/scron/")
1170 (synopsis "Simple cron daemon")
1171 (description
1172 "Schedule commands to be run at specified dates and times.
1173Single daemon and configuration file. Log to stdout or syslog. No mail
1174support.")
1175 (license license:expat)))
1176
1177(define-public sfm
1178 ;; Latest release is from 2021.
1179 (let ((commit "f1f1197142421d3f727dc109a5910129d0bcb0b0")
1180 (revision "0"))
1181 (package
1182 (name "sfm")
1183 (version (git-version "0.4" revision commit))
1184 (source
1185 (origin
1186 (method git-fetch)
1187 (uri
1188 (git-reference
1189 (url "https://github.com/afify/sfm")
1190 (commit commit)))
1191 (file-name (git-file-name name version))
1192 (sha256
1193 (base32 "0c4fll79dd4flp3rdr20vh2w2vsy5h6qrkic806r5mn9i4xl85zn"))))
1194 (build-system gnu-build-system)
1195 (arguments
1196 (list
1197 #:tests? #f ;no check target
1198 #:make-flags
1199 #~(list (string-append "CC=" #$(cc-for-target))
1200 (string-append "PREFIX=" #$output))
1201 #:phases
1202 #~(modify-phases %standard-phases
1203 (delete 'configure)))) ;no configure script
1204 (home-page "https://github.com/afify/sfm")
1205 (synopsis "Simple file manager")
1206 (description "sfm is a simple file manager.")
1207 (license license:isc))))
1208
1209(define-public sfeed
1210 (package
1211 (name "sfeed")
1212 (version "2.4")
1213 (source
1214 (origin
1215 (method git-fetch)
1216 (uri
1217 (git-reference
1218 (url "git://git.codemadness.org/sfeed")
1219 (commit version)))
1220 (file-name (git-file-name name version))
1221 (sha256
1222 (base32 "0n7nfv9rz5mqnv7pn8428w3bzn80ah4aq12m78zmg66qf5kl12z0"))))
1223 (build-system gnu-build-system)
1224 (arguments
1225 (list
1226 #:tests? #f ;no check target
1227 #:make-flags
1228 #~(list (string-append "CC=" #$(cc-for-target))
1229 (string-append "PREFIX=" #$output))
1230 #:phases
1231 '(modify-phases %standard-phases
1232 (add-after 'unpack 'fix-ncurses
1233 (lambda _
1234 (substitute* "Makefile"
1235 (("-lcurses") "-lncurses"))))
1236 (delete 'configure)))) ;no configure script
1237 (inputs
1238 (list ncurses))
1239 (home-page "https://git.codemadness.org/sfeed")
1240 (synopsis "RSS and Atom parser")
1241 (description
1242 "@code{sfeed} converts RSS or Atom feeds from XML to a TAB-separated file.
1243There are formatting programs included to convert this TAB-separated format to
1244various other formats. There are also some programs and scripts included to
1245import and export OPML and to fetch, filter, merge and order feed items.")
1246 (license license:isc)))
1247
1248(define-public farbfeld
1249 (let ((commit "ab5e3dfc9cdb476218538c6687df9f44826d8f11") (revision "0"))
1250 (package
1251 (name "farbfeld")
1252 (version (git-version "4" revision commit))
1253 (source (origin
1254 (method git-fetch)
1255 (uri (git-reference
1256 (url "git://git.suckless.org/farbfeld")
1257 (commit commit)))
1258 (file-name (git-file-name name version))
1259 (sha256
1260 (base32
1261 "0pkmkvv5ggpzqwqdchd19442x8gh152xy5z1z13ipfznhspsf870"))))
1262 (build-system gnu-build-system)
1263 (inputs (list libpng libjpeg-turbo imagemagick))
1264 (arguments
1265 (list #:tests?
1266 #f ;no check target
1267 #:make-flags
1268 #~(list (string-append "PREFIX="
1269 #$output)
1270 (string-append "CC="
1271 #$(cc-for-target)))
1272 #:phases
1273 #~(modify-phases %standard-phases
1274 (add-before 'configure 'patch-2ff
1275 (lambda* (#:key inputs outputs #:allow-other-keys)
1276 (substitute* "2ff"
1277 (("png2ff") (string-append #$output "/bin/png2ff"))
1278 (("jpg2ff") (string-append #$output "/bin/jpg2ff"))
1279 (("convert") (search-input-file inputs "/bin/convert")))))
1280 (delete 'configure))))
1281 (synopsis "Image format and conversion tools")
1282 (description
1283 "farbfeld is a lossless image format which is easy to parse,
1284pipe and compress.")
1285 (home-page "https://git.suckless.org/farbfeld/")
1286 (license license:isc))))
1287
1288(define-public snafu
1289 (let ((commit "e436fb4f61ca93a4ec85122506b2c2d4fec30eb6")
1290 (revision "0"))
1291 (package
1292 (name "snafu")
1293 (version (git-version "0.0.0" revision commit))
1294 (source
1295 (origin
1296 (method git-fetch)
1297 (uri (git-reference
1298 (url "https://github.com/jsbmg/snafu")
1299 (commit commit)))
1300 (file-name (git-file-name name version))
1301 (sha256
1302 (base32 "1c6ahxw0qz0703my28k2z0kgi0am5bp5d02l4rgyphgvjk1jfv8h"))))
1303 (arguments
1304 `(#:install-source? #f
1305 #:tests? #f)) ; There are no tests.
1306 (build-system cargo-build-system)
1307 (inputs (cargo-inputs 'snafu))
1308 (home-page "https://github.com/jsbmg/snafu")
1309 (synopsis "Status text for DWM window manager")
1310 (description "@code{snafu} provides status text for DWM's builtin bar. It
1311shows battery status, battery capacity, current WiFi connection, and the time in
1312a nice format.")
1313 (license license:isc))))
1314
1315(define-public svkbd
1316 (package
1317 (name "svkbd")
1318 (version "0.4.2")
1319 (source
1320 (origin
1321 (method git-fetch)
1322 (uri (git-reference
1323 (url "git://git.suckless.org/svkbd/")
1324 (commit version)))
1325 (file-name (git-file-name name version))
1326 (sha256
1327 (base32
1328 "186q9k6b5fhwnq65ch22fxqs64zyxz0vb7rwdyanx3qpcmb48byf"))))
1329 (build-system gnu-build-system)
1330 (arguments
1331 (list
1332 #:tests? #f
1333 #:make-flags
1334 #~(list (string-append "CC=" #$(cc-for-target))
1335 (string-append "PREFIX=" #$output))
1336 #:phases
1337 #~(modify-phases %standard-phases
1338 (add-after 'unpack 'patch
1339 (lambda* (#:key inputs outputs #:allow-other-keys)
1340 (substitute* "config.mk"
1341 (("/usr/local") #$output)
1342 (("/usr/X11R6") #$libx11)
1343 (("/usr/include/freetype2")
1344 (string-append #$freetype "/include/freetype2")))))
1345 (delete 'configure)))) ;no configure script
1346 (native-inputs (list pkg-config))
1347 (inputs (list freetype libx11 libxft libxtst libxinerama))
1348 (propagated-inputs (list (libc-utf8-locales-for-target)))
1349 (home-page "https://tools.suckless.org/x/svkbd/")
1350 (synopsis "Virtual on-screen keyboard")
1351 (description "svkbd is a simple virtual keyboard, intended to be used in
1352environments, where no keyboard is available.")
1353 (license license:expat)))
1354
1355(define-public lib9
1356 ;; no release since 2010
1357 (let ((commit "63916da7bd6d73d9a405ce83fc4ca34845667cce")
1358 (revision "0"))
1359 (package
1360 (name "lib9")
1361 (version (git-version "7" revision commit))
1362 (source (origin
1363 (method git-fetch)
1364 (uri (git-reference
1365 (url "https://git.suckless.org/9base/")
1366 (commit commit)))
1367 (file-name (git-file-name name version))
1368 (sha256
1369 (base32
1370 "04j8js4s3jmlzi3m46q81bq76rn41an58ffhkbj9p5wwr5hvplh8"))))
1371 (build-system gnu-build-system)
1372 (arguments
1373 (list #:tests? #f ;no tests
1374 #:phases #~(modify-phases %standard-phases
1375 (add-after 'unpack 'patch
1376 (lambda _
1377 (substitute* "config.mk"
1378 (("^PREFIX.*=.*$")
1379 (string-append "PREFIX=\"" #$output "\"\n"))
1380 (("^OBJTYPE.*=.*$")
1381 #$@(cond
1382 ((target-x86-64?)
1383 #~(string-append "OBJTYPE=x86_64\n"))
1384 ((target-x86?)
1385 #~(string-append "OBJTYPE=386\n"))
1386 ((target-powerpc?)
1387 #~(string-append "OBJTYPE=power\n"))
1388 ((target-arm32?)
1389 #~(string-append "OBJTYPE=arm\n"))))
1390 (("^CFLAGS.*+=.*$")
1391 (string-append
1392 "CFLAGS+=-O2 -g -I. -fPIC -c -DPLAN9PORT "
1393 "-DPREFIX=\\\"" #$output "\\\"\n"))
1394 (("^LDFLAGS.*+=.*$")
1395 "LDFLAGS+=\n")
1396 (("^CC.*=.*$")
1397 (string-append "CC=" #$(cc-for-target) "\n")))
1398 (substitute* "lib9/libc.h"
1399 (("#define main.*p9main")
1400 ""))
1401 (substitute* "lib9/main.c"
1402 (("p9main\\(argc, argv\\);")
1403 "")
1404 (("extern void p9main\\(int, char\\*\\*\\);")
1405 ""))
1406 (substitute* "lib9/Makefile"
1407 (("lib9.a")
1408 "lib9.so")
1409 (("LIB9OFILES=\\\\")
1410 "LIB9OFILES=convM2D.o \\")
1411 (("@\\$\\{AR\\} \\$\\{LIB\\} \\$\\{OFILES\\}")
1412 "gcc -shared ${OFILES} -o lib9.so"))))
1413 (add-after 'patch 'chdir
1414 (lambda _
1415 (chdir "lib9")))
1416 (delete 'configure)))) ;no configure script
1417 (home-page "https://tools.suckless.org/9base/")
1418 (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"
1419 "powerpc-linux"))
1420 (synopsis "Unix port of Plan 9's formatted I/O C library")
1421 (description
1422 "This package provides a ported version of the Plan 9 lib9 C library.
1423It also contains the Plan 9 libbio, libregexp, libfmt and libutf libraries.")
1424 (license (list license:expat ;modifications
1425 license:lpl1.02))))) ;original plan9 code
1426
1427(define-public xssstate
1428 (package
1429 (name "xssstate")
1430 (version "1.1")
1431 (source (origin
1432 (method url-fetch)
1433 (uri (string-append "https://dl.suckless.org/tools/xssstate-"
1434 version ".tar.gz"))
1435 (sha256
1436 (base32
1437 "04b03jz38pn5qhddg8a9hh01qqzrrdjvsq09qrxj9sx8lq2gbdn4"))))
1438 (build-system gnu-build-system)
1439 (arguments
1440 (list
1441 #:tests? #f ; no tests
1442 #:make-flags #~(list (string-append "CC="
1443 #$(cc-for-target))
1444 (string-append "PREFIX=" #$output))
1445 #:phases #~(modify-phases %standard-phases
1446 (delete 'configure))))
1447 (inputs (list libxscrnsaver))
1448 (home-page "https://tools.suckless.org/x/xssstate/")
1449 (synopsis "Simple tool to retrieve the X screensaver state")
1450 (description
1451 "A utility to retrieve the state of the X screensaver. These
1452states include the idle time, the screensaver state and the length of time
1453until the screensaver should be activated.")
1454 (license license:x11)))
1455
1456(define-public 9yacc
1457 (package
1458 (inherit lib9)
1459 (name "9yacc")
1460 (arguments
1461 (substitute-keyword-arguments arguments
1462 ((#:phases phases)
1463 #~(modify-phases #$phases
1464 (add-after 'patch 'patch-for-9yacc
1465 (lambda _
1466 (substitute* "yacc/yacc.c"
1467 (("#9/yacc")
1468 (string-append #$output "/lib")))
1469 (substitute* "config.mk"
1470 (("^CFLAGS.*+=.*$")
1471 (string-append "CFLAGS+=-O2 -g -c -DPLAN9PORT "
1472 "-DPREFIX=\\\"" #$output "\\\"\n")))))
1473 (replace 'chdir
1474 (lambda _
1475 (chdir "yacc")))
1476 (delete 'install-include)
1477 (add-after 'install 'install-yaccpar
1478 (lambda _
1479 (install-file "yaccpar" (string-append #$output "/lib"))
1480 (install-file "yaccpars" (string-append #$output "/lib"))))))))
1481 (inputs (list lib9))
1482 (synopsis "Port of Plan 9's yacc parser generator for Unix")
1483 (description
1484 "This package provides a ported version of the Plan 9 yacc parser
1485generator.")))
1486
1487(define-public 9base
1488 (package
1489 (inherit 9yacc)
1490 (name "9base")
1491 (arguments
1492 (substitute-keyword-arguments arguments
1493 ((#:phases phases)
1494 #~(modify-phases #$phases
1495 (add-after 'patch-for-9yacc 'patch-for-9base
1496 (lambda _
1497 (substitute* "Makefile"
1498 (("SUBDIRS = lib9\\\\")
1499 "SUBDIRS = \\")
1500 (("@chmod 755 yacc/9yacc")
1501 ""))
1502 (for-each (lambda (x)
1503 (substitute* "Makefile"
1504 (((string-append x "\\\\")) "\\")))
1505 '("yacc" "diff" "hoc" "rc"))
1506 (substitute* "sam/Makefile"
1507 (("\\$\\{CFLAGS\\}")
1508 "${CFLAGS} -I."))
1509 (substitute* "config.mk"
1510 (("^YACC.*=.*$")
1511 (string-append "YACC=" #$(this-package-native-input "9yacc")
1512 "/bin/yacc\n")))))
1513 (delete 'chdir)
1514 (delete 'install-yaccpar)))))
1515 (native-inputs (list 9yacc gcc-13))
1516 (inputs (list lib9))
1517 (propagated-inputs (list rc))
1518 (synopsis "Port of various Plan 9 tools for Unix")
1519 (description
1520 "This package provides ported versions of various Plan 9 userland tools
1521for Unix.")))