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 Nils Gillmann <ng0@n0.is>
  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. ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
  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. (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. #:use-module (gnu packages gawk)
  47. #:use-module (gnu packages base)
  48. #:use-module (gnu packages libbsd))
  49. (define-public blind
  50. (package
  51. (name "blind")
  52. (version "1.1")
  53. (source (origin
  54. (method url-fetch)
  55. (uri (string-append "https://dl.suckless.org/tools/blind-"
  56. version ".tar.gz"))
  57. (sha256
  58. (base32
  59. "0nncvzyipvkkd7zlgzwbjygp82frzs2hvbnk71gxf671np607y94"))))
  60. (build-system gnu-build-system)
  61. (arguments
  62. '(#:tests? #f ; no check target
  63. #:make-flags (list
  64. "CC=gcc"
  65. (string-append "PREFIX=" %output))
  66. #:phases
  67. (modify-phases %standard-phases
  68. (delete 'configure)))) ; no configure script
  69. (synopsis "Command line video editing utilities")
  70. (home-page "https://tools.suckless.org/blind/")
  71. (description
  72. "Blind is a collection of command line video editing utilities. It uses
  73. a custom raw video format with a simple container.")
  74. (license license:isc)))
  75. (define-public dwm
  76. (package
  77. (name "dwm")
  78. (version "6.2")
  79. (source (origin
  80. (method url-fetch)
  81. (uri (string-append "https://dl.suckless.org/dwm/dwm-"
  82. version ".tar.gz"))
  83. (sha256
  84. (base32 "03hirnj8saxnsfqiszwl2ds7p0avg20izv9vdqyambks00p2x44p"))))
  85. (build-system gnu-build-system)
  86. (arguments
  87. `(#:tests? #f
  88. #:make-flags (list (string-append "FREETYPEINC="
  89. (assoc-ref %build-inputs "freetype")
  90. "/include/freetype2"))
  91. #:phases
  92. (modify-phases %standard-phases
  93. (replace 'configure
  94. (lambda _
  95. (substitute* "Makefile" (("\\$\\{CC\\}") "gcc"))
  96. #t))
  97. (replace 'install
  98. (lambda* (#:key outputs #:allow-other-keys)
  99. (let ((out (assoc-ref outputs "out")))
  100. (invoke "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 "https://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.9")
  137. (source (origin
  138. (method url-fetch)
  139. (uri (string-append "https://dl.suckless.org/tools/dmenu-"
  140. version ".tar.gz"))
  141. (sha256
  142. (base32
  143. "0ia9nqr83bv6x247q30bal0v42chcj9qcjgv59xs6xj46m7iz5xk"))))
  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. (modify-phases %standard-phases (delete 'configure))))
  154. (inputs
  155. `(("freetype" ,freetype)
  156. ("libxft" ,libxft)
  157. ("libx11" ,libx11)
  158. ("libxinerama" ,libxinerama)))
  159. (home-page "https://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.6")
  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. "1jpmg9k9f4f3lpz0k3cphqjswlyf8lz2sm8ccifiip93kd4rrdj0"))))
  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) ; tinyalsa (unpackaged) would suffice
  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 "https://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 (modify-phases %standard-phases (delete 'configure))))
  209. (inputs
  210. `(("libx11" ,libx11)
  211. ("libxext" ,libxext)
  212. ("libxinerama" ,libxinerama)
  213. ("libxrandr" ,libxrandr)))
  214. (home-page "https://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.8.1")
  223. (source
  224. (origin
  225. (method url-fetch)
  226. (uri (string-append "https://dl.suckless.org/st/st-"
  227. version ".tar.gz"))
  228. (sha256
  229. (base32
  230. "09k94v3n20gg32xy7y68p96x9dq5msl80gknf9gbvlyjp3i0zyy4"))))
  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. (("\ttic .*") ""))
  243. #t)))))
  244. (inputs
  245. `(("libx11" ,libx11)
  246. ("libxft" ,libxft)
  247. ("fontconfig" ,fontconfig)
  248. ("freetype" ,freetype)))
  249. (native-inputs
  250. `(("pkg-config" ,pkg-config)))
  251. (home-page "https://st.suckless.org/")
  252. (synopsis "Simple terminal emulator")
  253. (description
  254. "St implements a simple and lightweight terminal emulator. It
  255. implements 256 colors, most VT10X escape sequences, utf8, X11 copy/paste,
  256. antialiased fonts (using fontconfig), fallback fonts, resizing, and line
  257. drawing.")
  258. (license license:x11)))
  259. (define-public surf
  260. (package
  261. (name "surf")
  262. (version "2.0")
  263. (source
  264. (origin
  265. (method url-fetch)
  266. (uri (string-append "https://dl.suckless.org/surf/surf-"
  267. version ".tar.gz"))
  268. (sha256
  269. (base32
  270. "07cmajyafljigy10d21kkyvv5jf3hxkx06pz3rwwk3y3c9x4rvps"))))
  271. (build-system glib-or-gtk-build-system)
  272. (arguments
  273. '(#:tests? #f ; no tests
  274. #:make-flags (list "CC=gcc"
  275. (string-append "PREFIX=" %output))
  276. #:phases
  277. (modify-phases %standard-phases
  278. (delete 'configure)
  279. ;; Use the right file name for dmenu and xprop.
  280. (add-before 'build 'set-dmenu-and-xprop-file-name
  281. (lambda* (#:key inputs #:allow-other-keys)
  282. (substitute* "config.def.h"
  283. (("dmenu") (string-append (assoc-ref inputs "dmenu") "/bin/dmenu"))
  284. (("xprop") (string-append (assoc-ref inputs "xprop") "/bin/xprop")))
  285. #t)))))
  286. (inputs
  287. `(("dmenu" ,dmenu)
  288. ("glib-networking" ,glib-networking)
  289. ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
  290. ("webkitgtk" ,webkitgtk)
  291. ("xprop" ,xprop)))
  292. (native-inputs
  293. `(("pkg-config" ,pkg-config)))
  294. (home-page "https://surf.suckless.org/")
  295. (synopsis "Simple web browser")
  296. (description
  297. "Surf is a simple web browser based on WebKit/GTK+. It is able to
  298. display websites and follow links. It supports the XEmbed protocol which
  299. makes it possible to embed it in another application. Furthermore, one can
  300. point surf to another URI by setting its XProperties.")
  301. (license license:x11)))
  302. (define-public sent
  303. (package
  304. (name "sent")
  305. (version "1")
  306. (source (origin
  307. (method url-fetch/tarbomb)
  308. (uri (string-append "https://dl.suckless.org/tools/sent-"
  309. version ".tar.gz"))
  310. (sha256
  311. (base32
  312. "0cxysz5lp25mgww73jl0mgip68x7iyvialyzdbriyaff269xxwvv"))))
  313. (build-system gnu-build-system)
  314. (arguments
  315. `(#:phases (modify-phases %standard-phases
  316. (delete 'configure)) ; no configuration
  317. #:tests? #f ; no test suite
  318. #:make-flags (let ((pkg-config (lambda (flag)
  319. (string-append
  320. "$(shell pkg-config " flag " "
  321. "xft fontconfig x11 libpng)"))))
  322. (list
  323. "CC=gcc"
  324. (string-append "PREFIX=" %output)
  325. (string-append "INCS=-I. " (pkg-config "--cflags"))
  326. (string-append "LIBS=" (pkg-config "--libs") " -lm")))))
  327. (native-inputs
  328. `(("pkg-config" ,pkg-config)))
  329. (inputs
  330. `(("libpng" ,libpng)
  331. ("libx11" ,libx11)
  332. ("libxft" ,libxft)
  333. ("fontconfig" ,fontconfig)))
  334. (synopsis "Plain-text presentation tool")
  335. (description "Sent uses plain-text files and PNG images to create slideshow
  336. presentations. Each paragraph represents a slide in the presentation.
  337. Especially for presentations using the Takahashi method this is very nice and
  338. allows you to write down the presentation for a quick lightning talk within a
  339. few minutes.")
  340. (home-page "https://tools.suckless.org/sent")
  341. (license license:x11)))
  342. (define-public xbattmon
  343. (package
  344. (name "xbattmon")
  345. (version "1.1")
  346. (source
  347. (origin
  348. (method url-fetch)
  349. (uri (string-append "https://dl.2f30.org/releases/"
  350. name "-" version ".tar.gz"))
  351. (sha256
  352. (base32
  353. "1zr6y8lml9xkx0a3dbbsds2qz1bjxvskp7wsckkf8mlsqrbb3xsg"))))
  354. (build-system gnu-build-system)
  355. (arguments
  356. `(#:tests? #f ; No tests
  357. #:make-flags (list "CC=gcc"
  358. (string-append "PREFIX=" %output))))
  359. (inputs
  360. `(("libx11" ,libx11)))
  361. (home-page "https://git.2f30.org/xbattmon/")
  362. (synopsis "Simple battery monitor for X")
  363. (description
  364. "Xbattmon is a simple battery monitor for X.")
  365. (license license:isc)))
  366. (define-public wificurse
  367. (package
  368. (name "wificurse")
  369. (version "0.3.9")
  370. (source
  371. (origin
  372. (method url-fetch)
  373. (uri (string-append "https://dl.2f30.org/releases/"
  374. name "-" version ".tar.gz"))
  375. (sha256
  376. (base32
  377. "067ghr1xly5ca41kc83xila1p5hpq0bxfcmc8jvxi2ggm6wrhavn"))))
  378. (build-system gnu-build-system)
  379. (arguments
  380. `(#:tests? #f ; No tests
  381. #:make-flags (list
  382. (string-append "PREFIX=" %output))
  383. #:phases
  384. (modify-phases %standard-phases
  385. (delete 'configure)))) ; No configure script
  386. (home-page "https://git.2f30.org/wificurse/")
  387. (synopsis "Wifi DoS attack tool")
  388. (description
  389. "Wificurses listens for beacons sent from wireless access points
  390. in the range of your wireless station. Once received the program
  391. extracts the BSSID of the AP and transmits deauthentication packets
  392. using the broadcast MAC address. This results to the disconnection
  393. of all clients connected to the AP at the time of the attack. This
  394. is essencially a WiFi DoS attack tool created for educational
  395. purposes only. It works only in Linux and requires wireless card
  396. drivers capable of injecting packets in wireless networks.")
  397. (license license:gpl3+)))
  398. (define-public skroll
  399. (package
  400. (name "skroll")
  401. (version "0.6")
  402. (source
  403. (origin
  404. (method url-fetch)
  405. (uri (string-append "https://dl.2f30.org/releases/"
  406. name "-" version ".tar.gz"))
  407. (sha256
  408. (base32
  409. "0km6bjfz4ssb1z0xwld6iiixnn7d255ax8yjs3zkdm42z8q9yl0f"))))
  410. (build-system gnu-build-system)
  411. (arguments
  412. `(#:tests? #f ; No tests
  413. #:make-flags (list "CC=gcc"
  414. (string-append "PREFIX=" %output))
  415. #:phases
  416. (modify-phases %standard-phases
  417. (delete 'configure)))) ; No configure script
  418. (home-page "https://2f30.org/")
  419. (synopsis "Commandline utility which scrolls text")
  420. (description
  421. "Skroll is a small utility that you can use to make a text scroll.
  422. Pipe text to it, and it will scroll a given number of letters from right to
  423. left.")
  424. (license license:wtfpl2)))
  425. (define-public sbm
  426. (package
  427. (name "sbm")
  428. (version "0.9")
  429. (source
  430. (origin
  431. (method url-fetch)
  432. (uri (string-append "https://dl.2f30.org/releases/"
  433. name "-" version ".tar.gz"))
  434. (sha256
  435. (base32
  436. "1nks5mkh5wn30kyjzlkjlgi31bv1wq52kbp0r6nzbyfnvfdlywik"))))
  437. (build-system gnu-build-system)
  438. (arguments
  439. `(#:tests? #f ; No tests
  440. #:make-flags (list "CC=gcc"
  441. (string-append "PREFIX=" %output))
  442. #:phases
  443. (modify-phases %standard-phases
  444. (delete 'configure)))) ; No configure script
  445. (home-page "https://git.2f30.org/sbm/")
  446. (synopsis "Simple bandwidth monitor")
  447. (description
  448. "Sbm is a simple bandwidth monitor.")
  449. (license license:isc)))
  450. (define-public prout
  451. (package
  452. (name "prout")
  453. (version "0.2")
  454. (source
  455. (origin
  456. (method url-fetch)
  457. (uri (string-append "https://dl.2f30.org/releases/"
  458. name "-" version ".tar.gz"))
  459. (sha256
  460. (base32
  461. "1s6c3ygg1h1fyxkh8gd7nzjk6qhnwsb4535d2k780kxnwns5fzas"))))
  462. (build-system gnu-build-system)
  463. (arguments
  464. `(#:tests? #f ; No tests
  465. #:make-flags (list "CC=gcc"
  466. (string-append "PREFIX=" %output))
  467. #:phases
  468. (modify-phases %standard-phases
  469. (delete 'configure)))) ; No configure script
  470. (inputs
  471. `(("cups-minimal" ,cups-minimal)
  472. ("zlib" ,zlib)))
  473. (home-page "https://git.2f30.org/prout/")
  474. (synopsis "Smaller lp command")
  475. (description
  476. "Prout (PRint OUT) is a small utility one can use to send
  477. documents to a printer.
  478. It has no feature, and does nothing else. Just set your default
  479. printer in client.conf(5) and start printing. No need for a local
  480. cups server to be installed.")
  481. (license license:wtfpl2)))
  482. (define-public noice
  483. (package
  484. (name "noice")
  485. (version "0.7")
  486. (source
  487. (origin
  488. (method url-fetch)
  489. (uri (string-append "https://dl.2f30.org/releases/"
  490. name "-" version ".tar.gz"))
  491. (sha256
  492. (base32
  493. "03b0kzngzacfpz4n8lgbvia2s765i5bkw55v482hh4m49dm41gpc"))))
  494. (build-system gnu-build-system)
  495. (arguments
  496. `(#:tests? #f ; no tests
  497. #:make-flags (list "CC=gcc"
  498. (string-append "PREFIX=" %output))
  499. #:phases
  500. (modify-phases %standard-phases
  501. (delete 'configure) ; no configure script
  502. (add-before 'build 'curses
  503. (lambda _
  504. (substitute* "Makefile"
  505. (("lcurses") "lncurses")))))))
  506. (inputs
  507. `(("ncurses" ,ncurses)))
  508. (home-page "https://git.2f30.org/noice/")
  509. (synopsis "Small file browser")
  510. (description
  511. "Noice is a small curses-based file browser.")
  512. (license license:bsd-2)))
  513. (define-public human
  514. (package
  515. (name "human")
  516. (version "0.3")
  517. (source
  518. (origin
  519. (method git-fetch)
  520. (uri (git-reference
  521. (url "git://git.2f30.org/human.git")
  522. (commit version)))
  523. (file-name (git-file-name name version))
  524. (sha256
  525. (base32
  526. "0y0bsmvpwfwb2lwspi6a799y34h1faxc6yfanyw6hygxc8661mga"))))
  527. (build-system gnu-build-system)
  528. (arguments
  529. `(#:tests? #f ; no tests
  530. #:make-flags (list "CC=gcc"
  531. (string-append "PREFIX=" %output))
  532. #:phases
  533. (modify-phases %standard-phases
  534. (delete 'configure)))) ; no configure script
  535. (home-page "https://git.2f30.org/human/")
  536. (synopsis "Convert bytes to human readable formats")
  537. (description
  538. "Human is a small program which translate numbers into a
  539. human readable format. By default, it tries to detect the best
  540. factorisation, but you can force its output.
  541. You can adjust the number of decimals with the @code{SCALE}
  542. environment variable.")
  543. (license license:wtfpl2)))
  544. (define-public fortify-headers
  545. (package
  546. (name "fortify-headers")
  547. (version "1.0")
  548. (source
  549. (origin
  550. (method url-fetch)
  551. (uri (string-append "https://dl.2f30.org/releases/"
  552. name "-" version ".tar.gz"))
  553. (sha256
  554. (base32
  555. "0nvplfg4y4a10x2j12qwmxzlk2q4j6287j0v5f9bfsdayb04qvh2"))))
  556. (build-system gnu-build-system)
  557. (arguments
  558. `(#:tests? #f ; no tests
  559. #:make-flags (list "CC=gcc"
  560. (string-append "PREFIX=" %output))
  561. #:phases
  562. (modify-phases %standard-phases
  563. (delete 'configure)))) ; no configure script
  564. (home-page "https://git.2f30.org/fortify-headers/")
  565. (synopsis "Standalone fortify-source implementation")
  566. (description
  567. "This is a standalone implementation of fortify source. It provides
  568. compile time buffer checks. It is libc-agnostic and simply overlays the
  569. system headers by using the @code{#include_next} extension found in GCC. It was
  570. initially intended to be used on musl-based Linux distributions.
  571. @itemize
  572. @item It is portable, works on *BSD, Linux, Solaris and possibly others.
  573. @item It will only trap non-conformant programs. This means that fortify
  574. level 2 is treated in the same way as level 1.
  575. @item Avoids making function calls when undefined behaviour has already been
  576. invoked. This is handled by using @code{__builtin_trap()}.
  577. @item Support for out-of-bounds read interfaces, such as @code{send()},
  578. @code{write()}, @code{fwrite()}, etc.
  579. @item No ABI is enforced. All of the fortify check functions are inlined
  580. into the resulting binary.
  581. @end itemize\n")
  582. (license license:isc)))
  583. (define-public colors
  584. (package
  585. (name "colors")
  586. (version "0.3")
  587. (source
  588. (origin
  589. (method url-fetch)
  590. (uri (string-append "https://dl.2f30.org/releases/"
  591. name "-" version ".tar.gz"))
  592. (sha256
  593. (base32
  594. "1lckmqpgj89841splng0sszbls2ag71ggkgr1wsv9y3v6y87589z"))))
  595. (build-system gnu-build-system)
  596. (arguments
  597. `(#:tests? #f ; No tests
  598. #:make-flags (list "CC=gcc"
  599. (string-append "PREFIX=" %output))
  600. #:phases
  601. (modify-phases %standard-phases
  602. (delete 'configure)))) ; No configure script
  603. (inputs
  604. `(("libpng" ,libpng)))
  605. (home-page "https://git.2f30.org/colors/")
  606. (synopsis "Extract colors from pictures")
  607. (description
  608. "Extract colors from PNG files. It is similar to
  609. strings(1) but for pictures. For a given input file it outputs a
  610. colormap to stdout.")
  611. (license license:isc)))
  612. ;; No new releases were made at github, this repository is more active than
  613. ;; the one at http://git.suckless.org/libutf/ and it is
  614. ;; done by the same developer.
  615. (define-public libutf
  616. (let ((revision "1")
  617. (commit "ff4c60635e1f455b0a0b4200f8183fbd5a88225b"))
  618. (package
  619. (name "libutf")
  620. (version (string-append "0.0.0-" revision "." (string-take commit 7)))
  621. (source
  622. (origin
  623. (method git-fetch)
  624. (uri (git-reference
  625. (url "https://github.com/cls/libutf")
  626. (commit commit)))
  627. (file-name (string-append name "-" version "-checkout"))
  628. (sha256
  629. (base32
  630. "1ih5vjavilzggyr1j1z6w1z12c2fs5fg77cfnv7ami5ivsy3kg3d"))))
  631. (build-system gnu-build-system)
  632. (arguments
  633. `(#:tests? #f ; No tests
  634. #:make-flags (list "CC=gcc"
  635. (string-append "PREFIX=" %output))
  636. #:phases
  637. (modify-phases %standard-phases
  638. (delete 'configure)))) ; No configure script
  639. (inputs
  640. `(("gawk" ,gawk)))
  641. (home-page "https://github.com/cls/libutf")
  642. (synopsis "Plan 9 compatible UTF-8 library")
  643. (description
  644. "This is a C89 UTF-8 library, with an API compatible with that of
  645. Plan 9's libutf, but with a number of improvements:
  646. @itemize
  647. @item Support for runes beyond the Basic Multilingual Plane.
  648. @item utflen and utfnlen cannot overflow on 32- or 64-bit machines.
  649. @item chartorune treats all invalid codepoints as though Runeerror.
  650. @item fullrune, utfecpy, and utfnlen do not overestimate the length
  651. of malformed runes.
  652. @item An extra function, charntorune(p,s,n), equivalent to
  653. fullrune(s,n) ? chartorune(p,s): 0.
  654. @item Runeerror may be set to an alternative replacement value, such
  655. as -1, to be used instead of U+FFFD.
  656. @end itemize\n")
  657. (license license:expat))))
  658. ;; No release tarballs so far.
  659. (define-public lchat
  660. (let ((revision "3")
  661. (commit "f95191970fd59c52a8b09cff32bd8d2135cbfc6b"))
  662. (package
  663. (name "lchat")
  664. (version (string-append "0.0.0-" revision "." (string-take commit 7)))
  665. (source
  666. (origin
  667. (method git-fetch)
  668. (uri (git-reference
  669. (url "https://github.com/younix/lchat")
  670. (commit commit)))
  671. (file-name (string-append name "-" version "-checkout"))
  672. (sha256
  673. (base32
  674. "07pxzziczhzprmjy61k7nl9i1kxpgnad37qkjf5fn4wf06nqdxpl"))))
  675. (build-system gnu-build-system)
  676. (arguments
  677. `(#:test-target "test"
  678. #:make-flags (list "CC=gcc"
  679. (string-append "PREFIX=" %output))
  680. #:phases
  681. (modify-phases %standard-phases
  682. (delete 'configure) ; no configure script
  683. (add-before 'build 'libbsd
  684. (lambda _
  685. (substitute* "Makefile"
  686. (("-lutf") "-lutf -lbsd"))))
  687. (replace 'install
  688. (lambda* (#:key outputs #:allow-other-keys)
  689. (let* ((out (assoc-ref outputs "out"))
  690. (bin (string-append out "/bin"))
  691. (man1 (string-append out "/share/man/man1")))
  692. (install-file "lchat" bin)
  693. (install-file "lchat.1" man1)
  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 @code{tail -f} to get the
  705. chat output in the background.")
  706. (license license:isc))))