tatara-os — our NixOS, expressed in Rust + tatara-lisp
A full Linux operating system authored as a single (defsystem …) form.
Runs on the Linux kernel; reuses nixpkgs for userspace today (via
tatara-pkgs::NixpkgsBridge); transliterates to pure tatara-lisp over
time.
Type surface
SystemConfig
├── hostname, system
├── kernel : KernelSpec (bridged by default → linuxPackages.kernel)
├── bootloader : BootloaderSpec (Grub | SystemdBoot | Uboot | None)
├── init : InitSystem (Systemd | S6 | OpenRC)
├── services : Vec<ServiceSpec>
├── users : Vec<UserSpec>
├── filesystems : Vec<FilesystemSpec>
└── environment : EnvSpec (etc files, path, locale, timezone)
Synthesis
SystemSynthesizer (impl of tatara_nix::Synthesizer) takes a
SystemConfig, walks it, and produces a SystemClosure:
- The kernel derivation
- An
/etcderivation (hostname file, os-release, passwd, group) - A systemd-unit derivation per service
- A bootloader-config derivation
- An activation script — the shell script
switch-to-configurationcalls to move the running system to the configured state. - A top-level profile derivation that composes all of the above into one content-addressed root.
Lisp authoring