feat: add package and machine profile configuration

- Add packages.yaml defining system packages across platforms
- Add machine-profiles.yaml for different deployment scenarios
- Support for server, workstation, and development profiles

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Eric Turner
2025-08-02 20:21:31 -06:00
parent 3ddad4b543
commit eefdf05fa9
2 changed files with 363 additions and 0 deletions

172
machine-profiles.yaml Normal file
View File

@@ -0,0 +1,172 @@
# Machine Profile Configuration
# Define different package sets for different machine types
# Profile definitions
profiles:
# Minimal server profile - essential tools only
server:
description: "Minimal server setup with essential tools"
packages:
system_packages:
- curl
- git
- vim
- sshuttle
github_packages:
- ripgrep # Essential for log searching
- fd # Better find for system admin
optional_packages: [] # No optional packages on servers
# Development machine profile - full setup
dev:
description: "Full development machine setup"
packages:
system_packages:
- curl
- git
- vim
- sshuttle
- docker
- docker-compose
binary_packages:
- claude-code
- gemini-cli
github_packages:
- fzf
- bat
- ripgrep
- fd
- delta
npm_packages:
- pm2
python_packages:
- requests
zsh_plugins:
- zsh-syntax-highlighting
- zsh-autosuggestions
optional_packages:
- docker
- docker-compose
# Lightweight development - dev tools without heavy packages
dev-lite:
description: "Development setup without heavy packages (Docker, etc.)"
packages:
system_packages:
- curl
- git
- vim
- sshuttle
binary_packages:
- claude-code
- gemini-cli
github_packages:
- fzf
- bat
- ripgrep
- fd
- delta
npm_packages: []
python_packages:
- requests
zsh_plugins:
- zsh-syntax-highlighting
- zsh-autosuggestions
optional_packages: []
# Personal laptop/desktop
personal:
description: "Personal machine with all tools and conveniences"
packages:
system_packages:
- curl
- git
- vim
- sshuttle
- docker
- docker-compose
binary_packages:
- claude-code
- gemini-cli
- task-master
github_packages:
- fzf
- bat
- ripgrep
- fd
- delta
npm_packages:
- pm2
python_packages:
- requests
zsh_plugins:
- zsh-syntax-highlighting
- zsh-autosuggestions
optional_packages:
- docker
- docker-compose
# Minimal profile - bare bones
minimal:
description: "Absolute minimum setup"
packages:
system_packages:
- curl
- git
- vim
binary_packages: []
github_packages: []
npm_packages: []
python_packages: []
zsh_plugins: []
optional_packages: []
# Profile detection rules (auto-detection logic)
detection_rules:
# Check for server indicators
server:
- command: "systemctl is-active sshd"
condition: "active"
weight: 30
- command: "test -f /etc/systemd/system/multi-user.target"
condition: "exists"
weight: 20
- command: "who | wc -l"
condition: "== 0" # No logged in users
weight: 10
- environment: "SSH_CONNECTION"
condition: "set"
weight: 25
# Check for development indicators
dev:
- command: "which code || which vim || which nvim"
condition: "exists"
weight: 25
- command: "test -d ~/projects || test -d ~/dev || test -d ~/src"
condition: "exists"
weight: 20
- command: "which node || which python3 || which docker"
condition: "exists"
weight: 30
- environment: "DISPLAY"
condition: "set"
weight: 15
# Check for personal machine indicators
personal:
- command: "test -d ~/Desktop || test -d ~/Documents"
condition: "exists"
weight: 20
- command: "which firefox || which chrome || which safari"
condition: "exists"
weight: 25
- environment: "HOME"
condition: "contains /Users/ || contains /home/eric"
weight: 15
# Default fallbacks
defaults:
profile: "dev-lite" # Safe default
auto_detect: true
prompt_user: true # Ask user to confirm auto-detected profile