Fixpoint Linux is a small, contained and bootstrapped userland that sits on top of the linux kernel,
you could call it a distro but the goal is much smaller than that. The goal is explicitly NOT to try to shoehorn
a huge package database into this and make a general purpose system. This system is for people who want something
small and understandable, without dependency anxiety. Like a little Zen Garden to work in instead of a
sprawling factory floor.
Everything is configured in Dhall, a strongly-typed, total configuration language. Configs are typechecked, normalized, and terminate — they are programs, not property files.
The name comes from the two ideas at the heart of the stack:
- Fixpoint — the least-fixed-point semantics of Datalog; a system is its own build artifact, deterministic and reproducible.
- DAFSA — the minimal acyclic finite-state automaton that backs the data stores: compact, exact, and fast.
Fixpoint Linux is content-addressed by construction and time-travelling by
default. Every change is one atomic snapshot of the whole system; the timeline
is the system's complete history. You can inspect any past state with an as-of
query, roll back to any earlier point, and undo the rollback itself — without
ever losing the record of what happened.
- Roll-forward rollbacks — the timeline is an append-only ledger; going back is recorded as history and always undoable.
- Boot rollback — if the latest activation fails to come up, init rolls back to the last good state automatically.
- Generation GC — keep N bootable generations, prune the rest, done.
Dhall: All configuration is written in Dhall, a strongly typed (and normalizing) language, eliminating an entire class of bugs and obscurity immediately.Datalog: The primary query language for the entire system, everything is data, and datalog is the way to discover and manipulate it.Dafsa: The main data structure that the entire stack stands on, a perfectly minimal, elegant way of storing strings (and everything can be a string... if you want it to be)Shen: The scripting layer, lisp - of course, but with sequent calculus so that we can keep the strong typing story.
- Small, Understandable parts. — No individual piece shall reach 100k lines of code.
- Config is typed code. — Dhall gives typechecking, imports, and reusable functions — and it always terminates.
- Logic is declarative. — Datalog + DAFSA keep the data plane compact and exact.
- Self-hosting. — Tools build themselves (see
dhake's self-hosting buildfile). - Small and legible. — Each component fits in your head; none pulls in a framework or a heavyweight runtime.
- Time travel/Snapshots. — Redo/Undo is a first class ability in EVERY tool, including the system itself.
Everything lives in small, independently-buildable repositories:
fixpoint-linux— the system itself: Dhall-specified, self-hosting, time-travelling.fxstore— the content-addressed build store.fx-init— the running system: PID1, activation, control plane.dhake— the build tool; builds itself.dhall-c— the config interpreter.datalog-dafsa— the query engine.dafsa— the data structure it all stands on.compendium— the DNS server, one small binary.visage— email aliases & forwarding, one small binary.shen-meta— the scripting layer.palisade— the sandbox core underneath.
Per-repository; see each component for details.