# CLAUDE.md - Operational Guidelines for Claude Code This file contains guidelines and context for Claude Code when working on this Gentoo ThinkPad project. ## Project Context This is a **Gentoo Linux development workstation** setup project. The system is a Lenovo ThinkPad configured for professional software development with a focus on minimalism, performance, and Wayland-native tools. For complete system details, see: - **System-Overview.md** - Hardware specs, software stack, design philosophy - **Feature-Status.md** - Current state, working features, session history - **Troubleshooting.md** - Troubleshooting commands and procedures ## Technical Considerations ### System Architecture - **Init System**: OpenRC (not systemd) - **Session Manager**: elogind for session management and suspend/resume - **Display Protocol**: Wayland (no X11) - **Window Manager**: Hyprland (configured via `hyprctl`) - **Single User System**: Optimized for user `alexander` ### Critical System Notes #### Kernel Compilation **⚠️ CRITICAL**: NEVER use genkernel for any kernel tasks. - genkernel was found to be unreliable (uses separate config files in `/etc/kernels/` that override `/usr/src/linux/.config`) - All kernel builds MUST use the automated build script: `scripts/build-kernel.sh` - Manual compilation is documented in the script and in Feature-Status.md #### DisplayLink Monitors DisplayLink requires special Hyprland configuration: - No VRR (Variable Refresh Rate) - No blur effects - No tearing optimization - No direct scanout These settings are already configured. See `Fix-DisplayLink-Artifacts.md` for details. #### AMD Platform Specifics - **CPU**: AMD Ryzen AI 7 PRO 350 - **Power Management**: AMD P-State EPP driver (mode 3 - active) - **GPIO/ACPI**: Requires `CONFIG_PINCTRL_AMD=y` in kernel for touchpad/touchscreen ### Hardware-Specific Details #### Wireless (MediaTek MT7925) - **WiFi**: WiFi 7 (BE) - Interface: `wlp194s0` - **Bluetooth**: Bluetooth 5.4 - Controller: `hci0` - **Management**: Custom scripts at `/usr/local/bin/wifi-setup` and `/usr/local/bin/bluetooth-setup` #### Input Devices - **Touchpad**: ELAN901C I2C HID (requires CONFIG_PINCTRL_AMD=y) - **Touchscreen**: ELAN0678 I2C HID multitouch (requires CONFIG_PINCTRL_AMD=y) - Both require `i2c-hid-acpi` module #### Power Management - Automatic AC/Battery profile switching via ACPI events - Battery conservation mode (20-80% charge thresholds) for extended lifespan - Scripts: `/usr/local/bin/power-profile-ac` and `/usr/local/bin/power-profile-battery` - Logs: `/var/log/power-profile.log` ## System Scripts and Tools All management scripts are installed system-wide with ZSH completion: ### Core Management Scripts - `/usr/local/bin/wifi-setup` - WiFi connection manager - `/usr/local/bin/bluetooth-setup` - Bluetooth device manager - `/usr/local/bin/audio-setup` - Audio input/output manager - `/usr/local/bin/monitor-setup` - Interactive monitor configuration - `/usr/local/bin/battery-setup` - Battery charge threshold manager - `/usr/local/bin/backup-setup` - Interactive backup management ### Automation Scripts - `/usr/local/bin/lid-handler.sh` - Lid event handler (suspend/monitor switching) - `/usr/local/bin/backup-trigger` - Network trigger daemon (monitors NAS) - `/home/alexander/.config/hypr/scripts/monitor-setup.sh` - Automatic monitor configuration ### Backup Workers - `/usr/local/bin/backup-full` - Full system backup - `/usr/local/bin/backup-home` - Home directory backup - `/usr/local/bin/backup-incremental` - Incremental backup - `/usr/local/bin/backup-configs` - Configuration files backup ### OpenRC Services - `backup-monitor` - Network trigger for automatic backups - `battery-thresholds` - Persistent battery charge thresholds - `bluetooth` - Bluetooth daemon - `nftables` - Firewall - `acpid` - ACPI event handling ## Configuration Files and Locations ### System Configuration - `/etc/nftables.conf` - Firewall configuration (default deny incoming) - `/etc/backup.conf` - Backup configuration (NAS connection, exclusions) - `/etc/acpi/default.sh` - ACPI event handler (power profile auto-switching) - `/etc/acpi/lid.sh` - ACPI lid event entry point - `/etc/conf.d/battery-thresholds` - Battery threshold configuration ### User Configuration - `~/.config/hypr/` - Hyprland configuration (Catppuccin Mocha theme) - `~/.config/waybar/` - Waybar configuration (Catppuccin Mocha theme, Nerd Font icons) - `~/.config/nvim/` - Neovim configuration (LSP with native API) - `~/.config/ghostty/` - Ghostty terminal configuration - `~/.config/chezmoi/` - Chezmoi dotfile manager configuration ### Dotfile Management - **Tool**: chezmoi (cross-platform dotfile manager) - **Source**: `~/.local/share/chezmoi` (git clone of dotfiles repo) - **Repository**: `~/repository/git.hinrichs.dev/alexander/dotfiles` - See `Dotfiles-Management.md` for complete guide ### Logs - `/var/log/power-profile.log` - Power management log - `~/.local/var/log/backup.log` - Backup operations log - `~/.local/var/log/backup-monitor.log` - Monitor daemon log - `/tmp/lid-handler.log` - Lid automation log ## UI/Theme Configuration The system uses **Catppuccin Mocha** theme consistently across all applications: - **Hyprland**: Lavender→Mauve gradient on active windows, Surface0 on inactive - **Waybar**: Color-coded modules with Nerd Font icons (Hasklug Nerd Font) - **Neovim**: Feline statusline with Mocha colors, LSP using native `vim.lsp.config[]` API - **Ghostty**: Pure Wayland terminal (no X11) ### Theme Colors (Catppuccin Mocha) - Base: `#1e1e2e` - Text: `#cdd6f4` - Lavender: `#b4befe` - Mauve: `#cba6f7` - Surface0: `#313244` See Feature-Status.md for complete theme documentation. ## Documentation Structure ### User Documentation - **USER-GUIDE.md** - Quick reference for everyday tasks (package management, services, network, audio, updates) - **System-Overview.md** - Hardware specs, software stack, design philosophy, system health - **Feature-Status.md** - Current state, working features, session history, success metrics - **Troubleshooting.md** - Troubleshooting commands and procedures for all components ### Complete Guides - **Backup-Setup.md** - Complete backup guide (automated NAS backups, network trigger, troubleshooting) - **Security-Hardening.md** - Complete security guide (firewall, fail2ban, SSH hardening, monitoring) - **Power-Management-Setup.md** - Complete power management guide - **Bluetooth-Setup.md** - Complete Bluetooth setup and troubleshooting - **Dotfiles-Management.md** - Complete chezmoi guide (managing dotfiles, adding new tools, editing configs) - **Lid-Automation-Working-Solution.md** - Lid automation implementation - **Fix-DisplayLink-Artifacts.md** - DisplayLink optimization guide ### Script Documentation Each script directory under `scripts/` contains a `README.md`: - `scripts/wifi-setup/README.md` - `scripts/bluetooth-setup/README.md` - `scripts/audio-setup/README.md` - `scripts/monitor-setup/README.md` - `scripts/battery-setup/README.md` - `scripts/backup-setup/` - Backup system scripts and configurations - `scripts/security-setup/` - Security hardening scripts and configurations ### Technical Specifications - **Lid-Automation-Implementation.md** - Technical lid automation specs - **kernel-6.12.41-gentoo-x86_64.config** - Complete kernel configuration - **Touchpad-Touchscreen-Setup.md** - Touchpad and touchscreen setup details - **POST-REBOOT-CHECKLIST.md** - Post-reboot verification checklist ## Operational Guidelines for Claude ### When Working with Commands **IMPORTANT**: When commands require `sudo`, provide the command for the user to copy-paste rather than attempting to run it directly. ### Package Management Use Gentoo's Portage system: ```bash emerge --search emerge -av # Ask and verbose emerge -avuDN @world # Update world ``` ### Service Management Use OpenRC (not systemd): ```bash rc-service start|stop|restart|status rc-update add|del rc-status -a # List all services ``` ### Kernel Work - NEVER suggest using genkernel - Always use `scripts/build-kernel.sh` or manual compilation - Reference saved config: `kernel-6.12.41-gentoo-x86_64.config` ### File Editing When editing system configuration files: 1. Always read the file first using the Read tool 2. Use the Edit tool for modifications 3. Preserve exact formatting and structure 4. Test changes before marking complete ### Documentation Updates When updating documentation: 1. Maintain consistency across all related files 2. Update cross-references when moving content 3. Keep USER-GUIDE.md concise (quick reference only) 4. Put detailed information in dedicated guides 5. Ensure examples are correct and tested ### Troubleshooting Approach When helping with issues: 1. Check Troubleshooting.md first for existing procedures 2. Check relevant guide (Backup-Setup.md, Security-Hardening.md, etc.) 3. Check script-specific README.md files 4. Verify system state before making changes 5. Document any new procedures discovered ### Testing Changes Always verify changes work: 1. Test commands before marking tasks complete 2. Verify services restart successfully 3. Check logs for errors 4. Ensure no regressions in existing functionality ## Common Workflows ### Adding a New Feature 1. Implement the feature (scripts, configs, services) 2. Test thoroughly 3. Update Feature-Status.md (add to "Working" section) 4. Update USER-GUIDE.md (add quick reference) 5. Create or update detailed guide (if complex) 6. Update this CLAUDE.md (if it affects operational guidelines) ### Fixing a Bug 1. Diagnose using Troubleshooting.md procedures 2. Implement fix 3. Test fix thoroughly 4. Update documentation if procedure changed 5. Update Feature-Status.md (remove from "Known Issues" if listed) ### Updating Documentation 1. Identify which files need updates 2. Maintain consistency across related files 3. Update cross-references 4. Keep tone professional and technical 5. Use markdown formatting consistently ## Project Status **Overall Status**: 🟢 Excellent - Production Ready Core system setup is complete (~99%). Only development-specific tools remain (Kotlin, Android, IoT tooling) which will be configured as needed by the user. For detailed status, see: - **Feature-Status.md** - Complete status, working features, session history - **System-Overview.md** - System health and metrics --- **Note**: This file should remain focused on operational guidelines for Claude Code. Project-specific details belong in the appropriate documentation files listed above.