Expand description
§tatara-pkgs — nixpkgs, fully expressed in tatara-lisp
Two things live together:
-
PackageSettrait — backend-agnostic view of a package universe. Every backend (nixpkgs bridge, tatara-lisp-authored set, overlay of either) answersget(name) -> Option<Derivation>+names() -> Vec<String>. -
Synthesizer — a
MultiSynthesizerthat walks aPackageSetand emits one tatara-lisp.tlfile per package.tenddrives this: on a nixpkgs commit bump, the generator regenerates the mirror tree; each package becomes a typed(defderivation …)that realizes to the same/nix/store/...path nixpkgs would produce.
nixpkgs ──tend sync──► PackageSet (NixpkgsBridge)
│
▼ MultiSynthesizer::generate_all
Vec<Artifact> (`hello.tl`, `bash.tl`, …)
│
▼ disk
pleme-io/nixpkgs-tl/
│
▼ tatara-eval + tatara-nix::Realizer
/nix/store/<hash>-<name> (same path nixpkgs builds)The gradient: today a tatara-lisp file is a bridge wrapper; tomorrow the hot-path packages (stdenv, coreutils, bash, kernel) transliterate to pure tatara-lisp and stop bridging. The typed surface doesn’t change.
Re-exports§
pub use bridge::NixpkgsBridge;pub use generator::NixpkgsMirror;pub use generator::NixpkgsMirrorError;pub use overlay::OverlayPackageSet;pub use set::PackageLookup;pub use set::PackageSet;pub use set::PackageSetError;
Modules§
- bridge
NixpkgsBridge— expose any attribute in an already-installed nixpkgs as a tataraDerivation. All heavy lifting (fetch, build, cache, store) stays in Nix; we only own the typed name.- generator
NixpkgsMirror— the tend-driven generator.- overlay
OverlayPackageSet— one set composed over another.topwins where it defines a package;basefills in the rest. Names enumerate the union.- set
PackageSet— the trait every package universe implements.