# 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