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>
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user