# TANINUX — Verteilung als „Distro"

Ziel: ein Calamares-Installer, der eine fertige TANINUX-Umgebung aufsetzt.
Modell: **eigenes Binär-Repo `[tanin]` nur für eigene Pakete**, alles Standard
aus den **offiziellen Arch-Repos** (wie CachyOS/EndeavourOS).

## Pakete

| Paket            | Repo        | Inhalt                                              |
|------------------|-------------|-----------------------------------------------------|
| `taninux`        | `[tanin]`   | App: tsettings + thub + TUI, Helper, polkit, .desktop |
| `tanin-eww`      | `[tanin]`   | eww Panel/Dock-Config + Scripts (→ /usr/share)      |
| `tanin-setup`    | `[tanin]`   | seedet `~/.config` aus /usr/share + Portal/Session-Fix |
| `tanin-desktop`  | `[tanin]`   | **Metapackage**: depends = eigene + Arch-Pakete     |

`tanin-desktop` zieht per `depends` die Arch-Pakete aus den normalen Repos und
die eigenen aus `[tanin]`. AUR bleibt Opt-in → `paru` ist `optdepends`, kein
hartes `depends` (Metapackage baut also nichts aus dem AUR).

## Dotfile-Auslieferung (wichtig)

AUR/Binär-Pakete dürfen **nicht** nach `/home` schreiben. Daher:
1. Default-Configs ins Paket nach `/usr/share/tanin/` (oder `/etc/skel/`).
2. `tanin-setup` kopiert sie beim ersten Start nach `~/.config` (idempotent,
   überschreibt nichts ohne `--force`) und richtet das Session-Portal ein
   (siehe „Dark Mode / Portal" unten).

## Phasen

1. **Fundament** — `packaging/taninux/PKGBUILD` (fertig), LICENSE wählen,
   `cd packaging/taninux && makepkg -si` lokal testen.
2. **Meta + Config** — `tanin-desktop` (Skelett da), `tanin-eww`, `tanin-setup`.
3. **Eigenes Repo `[tanin]`**. Hosts:
   - **Code** → `git.openbureau.ch/karim/taninux` (PKGBUILD-`source`, woher `makepkg` klont)
   - **Projekt + Repo** → `taninux.kgva.ch` (PKGBUILD-`url`/Homepage **und** pacman-`Server`)

   DB bauen + signieren:
   ```sh
   repo-add -s tanin.db.tar.zst *.pkg.tar.zst   # -s signiert mit Packager-Key
   ```
   Hosten — zwei Optionen:
   - **Gitea/Forgejo Arch-Registry** (falls git.openbureau.ch das kann): Pakete
     pushen, `Server = https://git.openbureau.ch/api/packages/karim/arch/<repo>`.
     `taninux.kgva.ch` als Reverse-Proxy/Vanity davor.
   - **Statisches Verzeichnis** hinter `taninux.kgva.ch`: `*.pkg.tar.zst` + `tanin.db`.

   `pacman.conf`-Snippet für User:
   ```ini
   [tanin]
   SigLevel = Optional TrustAll       # später: Required + Key importieren
   Server = https://taninux.kgva.ch/$arch
   ```
4. **Calamares / ISO** — `archiso`-Profil mit `[tanin]` vorkonfiguriert +
   Calamares `packages`-Modul, das `tanin-desktop` installiert.

## Dark Mode / Portal (Session-Fix)

libadwaita-Apps (Nautilus etc.) lesen Hell/Dunkel über
`org.freedesktop.portal.Settings`. Damit das Portal startet, muss die Session
`graphical-session.target` aktivieren. `tanin-setup` legt dafür
`~/.config/systemd/user/<wm>-session.target` an und ergänzt die Compositor-
Autostarts:
```sh
exec-once = dbus-update-activation-environment --systemd --all
exec-once = systemctl --user start <wm>-session.target
```

## Hosts

- **Code:** `git.openbureau.ch/karim/taninux` (+ Repo für die eww-Config,
  Absprache mit der eww-Instanz).
- **Projekt/Repo:** `taninux.kgva.ch` (Homepage + `[tanin]`-pacman-Server).

## Offene Voraussetzungen

- **LICENSE**-Datei ablegen (Vorschlag GPL-3.0-or-later):
  `curl -L https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE`.
- `taninux.kgva.ch` ans Repo-Hosting hängen (Gitea-Arch-Registry oder statisch).
