Skip to main content

Crate tatara_pkgs

Crate tatara_pkgs 

Source
Expand description

§tatara-pkgs — nixpkgs, fully expressed in tatara-lisp

Two things live together:

  1. PackageSet trait — backend-agnostic view of a package universe. Every backend (nixpkgs bridge, tatara-lisp-authored set, overlay of either) answers get(name) -> Option<Derivation> + names() -> Vec<String>.

  2. Synthesizer — a MultiSynthesizer that walks a PackageSet and emits one tatara-lisp .tl file per package. tend drives 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 tatara Derivation. 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. top wins where it defines a package; base fills in the rest. Names enumerate the union.
set
PackageSet — the trait every package universe implements.