# 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`](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`, the `tanin-desktop` > PKGBUILD) 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`](../../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 1. **Foundation** — `taninux` builds (`makepkg -si`). ✅ 2. **Meta + config** — ✅ `tanin-eww`, `tanin-desktop` (niri), `tanin-greet`, `tanin-libadwaita`, `tanin-setup`. Dotfiles ship to `/usr/share/tanin/skel`, never to `/home` at package time; `tanin-setup` seeds them on first run. 3. **`[tanin]` repo** — `repo-add -s` to build+sign the DB. Host as a Gitea/Forgejo Arch registry **or** a static dir behind `taninux.kgva.ch`. 4. **ISO** — archiso profile with `[tanin]` pre-configured; Calamares `packages` module installs `tanin-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 = `? - **Repo hosting:** Gitea Arch registry vs static dir behind `taninux.kgva.ch`. - **Signing:** move `[tanin]` to `SigLevel = Required` + distribute the key. - **AUR check:** confirm which rebuilt-AUR entries are already in `extra`. - **Blur/shadow:** niri `layer-rule` blur+shadow for eww layers (template is commented in the niri config). ## Related - App repo & packaging: `~/projects/taninux` (this repo) - Desktop shell: `~/projects/eww` — read its `HANDOVER.md` first - Older prose draft (Hyprland-era): [`../docs/distribution.md`](../docs/distribution.md)