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

3.4 KiB

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. Fundamentpackaging/taninux/PKGBUILD (fertig), LICENSE wählen, cd packaging/taninux && makepkg -si lokal testen.

  2. Meta + Configtanin-desktop (Skelett da), tanin-eww, tanin-setup.

  3. Eigenes Repo [tanin]. Hosts:

    • Codegit.openbureau.ch/karim/taninux (PKGBUILD-source, woher makepkg klont)
    • Projekt + Repotaninux.kgva.ch (PKGBUILD-url/Homepage und pacman-Server)

    DB bauen + signieren:

    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:

    [tanin]
    SigLevel = Optional TrustAll       # später: Required + Key importieren
    Server = https://taninux.kgva.ch/$arch
    
  4. Calamares / ISOarchiso-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:

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