Long-standing gaps in post-install.sh plus cleanup: - post-install.sh:18 was `sudo pacman -S paru` on the wrong assumption paru had landed in [extra]. Verified: paru/paru-bin are AUR-only. Restored the original git-clone + makepkg bootstrap, added the rust buildep that archinstall does not pull in. - post-install.sh never installed AUR extras — walker, elephant, waypaper, stasis, themes all silently skipped. Now pulls packages/aur.txt after moonarch-git. - packages/official.txt: drop glab, go, npm (unused) and rustup (only needed for the paru build, handled imperatively now). - packages/aur.txt: add walker-bin (was missing entirely). - transform.sh + legacy update.sh shim removed — transform was never used in practice. - Apollo persona block out of CLAUDE.md, prior DECISIONS entries rewritten from Apollo/Ragnar to ClaudeCode. - README Transform section and scripts/ listing trimmed. - lib.sh ABOUTME updated — only post-install.sh sources it now.
58 lines
3.1 KiB
Markdown
58 lines
3.1 KiB
Markdown
# Moonarch
|
|
|
|
Reproduzierbares Arch-Linux-Setup basierend auf archinstall + Post-Install-Automatisierung.
|
|
|
|
## Projektstruktur
|
|
|
|
- `config/` — archinstall-Konfiguration (inkl. custom-commands die das Repo nach /opt/moonarch klonen, root-owned)
|
|
- `scripts/` — Post-Install- und Helper-Scripts
|
|
- `packages/` — Paketlisten (offiziell + AUR), getrennt gepflegt
|
|
- `defaults/` — XDG-Configs, Shell-Config, Helper-Binaries, systemd Services, udev-Regeln, greetd/moongreet-Config, Wallpaper
|
|
|
|
## Battery Conservation Mode
|
|
|
|
Laptops mit `charge_control_end_threshold`-Support (ThinkPad, Framework, etc.) erhalten einen Waybar-Toggle:
|
|
- Klick auf das Battery-Modul schaltet zwischen 80% und 100% Ladegrenze um
|
|
- Bei aktiver Conservation erscheint ein ♥-Icon neben der Battery-Anzeige
|
|
- Zustand wird in `/var/lib/moonarch/batsaver-threshold` persistiert und beim Boot via systemd-Service wiederhergestellt
|
|
- udev-Regel gibt Gruppe `wheel` Schreibzugriff auf den Threshold (kein sudo nötig)
|
|
- Auf Desktops ohne Battery-Support versteckt sich das Feature komplett
|
|
|
|
## Nightlight (Blaufilter)
|
|
|
|
Waybar-Toggle für wlsunset (Wayland-nativer Blaufilter), persistenter Zustand via systemd:
|
|
- `wlsunset.service` (systemd User-Service) mit `After=kanshi.service` — startet erst wenn alle Outputs konfiguriert sind
|
|
- Klick auf das Nightlight-Modul in `group/brightness` toggled wlsunset an/aus (`enable --now` / `disable --now`)
|
|
- Zustand überlebt Reboots (enabled/disabled bleibt bestehen)
|
|
- Aktiver Zustand zeigt in Catppuccin Yellow, inaktiv in Standard-Textfarbe
|
|
- Signal SIGRTMIN+11 für sofortiges Waybar-Refresh
|
|
- Scripts: `moonarch-nightlight` (Toggle), `moonarch-waybar-nightlight` (Status-JSON)
|
|
|
|
## Waybar Config Merger (moonarch-waybar)
|
|
|
|
Waybar wird über `moonarch-waybar` gestartet (nicht direkt). Der Wrapper merged eine optionale User-Config (`~/.config/waybar/userconfig`) mit der System-Config (`/etc/xdg/waybar/config`):
|
|
- `prepend`/`append`-Keys in der userconfig erweitern `modules-left`/`modules-center`/`modules-right` Arrays
|
|
- Alle anderen Top-Level-Keys werden als Modul-Definitionen per Object-Merge eingefügt
|
|
- Merge wird nur bei Änderungen ausgeführt (Timestamp-Vergleich)
|
|
- Bei Fehler: `notify-send` + `logger`, Waybar startet mit System-Config
|
|
- Generiert `~/.config/waybar/style.css` mit `@import` der System-Styles falls nicht vorhanden
|
|
- Benötigt `jq` (in PKGBUILD als Dependency)
|
|
- System-Config muss valides JSON sein (kein JSONC)
|
|
|
|
## System Health Check (moonarch-doctor / moondoc)
|
|
|
|
Diagnose-Script das den Systemzustand gegen moonarch-Defaults prüft:
|
|
- Pakete (official.txt + aur.txt installiert? Orphans?)
|
|
- System-Services (NetworkManager, bluetooth, greetd, ufw, auto-cpufreq, etc.)
|
|
- User-Services (kanshi, stasis, cliphist-text, cliphist-image)
|
|
- Config-Dateien (SHA256-Vergleich deployed vs. moonarch-Default)
|
|
- Helper-Scripts + Symlinks (moonup, moondoc)
|
|
- System-Config (UFW, Pacman/Paru Repos, Default Shell)
|
|
- Verzeichnisse + Permissions
|
|
|
|
## Konventionen
|
|
|
|
- Paketlisten sind einfache Textdateien, ein Paket pro Zeile, Kommentare mit `#`
|
|
- Shell-Scripts müssen POSIX-kompatibel oder explizit bash/zsh sein
|
|
- Alle Pfade im archinstall-Config relativ zum Installationsziel
|