gnu: r-fields: Update to 11.4.
[jackhill/guix/guix.git] / gnu / packages / suckless.scm
CommitLineData
1010e530
CR
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
3a733420 3;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
4acbd206 4;;; Copyright © 2016 Al McElrath <hello@yrns.org>
3c986a7d 5;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
f0f0a48b
DB
6;;; Copyright © 2015 Dmitry Bogatov <KAction@gnu.org>
7;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
8;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
f3a53f3c 9;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
be55f234 10;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
1010e530
CR
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
975b8942 27(define-module (gnu packages suckless)
1010e530 28 #:use-module (gnu packages)
b273158b
TGR
29 #:use-module (gnu packages base)
30 #:use-module (gnu packages compression)
31 #:use-module (gnu packages cups)
3a733420 32 #:use-module (gnu packages fonts)
c2b4c063 33 #:use-module (gnu packages fontutils)
b273158b
TGR
34 #:use-module (gnu packages gawk)
35 #:use-module (gnu packages gnome)
36 #:use-module (gnu packages image)
37 #:use-module (gnu packages libbsd)
974ddc21 38 #:use-module (gnu packages linux)
b273158b 39 #:use-module (gnu packages mpd)
37d5fc7b 40 #:use-module (gnu packages ncurses)
b273158b
TGR
41 #:use-module (gnu packages pkg-config)
42 #:use-module (gnu packages webkit)
43 #:use-module (gnu packages xorg)
44 #:use-module (guix build-system glib-or-gtk)
45 #:use-module (guix build-system gnu)
46 #:use-module (guix download)
47 #:use-module (guix git-download)
48 #:use-module ((guix licenses) #:prefix license:)
1ca44ae3 49 #:use-module (guix utils)
b273158b 50 #:use-module (guix packages))
1010e530 51
c4027435
SB
52(define-public blind
53 (package
54 (name "blind")
62f709f3 55 (version "1.1")
c4027435
SB
56 (source (origin
57 (method url-fetch)
51cfdf90 58 (uri (string-append "https://dl.suckless.org/tools/blind-"
c4027435
SB
59 version ".tar.gz"))
60 (sha256
61 (base32
62f709f3 62 "0nncvzyipvkkd7zlgzwbjygp82frzs2hvbnk71gxf671np607y94"))))
c4027435
SB
63 (build-system gnu-build-system)
64 (arguments
211dc8cd 65 `(#:tests? #f ; no check target
1ca44ae3
MB
66 #:make-flags (list (string-append "CC=" ,(cc-for-target))
67 (string-append "PREFIX=" %output))
c4027435
SB
68 #:phases
69 (modify-phases %standard-phases
70 (delete 'configure)))) ; no configure script
71 (synopsis "Command line video editing utilities")
51cfdf90 72 (home-page "https://tools.suckless.org/blind/")
c4027435
SB
73 (description
74 "Blind is a collection of command line video editing utilities. It uses
75a custom raw video format with a simple container.")
76 (license license:isc)))
77
1010e530
CR
78(define-public dwm
79 (package
80 (name "dwm")
d2c8a891 81 (version "6.2")
1010e530
CR
82 (source (origin
83 (method url-fetch)
51cfdf90 84 (uri (string-append "https://dl.suckless.org/dwm/dwm-"
1010e530
CR
85 version ".tar.gz"))
86 (sha256
d2c8a891 87 (base32 "03hirnj8saxnsfqiszwl2ds7p0avg20izv9vdqyambks00p2x44p"))))
1010e530
CR
88 (build-system gnu-build-system)
89 (arguments
90 `(#:tests? #f
648733dc
AG
91 #:make-flags (list (string-append "FREETYPEINC="
92 (assoc-ref %build-inputs "freetype")
93 "/include/freetype2"))
1010e530 94 #:phases
0d2c8f34 95 (modify-phases %standard-phases
96 (replace 'configure
97 (lambda _
98 (substitute* "Makefile" (("\\$\\{CC\\}") "gcc"))
99 #t))
100 (replace 'install
101 (lambda* (#:key outputs #:allow-other-keys)
102 (let ((out (assoc-ref outputs "out")))
1e501ffe
TGR
103 (invoke "make" "install"
104 (string-append "DESTDIR=" out) "PREFIX="))))
ad1c349d 105 (add-after 'build 'install-xsession
106 (lambda* (#:key outputs #:allow-other-keys)
107 ;; Add a .desktop file to xsessions.
108 (let* ((output (assoc-ref outputs "out"))
109 (xsessions (string-append output "/share/xsessions")))
110 (mkdir-p xsessions)
111 (with-output-to-file
112 (string-append xsessions "/dwm.desktop")
113 (lambda _
114 (format #t
115 "[Desktop Entry]~@
116 Name=dwm~@
117 Comment=Dynamic Window Manager~@
118 Exec=~a/bin/dwm~@
119 TryExec=~@*~a/bin/dwm~@
120 Icon=~@
121 Type=Application~%"
122 output)))
123 #t))))))
1010e530 124 (inputs
648733dc
AG
125 `(("freetype" ,freetype)
126 ("libx11" ,libx11)
127 ("libxft" ,libxft)
1010e530 128 ("libxinerama" ,libxinerama)))
51cfdf90 129 (home-page "https://dwm.suckless.org/")
1010e530
CR
130 (synopsis "Dynamic window manager")
131 (description
35b9e423
EB
132 "dwm is a dynamic window manager for X. It manages windows in tiled,
133monocle and floating layouts. All of the layouts can be applied dynamically,
dfde065f 134optimising the environment for the application in use and the task performed.")
3a733420 135 (license license:x11)))
65a05690
SB
136
137(define-public dmenu
138 (package
139 (name "dmenu")
f5c46fa0 140 (version "4.9")
65a05690
SB
141 (source (origin
142 (method url-fetch)
51cfdf90 143 (uri (string-append "https://dl.suckless.org/tools/dmenu-"
65a05690
SB
144 version ".tar.gz"))
145 (sha256
146 (base32
f5c46fa0 147 "0ia9nqr83bv6x247q30bal0v42chcj9qcjgv59xs6xj46m7iz5xk"))))
65a05690
SB
148 (build-system gnu-build-system)
149 (arguments
211dc8cd
TGR
150 `(#:tests? #f ; no tests
151 #:make-flags
1ca44ae3
MB
152 (list (string-append "CC=" ,(cc-for-target))
153 (string-append "PREFIX=" %output)
154 (string-append "FREETYPEINC="
155 (assoc-ref %build-inputs "freetype")
156 "/include/freetype2"))
65a05690 157 #:phases
dc1d3cde 158 (modify-phases %standard-phases (delete 'configure))))
65a05690 159 (inputs
bc47382a
AG
160 `(("freetype" ,freetype)
161 ("libxft" ,libxft)
162 ("libx11" ,libx11)
65a05690 163 ("libxinerama" ,libxinerama)))
51cfdf90 164 (home-page "https://tools.suckless.org/dmenu/")
65a05690
SB
165 (synopsis "Dynamic menu")
166 (description
167 "A dynamic menu for X, originally designed for dwm. It manages large
168numbers of user-defined menu items efficiently.")
3a733420 169 (license license:x11)))
15f5f686 170
c2b4c063 171(define-public spoon
172 (package
173 (name "spoon")
504d16dd 174 (version "0.6")
c2b4c063 175 (source
176 (origin
177 (method url-fetch)
fea8b729 178 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 179 "spoon-" version ".tar.gz"))
c2b4c063 180 (sha256
181 (base32
504d16dd 182 "1jpmg9k9f4f3lpz0k3cphqjswlyf8lz2sm8ccifiip93kd4rrdj0"))))
c2b4c063 183 (build-system gnu-build-system)
184 (arguments
504d16dd 185 `(#:tests? #f ; no tests
211dc8cd 186 #:make-flags
1ca44ae3
MB
187 (list (string-append "CC=" ,(cc-for-target))
188 (string-append "PREFIX=" %output))))
c2b4c063 189 (inputs
190 `(("libx11" ,libx11)
191 ("libxkbfile" ,libxkbfile)
504d16dd 192 ("alsa-lib" ,alsa-lib) ; tinyalsa (unpackaged) would suffice
c2b4c063 193 ("libmpdclient" ,libmpdclient)))
fea8b729 194 (home-page "https://git.2f30.org/spoon/")
c2b4c063 195 (synopsis "Set dwm status")
196 (description
197 "Spoon can be used to set the dwm status.")
198 (license license:isc)))
199
15f5f686
200(define-public slock
201 (package
202 (name "slock")
f3a53f3c 203 (version "1.4")
15f5f686
204 (source (origin
205 (method url-fetch)
51cfdf90 206 (uri (string-append "https://dl.suckless.org/tools/slock-"
15f5f686
207 version ".tar.gz"))
208 (sha256
209 (base32
f3a53f3c 210 "0sif752303dg33f14k6pgwq2jp1hjyhqv6x4sy3sj281qvdljf5m"))))
15f5f686
211 (build-system gnu-build-system)
212 (arguments
211dc8cd
TGR
213 `(#:tests? #f ; no tests
214 #:make-flags
1ca44ae3
MB
215 (list (string-append "CC=" ,(cc-for-target))
216 (string-append "PREFIX=" %output))
dc1d3cde 217 #:phases (modify-phases %standard-phases (delete 'configure))))
15f5f686
218 (inputs
219 `(("libx11" ,libx11)
220 ("libxext" ,libxext)
fea1422e
LF
221 ("libxinerama" ,libxinerama)
222 ("libxrandr" ,libxrandr)))
51cfdf90 223 (home-page "https://tools.suckless.org/slock/")
15f5f686
224 (synopsis "Simple X session lock")
225 (description
226 "Simple X session lock with trivial feedback on password entry.")
3a733420
AB
227 (license license:x11)))
228
229(define-public st
230 (package
231 (name "st")
10a8211e 232 (version "0.8.4")
3a733420
AB
233 (source
234 (origin
235 (method url-fetch)
51cfdf90 236 (uri (string-append "https://dl.suckless.org/st/st-"
3a733420
AB
237 version ".tar.gz"))
238 (sha256
10a8211e 239 (base32 "19j66fhckihbg30ypngvqc9bcva47mp379ch5vinasjdxgn3qbfl"))))
3a733420
AB
240 (build-system gnu-build-system)
241 (arguments
211dc8cd
TGR
242 `(#:tests? #f ; no tests
243 #:make-flags
1ca44ae3
MB
244 (list (string-append "CC=" ,(cc-for-target))
245 (string-append "PREFIX=" %output))
3a733420
AB
246 #:phases
247 (modify-phases %standard-phases
248 (delete 'configure)
249 (add-after 'unpack 'inhibit-terminfo-install
362f5306
TGR
250 (lambda _
251 (substitute* "Makefile"
252 (("\ttic .*") ""))
253 #t)))))
3a733420
AB
254 (inputs
255 `(("libx11" ,libx11)
256 ("libxft" ,libxft)
3a733420 257 ("fontconfig" ,fontconfig)
939111ca 258 ("freetype" ,freetype)))
fc1a7b58
TGR
259 (native-inputs
260 `(("pkg-config" ,pkg-config)))
51cfdf90 261 (home-page "https://st.suckless.org/")
3a733420
AB
262 (synopsis "Simple terminal emulator")
263 (description
264 "St implements a simple and lightweight terminal emulator. It
265implements 256 colors, most VT10X escape sequences, utf8, X11 copy/paste,
266antialiased fonts (using fontconfig), fallback fonts, resizing, and line
267drawing.")
268 (license license:x11)))
4acbd206
AM
269
270(define-public surf
271 (package
272 (name "surf")
0715c0e6 273 (version "2.0")
4acbd206
AM
274 (source
275 (origin
276 (method url-fetch)
51cfdf90 277 (uri (string-append "https://dl.suckless.org/surf/surf-"
4acbd206
AM
278 version ".tar.gz"))
279 (sha256
280 (base32
0715c0e6 281 "07cmajyafljigy10d21kkyvv5jf3hxkx06pz3rwwk3y3c9x4rvps"))))
4acbd206
AM
282 (build-system glib-or-gtk-build-system)
283 (arguments
211dc8cd
TGR
284 `(#:tests? #f ; no tests
285 #:make-flags
1ca44ae3
MB
286 (list (string-append "CC=" ,(cc-for-target))
287 (string-append "PREFIX=" %output))
4acbd206
AM
288 #:phases
289 (modify-phases %standard-phases
45321beb
MM
290 (delete 'configure)
291 ;; Use the right file name for dmenu and xprop.
292 (add-before 'build 'set-dmenu-and-xprop-file-name
293 (lambda* (#:key inputs #:allow-other-keys)
294 (substitute* "config.def.h"
295 (("dmenu") (string-append (assoc-ref inputs "dmenu") "/bin/dmenu"))
296 (("xprop") (string-append (assoc-ref inputs "xprop") "/bin/xprop")))
297 #t)))))
4acbd206 298 (inputs
45321beb
MM
299 `(("dmenu" ,dmenu)
300 ("glib-networking" ,glib-networking)
4acbd206 301 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
0715c0e6 302 ("webkitgtk" ,webkitgtk)
45321beb 303 ("xprop" ,xprop)))
4acbd206
AM
304 (native-inputs
305 `(("pkg-config" ,pkg-config)))
51cfdf90 306 (home-page "https://surf.suckless.org/")
4acbd206
AM
307 (synopsis "Simple web browser")
308 (description
309 "Surf is a simple web browser based on WebKit/GTK+. It is able to
310display websites and follow links. It supports the XEmbed protocol which
311makes it possible to embed it in another application. Furthermore, one can
312point surf to another URI by setting its XProperties.")
313 (license license:x11)))
f0f0a48b
DB
314
315(define-public sent
316 (package
317 (name "sent")
8f7c6a5f 318 (version "1")
f0f0a48b 319 (source (origin
8f7c6a5f 320 (method url-fetch/tarbomb)
51cfdf90 321 (uri (string-append "https://dl.suckless.org/tools/sent-"
f0f0a48b
DB
322 version ".tar.gz"))
323 (sha256
324 (base32
8f7c6a5f 325 "0cxysz5lp25mgww73jl0mgip68x7iyvialyzdbriyaff269xxwvv"))))
f0f0a48b
DB
326 (build-system gnu-build-system)
327 (arguments
328 `(#:phases (modify-phases %standard-phases
8f7c6a5f
TGR
329 (delete 'configure)) ; no configuration
330 #:tests? #f ; no test suite
211dc8cd 331 #:make-flags
1ca44ae3 332 (let ((pkg-config (lambda (flag)
211dc8cd
TGR
333 (string-append
334 "$(shell pkg-config " flag " "
335 "xft fontconfig x11 libpng)"))))
1ca44ae3 336 (list (string-append "CC=" ,(cc-for-target))
211dc8cd
TGR
337 (string-append "PREFIX=" %output)
338 (string-append "INCS=-I. " (pkg-config "--cflags"))
339 (string-append "LIBS=" (pkg-config "--libs") " -lm")))))
f0f0a48b
DB
340 (native-inputs
341 `(("pkg-config" ,pkg-config)))
342 (inputs
343 `(("libpng" ,libpng)
344 ("libx11" ,libx11)
345 ("libxft" ,libxft)
346 ("fontconfig" ,fontconfig)))
d017dfaa
TGR
347 (synopsis "Plain-text presentation tool")
348 (description "Sent uses plain-text files and PNG images to create slideshow
f0f0a48b
DB
349presentations. Each paragraph represents a slide in the presentation.
350Especially for presentations using the Takahashi method this is very nice and
351allows you to write down the presentation for a quick lightning talk within a
352few minutes.")
51cfdf90 353 (home-page "https://tools.suckless.org/sent")
f0f0a48b 354 (license license:x11)))
4f5a0f32 355
356(define-public xbattmon
357 (package
358 (name "xbattmon")
205f4f28 359 (version "1.1")
4f5a0f32 360 (source
361 (origin
362 (method url-fetch)
fea8b729 363 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 364 "xbattmon-" version ".tar.gz"))
4f5a0f32 365 (sha256
366 (base32
205f4f28 367 "1zr6y8lml9xkx0a3dbbsds2qz1bjxvskp7wsckkf8mlsqrbb3xsg"))))
4f5a0f32 368 (build-system gnu-build-system)
369 (arguments
211dc8cd
TGR
370 `(#:tests? #f ; no tests
371 #:make-flags
1ca44ae3
MB
372 (list (string-append "CC=" ,(cc-for-target))
373 (string-append "PREFIX=" %output))))
4f5a0f32 374 (inputs
375 `(("libx11" ,libx11)))
fea8b729 376 (home-page "https://git.2f30.org/xbattmon/")
4f5a0f32 377 (synopsis "Simple battery monitor for X")
378 (description
379 "Xbattmon is a simple battery monitor for X.")
380 (license license:isc)))
f63abd0d 381
382(define-public wificurse
383 (package
384 (name "wificurse")
385 (version "0.3.9")
386 (source
387 (origin
388 (method url-fetch)
fea8b729 389 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 390 "wificurse-" version ".tar.gz"))
f63abd0d 391 (sha256
392 (base32
393 "067ghr1xly5ca41kc83xila1p5hpq0bxfcmc8jvxi2ggm6wrhavn"))))
394 (build-system gnu-build-system)
395 (arguments
396 `(#:tests? #f ; No tests
397 #:make-flags (list
398 (string-append "PREFIX=" %output))
399 #:phases
400 (modify-phases %standard-phases
401 (delete 'configure)))) ; No configure script
fea8b729 402 (home-page "https://git.2f30.org/wificurse/")
f63abd0d 403 (synopsis "Wifi DoS attack tool")
404 (description
405 "Wificurses listens for beacons sent from wireless access points
406in the range of your wireless station. Once received the program
407extracts the BSSID of the AP and transmits deauthentication packets
408using the broadcast MAC address. This results to the disconnection
409of all clients connected to the AP at the time of the attack. This
410is essencially a WiFi DoS attack tool created for educational
411purposes only. It works only in Linux and requires wireless card
412drivers capable of injecting packets in wireless networks.")
413 (license license:gpl3+)))
559115a6 414
415(define-public skroll
416 (package
417 (name "skroll")
418 (version "0.6")
419 (source
420 (origin
421 (method url-fetch)
fea8b729 422 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 423 "skroll-" version ".tar.gz"))
559115a6 424 (sha256
425 (base32
426 "0km6bjfz4ssb1z0xwld6iiixnn7d255ax8yjs3zkdm42z8q9yl0f"))))
427 (build-system gnu-build-system)
428 (arguments
211dc8cd
TGR
429 `(#:tests? #f ; no tests
430 #:make-flags
1ca44ae3
MB
431 (list (string-append "CC=" ,(cc-for-target))
432 (string-append "PREFIX=" %output))
559115a6 433 #:phases
434 (modify-phases %standard-phases
211dc8cd 435 (delete 'configure)))) ; no configure script
fea8b729 436 (home-page "https://2f30.org/")
559115a6 437 (synopsis "Commandline utility which scrolls text")
438 (description
439 "Skroll is a small utility that you can use to make a text scroll.
440Pipe text to it, and it will scroll a given number of letters from right to
441left.")
442 (license license:wtfpl2)))
401f4f08 443
444(define-public sbm
445 (package
446 (name "sbm")
447 (version "0.9")
448 (source
449 (origin
450 (method url-fetch)
fea8b729 451 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 452 "sbm-" version ".tar.gz"))
401f4f08 453 (sha256
454 (base32
455 "1nks5mkh5wn30kyjzlkjlgi31bv1wq52kbp0r6nzbyfnvfdlywik"))))
456 (build-system gnu-build-system)
457 (arguments
211dc8cd
TGR
458 `(#:tests? #f ; no tests
459 #:make-flags
1ca44ae3
MB
460 (list (string-append "CC=" ,(cc-for-target))
461 (string-append "PREFIX=" %output))
401f4f08 462 #:phases
463 (modify-phases %standard-phases
211dc8cd 464 (delete 'configure)))) ; no configure script
fea8b729 465 (home-page "https://git.2f30.org/sbm/")
401f4f08 466 (synopsis "Simple bandwidth monitor")
467 (description
468 "Sbm is a simple bandwidth monitor.")
469 (license license:isc)))
974ddc21 470
471(define-public prout
472 (package
473 (name "prout")
474 (version "0.2")
475 (source
476 (origin
477 (method url-fetch)
fea8b729 478 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 479 "prout-" version ".tar.gz"))
974ddc21 480 (sha256
481 (base32
482 "1s6c3ygg1h1fyxkh8gd7nzjk6qhnwsb4535d2k780kxnwns5fzas"))))
483 (build-system gnu-build-system)
484 (arguments
211dc8cd
TGR
485 `(#:tests? #f ; no tests
486 #:make-flags
1ca44ae3
MB
487 (list (string-append "CC=" ,(cc-for-target))
488 (string-append "PREFIX=" %output))
974ddc21 489 #:phases
490 (modify-phases %standard-phases
211dc8cd 491 (delete 'configure)))) ; no configure script
974ddc21 492 (inputs
493 `(("cups-minimal" ,cups-minimal)
494 ("zlib" ,zlib)))
fea8b729 495 (home-page "https://git.2f30.org/prout/")
974ddc21 496 (synopsis "Smaller lp command")
497 (description
498 "Prout (PRint OUT) is a small utility one can use to send
499documents to a printer.
500It has no feature, and does nothing else. Just set your default
501printer in client.conf(5) and start printing. No need for a local
502cups server to be installed.")
503 (license license:wtfpl2)))
823d7f53 504
505(define-public noice
506 (package
507 (name "noice")
30c9e096 508 (version "0.8")
823d7f53 509 (source
510 (origin
511 (method url-fetch)
fea8b729 512 (uri (string-append "https://dl.2f30.org/releases/"
afa4f888 513 "noice-" version ".tar.gz"))
823d7f53 514 (sha256
30c9e096 515 (base32 "0g01iwzscdv27c1idv93gd74kjzy3n9kazgm6qz08rygp96qx4xw"))))
823d7f53 516 (build-system gnu-build-system)
517 (arguments
cc2c5c22 518 `(#:tests? #f ; no tests
211dc8cd 519 #:make-flags
1ca44ae3
MB
520 (list (string-append "CC=" ,(cc-for-target))
521 (string-append "PREFIX=" %output))
823d7f53 522 #:phases
523 (modify-phases %standard-phases
cc2c5c22 524 (delete 'configure) ; no configure script
823d7f53 525 (add-before 'build 'curses
526 (lambda _
527 (substitute* "Makefile"
528 (("lcurses") "lncurses")))))))
529 (inputs
530 `(("ncurses" ,ncurses)))
fea8b729 531 (home-page "https://git.2f30.org/noice/")
823d7f53 532 (synopsis "Small file browser")
533 (description
534 "Noice is a small curses-based file browser.")
535 (license license:bsd-2)))
73aca00d 536
73aca00d 537(define-public human
aa945bf6
TGR
538 (package
539 (name "human")
540 (version "0.3")
541 (source
542 (origin
543 (method git-fetch)
544 (uri (git-reference
545 (url "git://git.2f30.org/human.git")
546 (commit version)))
547 (file-name (git-file-name name version))
548 (sha256
549 (base32
550 "0y0bsmvpwfwb2lwspi6a799y34h1faxc6yfanyw6hygxc8661mga"))))
73aca00d 551 (build-system gnu-build-system)
552 (arguments
aa945bf6 553 `(#:tests? #f ; no tests
211dc8cd 554 #:make-flags
1ca44ae3
MB
555 (list (string-append "CC=" ,(cc-for-target))
556 (string-append "PREFIX=" %output))
73aca00d 557 #:phases
558 (modify-phases %standard-phases
aa945bf6 559 (delete 'configure)))) ; no configure script
fea8b729 560 (home-page "https://git.2f30.org/human/")
73aca00d 561 (synopsis "Convert bytes to human readable formats")
562 (description
563 "Human is a small program which translate numbers into a
564human readable format. By default, it tries to detect the best
565factorisation, but you can force its output.
566You can adjust the number of decimals with the @code{SCALE}
567environment variable.")
aa945bf6 568 (license license:wtfpl2)))
e3c101eb 569
570(define-public fortify-headers
571 (package
572 (name "fortify-headers")
ca39ee94 573 (version "1.1")
e3c101eb 574 (source
575 (origin
576 (method url-fetch)
fea8b729 577 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 578 "fortify-headers-" version ".tar.gz"))
e3c101eb 579 (sha256
ca39ee94 580 (base32 "1dhz41jq1azcf7rbvga8w6pnx19l1j9r6jwj8qrlrfnjl9hdi9bb"))))
e3c101eb 581 (build-system gnu-build-system)
582 (arguments
37a2ea11 583 `(#:tests? #f ; no tests
211dc8cd 584 #:make-flags
1ca44ae3
MB
585 (list (string-append "CC=" ,(cc-for-target))
586 (string-append "PREFIX=" %output))
e3c101eb 587 #:phases
588 (modify-phases %standard-phases
37a2ea11 589 (delete 'configure)))) ; no configure script
fea8b729 590 (home-page "https://git.2f30.org/fortify-headers/")
e3c101eb 591 (synopsis "Standalone fortify-source implementation")
592 (description
593 "This is a standalone implementation of fortify source. It provides
594compile time buffer checks. It is libc-agnostic and simply overlays the
595system headers by using the @code{#include_next} extension found in GCC. It was
ef27b434 596initially intended to be used on musl-based Linux distributions.
e3c101eb 597
598@itemize
599@item It is portable, works on *BSD, Linux, Solaris and possibly others.
600@item It will only trap non-conformant programs. This means that fortify
601 level 2 is treated in the same way as level 1.
602@item Avoids making function calls when undefined behaviour has already been
ef27b434
TGR
603 invoked. This is handled by using @code{__builtin_trap()}.
604@item Support for out-of-bounds read interfaces, such as @code{send()},
605 @code{write()}, @code{fwrite()}, etc.
e3c101eb 606@item No ABI is enforced. All of the fortify check functions are inlined
607 into the resulting binary.
608@end itemize\n")
609 (license license:isc)))
021bdbd2 610
611(define-public colors
612 (package
613 (name "colors")
614 (version "0.3")
615 (source
616 (origin
617 (method url-fetch)
fea8b729 618 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 619 "colors-" version ".tar.gz"))
021bdbd2 620 (sha256
621 (base32
622 "1lckmqpgj89841splng0sszbls2ag71ggkgr1wsv9y3v6y87589z"))))
623 (build-system gnu-build-system)
624 (arguments
211dc8cd
TGR
625 `(#:tests? #f ; no tests
626 #:make-flags
1ca44ae3
MB
627 (list (string-append "CC=" ,(cc-for-target))
628 (string-append "PREFIX=" %output))
021bdbd2 629 #:phases
630 (modify-phases %standard-phases
211dc8cd 631 (delete 'configure)))) ; no configure script
021bdbd2 632 (inputs
633 `(("libpng" ,libpng)))
fea8b729 634 (home-page "https://git.2f30.org/colors/")
021bdbd2 635 (synopsis "Extract colors from pictures")
636 (description
637 "Extract colors from PNG files. It is similar to
638strings(1) but for pictures. For a given input file it outputs a
639colormap to stdout.")
640 (license license:isc)))
37d5fc7b 641
642;; No new releases were made at github, this repository is more active than
643;; the one at http://git.suckless.org/libutf/ and it is
644;; done by the same developer.
645(define-public libutf
646 (let ((revision "1")
647 (commit "ff4c60635e1f455b0a0b4200f8183fbd5a88225b"))
648 (package
649 (name "libutf")
259da514 650 (version (git-version "0.0.0" revision commit))
37d5fc7b 651 (source
652 (origin
653 (method git-fetch)
654 (uri (git-reference
655 (url "https://github.com/cls/libutf")
656 (commit commit)))
259da514 657 (file-name (git-file-name name version))
37d5fc7b 658 (sha256
659 (base32
660 "1ih5vjavilzggyr1j1z6w1z12c2fs5fg77cfnv7ami5ivsy3kg3d"))))
661 (build-system gnu-build-system)
662 (arguments
211dc8cd
TGR
663 `(#:tests? #f ; no tests
664 #:make-flags
1ca44ae3
MB
665 (list (string-append "CC=" ,(cc-for-target))
666 (string-append "PREFIX=" %output))
37d5fc7b 667 #:phases
668 (modify-phases %standard-phases
211dc8cd 669 (delete 'configure)))) ; no configure script
37d5fc7b 670 (inputs
671 `(("gawk" ,gawk)))
672 (home-page "https://github.com/cls/libutf")
673 (synopsis "Plan 9 compatible UTF-8 library")
674 (description
675 "This is a C89 UTF-8 library, with an API compatible with that of
676Plan 9's libutf, but with a number of improvements:
677
678@itemize
679@item Support for runes beyond the Basic Multilingual Plane.
680@item utflen and utfnlen cannot overflow on 32- or 64-bit machines.
681@item chartorune treats all invalid codepoints as though Runeerror.
682@item fullrune, utfecpy, and utfnlen do not overestimate the length
683of malformed runes.
684@item An extra function, charntorune(p,s,n), equivalent to
685fullrune(s,n) ? chartorune(p,s): 0.
686@item Runeerror may be set to an alternative replacement value, such
687as -1, to be used instead of U+FFFD.
688@end itemize\n")
689 (license license:expat))))
0318305c 690
691;; No release tarballs so far.
692(define-public lchat
be55f234
TGR
693 (let ((revision "4")
694 (commit "e3b64e67b9b9d832462382246474ce1e7d92217c"))
0318305c 695 (package
696 (name "lchat")
be55f234 697 (version (git-version "0.0.0" revision commit))
0318305c 698 (source
699 (origin
700 (method git-fetch)
701 (uri (git-reference
702 (url "https://github.com/younix/lchat")
703 (commit commit)))
be55f234 704 (file-name (git-file-name name version))
0318305c 705 (sha256
be55f234 706 (base32 "1qcjqbgmsskc04j2r6xl3amkwj05n520sq1wv2mqyqncz42qrxm0"))))
0318305c 707 (build-system gnu-build-system)
708 (arguments
82f22fac 709 `(#:test-target "test"
211dc8cd 710 #:make-flags
1ca44ae3
MB
711 (list (string-append "CC=" ,(cc-for-target))
712 (string-append "PREFIX=" %output))
0318305c 713 #:phases
714 (modify-phases %standard-phases
82f22fac 715 (delete 'configure) ; no configure script
0318305c 716 (add-before 'build 'libbsd
717 (lambda _
718 (substitute* "Makefile"
719 (("-lutf") "-lutf -lbsd"))))
720 (replace 'install
721 (lambda* (#:key outputs #:allow-other-keys)
82f22fac
TGR
722 (let* ((out (assoc-ref outputs "out"))
723 (bin (string-append out "/bin"))
724 (man1 (string-append out "/share/man/man1")))
0318305c 725 (install-file "lchat" bin)
82f22fac 726 (install-file "lchat.1" man1)
0318305c 727 #t))))))
728 (inputs
729 `(("grep" ,grep)
730 ("ncurses" ,ncurses)
731 ("libutf" ,libutf)
732 ("libbsd" ,libbsd)))
733 (home-page "https://github.com/younix/lchat")
734 (synopsis "Line chat is a frontend for the irc client ii from suckless")
735 (description
736 "Lchat (line chat) is the little and small brother of cii.
2c65c085
TGR
737It is a front end for ii-like chat programs. It uses @code{tail -f} to get the
738chat output in the background.")
0318305c 739 (license license:isc))))
d9e3a213
RV
740
741(define-public scron
742 (package
743 (name "scron")
744 (version "0.4")
745 (source
746 (origin
747 (method url-fetch)
748 (uri (string-append "https://dl.2f30.org/releases/"
5e1cc668 749 "scron-" version ".tar.gz"))
d9e3a213
RV
750 (sha256
751 (base32
752 "066fwa55kqcgfrsqgxh94sqbkxfsr691360xg4ljxr4i75d25s2a"))))
753 (build-system gnu-build-system)
754 (arguments
211dc8cd
TGR
755 `(#:tests? #f ; no tests
756 #:make-flags
1ca44ae3
MB
757 (list (string-append "CC=" ,(cc-for-target))
758 (string-append "PREFIX=" %output))
d9e3a213
RV
759 #:phases
760 (modify-phases %standard-phases
211dc8cd 761 (delete 'configure)))) ; no configure script
d9e3a213
RV
762 (home-page "https://git.2f30.org/scron/")
763 (synopsis "Simple cron daemon")
764 (description
765 "Schedule commands to be run at specified dates and times.
766Single daemon and configuration file. Log to stdout or syslog. No mail
767support.")
768 (license license:expat)))