Files
taninux/docs/distribution.md
T
karim 8fb8efcbbd packaging/iso: uninstall safety, fail-closed AUR updates, no sshd on live ISO
- tanin-greet.install: post_remove restores the previous greetd config —
  removing the package no longer leaves greetd pointing at a dead binary
- aur-autoupdate: skip packages when the AUR RPC is unreachable instead of
  building blind (fail closed)
- build-tanin-repo: per-package makepkg logs instead of >/dev/null
- live ISO: drop sshd.service enablement (root has an empty password on the
  live medium); encoded in bootstrap-profile.sh so it survives re-bootstrap
- gtklock config: de-personalize hardcoded /home/karim path, mark as
  not-yet-packaged reference
- tanin-desktop PKGBUILD: correct stale AUR-vs-extra comments (gtklock,
  awww, cliphist are in extra), document the eww-git provides=eww contract
- docs/distribution.md: mark SigLevel TrustAll as temporary/insecure, add
  repo-signing TODO (repo-add -s, SigLevel Required), tick done roadmap items
- tanin-calendar + niri-config.kdl: pending session work

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:22:20 +02:00

4.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 ( da, GPL-3.0-or-later), 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]
    # TEMPORÄR + UNSICHER: TrustAll akzeptiert JEDES Paket ohne Signaturprüfung.
    # Nur zum Bootstrappen, solange die DB noch nicht signiert ist. Sobald der
    # Packager-Key steht -> auf "Required DatabaseOptional" umstellen (siehe unten).
    SigLevel = Optional TrustAll
    Server = https://taninux.kgva.ch/$arch
    

    Repo-Signing (TODO)

    Zielzustand (bevor das Repo öffentlich empfohlen wird):

    1. Packager-GPG-Key erzeugen (gpg --full-gen-key) und öffentlich ablegen (z. B. taninux.kgva.ch/tanin.gpg), damit User ihn importieren können.
    2. DB signiert bauen: repo-add -s tanin.db.tar.zst *.pkg.tar.zst (-s signiert DB + jedes hinzugefügte Paket mit dem Packager-Key).
    3. Key beim User installieren (pacman-key --add, pacman-key --lsign-key) und dann in pacman.conf scharfschalten:
      SigLevel = Required DatabaseOptional
      
      → jedes Paket muss signiert sein; die DB-Signatur ist optional.
  4. Calamares / ISO archiso-Profil mit [tanin] vorkonfiguriert + Calamares packages-Modul, das tanin-desktop installiert (iso/build-profile/, gebaute ISO in iso/out/).

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