Initial commit — TANINUX (camel): management app + distro packaging
- app: GTK System Settings (tsettings) + Software Hub (thub) + TUI - distro/: camel.toml manifest + MANIFEST.md (Arch + [tanin] repo model) - packaging/: taninux, tanin-desktop (niri metapackage), tanin-greet, tanin-libadwaita, tanin-setup - docs/, data/, LICENSE (GPL-3.0-or-later) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
# 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 config + scripts → `/usr/share/tanin/skel` | **todo** |
|
||||
| `tanin-setup` | seed `~/.config` + enable session target | ready |
|
||||
| `tanin-desktop` | metapackage pulling the whole environment (niri) | ready (needs tanin-eww) |
|
||||
|
||||
**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`, `regreet`, `cliphist`. ⚠️ Verify each before publishing — any that
|
||||
turn out to live in `extra` should be dropped from this list.
|
||||
|
||||
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** — finish `tanin-eww`; update `tanin-desktop` to niri; keep
|
||||
`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+regreet 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]` to `SigLevel = Required` + distribute the key.
|
||||
- **regreet theme:** author its GTK CSS to the Fuji accent.
|
||||
- **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)
|
||||
Reference in New Issue
Block a user