# 🐧 Jakob's Dotfiles

Dieses Repository verwaltet meine System-Konfigurationen unter **CachyOS** (Arch Linux) mit **Hyprland** und der **Fish-Shell**.

## 🛠 Setup-Struktur
Ich verwende ein **Bare Repository**, um mein Home-Verzeichnis sauber zu halten. Die Git-Datenbank liegt in `~/.dotfiles`, aber die Dateien bleiben an ihrem Platz.

### 1. Initialisierung (auf einem neuen System)
```fish
git init --bare $HOME/.dotfiles
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
```

---

## 🔐 Authentifizierung (Browser-Login / FIDO)
Um den "Windows-Style" Login über den Browser (Gitea + WebAuthn/FIDO) zu ermöglichen, wird der **Git Credential Manager (GCM)** in Kombination mit **GPG** und **pass** genutzt.

### Installation der Tools
```fish
# GCM über AUR (paru)
paru -S git-credential-manager-bin

# Pass und GPG über pacman
sudo pacman -S pass gnupg
```

### Konfiguration des Passwort-Speichers
1. **GPG-Key erstellen:** `gpg --generate-key`
2. **ID kopieren** (z.B. `90D469EF...`)
3. **Pass initialisieren:** `pass init <DEINE_GPG_ID>`
4. **Git-Helper setzen:**
   ```fish
   config config --local credential.helper manager
   config config --local credential.credentialStore gpg
   ```

---

## � VS Code & Electron Keyring (Hyprland)

Da unter Hyprland kein Standard-Keyring läuft, VS Code diesen aber zwingend benötigt (z. B. für GitHub Copilot, Settings-Sync oder Git), nutzen wir eine Brücke. Diese stellt die D-Bus Secret Service API bereit und speichert die Geheimnisse direkt in unserer bestehenden pass-Datenbank.

### 1. Installation der Brücke
```fish
# Installiert den pass-secret-service über das AUR
paru -S pass-secret-service-bin
```

### 2. Dienst aktivieren
Damit die Brücke im Hintergrund läuft, aktivieren wir den zugehörigen Systemd-User-Service:
```fish
systemctl --user enable --now pass-secret-service
```

### 3. VS Code konfigurieren
VS Code muss angewiesen werden, die D-Bus Schnittstelle zu nutzen.
In VS Code die Command Palette öffnen (Strg + Shift + P), nach Preferences: Configure Runtime Arguments suchen und den folgenden Eintrag in der argv.json setzen:
```json
"password-store": "gnome-libsecret"
```

*(Hinweis: gnome-libsecret ist hier lediglich das Electron-Schlagwort für die D-Bus-Schnittstelle, die wir mit pass gekapert haben).*

### 4. GPG-Agent Cache konfigurieren (Empfohlen)
Damit VS Code nicht bei jedem Sync-Vorgang im Hintergrund ein Passwort-Popup triggert, sollte der GPG-Cache erhöht werden. Dazu die Datei `~/.gnupg/gpg-agent.conf` anpassen:
```
default-cache-ttl 3600
max-cache-ttl 28800
```

Anschließend den Agenten neu laden:
```fish
gpg-connect-agent reloadagent /bye
```

---

## �📂 Wichtige Dateien im Repo
* **Hyprland:** `~/.config/hypr/hyprland.conf` (Keybinds & Window-Rules)
* **Hyprpaper:** `~/.config/hypr/hyprpaper.conf` (Neue Block-Syntax!)
* **Waybar/Wofi:** Styles und Configs für Topbar und Launcher.
* **Fish:** `~/.config/fish/config.fish` (Inklusive `config` Alias und deaktiviertem Fastfetch).
* **Kitty:** `~/.config/kitty/kitty.conf` (Transparenz & Blur).

---

## ⌨️ Täglicher Workflow
Zum Hinzufügen oder Ändern von Dateien wird der `config`-Alias genutzt:

```fish
config status
config add <pfad_zur_datei>
config commit -m "Nachricht"
config push
```

*Hinweis: Beim Push öffnet sich automatisch der Browser für den Gitea-Login.*