- 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>
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:
- Default-Configs ins Paket nach
/usr/share/tanin/(oder/etc/skel/). tanin-setupkopiert sie beim ersten Start nach~/.config(idempotent, überschreibt nichts ohne--force) und richtet das Session-Portal ein (siehe „Dark Mode / Portal" unten).
Phasen
-
Fundament —
packaging/taninux/PKGBUILD(fertig), LICENSE (✅ da, GPL-3.0-or-later),cd packaging/taninux && makepkg -silokal testen. -
Meta + Config —
tanin-desktop(Skelett da),tanin-eww,tanin-setup. -
Eigenes Repo
[tanin]. Hosts:- Code →
git.openbureau.ch/karim/taninux(PKGBUILD-source, wohermakepkgklont) - Projekt + Repo →
taninux.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-KeyHosten — 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.chals 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/$archRepo-Signing (TODO)
Zielzustand (bevor das Repo öffentlich empfohlen wird):
- Packager-GPG-Key erzeugen (
gpg --full-gen-key) und öffentlich ablegen (z. B.taninux.kgva.ch/tanin.gpg), damit User ihn importieren können. - DB signiert bauen:
repo-add -s tanin.db.tar.zst *.pkg.tar.zst(-ssigniert DB + jedes hinzugefügte Paket mit dem Packager-Key). - Key beim User installieren (
pacman-key --add,pacman-key --lsign-key) und dann inpacman.confscharfschalten:→ jedes Paket muss signiert sein; die DB-Signatur ist optional.SigLevel = Required DatabaseOptional
- Code →
-
Calamares / ISO ✅ —
archiso-Profil mit[tanin]vorkonfiguriert + Calamarespackages-Modul, dastanin-desktopinstalliert (iso/build-profile/, gebaute ISO iniso/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.chans Repo-Hosting hängen (Gitea-Arch-Registry oder statisch).