Files
taninux/docs/distribution.md
T
karim 10b88a67bc 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>
2026-06-18 20:18:30 +02:00

79 lines
3.4 KiB
Markdown

# 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).