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:
172
machine-profiles.yaml
Normal file
172
machine-profiles.yaml
Normal 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
|
||||
Reference in New Issue
Block a user