gnu: Add human.
[jackhill/guix/guix.git] / gnu / packages / suckless.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
3 ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
4 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
5 ;;; Copyright © 2016, 2017 ng0 <ng0@libertad.pw>
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>
9 ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
17 ;;;
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
22 ;;;
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26 (define-module (gnu packages suckless)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix packages)
29 #:use-module (guix download)
30 #:use-module (guix git-download)
31 #:use-module (guix build-system gnu)
32 #:use-module (guix build-system glib-or-gtk)
33 #:use-module (gnu packages)
34 #:use-module (gnu packages gnome)
35 #:use-module (gnu packages image)
36 #:use-module (gnu packages xorg)
37 #:use-module (gnu packages fonts)
38 #:use-module (gnu packages pkg-config)
39 #:use-module (gnu packages webkit)
40 #:use-module (gnu packages fontutils)
41 #:use-module (gnu packages mpd)
42 #:use-module (gnu packages linux)
43 #:use-module (gnu packages compression)
44 #:use-module (gnu packages cups)
45 #:use-module (gnu packages ncurses))
46
47 (define-public dwm
48 (package
49 (name "dwm")
50 (version "6.1")
51 (source (origin
52 (method url-fetch)
53 (uri (string-append "http://dl.suckless.org/dwm/dwm-"
54 version ".tar.gz"))
55 (sha256
56 (base32 "1zkmwb6df6m254shx06ly90c0q4jl70skk1pvkixpb7hcxhwbxn2"))))
57 (build-system gnu-build-system)
58 (arguments
59 `(#:tests? #f
60 #:make-flags (list (string-append "FREETYPEINC="
61 (assoc-ref %build-inputs "freetype")
62 "/include/freetype2"))
63 #:phases
64 (alist-replace
65 'configure
66 (lambda _
67 (substitute* "Makefile" (("\\$\\{CC\\}") "gcc"))
68 #t)
69 (alist-replace
70 'install
71 (lambda* (#:key outputs #:allow-other-keys)
72 (let ((out (assoc-ref outputs "out")))
73 (zero?
74 (system* "make" "install"
75 (string-append "DESTDIR=" out) "PREFIX="))))
76 %standard-phases))))
77 (inputs
78 `(("freetype" ,freetype)
79 ("libx11" ,libx11)
80 ("libxft" ,libxft)
81 ("libxinerama" ,libxinerama)))
82 (home-page "http://dwm.suckless.org/")
83 (synopsis "Dynamic window manager")
84 (description
85 "dwm is a dynamic window manager for X. It manages windows in tiled,
86 monocle and floating layouts. All of the layouts can be applied dynamically,
87 optimising the environment for the application in use and the task performed.")
88 (license license:x11)))
89
90 (define-public dmenu
91 (package
92 (name "dmenu")
93 (version "4.6")
94 (source (origin
95 (method url-fetch)
96 (uri (string-append "http://dl.suckless.org/tools/dmenu-"
97 version ".tar.gz"))
98 (sha256
99 (base32
100 "1cwnvamqqlgczvd5dv5rsgqbhv8kp0ddjnhmavb3q732i8028yja"))))
101 (build-system gnu-build-system)
102 (arguments
103 '(#:tests? #f ; no tests
104 #:make-flags (list "CC=gcc"
105 (string-append "PREFIX=" %output)
106 (string-append "FREETYPEINC="
107 (assoc-ref %build-inputs "freetype")
108 "/include/freetype2"))
109 #:phases
110 (alist-delete 'configure %standard-phases)))
111 (inputs
112 `(("freetype" ,freetype)
113 ("libxft" ,libxft)
114 ("libx11" ,libx11)
115 ("libxinerama" ,libxinerama)))
116 (home-page "http://tools.suckless.org/dmenu/")
117 (synopsis "Dynamic menu")
118 (description
119 "A dynamic menu for X, originally designed for dwm. It manages large
120 numbers of user-defined menu items efficiently.")
121 (license license:x11)))
122
123 (define-public spoon
124 (package
125 (name "spoon")
126 (version "0.3")
127 (source
128 (origin
129 (method url-fetch)
130 (uri (string-append "http://dl.2f30.org/releases/"
131 name "-" version ".tar.gz"))
132 (sha256
133 (base32
134 "10c5i7ykpy7inzzfiw1dh0srpkljycr3blxhvd8160wsvplbws48"))))
135 (build-system gnu-build-system)
136 (arguments
137 `(#:tests? #f ; No tests
138 #:make-flags (list "CC=gcc"
139 (string-append "PREFIX=" %output))))
140 (inputs
141 `(("libx11" ,libx11)
142 ("libxkbfile" ,libxkbfile)
143 ("alsa-lib" ,alsa-lib)
144 ("libmpdclient" ,libmpdclient)))
145 (home-page "http://git.2f30.org/spoon/")
146 (synopsis "Set dwm status")
147 (description
148 "Spoon can be used to set the dwm status.")
149 (license license:isc)))
150
151 (define-public slock
152 (package
153 (name "slock")
154 (version "1.4")
155 (source (origin
156 (method url-fetch)
157 (uri (string-append "http://dl.suckless.org/tools/slock-"
158 version ".tar.gz"))
159 (sha256
160 (base32
161 "0sif752303dg33f14k6pgwq2jp1hjyhqv6x4sy3sj281qvdljf5m"))))
162 (build-system gnu-build-system)
163 (arguments
164 '(#:tests? #f ; no tests
165 #:make-flags (list "CC=gcc"
166 (string-append "PREFIX=" %output))
167 #:phases (alist-delete 'configure %standard-phases)))
168 (inputs
169 `(("libx11" ,libx11)
170 ("libxext" ,libxext)
171 ("libxinerama" ,libxinerama)
172 ("libxrandr" ,libxrandr)))
173 (home-page "http://tools.suckless.org/slock/")
174 (synopsis "Simple X session lock")
175 (description
176 "Simple X session lock with trivial feedback on password entry.")
177 (license license:x11)))
178
179 (define-public st
180 (package
181 (name "st")
182 (version "0.7")
183 (source
184 (origin
185 (method url-fetch)
186 (uri (string-append "http://dl.suckless.org/st/st-"
187 version ".tar.gz"))
188 (sha256
189 (base32
190 "00309qiw20rc89696pk8bdr7ik4r1aarik7jxqk8k66cdj80v1zp"))))
191 (build-system gnu-build-system)
192 (arguments
193 '(#:tests? #f ; no tests
194 #:make-flags (list "CC=gcc"
195 (string-append "PREFIX=" %output))
196 #:phases
197 (modify-phases %standard-phases
198 (delete 'configure)
199 (add-after 'unpack 'inhibit-terminfo-install
200 (lambda _
201 (substitute* "Makefile"
202 (("\t@tic -s st.info") ""))
203 #t)))))
204 (inputs
205 `(("libx11" ,libx11)
206 ("libxft" ,libxft)
207 ("fontconfig" ,fontconfig)
208 ("freetype" ,freetype)))
209 (native-inputs `(("pkg-config" ,pkg-config)))
210 (home-page "http://st.suckless.org/")
211 (synopsis "Simple terminal emulator")
212 (description
213 "St implements a simple and lightweight terminal emulator. It
214 implements 256 colors, most VT10X escape sequences, utf8, X11 copy/paste,
215 antialiased fonts (using fontconfig), fallback fonts, resizing, and line
216 drawing.")
217 (license license:x11)))
218
219 (define-public surf
220 (package
221 (name "surf")
222 (version "0.7")
223 (source
224 (origin
225 (method url-fetch)
226 (uri (string-append "http://dl.suckless.org/surf/surf-"
227 version ".tar.gz"))
228 (sha256
229 (base32
230 "0jj93izd8fizxfa6ln9w1h9bwki81sz5dhskh5x1rl34zd38aq4m"))))
231 (build-system glib-or-gtk-build-system)
232 (arguments
233 '(#:tests? #f ; no tests
234 #:make-flags (list "CC=gcc"
235 (string-append "PREFIX=" %output))
236 #:phases
237 (modify-phases %standard-phases
238 (delete 'configure))))
239 (inputs
240 `(("glib-networking" ,glib-networking)
241 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
242 ("webkitgtk" ,webkitgtk/gtk+-2)))
243 (native-inputs
244 `(("pkg-config" ,pkg-config)))
245 (home-page "http://surf.suckless.org/")
246 (synopsis "Simple web browser")
247 (description
248 "Surf is a simple web browser based on WebKit/GTK+. It is able to
249 display websites and follow links. It supports the XEmbed protocol which
250 makes it possible to embed it in another application. Furthermore, one can
251 point surf to another URI by setting its XProperties.")
252 (license license:x11)))
253
254 (define-public sent
255 (package
256 (name "sent")
257 (version "0.2")
258 (source (origin
259 (method url-fetch)
260 (uri (string-append "http://dl.suckless.org/tools/sent-"
261 version ".tar.gz"))
262 (sha256
263 (base32
264 "0xhh752hwaa26k4q6wvrb9jnpbnylss2aw6z11j7l9rav7wn3fak"))))
265 (build-system gnu-build-system)
266 (arguments
267 `(#:phases (modify-phases %standard-phases
268 (delete 'configure)) ;no configuration
269 #:tests? #f ;no test suite
270 #:make-flags (let ((pkg-config (lambda (flag)
271 (string-append
272 "$(shell pkg-config " flag " "
273 "xft fontconfig x11 libpng)"))))
274 (list
275 "CC=gcc"
276 (string-append "PREFIX=" %output)
277 (string-append "INCS=-I. " (pkg-config "--cflags"))
278 (string-append "LIBS=" (pkg-config "--libs") " -lm")))))
279 (native-inputs
280 `(("pkg-config" ,pkg-config)))
281 (inputs
282 `(("libpng" ,libpng)
283 ("libx11" ,libx11)
284 ("libxft" ,libxft)
285 ("fontconfig" ,fontconfig)))
286 (synopsis "Plaintext presentation tool")
287 (description "Sent uses plaintext files and PNG images to create slideshow
288 presentations. Each paragraph represents a slide in the presentation.
289 Especially for presentations using the Takahashi method this is very nice and
290 allows you to write down the presentation for a quick lightning talk within a
291 few minutes.")
292 (home-page "http://tools.suckless.org/sent")
293 (license license:x11)))
294
295 (define-public xbattmon
296 (package
297 (name "xbattmon")
298 (version "0.9")
299 (source
300 (origin
301 (method url-fetch)
302 (uri (string-append "http://dl.2f30.org/releases/"
303 name "-" version ".tar.gz"))
304 (sha256
305 (base32
306 "0n2rrjq03pgqrdkl7cz5snsfdanf4s58w9h6dbvnl7p8bbd3j2kn"))))
307 (build-system gnu-build-system)
308 (arguments
309 `(#:tests? #f ; No tests
310 #:make-flags (list "CC=gcc"
311 (string-append "PREFIX=" %output))))
312 (inputs
313 `(("libx11" ,libx11)))
314 (home-page "http://git.2f30.org/xbattmon/")
315 (synopsis "Simple battery monitor for X")
316 (description
317 "Xbattmon is a simple battery monitor for X.")
318 (license license:isc)))
319
320 (define-public wificurse
321 (package
322 (name "wificurse")
323 (version "0.3.9")
324 (source
325 (origin
326 (method url-fetch)
327 (uri (string-append "http://dl.2f30.org/releases/"
328 name "-" version ".tar.gz"))
329 (sha256
330 (base32
331 "067ghr1xly5ca41kc83xila1p5hpq0bxfcmc8jvxi2ggm6wrhavn"))))
332 (build-system gnu-build-system)
333 (arguments
334 `(#:tests? #f ; No tests
335 #:make-flags (list
336 (string-append "PREFIX=" %output))
337 #:phases
338 (modify-phases %standard-phases
339 (delete 'configure)))) ; No configure script
340 (home-page "http://git.2f30.org/wificurse/")
341 (synopsis "Wifi DoS attack tool")
342 (description
343 "Wificurses listens for beacons sent from wireless access points
344 in the range of your wireless station. Once received the program
345 extracts the BSSID of the AP and transmits deauthentication packets
346 using the broadcast MAC address. This results to the disconnection
347 of all clients connected to the AP at the time of the attack. This
348 is essencially a WiFi DoS attack tool created for educational
349 purposes only. It works only in Linux and requires wireless card
350 drivers capable of injecting packets in wireless networks.")
351 (license license:gpl3+)))
352
353 (define-public skroll
354 (package
355 (name "skroll")
356 (version "0.6")
357 (source
358 (origin
359 (method url-fetch)
360 (uri (string-append "http://dl.2f30.org/releases/"
361 name "-" version ".tar.gz"))
362 (sha256
363 (base32
364 "0km6bjfz4ssb1z0xwld6iiixnn7d255ax8yjs3zkdm42z8q9yl0f"))))
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 #:phases
371 (modify-phases %standard-phases
372 (delete 'configure)))) ; No configure script
373 (home-page "http://2f30.org")
374 (synopsis "Commandline utility which scrolls text")
375 (description
376 "Skroll is a small utility that you can use to make a text scroll.
377 Pipe text to it, and it will scroll a given number of letters from right to
378 left.")
379 (license license:wtfpl2)))
380
381 (define-public sbm
382 (package
383 (name "sbm")
384 (version "0.9")
385 (source
386 (origin
387 (method url-fetch)
388 (uri (string-append "http://dl.2f30.org/releases/"
389 name "-" version ".tar.gz"))
390 (sha256
391 (base32
392 "1nks5mkh5wn30kyjzlkjlgi31bv1wq52kbp0r6nzbyfnvfdlywik"))))
393 (build-system gnu-build-system)
394 (arguments
395 `(#:tests? #f ; No tests
396 #:make-flags (list "CC=gcc"
397 (string-append "PREFIX=" %output))
398 #:phases
399 (modify-phases %standard-phases
400 (delete 'configure)))) ; No configure script
401 (home-page "http://git.2f30.org/sbm/")
402 (synopsis "Simple bandwidth monitor")
403 (description
404 "Sbm is a simple bandwidth monitor.")
405 (license license:isc)))
406
407 (define-public prout
408 (package
409 (name "prout")
410 (version "0.2")
411 (source
412 (origin
413 (method url-fetch)
414 (uri (string-append "http://dl.2f30.org/releases/"
415 name "-" version ".tar.gz"))
416 (sha256
417 (base32
418 "1s6c3ygg1h1fyxkh8gd7nzjk6qhnwsb4535d2k780kxnwns5fzas"))))
419 (build-system gnu-build-system)
420 (arguments
421 `(#:tests? #f ; No tests
422 #:make-flags (list "CC=gcc"
423 (string-append "PREFIX=" %output))
424 #:phases
425 (modify-phases %standard-phases
426 (delete 'configure)))) ; No configure script
427 (inputs
428 `(("cups-minimal" ,cups-minimal)
429 ("zlib" ,zlib)))
430 (home-page "http://git.2f30.org/prout/")
431 (synopsis "Smaller lp command")
432 (description
433 "Prout (PRint OUT) is a small utility one can use to send
434 documents to a printer.
435 It has no feature, and does nothing else. Just set your default
436 printer in client.conf(5) and start printing. No need for a local
437 cups server to be installed.")
438 (license license:wtfpl2)))
439
440 (define-public noice
441 (package
442 (name "noice")
443 (version "0.6")
444 (source
445 (origin
446 (method url-fetch)
447 (uri (string-append "http://dl.2f30.org/releases/"
448 name "-" version ".tar.gz"))
449 (sha256
450 (base32
451 "0ldkbb71z6k4yzj4kpg3s94ijj1c1kx9dfcjz393py09scfyg5hr"))))
452 (build-system gnu-build-system)
453 (arguments
454 `(#:tests? #f ; No tests
455 #:make-flags (list "CC=gcc"
456 (string-append "PREFIX=" %output))
457 #:phases
458 (modify-phases %standard-phases
459 (delete 'configure) ; No configure script
460 (add-before 'build 'curses
461 (lambda _
462 (substitute* "Makefile"
463 (("lcurses") "lncurses")))))))
464 (inputs
465 `(("ncurses" ,ncurses)))
466 (home-page "http://git.2f30.org/noice/")
467 (synopsis "Small file browser")
468 (description
469 "Noice is a small curses-based file browser.")
470 (license license:bsd-2)))
471
472 ;;; We want some commits that are more recent than the latest release, 0.2
473 (define-public human
474 (let ((commit "50c80e6ba12823184b6866e06b955dbd2ccdc5d7")
475 (revision "1"))
476 (package
477 (name "human")
478 (version (string-append "0.2-" revision "." (string-take commit 7)))
479 (source
480 (origin
481 (method git-fetch)
482 (uri (git-reference
483 (url "git://git.2f30.org/human.git")
484 (commit commit)))
485 (file-name (string-append name "-" version "-checkout"))
486 (sha256
487 (base32
488 "18xngm4h9vsyip52zwd79rrp1irzg6rs462lpbp61amf7hj955gn"))))
489 (build-system gnu-build-system)
490 (arguments
491 `(#:tests? #f ; No tests
492 #:make-flags (list "CC=gcc"
493 (string-append "PREFIX=" %output))
494 #:phases
495 (modify-phases %standard-phases
496 (delete 'configure)))) ; No configure script
497 (home-page "http://git.2f30.org/human/")
498 (synopsis "Convert bytes to human readable formats")
499 (description
500 "Human is a small program which translate numbers into a
501 human readable format. By default, it tries to detect the best
502 factorisation, but you can force its output.
503 You can adjust the number of decimals with the @code{SCALE}
504 environment variable.")
505 (license license:wtfpl2))))