suckless.scm 26 KB

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