Configuration — .ecf, the set builtin and eqshell scripts¶
Equinox keeps almost all persistent configuration in .ecf files
(Equinox Config File) — a tiny INI-lite format — manipulated by the
set builtin and automated by eqshell scripts (.es).
The .ecf format¶
# comment
[net] # section -> keys become "net.key"
driver = e1000
net.driver = ne2000 # dotted keys are taken as-is (equivalent)
[dependencies]
bash = true
[eggkg]
server = https://raw.githubusercontent.com/amnottdevv/Eggkg-l
Rules (parsed by kernel/library/ecf.c):
#starts a comment; blank lines are ignored.[section]prefixes subsequent keys until the next section — the store key becomessection.key.- A key containing a dot (
net.driver) is stored verbatim. - Values are trimmed strings; no quoting or escaping.
- Free-form keys are allowed — unknown keys are preserved by
set -wand ignored by consumers.
Where the files live¶
| File | Role |
|---|---|
/equinox/conf/system.ecf |
The system configuration. Written by equinoxinstall (phase [3/4]), read at every boot |
boot/system.ecf (on a volume) |
Legacy location — still honoured as a fallback |
<name>.ecf pointed to by active.conf = <file> |
Overlay: system.ecf may redirect the active store to another file (e.g. drivers.ecf) |
At boot the kernel resolves the active store through ecf_active_path()
(conf/ first, legacy boot/ fallback), parses it and dispatches the
known keys (net.driver → net_nic_init(),
dependencies.bash → /bin sync, eggkg.* → package manager).
The set builtin¶
| Form | Function |
|---|---|
set |
Show the active store |
set <key> <value> |
Set a key in memory (set net.driver e1000) |
set list |
List all keys |
set -a FILE |
Parse FILE and apply every valid entry |
set -w FILE |
Write the entire active store to FILE (the save) |
set -d FILE [-path DIR] [-base SRC] |
Register FILE as the system config (optionally with base dir) — written into system.ecf so boots pick it up |
set -b PATH |
Record a base-directory pivot (applied at next boot) |
set -x FILE |
Execute an eqshell script (.es) — see below |
Typical flow — change the NIC driver persistently:
set net.driver e1000
set -w /equinox/conf/system.ecf
The GUI side: the settings editor (gui → settings) edits the same
store and runs an mtcc compile-check on save-time scripts.
System keys used by 0.4¶
| Key | Consumer | Meaning |
|---|---|---|
net.driver |
net_nic_init() |
ne2000 (default) / e1000 / none — see DRIVERS.md |
dependencies.bash |
boot sync | true → sync /equinox/.local into /bin before the shell starts |
eggkg.server |
eggkg update |
Package server URL or local path |
eggkg.mirror |
eggkg update |
Fallback mirror |
eggkg.local |
eggkg | Local staging root |
Unknown keys are allowed and round-trip through set -w.
eqshell scripts (.es)¶
An eqshell script is a plain text file whose first meaningful line
must be [Eqshell]. Run it with set -x script.es.
[Eqshell]
# comments start with '#'
echo provisioning the base install
Qfs -list-disk
set net.driver e1000
set -w /equinox/conf/system.ecf
Log=True
- Lines are shell commands executed in order (builtins included).
- Nesting is limited (3 levels) to keep failure modes simple.
Log=Trueenables the transcript: every executed line + output is journaled to/eqshell.log(8 KB in-memory buffer; on overflow the transcript is truncated with a notice printed).
This is the standard hook for post-install provisioning: the manual
install path (INSTALL.md) can be captured as one .es
file and replayed with set -x.
Quick reference card¶
set # show
set net.driver e1000 # edit one key
set list # list keys
set -a drivers.ecf # apply a file
set -w /equinox/conf/system.ecf # persist the store
set -d drivers.ecf -path /equinox/conf # register system config
set -b /mnt/equinox # pivot base dir (next boot)
set -x setup.es # run an eqshell script