Following the μέτρον principle of durable, thoughtful solutions: Shell Configuration: - Add refined .zshrc with modular architecture - Include .p10k.zsh for Powerlevel10k prompt - Add .zprofile for login shell configuration - Update aliases with new dotfiles management tools System Management Tools: - safe-update.sh: System updates with rollback protection - detect-drift.sh: Configuration drift detection - system-health.sh: Comprehensive health monitoring - generate-lockfile.sh: Version tracking for reproducibility Documentation: - ARCHITECTURE.md: Philosophy and design rationale - USAGE.md: Practical guide and troubleshooting Other Updates: - Update symlinks.sh to manage all config files - Add .vimrc configuration - Create Brewfile.lock for version pinning These enhancements provide visibility, safety, and maintainability while following the prime directive of prioritizing durability. 🖖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
203 lines
8.3 KiB
Markdown
203 lines
8.3 KiB
Markdown
# Dotfiles Architecture Documentation
|
|
|
|
## Philosophy: μέτρον γὰρ καὶ συμμετρία καὶ τὸ πρόσφορον
|
|
|
|
This dotfiles system is built upon the prime directive: **"Prioritize durable, thoughtful solutions over expedient ones"**. The Greek principle of μέτρον (measure), συμμετρία (proportion), and τὸ πρόσφορον (what is fitting) guides every architectural decision.
|
|
|
|
## Core Principles
|
|
|
|
### 1. Durability Over Convenience
|
|
- **Long-term thinking**: Solutions that remain stable across system updates
|
|
- **Graceful degradation**: System continues to function when components are missing
|
|
- **Version stability**: Lockfiles and rollback mechanisms prevent breaking changes
|
|
|
|
### 2. Thoughtful Modularization
|
|
- **Single responsibility**: Each script and configuration file has a clear purpose
|
|
- **Composable design**: Components work independently and together
|
|
- **Context awareness**: System adapts behavior based on working directory and usage patterns
|
|
|
|
### 3. Measured Implementation
|
|
- **What is fitting**: Tools and configurations chosen for specific needs, not trends
|
|
- **Proportional complexity**: Simple solutions for simple problems
|
|
- **Observable behavior**: System provides visibility into its operations
|
|
|
|
## System Architecture
|
|
|
|
```
|
|
~/dotfiles/
|
|
├── engage # Master deployment script (Star Trek theme)
|
|
├── Brewfile # Package definitions (120+ tools)
|
|
├── Brewfile.lock # Version snapshots for reproducibility
|
|
├── shell/ # Modular shell configuration
|
|
│ ├── .zshrc # Main shell config (replaces ~/.zshrc)
|
|
│ ├── environment.zsh # Environment variables
|
|
│ ├── paths.zsh # PATH management with deduplication
|
|
│ ├── aliases.zsh # Command aliases
|
|
│ ├── functions.zsh # Custom functions
|
|
│ └── .zsh-plugins.txt # Plugin manifest for Antidote
|
|
├── scripts/ # Automation and maintenance
|
|
│ ├── backup-ssh-keys.sh # GPG encryption for sensitive data
|
|
│ ├── generate-lockfile.sh# Version tracking
|
|
│ ├── safe-update.sh # Update with rollback protection
|
|
│ ├── detect-drift.sh # Configuration consistency checking
|
|
│ ├── system-health.sh # Observability and monitoring
|
|
│ └── set-macos-defaults.sh# System preferences automation
|
|
└── git/ # Git configuration and hooks
|
|
├── .gitconfig # Git settings
|
|
└── hooks/ # Security and validation hooks
|
|
```
|
|
|
|
## Component Design Rationale
|
|
|
|
### The "engage" Script
|
|
**Inspiration**: Captain Picard's decisive command
|
|
**Purpose**: Single-entry point for complete system deployment
|
|
**Design**: Interactive menu with phased installation and pre-flight checks
|
|
|
|
```bash
|
|
# Philosophy: Make complex deployment feel effortless
|
|
echo "🖖 ENGAGE - Make it so!"
|
|
```
|
|
|
|
### Shell Configuration Strategy
|
|
**Problem**: Monolithic .zshrc files become unmaintainable
|
|
**Solution**: Modular architecture with graceful degradation
|
|
|
|
**Key decisions**:
|
|
- **environment.zsh**: Sets the foundation (XDG, locale, history)
|
|
- **paths.zsh**: Intelligent PATH building with deduplication
|
|
- **functions.zsh**: Enhanced system utilities (sysupdate, deep_clean, vault integration)
|
|
- **Context awareness**: Behavior adapts to work/chamber/vault/dotfiles environments
|
|
|
|
### Package Management Philosophy
|
|
**Brewfile Design**: Organized by purpose, not alphabetically
|
|
```ruby
|
|
# Development tools come first (core workflow)
|
|
brew "git"
|
|
brew "ripgrep"
|
|
brew "fzf"
|
|
|
|
# Productivity tools second (daily usage)
|
|
brew "obsidian"
|
|
brew "raycast"
|
|
```
|
|
|
|
**Rationale**: Reflects actual importance hierarchy, not convenience
|
|
|
|
### Version Control Strategy
|
|
**Three-tier approach**:
|
|
1. **Brewfile**: What should be installed
|
|
2. **Brewfile.lock**: What versions are currently installed
|
|
3. **safe-update.sh**: How to update safely with rollback
|
|
|
|
This mirrors software engineering best practices (requirements → lockfile → deployment).
|
|
|
|
### Security Architecture
|
|
**Defense in depth**:
|
|
- **SSH key backup**: GPG-encrypted with restore instructions
|
|
- **Git hooks**: Prevent accidental secret commits
|
|
- **Firewall monitoring**: System health checks include security posture
|
|
- **Sensitive data handling**: Never commit secrets, always encrypt backups
|
|
|
|
## Advanced Features
|
|
|
|
### Configuration Drift Detection
|
|
**Problem**: Systems inevitably drift from their defined state
|
|
**Solution**: Automated comparison between actual and intended configuration
|
|
|
|
**Three drift types monitored**:
|
|
1. **Package drift**: Installed vs. Brewfile definitions
|
|
2. **Configuration drift**: Live files vs. dotfiles repository
|
|
3. **System drift**: Current macOS settings vs. defaults script
|
|
|
|
### System Health Monitoring
|
|
**Observability philosophy**: "You can't manage what you can't measure"
|
|
|
|
**Monitored components**:
|
|
- **Resources**: CPU, memory, disk usage with intelligent thresholds
|
|
- **Services**: Critical tools (Homebrew, Git, Zsh, SSH) health status
|
|
- **Packages**: Total count, outdated packages, broken installations
|
|
- **Shell performance**: Load time and plugin count impact
|
|
- **Network**: Internet, DNS, GitHub connectivity for development
|
|
- **Security**: SSH keys, GPG keys, firewall status
|
|
|
|
### Context-Aware Behavior
|
|
**Philosophy**: Tools should adapt to how you work
|
|
|
|
**Context detection**:
|
|
```bash
|
|
# Automatic context detection based on PWD
|
|
detect_context() {
|
|
case "$PWD" in
|
|
*work*) CURRENT_CONTEXT="work" ;;
|
|
*chamber*) CURRENT_CONTEXT="chamber" ;;
|
|
*vault*) CURRENT_CONTEXT="vault" ;;
|
|
*dotfiles*) CURRENT_CONTEXT="dotfiles" ;;
|
|
*) CURRENT_CONTEXT="general" ;;
|
|
esac
|
|
}
|
|
```
|
|
|
|
**Context-specific behaviors**:
|
|
- **Work**: Enhanced productivity shortcuts, stricter security
|
|
- **Chamber**: Creative workspace optimizations
|
|
- **Vault**: Knowledge management integration (Obsidian shortcuts)
|
|
- **Dotfiles**: System administration tools prominently available
|
|
|
|
## Error Handling Philosophy
|
|
|
|
### Graceful Degradation
|
|
**Principle**: System remains functional when components fail
|
|
|
|
**Implementation patterns**:
|
|
```bash
|
|
# Tool availability checks
|
|
if command -v fzf >/dev/null; then
|
|
eval "$(fzf --zsh)"
|
|
elif [[ -z "${P10K_INSTANT_PROMPT-}" ]]; then
|
|
echo "⚠️ FZF not available - install with: brew install fzf"
|
|
fi
|
|
```
|
|
|
|
### Rollback Capabilities
|
|
**Safe-update pattern**: Always create recovery points before changes
|
|
- **Snapshots**: Package states and configuration backups
|
|
- **Health testing**: Verify system function after updates
|
|
- **Automatic rollback**: Return to last known good state on failure
|
|
|
|
## Performance Considerations
|
|
|
|
### Shell Startup Optimization
|
|
**Problem**: Plugin-heavy shells can have slow startup times
|
|
**Solutions**:
|
|
- **Instant prompt**: Powerlevel10k instant prompt for immediate responsiveness
|
|
- **Conditional loading**: Only load tools that are actually installed
|
|
- **Fast mode**: Non-interactive shells bypass expensive operations
|
|
|
|
### Plugin Management Strategy
|
|
**Antidote over Oh My Zsh**: Faster, more reliable plugin management
|
|
**Curated plugin list**: Only essential plugins, regularly audited
|
|
**Performance monitoring**: Track shell load times and plugin impact
|
|
|
|
## Future Evolution
|
|
|
|
### Extensibility Points
|
|
**Plugin architecture**: Additional modules can be added to `shell/` directory
|
|
**Hook system**: Custom scripts can extend behavior at defined points
|
|
**Context expansion**: New work environments easily added to context detection
|
|
|
|
### Maintenance Strategy
|
|
**Regular audits**: Quarterly review of tools and configurations
|
|
**Dependency tracking**: Monitor for deprecated packages or breaking changes
|
|
**Documentation updates**: Architecture docs updated with any design changes
|
|
|
|
## Conclusion
|
|
|
|
This dotfiles system embodies the principle that **good tools become invisible**. By prioritizing durability, thoughtfulness, and proportionality, it creates a computing environment that supports focused work rather than demanding constant maintenance.
|
|
|
|
The μέτρον principle ensures that every component has the right measure of complexity - no more, no less - for its intended purpose. This creates a system that remains stable and usable across years of computing, embodying the prime directive of durable, thoughtful solutions.
|
|
|
|
---
|
|
|
|
*"The best tools are the ones you forget you're using."*
|
|
*"Make it so!" - Captain Jean-Luc Picard* |