- packaging/build-tanin-repo.sh: builds own pkgs + repo-add DB (-> ~/projects/tanin-repo) - built: tanin-greet, tanin-libadwaita, tanin-setup, tanin-eww, tanin-desktop - manifest: cliphist + cage are in extra (not AUR rebuilds); only eww/tiramisu/ waypaper need rebuilding into [tanin]; record repo-build status Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.9 KiB
camel — Distribution Manifest
Codename camel. The project/OS name is still provisional (taninux · tanin · or a later marketing name). Everything stable keys off the codename, not the name. Machine-readable source of truth:
camel.toml. Last reconciled 2026-06-17.
camel is not a fork. It's stock Arch Linux plus one extra binary repo
([tanin]) holding our own packages — the EndeavourOS/CachyOS model. A
Calamares installer lays down a ready-to-use niri + eww desktop managed by
the TANINUX apps.
Identity (Fuji palette)
Dark, monochrome, libadwaita, rounded, soft short shadows.
| Token | Value | Used by |
|---|---|---|
| accent | #a39ec4 (violet) |
greeter, eww (accent.sh), GTK |
| bg / fg | #0f0f0f / #f0f0f0 |
theme |
| UI font | Inter (Medium) | apps, bar |
| icon font | Iosevka Nerd Font | nf-md-* glyphs |
| icon theme | Papirus | dock app icons |
The stack (what it boots into)
| Layer | Choice | Package(s) |
|---|---|---|
| Display manager | greetd + custom GTK4 greeter (via cage) |
greetd, cage, tanin-greet |
| Compositor | niri (Wayland, niri-only) | niri |
| Bar/dock/panels | eww + Spotlight | eww, tanin-eww |
| Notifications | tiramisu (headless) + eww UI | tiramisu |
| Terminal | foot | foot |
| Wallpaper | waypaper | waypaper |
| Apps | tsettings · thub · taninux (TUI) | taninux |
| GTK4 theme | Fuji recolour, light + dark | tanin-libadwaita |
| Portals | gtk (dark mode) + gnome (screencast) | xdg-desktop-portal-{gtk,gnome} |
Compositor note: earlier docs (
docs/distribution.md, thetanin-desktopPKGBUILD) still say Hyprland. That is stale — the desktop is niri-only. Reconcile both against this manifest.
Package model
official Arch repos (core/extra/multilib) → everything standard
[tanin] (own binary repo) → our packages + rebuilt AUR deps
AUR → OPT-IN only (paru = optdepend)
Our packages ([tanin]):
| Package | Role | Status |
|---|---|---|
taninux |
tsettings + thub + TUI, helper, polkit, .desktop | ready |
tanin-greet |
custom GTK4 greeter for greetd → /etc/greetd/ |
ready (preview) |
tanin-libadwaita |
Fuji libadwaita recolour, light + dark (pills) | ready (preview) |
tanin-eww |
eww bar/dock/panels + niri config → /usr/share/tanin/skel/.config |
ready |
tanin-setup |
seed ~/.config + enable session target |
ready |
tanin-desktop |
metapackage pulling the whole environment (niri) | ready |
Rebuilt AUR deps — the desktop's hard requirements that aren't in the
official repos. We rebuild them into [tanin] so tanin-desktop can hard-depend
on them without the AUR (binary repos must never need it): eww, tiramisu,
waypaper. (cliphist + cage are in extra — pulled from official repos.)
The full Arch package set (compositor, portals, audio, connectivity, fonts, …)
is enumerated under [packages.arch] in camel.toml and is the seed for the
archiso packages.x86_64.
Why these are first-class (not "just config")
Discovered from the live stack (eww launch.sh + scripts):
the bar genuinely shells out to eww · niri · jq · wpctl · cliphist · playerctl · bluetoothctl · nmcli · wl-clipboard · checkupdates · qalc · grim · flatpak · tiramisu. These map to the package set above; the AUR ones (eww/tiramisu/
waypaper/cliphist) are exactly why [tanin] must carry rebuilt AUR packages.
Delivery
- Foundation —
taninuxbuilds (makepkg -si). ✅ - Meta + config — ✅
tanin-eww,tanin-desktop(niri),tanin-greet,tanin-libadwaita,tanin-setup. Dotfiles ship to/usr/share/tanin/skel, never to/homeat package time;tanin-setupseeds them on first run. [tanin]repo —repo-add -sto build+sign the DB. Host as a Gitea/Forgejo Arch registry or a static dir behindtaninux.kgva.ch.- ISO — archiso profile with
[tanin]pre-configured; Calamarespackagesmodule installstanin-desktop; greetd + tanin-greet enabled; session target wired.
Session / dark-mode fix
libadwaita apps read light/dark via org.freedesktop.portal.Settings, which
needs graphical-session.target active. tanin-setup installs
tanin-session.target; the shipped niri autostart must run:
dbus-update-activation-environment --systemd --all
systemctl --user start tanin-session.target
Open questions (decide before a release tag)
- Name: keep TANINUX, or split
app = tanin/OS = <marketing name>? - Repo hosting: Gitea Arch registry vs static dir behind
taninux.kgva.ch. - Signing: move
[tanin]toSigLevel = Required+ distribute the key. - AUR check: confirm which rebuilt-AUR entries are already in
extra. - Blur/shadow: niri
layer-ruleblur+shadow for eww layers (template is commented in the niri config).
Related
- App repo & packaging:
~/projects/taninux(this repo) - Desktop shell:
~/projects/eww— read itsHANDOVER.mdfirst - Older prose draft (Hyprland-era):
../docs/distribution.md