Status: Phase 1 & 2 zu ~85% ERLEDIGT! Letztes Update: 2025-11-09 12:00 Aktueller Branch: v2-clean Version: 2.1.3
- ✅ v2-clean Branch erstellt
- ✅ Neue Verzeichnis-Struktur KOMPLETT implementiert:
lib/- Geteilte Utilities ✅modules/- Modulare Komponenten ✅config/- Stow-Packages ✅profiles/- Desktop & Laptop Profil-System ✅
- ✅ Geteilte lib/-Dateien erstellt:
lib/logging.sh- Print-Funktionen (print_status, print_success, etc.)lib/utils.sh- Utility-Funktionen (confirm, create_backup, cleanup_old_backups, etc.)lib/stow-helpers.sh- Stow-Wrapper (stow_package, restow_package, backup_conflicts, etc.)
- ✅ Profil-System KOMPLETT implementiert:
profiles/desktop.sh(1.8k) ✅profiles/laptop.sh(2.0k) ✅
- ✅ .gitignore aktualisiert für Secrets
- ✅ Sensible Daten entfernt (services.json ist jetzt nur .example)
- ✅ install.sh (30k) - Kompletter modularer Installer
- Modulare Installation
- Interaktive Modulauswahl
- Git-Konfiguration mit .gitconfig.local Pattern
- Profil-Erkennung
- ✅ manage.sh (41k!) - Umfangreiches Modul-Verwaltungs-CLI
- Module list/status/enable/disable
- Profil-Management
- ✅ update.sh (9.5k) - Update-Script
- git pull
- restow all modules
- brew update/upgrade
- npm update
- ✅ module.json Schema - Jedes Modul hat module.json
- ✅ GNU Stow Integration vollständig implementiert
- stow_package() Funktion
- restow_package() Funktion
- backup_conflicts() vor Stowing (mit Cleanup nach Backup!)
- ✅ shellcheck-ready (keine Fehler)
⚠️ Unit-Tests FEHLEN NOCH⚠️ README.md NICHT aktualisiert
1. System-Modul ✅ KOMPLETT
- ✅ modules/system/install.sh (4.9k)
- ✅ modules/system/update.sh
- ✅ modules/system/uninstall.sh (8.1k)
- ✅ modules/system/module.json
- ✅ Profil-bewusst (Desktop vs. Laptop)
- ✅ Unterteilt in settings/:
- finder.sh
- keyboard.sh
- performance.sh
- power.sh
- security.sh
- trackpad.sh
2. Homebrew-Modul ✅ KOMPLETT
- ✅ modules/homebrew/install.sh
- ✅ modules/homebrew/update.sh
- ✅ modules/homebrew/uninstall.sh
- ✅ modules/homebrew/module.json
- ✅ Brewfile-basierte Installation
- ✅ MAS App Store Handling (fragt nach Sign-in)
- ✅ Skips MAS apps wenn nicht eingeloggt
- ✅ Fehlerbehandlung wenn Packages fehlschlagen
3. Git-Modul ✅ KOMPLETT
- ✅ modules/git/install.sh
- ✅ modules/git/update.sh (mit BUGFIX)
- ✅ modules/git/uninstall.sh
- ✅ modules/git/module.json
- ✅ .gitconfig via Stow verwaltet (config/git/.gitconfig)
- ✅ .gitconfig.local für User-Daten (nicht im Repo)
- ✅ Git config --global Issue GEFIXT:
- Verwendet jetzt
git configohne --global - Liest includes korrekt
- Zeigt defaults beim 2. Install
- Verwendet jetzt
4. NPM-Modul ✅ KOMPLETT
- ✅ modules/npm/install.sh
- ✅ modules/npm/update.sh
- ✅ modules/npm/uninstall.sh
- ✅ modules/npm/module.json
- ✅ Installiert Node.js automatisch wenn nicht vorhanden
- ✅ Array-basierte Package-Liste
- ✅ Fehlerbehandlung (installiert so viele wie möglich)
- ✅ Aktuell: typescript, prettier
5. Terminal/Zsh-Modul ✅ KOMPLETT
- ✅ modules/terminal/install.sh
- ✅ modules/terminal/update.sh
- ✅ modules/terminal/uninstall.sh
- ✅ modules/terminal/module.json
- ✅ Oh My Zsh Installation
- ✅ .zshrc via Stow verwaltet (config/zsh/.zshrc)
- ✅ Plugins und Konfiguration
1. Dock-Modul ✅ KOMPLETT
- ✅ modules/dock/install.sh
- ✅ modules/dock/update.sh
- ✅ modules/dock/uninstall.sh
- ✅ modules/dock/module.json
- ✅ dock-apps.txt im Root
- ✅ dockutil-basierte Konfiguration
- ✅ Unterstützt Apps, Spacers (---), Folders (folder:/path)
- ✅ Shellcheck-sauber
2. SSH-Modul ✅ KOMPLETT
- ✅ modules/ssh/install.sh
- ✅ modules/ssh/update.sh
- ✅ modules/ssh/uninstall.sh
- ✅ modules/ssh/module.json
- ✅ modules/ssh/README.md
- ✅ modules/ssh/services.example.json
- ✅ config/ssh/.ssh/config.template
- ✅ Template-basiert für Ansible
- ✅ Ansible markers (ANSIBLE_MANAGED_HOSTS)
- ✅ Keine Secrets im Repo
- ✅ Shellcheck-sauber
3. Mounts-Modul ✅ KOMPLETT
- ✅ modules/mounts/install.sh
- ✅ modules/mounts/update.sh
- ✅ modules/mounts/uninstall.sh
- ✅ modules/mounts/module.json
- ✅ modules/mounts/README.md
- ✅ mounts.config.example im Root
- ✅ NFS/SMB via autofs
- ✅ Desktop-only profile
- ✅ Pipe-separated config format
- ✅ Shellcheck-sauber
4. Scanner-Modul ✅ KOMPLETT
- ✅ modules/scanner/install.sh
- ✅ modules/scanner/update.sh
- ✅ modules/scanner/uninstall.sh
- ✅ modules/scanner/module.json
- ✅ modules/scanner/README.md
- ✅ modules/scanner/templates/scan-shortcuts.sh.template
- ✅ Scanner-Server interaktiv konfiguriert
- ✅ 5 Shortcuts (document, photo, multipage, test, config)
- ✅ Desktop-only profile
- ✅ SANE backend integration
- ✅ Shellcheck-sauber
Fehlende optionale Module:
- ❌ iterm2 - iTerm2 Config via Stow (FEHLT KOMPLETT)
- ⏸️ alfred - Alfred Workflows via Stow (später klären)
- ⏸️ development - Docker, Dev-Tools (später klären - viel zu besprechen)
- ⏸️ creative - Fonts, Adobe Settings (später klären)
NPM als Core-Modul (NICHT in Roadmap geplant!)
⚠️ Wichtige Änderung: npm wurde zu einem essentiellen Core-Modul gemacht- Ursprünglich: npm war nur im optionalen "development"-Modul in der Roadmap erwähnt
- Entscheidung während Development: npm zu einem der 5 Core-Module machen (neben system, homebrew, git, terminal)
- Begründung: Viele moderne Dev-Tools benötigen npm (TypeScript, Prettier, ESLint, etc.)
- Implementierung:
- modules/npm/ mit install/update/uninstall/module.json
- Auto-Install Node.js wenn nicht vorhanden (fragt Benutzer)
- Array-basierte Package-Liste (aktuell: typescript, prettier)
- Fehlerbehandlung: installiert so viele Packages wie möglich, schlägt nur fehl wenn ALLE fehlschlagen
- Nutzt eval "$(brew shellenv)" nach Node.js Installation
-
✅ Git config --global Issue gefixt
- Problem:
git config --global user.nameliest keine includes - Lösung: Verwendet jetzt
git config user.name(ohne --global) - Files: install.sh, modules/git/install.sh, modules/git/update.sh, config/zsh/.zshrc
- Commit: "Fix: Use 'git config' without --global to read included files"
- Problem:
-
✅ Stow backup conflicts gefixt
- Problem: Stow konnte nicht überschreiben wenn Datei existiert
- Lösung: backup_conflicts() erstellt Backups UND löscht Original
- File: lib/stow-helpers.sh
-
✅ npm module dependency handling
- Installiert Node.js automatisch wenn nicht vorhanden
- Fragt Benutzer vorher
-
✅ Homebrew MAS App Store handling
- Prüft ob eingeloggt
- Fragt ob App Store öffnen
- Skipped MAS apps wenn nicht eingeloggt (statt fehlzuschlagen)
- ❌ Ansible-Playbooks fehlen KOMPLETT
- ❌ Bitwarden CLI Integration fehlt
- ❌ SSH-Config-Template fehlt
- ❌ Nächtliche Updates fehlen
- ❌ Secrets-Management fehlt
- ✅ Woche 1: Repository-Umstrukturierung (100%)
- ✅ Woche 2: Kern-Scripts (100%)
- ✅ Woche 3: Essentielle Module (100%)
⚠️ Woche 4: Optionale Module (44% - 4 von 9 Module fertig)
- ❌ Woche 5: Ansible Integration (0%)
- ❌ Secrets-Verwaltung (0%)
- ✅ VM Tests (teilweise)
- ❌ Dokumentation (0%)
Nach Wichtigkeit für dich sortiert:
modules/dock/
├── install.sh # dockutil-basierte Installation
├── update.sh # Dock neu konfigurieren
├── uninstall.sh # Dock zurücksetzen
├── module.json # Modul-Metadaten
└── dock-apps.txt # Liste der Apps (wie in V1)modules/iterm2/
├── install.sh # iTerm2 Config via Stow
├── update.sh # Restow
├── uninstall.sh # Unstow
└── module.json
config/iterm2/
└── Library/
└── Preferences/
└── com.googlecode.iterm2.plistmodules/ssh/
├── install.sh # SSH-Config Template deployen
├── update.sh # Config aktualisieren
├── uninstall.sh # Config entfernen
├── module.json
└── services.example.json # Beispiel-Server
config/ssh/
└── .ssh/
└── config.template # Template (später von Ansible gefüllt)modules/mounts/
├── install.sh # autofs Konfiguration
├── update.sh # Mounts neu mounten
├── uninstall.sh # Mounts entfernen
├── module.json
└── mounts.config.example # Beispiel (echte in .gitignore)modules/scanner/
├── install.sh # Scanner-Shortcuts deployen
├── update.sh # Shortcuts aktualisieren
├── uninstall.sh # Shortcuts entfernen
├── module.json
└── scan-shortcuts.sh # Scanner-Scriptmodules/printer/
├── install.sh # CUPS-Konfiguration
├── update.sh # Drucker neu konfigurieren
├── uninstall.sh # Drucker entfernen
└── module.jsonmodules/alfred/
├── install.sh # Alfred Config via Stow
├── update.sh # Restow
├── uninstall.sh # Unstow
└── module.json
config/alfred/
└── Library/
└── Application Support/
└── Alfred/modules/development/
├── install.sh # Docker Config, Dev-Tools
├── update.sh # Tools aktualisieren
├── uninstall.sh # Tools entfernen
└── module.json- V2 Architektur erklären
- Installation Quickstart
- Module-System erklären
- Profil-System erklären
- docs/installation.md - Ausführliche Installation
- docs/modules.md - Modul-Guide
- docs/migration-v1-to-v2.md - Migration-Anleitung
- docs/troubleshooting.md - Fehlerbehebung
- VM-Tests sind OK, aber noch nicht auf echten Macs getestet
- Desktop-Profil noch nicht getestet
- Laptop-Profil noch nicht getestet
SPÄTER - Erst wenn alle Module fertig:
- Ansible-Playbooks schreiben
- Bitwarden CLI einrichten
- SSH-Secrets-Distribution
- Nächtliche Updates
Getestet auf:
- ✅ VM (Mac) - Erste Installation funktioniert
- ✅ VM (Mac) - Zweite Installation zeigt Git-Defaults korrekt
- ❌ Echter Mac - NICHT GETESTET
- ❌ Desktop-Profil - NICHT GETESTET
- ❌ Laptop-Profil - NICHT GETESTET
Was funktioniert (VM-getestet):
- ✅ install.sh installiert Module
- ✅ GNU Stow verlinkt Configs
- ✅ Git config mit .gitconfig.local
- ✅ Homebrew Installation mit MAS handling
- ✅ npm Installation mit Node.js auto-install
- ✅ Backup-System vor Overwrites
- ✅ Oh My Zsh Installation
Was NICHT getestet:
- ❌ manage.sh (existiert, aber nicht getestet)
- ❌ update.sh (existiert, aber nicht getestet)
- ❌ system-Modul (existiert, aber nicht getestet)
- ❌ Profil-Wechsel (System existiert, aber nicht getestet)
- ❌ Alle optionalen Module (existieren nicht)
- Kontext-Explosion - Chat zu groß, muss gewechselt werden ✅ WIRD GERADE GELÖST
- Optionale Module fehlen - dock, iterm2, ssh, mounts, etc. alle nicht implementiert
- Keine Tests auf echten Macs - Nur VM-Tests
- Dokumentation fehlt - README.md veraltet, docs/ fehlt
- manage.sh ungetestet - Existiert (41k!), aber nicht getestet
- update.sh ungetestet - Existiert (9.5k), aber nicht getestet
- system-Modul ungetestet - Existiert mit allen settings/, aber nicht getestet
- ✅ GNU Stow für Symlink-Management (statt chezmoi/yadm)
- ✅ Bitwarden CLI für Secrets (geplant für Phase 3)
- ✅ .gitconfig.local Pattern für Git-User-Daten
- ✅ config/zsh/ Struktur für Stow (nicht direkt im Root)
- ✅ Backup vor Overwrite in stow-helpers.sh mit Cleanup
- ✅ Profil-System mit desktop.sh und laptop.sh
- ✅ module.json für jedes Modul
cd ~/dotfiles
git status
# Du bist auf Branch: v2-clean
# STATUS CHECK:
./manage.sh modules status # Welche Module sind aktiv?
./manage.sh modules list # Alle verfügbaren Module?
./manage.sh profile info # Welches Profil?
# FALLS manage.sh Fehler hat -> erst testen!Reihenfolge (nach deinen Bedürfnissen):
- dock - Wichtig für dich, nutzt du täglich
- iterm2 - Wichtig für dich, nutzt du täglich
- ssh - Template (Ansible später)
- mounts - Für Desktop-Macs
- scanner - Für Desktop-Macs
- Rest optional (printer, alfred, development)
Pro Modul benötigt:
- modules/MODULNAME/install.sh
- modules/MODULNAME/update.sh
- modules/MODULNAME/uninstall.sh
- modules/MODULNAME/module.json
- Falls Stow: config/MODULNAME/ Struktur
Siehe Roadmap:
- Phase 2 Woche 4 (Zeile 1779-1784)
- Modul-Architektur (Zeile 312-444)
Branch: v2-clean (NICHT main!) Letzter Commit: v2.1.2 Tags: v2.0.0, v2.1.0, v2.1.1, v2.1.2
Wichtig:
- Commits gehen zu: github.com/dbraendle/dotfiles
- Branch v2-clean ist Development
- NICHT in main mergen bis V2 komplett fertig!
- Komplette Basis-Architektur (lib/, profiles/, Kern-Scripts)
- Alle essentiellen Module (system, homebrew, git, npm, terminal)
- GNU Stow Integration
- Git config --global Fix
- Profil-System
- Backup-System
- Optionale Module (dock, iterm2, ssh, mounts, scanner, etc.)
- Tests auf echten Macs
- Dokumentation (README.md, docs/)
- Ansible/Homelab Integration
- Bitwarden CLI Secrets
- Nächtliche Updates
- SSH-Config-Distribution
Nächster Meilenstein: Alle optionalen Module implementieren (Woche 4 der Roadmap)
Bugfixes nach Big Sur VM Test (7/9 Module schlugen fehl):
Root Causes identifiziert:
- system Modul blockierte Big Sur (required Monterey 12.0+)
- homebrew Modul prüfte keine Admin-Rechte → NONINTERACTIVE=1 schlug fehl
- install.sh bot desktop-only Module auf Laptops an
- Domino-Effekt: Homebrew fehlgeschlagen → stow/dockutil fehlen → 7/9 Module scheitern
Fixes implementiert:
- modules/system/install.sh: Minimum macOS 12.0 → 11.0 (Big Sur Support)
- modules/homebrew/install.sh: Admin-Rechte-Check VOR Installation + hilfreiche Anleitung
- lib/utils.sh:
- Neue Funktion:
check_admin_rights()- prüft ob User in admin group - Neue Funktion:
get_modules_for_profile(profile)- filtert Module nach Profil
- Neue Funktion:
- install.sh: Profile-Filterung in Full Installation & Custom Selection
Erwartetes Ergebnis:
- Big Sur (11.7.10): ✅ system Modul funktioniert
- Non-Admin User: ✅ Klare Fehlermeldung + Anleitung
- Laptop Profil: ✅ Keine desktop-only Module (mounts/scanner)
- Admin User: ✅ Homebrew installiert → alle Dependencies verfügbar
Files geändert: 4 files, 104 insertions(+), 8 deletions(-) Commit: 0f5e401
- scanner Modul hinzugefügt (Desktop-only)
- mounts Modul hinzugefügt (Desktop-only, NFS/SMB via autofs)
- dock Modul hinzugefügt (dockutil-basiert)
WICHTIG für nächste Session:
- Lies diese Datei ZUERST
- Teste manage.sh und update.sh (existieren, aber ungetestet!)
- Implementiere optionale Module (siehe Priorität 1 oben)
- Lies DOTFILES_V2_ROADMAP_DE.md Sektion 6 & 16 für Modul-Details
Dokument-Version: 2.3 (Big Sur Compatibility + Profile Filtering) Zuletzt aktualisiert: 2025-11-09 12:00