suckless-conf: S-expression configuration language and the bf6 script runtime

[ library, program, text ] [ Propose Tags ] [ Report a vulnerability ]

suckless-conf is a small Lisp-like, s-expression configuration language with an embedded scripting layer. It parses configuration files into a simple Syntax tree, offers a key-value access layer and bridges to Aeson, TOML, YAML and INI, and ships a tiny interpreter (Data.Config.Suckless.Script) that evaluates the same syntax as a script. The package also installs bf6, the standalone script runtime that the hbs2 project uses via a shebang for its tooling.

Originally written by Dmitry Zuykov (voidlizard) for the hbs2 project, this Hackage release is published from https://github.com/NCrashed/suckless-conf so downstream projects can depend on it without vendoring.

The s-expression tokenizer and reader (Data.Text.Fuzzy.Tokenize and Data.Text.Fuzzy.SExp) are bundled as internal modules, derived from the MIT-licensed fuzzy-parse package.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.2.9, 0.1.2.10
Change log CHANGELOG.md
Dependencies aeson (>=2.1 && <2.3), base (>=4.17 && <5), bytestring (>=0.11 && <0.13), containers (>=0.6 && <0.8), directory (>=1.3 && <1.4), filepath (>=1.4 && <1.6), filepattern (>=0.1 && <0.2), hashable (>=1.4 && <1.6), html-entities (>=1.1 && <1.2), ini (>=0.4 && <0.5), interpolatedstring-perl6 (>=1.0 && <1.1), microlens-platform (>=0.4 && <0.5), mtl (>=2.3 && <2.4), prettyprinter (>=1.7 && <1.8), prettyprinter-ansi-terminal (>=1.1 && <1.2), random (>=1.2 && <1.3), random-shuffle (>=0.0.4 && <0.1), safe (>=0.3 && <0.4), scientific (>=0.3 && <0.4), split (>=0.2 && <0.3), stm (>=2.5 && <2.6), streaming (>=0.2 && <0.3), suckless-conf, temporary (>=1.3 && <1.4), text (>=2.0 && <2.2), time (>=1.12 && <1.13), toml-parser (>=1.3 && <1.4), transformers (>=0.6 && <0.7), typed-process (>=0.2 && <0.3), uniplate (>=1.6 && <1.7), unliftio (>=0.2 && <0.3), unordered-containers (>=0.2 && <0.3), uuid (>=1.3 && <1.4), vector (>=0.13 && <0.14), yaml (>=0.11 && <0.12) [details]
Tested with ghc ==9.6.6
License BSD-3-Clause AND MIT[multiple license files]
Copyright (c) Dmitry Zuykov 2023, (c) Anton Gushcha 2026
Author Dmitry Zuykov
Maintainer Anton Gushcha <ncrashed@gmail.com>
Uploaded by NCrashed at 2026-06-08T15:33:05Z
Category Text
Home page https://github.com/NCrashed/suckless-conf
Bug tracker https://github.com/NCrashed/suckless-conf/issues
Source repo head: git clone https://github.com/NCrashed/suckless-conf.git
Distributions
Executables bf6
Downloads 0 total (0 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2026-06-08 [all 1 reports]

Readme for suckless-conf-0.1.2.9

[back to package description]

suckless-conf

A small Lisp-like / s-expression configuration language with an embedded scripting layer, plus bf6, its standalone script runtime.

What it does

suckless-conf parses s-expression configuration files into a simple Syntax tree (Data.Config.Suckless.Syntax, .Parse), exposes a key-value access layer (.KeyValue) and bridges to Aeson, TOML, YAML and INI. The same syntax doubles as a scripting language evaluated by a tiny interpreter (Data.Config.Suckless.Script), and the package installs the bf6 executable that runs such scripts directly (for example via a #! shebang).

Modules

  • Data.Config.Suckless - umbrella re-export.
  • Data.Config.Suckless.Syntax, .Parse, .Parse.Fuzzy - the reader.
  • Data.Config.Suckless.KeyValue - key-value access.
  • Data.Config.Suckless.Script, .Script.File, .Script.Internal - the interpreter and bf6 building blocks.
  • Data.Config.Suckless.System, .Almost.RPC - helpers.

Where it came from

Originally written by Dmitry Zuykov (voidlizard) inside the hbs2 project. This Hackage release is published from github.com/NCrashed/suckless-conf so downstream projects can depend on it without vendoring.

The s-expression tokenizer and reader (Data.Text.Fuzzy.Tokenize and Data.Text.Fuzzy.SExp) are derived from the fuzzy-parse package (MIT) and bundled here as internal modules, carrying local fixes that suckless-conf depends on.

License

BSD-3-Clause for the suckless-conf code (see LICENSE); the bundled Data.Text.Fuzzy.* modules are MIT (see LICENSE.fuzzy-parse). Copyright holders are listed in the cabal file.