suckless.scm 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935
  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 Nikita <nikita@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–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  11. ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
  12. ;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
  13. ;;;
  14. ;;; This file is part of GNU Guix.
  15. ;;;
  16. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  17. ;;; under the terms of the GNU General Public License as published by
  18. ;;; the Free Software Foundation; either version 3 of the License, or (at
  19. ;;; your option) any later version.
  20. ;;;
  21. ;;; GNU Guix is distributed in the hope that it will be useful, but
  22. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  23. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  24. ;;; GNU General Public License for more details.
  25. ;;;
  26. ;;; You should have received a copy of the GNU General Public License
  27. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  28. (define-module (gnu packages suckless)
  29. #:use-module (gnu packages)
  30. #:use-module (gnu packages base)
  31. #:use-module (gnu packages compression)
  32. #:use-module (gnu packages cups)
  33. #:use-module (gnu packages fonts)
  34. #:use-module (gnu packages fontutils)
  35. #:use-module (gnu packages gawk)
  36. #:use-module (gnu packages gnome)
  37. #:use-module (gnu packages image)
  38. #:use-module (gnu packages libbsd)
  39. #:use-module (gnu packages linux)
  40. #:use-module (gnu packages mpd)
  41. #:use-module (gnu packages ncurses)
  42. #:use-module (gnu packages pkg-config)
  43. #:use-module (gnu packages webkit)
  44. #:use-module (gnu packages xorg)
  45. #:use-module (guix build-system glib-or-gtk)
  46. #:use-module (guix build-system gnu)
  47. #:use-module (guix download)
  48. #:use-module (guix git-download)
  49. #:use-module ((guix licenses) #:prefix license:)
  50. #:use-module (guix utils)
  51. #:use-module (guix packages))
  52. (define-public slscroll
  53. (package
  54. (name "slscroll")
  55. (version "0.1")
  56. (source
  57. (origin
  58. (method url-fetch)
  59. (uri (string-append "https://dl.suckless.org/tools/scroll-"
  60. version ".tar.gz"))
  61. (sha256
  62. (base32 "1mpfrvn122lnaqid1pi99ckpxd6x679b0w91pl003xmdwsfdbcly"))))
  63. (build-system gnu-build-system)
  64. (arguments
  65. `(#:tests? #f ; no check target
  66. #:make-flags
  67. (list
  68. (string-append "CC=" ,(cc-for-target))
  69. (string-append "PREFIX=" %output))
  70. #:phases
  71. (modify-phases %standard-phases
  72. (delete 'configure)))) ; no configure script
  73. (home-page "https://tools.suckless.org/scroll/")
  74. (synopsis "Scroll-back buffer program for st")
  75. (description "Scroll is a program that provides a scroll back buffer for
  76. terminal like @code{st}.")
  77. (license license:isc)))
  78. (define-public tabbed
  79. (package
  80. (name "tabbed")
  81. (version "0.6")
  82. (source
  83. (origin
  84. (method url-fetch)
  85. (uri (string-append "https://dl.suckless.org/tools/tabbed-"
  86. version ".tar.gz"))
  87. (sha256
  88. (base32 "0hhwckyzvsj9aim2l6m69wmvl2n7gzd6b1ly8qjnlpgcrcxfllbn"))))
  89. (build-system gnu-build-system)
  90. (arguments
  91. `(#:tests? #f ; no check target
  92. #:phases
  93. (modify-phases %standard-phases
  94. (add-after 'unpack 'patch
  95. (lambda* (#:key inputs outputs #:allow-other-keys)
  96. (substitute* "config.mk"
  97. (("/usr/local")
  98. (assoc-ref outputs "out"))
  99. (("/usr/X11R6")
  100. (assoc-ref inputs "libx11"))
  101. (("/usr/include/freetype2")
  102. (string-append (assoc-ref inputs "freetype")
  103. "/include/freetype2"))
  104. (("CC = cc")
  105. (string-append "CC = " ,(cc-for-target))))))
  106. (delete 'configure)))) ; no configure script
  107. (inputs
  108. `(("fontconfig" ,fontconfig)
  109. ("freetype" ,freetype)
  110. ("libx11" ,libx11)
  111. ("libxft" ,libxft)))
  112. (home-page "https://tools.suckless.org/tabbed/")
  113. (synopsis "Tab interface for application supporting Xembed")
  114. (description "Tabbed is a generic tabbed frontend to xembed-aware
  115. applications. It was originally designed for surf but also usable with many
  116. other applications, i.e. st, uzbl, urxvt and xterm.")
  117. (license
  118. ;; Dual-licensed.
  119. (list
  120. license:expat
  121. license:x11))))
  122. (define-public slstatus
  123. ;; No release tarballs yet.
  124. (let ((commit "84a2f117a32f0796045941260cdc4b69852b41e0")
  125. (revision "0"))
  126. (package
  127. (name "slstatus")
  128. (version (git-version "0" revision commit))
  129. (source
  130. (origin
  131. (method git-fetch)
  132. (uri
  133. (git-reference
  134. (url "git://git.suckless.org/slstatus.git")
  135. (commit commit)))
  136. (file-name (git-file-name name version))
  137. (sha256
  138. (base32 "063a4fnvsjbc61alnbfdpxy0nwhh9ql9j6s9hkdv12713kv932ds"))))
  139. (build-system gnu-build-system)
  140. (arguments
  141. `(#:tests? #f ;no test suite
  142. #:phases
  143. (modify-phases %standard-phases
  144. (add-after 'unpack 'patch
  145. (lambda* (#:key inputs outputs #:allow-other-keys)
  146. (substitute* "config.mk"
  147. (("/usr/local") (assoc-ref outputs "out"))
  148. (("/usr/X11R6") (assoc-ref inputs "x11"))
  149. (("CC = cc") (string-append "CC = " ,(cc-for-target))))))
  150. (delete 'configure)))) ;no configure script
  151. (inputs
  152. `(("x11" ,libx11)))
  153. (home-page "https://tools.suckless.org/slstatus/")
  154. (synopsis "Status monitor for window managers")
  155. (description "SlStatus is a suckless status monitor for window managers
  156. that use WM_NAME or stdin to fill the status bar.
  157. It provides the following features:
  158. @itemize
  159. @item Battery percentage/state/time left
  160. @item CPU usage
  161. @item CPU frequency
  162. @item Custom shell commands
  163. @item Date and time
  164. @item Disk status (free storage, percentage, total storage and used storage)
  165. @item Available entropy
  166. @item Username/GID/UID
  167. @item Hostname
  168. @item IP address (IPv4 and IPv6)
  169. @item Kernel version
  170. @item Keyboard indicators
  171. @item Keymap
  172. @item Load average
  173. @item Network speeds (RX and TX)
  174. @item Number of files in a directory (hint: Maildir)
  175. @item Memory status (free memory, percentage, total memory and used memory)
  176. @item Swap status (free swap, percentage, total swap and used swap)
  177. @item Temperature
  178. @item Uptime
  179. @item Volume percentage
  180. @item WiFi signal percentage and ESSID
  181. @end itemize")
  182. (license license:isc))))
  183. (define-public blind
  184. (package
  185. (name "blind")
  186. (version "1.1")
  187. (source (origin
  188. (method url-fetch)
  189. (uri (string-append "https://dl.suckless.org/tools/blind-"
  190. version ".tar.gz"))
  191. (sha256
  192. (base32
  193. "0nncvzyipvkkd7zlgzwbjygp82frzs2hvbnk71gxf671np607y94"))))
  194. (build-system gnu-build-system)
  195. (arguments
  196. `(#:tests? #f ; no check target
  197. #:make-flags (list (string-append "CC=" ,(cc-for-target))
  198. (string-append "PREFIX=" %output))
  199. #:phases
  200. (modify-phases %standard-phases
  201. (delete 'configure)))) ; no configure script
  202. (synopsis "Command line video editing utilities")
  203. (home-page "https://tools.suckless.org/blind/")
  204. (description
  205. "Blind is a collection of command line video editing utilities. It uses
  206. a custom raw video format with a simple container.")
  207. (license license:isc)))
  208. (define-public dwm
  209. (package
  210. (name "dwm")
  211. (version "6.2")
  212. (source (origin
  213. (method url-fetch)
  214. (uri (string-append "https://dl.suckless.org/dwm/dwm-"
  215. version ".tar.gz"))
  216. (sha256
  217. (base32 "03hirnj8saxnsfqiszwl2ds7p0avg20izv9vdqyambks00p2x44p"))))
  218. (build-system gnu-build-system)
  219. (arguments
  220. `(#:tests? #f
  221. #:make-flags (list (string-append "FREETYPEINC="
  222. (assoc-ref %build-inputs "freetype")
  223. "/include/freetype2"))
  224. #:phases
  225. (modify-phases %standard-phases
  226. (replace 'configure
  227. (lambda _
  228. (substitute* "Makefile" (("\\$\\{CC\\}") "gcc"))
  229. #t))
  230. (replace 'install
  231. (lambda* (#:key outputs #:allow-other-keys)
  232. (let ((out (assoc-ref outputs "out")))
  233. (invoke "make" "install"
  234. (string-append "DESTDIR=" out) "PREFIX="))))
  235. (add-after 'build 'install-xsession
  236. (lambda* (#:key outputs #:allow-other-keys)
  237. ;; Add a .desktop file to xsessions.
  238. (let* ((output (assoc-ref outputs "out"))
  239. (xsessions (string-append output "/share/xsessions")))
  240. (mkdir-p xsessions)
  241. (with-output-to-file
  242. (string-append xsessions "/dwm.desktop")
  243. (lambda _
  244. (format #t
  245. "[Desktop Entry]~@
  246. Name=dwm~@
  247. Comment=Dynamic Window Manager~@
  248. Exec=~a/bin/dwm~@
  249. TryExec=~@*~a/bin/dwm~@
  250. Icon=~@
  251. Type=Application~%"
  252. output)))
  253. #t))))))
  254. (inputs
  255. `(("freetype" ,freetype)
  256. ("libx11" ,libx11)
  257. ("libxft" ,libxft)
  258. ("libxinerama" ,libxinerama)))
  259. (home-page "https://dwm.suckless.org/")
  260. (synopsis "Dynamic window manager")
  261. (description
  262. "dwm is a dynamic window manager for X. It manages windows in tiled,
  263. monocle and floating layouts. All of the layouts can be applied dynamically,
  264. optimising the environment for the application in use and the task performed.")
  265. (license license:x11)))
  266. (define-public dmenu
  267. (package
  268. (name "dmenu")
  269. (version "5.0")
  270. (source (origin
  271. (method url-fetch)
  272. (uri (string-append "https://dl.suckless.org/tools/dmenu-"
  273. version ".tar.gz"))
  274. (sha256
  275. (base32
  276. "1lvfxzg3chsgcqbc2vr0zic7vimijgmbvnspayx73kyvqi1f267y"))))
  277. (build-system gnu-build-system)
  278. (arguments
  279. `(#:tests? #f ; no tests
  280. #:make-flags
  281. (list (string-append "CC=" ,(cc-for-target))
  282. (string-append "PREFIX=" %output)
  283. (string-append "FREETYPEINC="
  284. (assoc-ref %build-inputs "freetype")
  285. "/include/freetype2"))
  286. #:phases
  287. (modify-phases %standard-phases (delete 'configure))))
  288. (inputs
  289. `(("freetype" ,freetype)
  290. ("libxft" ,libxft)
  291. ("libx11" ,libx11)
  292. ("libxinerama" ,libxinerama)))
  293. (home-page "https://tools.suckless.org/dmenu/")
  294. (synopsis "Dynamic menu")
  295. (description
  296. "A dynamic menu for X, originally designed for dwm. It manages large
  297. numbers of user-defined menu items efficiently.")
  298. (license license:x11)))
  299. (define-public spoon
  300. (package
  301. (name "spoon")
  302. (version "0.6")
  303. (source
  304. (origin
  305. (method url-fetch)
  306. (uri (string-append "https://dl.2f30.org/releases/"
  307. "spoon-" version ".tar.gz"))
  308. (sha256
  309. (base32
  310. "1jpmg9k9f4f3lpz0k3cphqjswlyf8lz2sm8ccifiip93kd4rrdj0"))))
  311. (build-system gnu-build-system)
  312. (arguments
  313. `(#:tests? #f ; no tests
  314. #:make-flags
  315. (list (string-append "CC=" ,(cc-for-target))
  316. (string-append "PREFIX=" %output))))
  317. (inputs
  318. `(("libx11" ,libx11)
  319. ("libxkbfile" ,libxkbfile)
  320. ("alsa-lib" ,alsa-lib) ; tinyalsa (unpackaged) would suffice
  321. ("libmpdclient" ,libmpdclient)))
  322. (home-page "https://git.2f30.org/spoon/")
  323. (synopsis "Set dwm status")
  324. (description
  325. "Spoon can be used to set the dwm status.")
  326. (license license:isc)))
  327. (define-public slock
  328. (package
  329. (name "slock")
  330. (version "1.4")
  331. (source (origin
  332. (method url-fetch)
  333. (uri (string-append "https://dl.suckless.org/tools/slock-"
  334. version ".tar.gz"))
  335. (sha256
  336. (base32
  337. "0sif752303dg33f14k6pgwq2jp1hjyhqv6x4sy3sj281qvdljf5m"))))
  338. (build-system gnu-build-system)
  339. (arguments
  340. `(#:tests? #f ; no tests
  341. #:make-flags
  342. (list (string-append "CC=" ,(cc-for-target))
  343. (string-append "PREFIX=" %output))
  344. #:phases (modify-phases %standard-phases (delete 'configure))))
  345. (inputs
  346. `(("libx11" ,libx11)
  347. ("libxext" ,libxext)
  348. ("libxinerama" ,libxinerama)
  349. ("libxrandr" ,libxrandr)))
  350. (home-page "https://tools.suckless.org/slock/")
  351. (synopsis "Simple X session lock")
  352. (description
  353. "Simple X session lock with trivial feedback on password entry.")
  354. (license license:x11)))
  355. (define-public st
  356. (package
  357. (name "st")
  358. (version "0.8.4")
  359. (source
  360. (origin
  361. (method url-fetch)
  362. (uri (string-append "https://dl.suckless.org/st/st-"
  363. version ".tar.gz"))
  364. (sha256
  365. (base32 "19j66fhckihbg30ypngvqc9bcva47mp379ch5vinasjdxgn3qbfl"))))
  366. (build-system gnu-build-system)
  367. (arguments
  368. `(#:tests? #f ; no tests
  369. #:make-flags
  370. (list (string-append "CC=" ,(cc-for-target))
  371. (string-append "PREFIX=" %output))
  372. #:phases
  373. (modify-phases %standard-phases
  374. (delete 'configure)
  375. (add-after 'unpack 'inhibit-terminfo-install
  376. (lambda _
  377. (substitute* "Makefile"
  378. (("\ttic .*") ""))
  379. #t)))))
  380. (inputs
  381. `(("libx11" ,libx11)
  382. ("libxft" ,libxft)
  383. ("fontconfig" ,fontconfig)
  384. ("freetype" ,freetype)))
  385. (native-inputs
  386. `(("pkg-config" ,pkg-config)))
  387. (home-page "https://st.suckless.org/")
  388. (synopsis "Simple terminal emulator")
  389. (description
  390. "St implements a simple and lightweight terminal emulator. It
  391. implements 256 colors, most VT10X escape sequences, utf8, X11 copy/paste,
  392. antialiased fonts (using fontconfig), fallback fonts, resizing, and line
  393. drawing.")
  394. (license license:x11)))
  395. (define-public surf
  396. (package
  397. (name "surf")
  398. (version "2.1")
  399. (source
  400. (origin
  401. (method url-fetch)
  402. (uri (string-append "https://dl.suckless.org/surf/surf-"
  403. version ".tar.gz"))
  404. (sha256
  405. (base32 "0mrj0kp01bwrgrn4v298g81h6zyq64ijsg790di68nm21f985rbj"))))
  406. (build-system glib-or-gtk-build-system)
  407. (arguments
  408. `(#:tests? #f ; no tests
  409. #:make-flags
  410. (list (string-append "CC=" ,(cc-for-target))
  411. (string-append "PREFIX=" %output))
  412. #:phases
  413. (modify-phases %standard-phases
  414. (delete 'configure)
  415. ;; Use the right file name for dmenu and xprop.
  416. (add-before 'build 'set-dmenu-and-xprop-file-name
  417. (lambda* (#:key inputs #:allow-other-keys)
  418. (substitute* "config.def.h"
  419. (("dmenu") (search-input-file inputs "/bin/dmenu"))
  420. (("xprop") (search-input-file inputs "/bin/xprop")))
  421. #t)))))
  422. (inputs
  423. `(("dmenu" ,dmenu)
  424. ("gcr" ,gcr)
  425. ("glib-networking" ,glib-networking)
  426. ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
  427. ("webkitgtk" ,webkitgtk)
  428. ("xprop" ,xprop)))
  429. (native-inputs
  430. `(("pkg-config" ,pkg-config)))
  431. (home-page "https://surf.suckless.org/")
  432. (synopsis "Simple web browser")
  433. (description
  434. "Surf is a simple web browser based on WebKit/GTK+. It is able to
  435. display websites and follow links. It supports the XEmbed protocol which
  436. makes it possible to embed it in another application. Furthermore, one can
  437. point surf to another URI by setting its XProperties.")
  438. (license license:x11)))
  439. (define-public sent
  440. (package
  441. (name "sent")
  442. (version "1")
  443. (source (origin
  444. (method url-fetch/tarbomb)
  445. (uri (string-append "https://dl.suckless.org/tools/sent-"
  446. version ".tar.gz"))
  447. (sha256
  448. (base32
  449. "0cxysz5lp25mgww73jl0mgip68x7iyvialyzdbriyaff269xxwvv"))))
  450. (build-system gnu-build-system)
  451. (arguments
  452. `(#:phases (modify-phases %standard-phases
  453. (delete 'configure)) ; no configuration
  454. #:tests? #f ; no test suite
  455. #:make-flags
  456. (let ((pkg-config (lambda (flag)
  457. (string-append
  458. "$(shell pkg-config " flag " "
  459. "xft fontconfig x11 libpng)"))))
  460. (list (string-append "CC=" ,(cc-for-target))
  461. (string-append "PREFIX=" %output)
  462. (string-append "INCS=-I. " (pkg-config "--cflags"))
  463. (string-append "LIBS=" (pkg-config "--libs") " -lm")))))
  464. (native-inputs
  465. `(("pkg-config" ,pkg-config)))
  466. (inputs
  467. `(("libpng" ,libpng)
  468. ("libx11" ,libx11)
  469. ("libxft" ,libxft)
  470. ("fontconfig" ,fontconfig)))
  471. (synopsis "Plain-text presentation tool")
  472. (description "Sent uses plain-text files and PNG images to create slideshow
  473. presentations. Each paragraph represents a slide in the presentation.
  474. Especially for presentations using the Takahashi method this is very nice and
  475. allows you to write down the presentation for a quick lightning talk within a
  476. few minutes.")
  477. (home-page "https://tools.suckless.org/sent")
  478. (license license:x11)))
  479. (define-public wmname
  480. (package
  481. (name "wmname")
  482. (version "0.1")
  483. (source
  484. (origin
  485. (method url-fetch)
  486. (uri (string-append "https://dl.suckless.org/tools/wmname-"
  487. version ".tar.gz"))
  488. (sha256
  489. (base32 "1i82ilhbk36hspc2j0fbpg27wjj7xnvzpv1ppgf6fccina4d36jm"))))
  490. (build-system gnu-build-system)
  491. (arguments
  492. `(#:tests? #f ; no tests
  493. #:make-flags
  494. (list (string-append "CC=" ,(cc-for-target))
  495. (string-append "PREFIX=" %output))
  496. #:phases ; no tests
  497. (modify-phases %standard-phases
  498. (delete 'configure)))) ; no configure script
  499. (inputs
  500. `(("libx11" ,libx11)))
  501. (home-page "https://tools.suckless.org/x/wmname/")
  502. (synopsis "Print or set the window manager name")
  503. (description "@command{wmname} prints/sets the window manager name
  504. property of the root window similar to how @command{hostname} behaves. It is
  505. useful for fixing problems with JDK versions and other broken programs
  506. assuming a reparenting window manager for instance.")
  507. (license license:expat)))
  508. (define-public xbattmon
  509. (package
  510. (name "xbattmon")
  511. (version "1.1")
  512. (source
  513. (origin
  514. (method url-fetch)
  515. (uri (string-append "https://dl.2f30.org/releases/"
  516. "xbattmon-" version ".tar.gz"))
  517. (sha256
  518. (base32
  519. "1zr6y8lml9xkx0a3dbbsds2qz1bjxvskp7wsckkf8mlsqrbb3xsg"))))
  520. (build-system gnu-build-system)
  521. (arguments
  522. `(#:tests? #f ; no tests
  523. #:make-flags
  524. (list (string-append "CC=" ,(cc-for-target))
  525. (string-append "PREFIX=" %output))))
  526. (inputs
  527. `(("libx11" ,libx11)))
  528. (home-page "https://git.2f30.org/xbattmon/")
  529. (synopsis "Simple battery monitor for X")
  530. (description
  531. "Xbattmon is a simple battery monitor for X.")
  532. (license license:isc)))
  533. (define-public wificurse
  534. (package
  535. (name "wificurse")
  536. (version "0.3.9")
  537. (source
  538. (origin
  539. (method url-fetch)
  540. (uri (string-append "https://dl.2f30.org/releases/"
  541. "wificurse-" version ".tar.gz"))
  542. (sha256
  543. (base32
  544. "067ghr1xly5ca41kc83xila1p5hpq0bxfcmc8jvxi2ggm6wrhavn"))))
  545. (build-system gnu-build-system)
  546. (arguments
  547. `(#:tests? #f ; No tests
  548. #:make-flags (list
  549. (string-append "PREFIX=" %output))
  550. #:phases
  551. (modify-phases %standard-phases
  552. (delete 'configure)))) ; No configure script
  553. (home-page "https://git.2f30.org/wificurse/")
  554. (synopsis "Wifi DoS attack tool")
  555. (description
  556. "Wificurses listens for beacons sent from wireless access points
  557. in the range of your wireless station. Once received the program
  558. extracts the BSSID of the AP and transmits deauthentication packets
  559. using the broadcast MAC address. This results to the disconnection
  560. of all clients connected to the AP at the time of the attack. This
  561. is essencially a WiFi DoS attack tool created for educational
  562. purposes only. It works only in Linux and requires wireless card
  563. drivers capable of injecting packets in wireless networks.")
  564. (license license:gpl3+)))
  565. (define-public skroll
  566. (package
  567. (name "skroll")
  568. (version "0.6")
  569. (source
  570. (origin
  571. (method url-fetch)
  572. (uri (string-append "https://dl.2f30.org/releases/"
  573. "skroll-" version ".tar.gz"))
  574. (sha256
  575. (base32
  576. "0km6bjfz4ssb1z0xwld6iiixnn7d255ax8yjs3zkdm42z8q9yl0f"))))
  577. (build-system gnu-build-system)
  578. (arguments
  579. `(#:tests? #f ; no tests
  580. #:make-flags
  581. (list (string-append "CC=" ,(cc-for-target))
  582. (string-append "PREFIX=" %output))
  583. #:phases
  584. (modify-phases %standard-phases
  585. (delete 'configure)))) ; no configure script
  586. (home-page "https://2f30.org/")
  587. (synopsis "Commandline utility which scrolls text")
  588. (description
  589. "Skroll is a small utility that you can use to make a text scroll.
  590. Pipe text to it, and it will scroll a given number of letters from right to
  591. left.")
  592. (license license:wtfpl2)))
  593. (define-public sbm
  594. (package
  595. (name "sbm")
  596. (version "0.9")
  597. (source
  598. (origin
  599. (method url-fetch)
  600. (uri (string-append "https://dl.2f30.org/releases/"
  601. "sbm-" version ".tar.gz"))
  602. (sha256
  603. (base32
  604. "1nks5mkh5wn30kyjzlkjlgi31bv1wq52kbp0r6nzbyfnvfdlywik"))))
  605. (build-system gnu-build-system)
  606. (arguments
  607. `(#:tests? #f ; no tests
  608. #:make-flags
  609. (list (string-append "CC=" ,(cc-for-target))
  610. (string-append "PREFIX=" %output))
  611. #:phases
  612. (modify-phases %standard-phases
  613. (delete 'configure)))) ; no configure script
  614. (home-page "https://git.2f30.org/sbm/")
  615. (synopsis "Simple bandwidth monitor")
  616. (description
  617. "Sbm is a simple bandwidth monitor.")
  618. (license license:isc)))
  619. (define-public prout
  620. (package
  621. (name "prout")
  622. (version "0.2")
  623. (source
  624. (origin
  625. (method url-fetch)
  626. (uri (string-append "https://dl.2f30.org/releases/"
  627. "prout-" version ".tar.gz"))
  628. (sha256
  629. (base32
  630. "1s6c3ygg1h1fyxkh8gd7nzjk6qhnwsb4535d2k780kxnwns5fzas"))))
  631. (build-system gnu-build-system)
  632. (arguments
  633. `(#:tests? #f ; no tests
  634. #:make-flags
  635. (list (string-append "CC=" ,(cc-for-target))
  636. (string-append "PREFIX=" %output))
  637. #:phases
  638. (modify-phases %standard-phases
  639. (delete 'configure)))) ; no configure script
  640. (inputs
  641. `(("cups-minimal" ,cups-minimal)
  642. ("zlib" ,zlib)))
  643. (home-page "https://git.2f30.org/prout/")
  644. (synopsis "Smaller lp command")
  645. (description
  646. "Prout (PRint OUT) is a small utility one can use to send
  647. documents to a printer.
  648. It has no feature, and does nothing else. Just set your default
  649. printer in client.conf(5) and start printing. No need for a local
  650. cups server to be installed.")
  651. (license license:wtfpl2)))
  652. (define-public noice
  653. (package
  654. (name "noice")
  655. (version "0.8")
  656. (source
  657. (origin
  658. (method url-fetch)
  659. (uri (string-append "https://dl.2f30.org/releases/"
  660. "noice-" version ".tar.gz"))
  661. (sha256
  662. (base32 "0g01iwzscdv27c1idv93gd74kjzy3n9kazgm6qz08rygp96qx4xw"))))
  663. (build-system gnu-build-system)
  664. (arguments
  665. `(#:tests? #f ; no tests
  666. #:make-flags
  667. (list (string-append "CC=" ,(cc-for-target))
  668. (string-append "PREFIX=" %output))
  669. #:phases
  670. (modify-phases %standard-phases
  671. (delete 'configure) ; no configure script
  672. (add-before 'build 'curses
  673. (lambda _
  674. (substitute* "Makefile"
  675. (("lcurses") "lncurses")))))))
  676. (inputs
  677. `(("ncurses" ,ncurses)))
  678. (home-page "https://git.2f30.org/noice/")
  679. (synopsis "Small file browser")
  680. (description
  681. "Noice is a small curses-based file browser.")
  682. (license license:bsd-2)))
  683. (define-public human
  684. (package
  685. (name "human")
  686. (version "0.3")
  687. (source
  688. (origin
  689. (method git-fetch)
  690. (uri (git-reference
  691. (url "git://git.2f30.org/human.git")
  692. (commit version)))
  693. (file-name (git-file-name name version))
  694. (sha256
  695. (base32
  696. "0y0bsmvpwfwb2lwspi6a799y34h1faxc6yfanyw6hygxc8661mga"))))
  697. (build-system gnu-build-system)
  698. (arguments
  699. `(#:tests? #f ; no tests
  700. #:make-flags
  701. (list (string-append "CC=" ,(cc-for-target))
  702. (string-append "PREFIX=" %output))
  703. #:phases
  704. (modify-phases %standard-phases
  705. (delete 'configure)))) ; no configure script
  706. (home-page "https://git.2f30.org/human/")
  707. (synopsis "Convert bytes to human readable formats")
  708. (description
  709. "Human is a small program which translate numbers into a
  710. human readable format. By default, it tries to detect the best
  711. factorisation, but you can force its output.
  712. You can adjust the number of decimals with the @code{SCALE}
  713. environment variable.")
  714. (license license:wtfpl2)))
  715. (define-public fortify-headers
  716. (package
  717. (name "fortify-headers")
  718. (version "1.1")
  719. (source
  720. (origin
  721. (method url-fetch)
  722. (uri (string-append "https://dl.2f30.org/releases/"
  723. "fortify-headers-" version ".tar.gz"))
  724. (sha256
  725. (base32 "1dhz41jq1azcf7rbvga8w6pnx19l1j9r6jwj8qrlrfnjl9hdi9bb"))))
  726. (build-system gnu-build-system)
  727. (arguments
  728. `(#:tests? #f ; no tests
  729. #:make-flags
  730. (list (string-append "CC=" ,(cc-for-target))
  731. (string-append "PREFIX=" %output))
  732. #:phases
  733. (modify-phases %standard-phases
  734. (delete 'configure)))) ; no configure script
  735. (home-page "https://git.2f30.org/fortify-headers/")
  736. (synopsis "Standalone fortify-source implementation")
  737. (description
  738. "This is a standalone implementation of fortify source. It provides
  739. compile time buffer checks. It is libc-agnostic and simply overlays the
  740. system headers by using the @code{#include_next} extension found in GCC. It was
  741. initially intended to be used on musl-based Linux distributions.
  742. @itemize
  743. @item It is portable, works on *BSD, Linux, Solaris and possibly others.
  744. @item It will only trap non-conformant programs. This means that fortify
  745. level 2 is treated in the same way as level 1.
  746. @item Avoids making function calls when undefined behaviour has already been
  747. invoked. This is handled by using @code{__builtin_trap()}.
  748. @item Support for out-of-bounds read interfaces, such as @code{send()},
  749. @code{write()}, @code{fwrite()}, etc.
  750. @item No ABI is enforced. All of the fortify check functions are inlined
  751. into the resulting binary.
  752. @end itemize\n")
  753. (license license:isc)))
  754. (define-public colors
  755. (package
  756. (name "colors")
  757. (version "0.3")
  758. (source
  759. (origin
  760. (method url-fetch)
  761. (uri (string-append "https://dl.2f30.org/releases/"
  762. "colors-" version ".tar.gz"))
  763. (sha256
  764. (base32
  765. "1lckmqpgj89841splng0sszbls2ag71ggkgr1wsv9y3v6y87589z"))))
  766. (build-system gnu-build-system)
  767. (arguments
  768. `(#:tests? #f ; no tests
  769. #:make-flags
  770. (list (string-append "CC=" ,(cc-for-target))
  771. (string-append "PREFIX=" %output))
  772. #:phases
  773. (modify-phases %standard-phases
  774. (delete 'configure)))) ; no configure script
  775. (inputs
  776. `(("libpng" ,libpng)))
  777. (home-page "https://git.2f30.org/colors/")
  778. (synopsis "Extract colors from pictures")
  779. (description
  780. "Extract colors from PNG files. It is similar to
  781. strings(1) but for pictures. For a given input file it outputs a
  782. colormap to stdout.")
  783. (license license:isc)))
  784. ;; No new releases were made at github, this repository is more active than
  785. ;; the one at http://git.suckless.org/libutf/ and it is
  786. ;; done by the same developer.
  787. (define-public libutf
  788. (let ((revision "1")
  789. (commit "ff4c60635e1f455b0a0b4200f8183fbd5a88225b"))
  790. (package
  791. (name "libutf")
  792. (version (git-version "0.0.0" revision commit))
  793. (source
  794. (origin
  795. (method git-fetch)
  796. (uri (git-reference
  797. (url "https://github.com/cls/libutf")
  798. (commit commit)))
  799. (file-name (git-file-name name version))
  800. (sha256
  801. (base32
  802. "1ih5vjavilzggyr1j1z6w1z12c2fs5fg77cfnv7ami5ivsy3kg3d"))))
  803. (build-system gnu-build-system)
  804. (arguments
  805. `(#:tests? #f ; no tests
  806. #:make-flags
  807. (list (string-append "CC=" ,(cc-for-target))
  808. (string-append "PREFIX=" %output))
  809. #:phases
  810. (modify-phases %standard-phases
  811. (delete 'configure)))) ; no configure script
  812. (inputs
  813. `(("gawk" ,gawk)))
  814. (home-page "https://github.com/cls/libutf")
  815. (synopsis "Plan 9 compatible UTF-8 library")
  816. (description
  817. "This is a C89 UTF-8 library, with an API compatible with that of
  818. Plan 9's libutf, but with a number of improvements:
  819. @itemize
  820. @item Support for runes beyond the Basic Multilingual Plane.
  821. @item utflen and utfnlen cannot overflow on 32- or 64-bit machines.
  822. @item chartorune treats all invalid codepoints as though Runeerror.
  823. @item fullrune, utfecpy, and utfnlen do not overestimate the length
  824. of malformed runes.
  825. @item An extra function, charntorune(p,s,n), equivalent to
  826. fullrune(s,n) ? chartorune(p,s): 0.
  827. @item Runeerror may be set to an alternative replacement value, such
  828. as -1, to be used instead of U+FFFD.
  829. @end itemize\n")
  830. (license license:expat))))
  831. ;; No release tarballs so far.
  832. (define-public lchat
  833. (let ((revision "4")
  834. (commit "e3b64e67b9b9d832462382246474ce1e7d92217c"))
  835. (package
  836. (name "lchat")
  837. (version (git-version "0.0.0" revision commit))
  838. (source
  839. (origin
  840. (method git-fetch)
  841. (uri (git-reference
  842. (url "https://github.com/younix/lchat")
  843. (commit commit)))
  844. (file-name (git-file-name name version))
  845. (sha256
  846. (base32 "1qcjqbgmsskc04j2r6xl3amkwj05n520sq1wv2mqyqncz42qrxm0"))))
  847. (build-system gnu-build-system)
  848. (arguments
  849. `(#:test-target "test"
  850. #:make-flags
  851. (list (string-append "CC=" ,(cc-for-target))
  852. (string-append "PREFIX=" %output))
  853. #:phases
  854. (modify-phases %standard-phases
  855. (delete 'configure) ; no configure script
  856. (add-before 'build 'libbsd
  857. (lambda _
  858. (substitute* "Makefile"
  859. (("-lutf") "-lutf -lbsd"))))
  860. (replace 'install
  861. (lambda* (#:key outputs #:allow-other-keys)
  862. (let* ((out (assoc-ref outputs "out"))
  863. (bin (string-append out "/bin"))
  864. (man1 (string-append out "/share/man/man1")))
  865. (install-file "lchat" bin)
  866. (install-file "lchat.1" man1)
  867. #t))))))
  868. (inputs
  869. `(("grep" ,grep)
  870. ("ncurses" ,ncurses)
  871. ("libutf" ,libutf)
  872. ("libbsd" ,libbsd)))
  873. (home-page "https://github.com/younix/lchat")
  874. (synopsis "Line chat is a frontend for the irc client ii from suckless")
  875. (description
  876. "Lchat (line chat) is the little and small brother of cii.
  877. It is a front end for ii-like chat programs. It uses @code{tail -f} to get the
  878. chat output in the background.")
  879. (license license:isc))))
  880. (define-public scron
  881. (package
  882. (name "scron")
  883. (version "0.4")
  884. (source
  885. (origin
  886. (method url-fetch)
  887. (uri (string-append "https://dl.2f30.org/releases/"
  888. "scron-" version ".tar.gz"))
  889. (sha256
  890. (base32
  891. "066fwa55kqcgfrsqgxh94sqbkxfsr691360xg4ljxr4i75d25s2a"))))
  892. (build-system gnu-build-system)
  893. (arguments
  894. `(#:tests? #f ; no tests
  895. #:make-flags
  896. (list (string-append "CC=" ,(cc-for-target))
  897. (string-append "PREFIX=" %output))
  898. #:phases
  899. (modify-phases %standard-phases
  900. (delete 'configure)))) ; no configure script
  901. (home-page "https://git.2f30.org/scron/")
  902. (synopsis "Simple cron daemon")
  903. (description
  904. "Schedule commands to be run at specified dates and times.
  905. Single daemon and configuration file. Log to stdout or syslog. No mail
  906. support.")
  907. (license license:expat)))