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