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

191
packages.yaml Normal file
View File

@@ -0,0 +1,191 @@
# Dotfiles Package Configuration
# Define packages to be installed across all systems
# System packages (apt/yum/brew)
system_packages:
- name: sshuttle
description: "VPN over SSH"
check_command: "which sshuttle"
install_commands:
debian: "sudo apt update && sudo apt install -y sshuttle"
ubuntu: "sudo apt update && sudo apt install -y sshuttle"
fedora: "sudo dnf install -y sshuttle"
centos: "sudo yum install -y sshuttle"
rhel: "sudo yum install -y sshuttle"
macos: "brew install sshuttle"
- name: curl
description: "Command line tool for transferring data"
check_command: "which curl"
install_commands:
debian: "sudo apt update && sudo apt install -y curl"
ubuntu: "sudo apt update && sudo apt install -y curl"
fedora: "sudo dnf install -y curl"
centos: "sudo yum install -y curl"
rhel: "sudo yum install -y curl"
macos: "brew install curl"
- name: git
description: "Version control system"
check_command: "which git"
install_commands:
debian: "sudo apt update && sudo apt install -y git"
ubuntu: "sudo apt update && sudo apt install -y git"
fedora: "sudo dnf install -y git"
centos: "sudo yum install -y git"
rhel: "sudo yum install -y git"
macos: "brew install git"
- name: vim
description: "Text editor"
check_command: "which vim"
install_commands:
debian: "sudo apt update && sudo apt install -y vim"
ubuntu: "sudo apt update && sudo apt install -y vim"
fedora: "sudo dnf install -y vim"
centos: "sudo yum install -y vim"
rhel: "sudo yum install -y vim"
macos: "brew install vim"
# Binary downloads and installs
binary_packages:
- name: claude-code
description: "Claude Code CLI"
check_command: "which claude"
install_type: "npm"
npm_package: "@anthropic-ai/claude-code"
fallback_install: |
echo "Trying alternative binary installation..."
if [[ "$OSTYPE" == "linux-gnu"* ]] || [[ "$OSTYPE" == "darwin"* ]]; then
curl -fsSL https://claude.ai/install.sh | bash
else
echo "Unsupported OS for Claude Code CLI"
return 1
fi
- name: gemini-cli
description: "Google Gemini CLI"
check_command: "which gemini"
install_type: "npm"
npm_package: "@google/gemini-cli"
homebrew_package: "gemini-cli"
npx_fallback: "https://github.com/google-gemini/gemini-cli"
- name: task-master
description: "Task management tool"
check_command: "which task-master"
install_type: "github"
github_repo: "your-username/task-master" # Replace with actual repo
github_install_method: "release" # or "build"
install_path: "$HOME/.local/bin"
# GitHub repository installations
github_packages:
- name: fzf
description: "Command-line fuzzy finder"
check_command: "which fzf"
github_repo: "junegunn/fzf"
install_method: "clone_and_install"
install_path: "$HOME/.fzf"
post_install: "$HOME/.fzf/install --all"
- name: exa
description: "Modern replacement for ls"
check_command: "which exa"
github_repo: "ogham/exa"
install_method: "release_binary"
install_path: "$HOME/.local/bin"
binary_name: "exa"
asset_pattern: "linux-x86_64" # or "macos-x86_64" for macOS
- name: bat
description: "A cat clone with syntax highlighting"
check_command: "which bat"
github_repo: "sharkdp/bat"
install_method: "release_binary"
install_path: "$HOME/.local/bin"
binary_name: "bat"
asset_pattern: "x86_64-unknown-linux-gnu" # or "x86_64-apple-darwin" for macOS
- name: ripgrep
description: "Fast text search tool"
check_command: "which rg"
github_repo: "BurntSushi/ripgrep"
install_method: "release_binary"
install_path: "$HOME/.local/bin"
binary_name: "rg"
asset_pattern: "x86_64-unknown-linux-gnu"
- name: fd
description: "Fast alternative to find"
check_command: "which fd"
github_repo: "sharkdp/fd"
install_method: "release_binary"
install_path: "$HOME/.local/bin"
binary_name: "fd"
asset_pattern: "x86_64-unknown-linux-gnu"
- name: delta
description: "Syntax-highlighting pager for git"
check_command: "which delta"
github_repo: "dandavison/delta"
install_method: "release_binary"
install_path: "$HOME/.local/bin"
binary_name: "delta"
asset_pattern: "x86_64-unknown-linux-gnu"
# Python packages (pip)
python_packages:
- name: requests
description: "Python HTTP library"
check_command: "python3 -c 'import requests' 2>/dev/null"
install_command: "pip3 install requests"
# Node.js packages (npm)
npm_packages:
- name: pm2
description: "Process manager for Node.js"
check_command: "which pm2"
install_command: "npm install -g pm2"
# Oh My Zsh plugins (only for zsh users)
zsh_plugins:
- name: zsh-syntax-highlighting
description: "Syntax highlighting for zsh"
check_path: "$HOME/.oh-my-zsh/plugins/zsh-syntax-highlighting"
install_script: |
if [[ -d "$HOME/.oh-my-zsh" ]]; then
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
fi
- name: zsh-autosuggestions
description: "Auto suggestions for zsh"
check_path: "$HOME/.oh-my-zsh/plugins/zsh-autosuggestions"
install_script: |
if [[ -d "$HOME/.oh-my-zsh" ]]; then
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
fi
# Optional packages (won't fail installation if they can't be installed)
optional_packages:
- name: docker
description: "Container platform"
check_command: "which docker"
install_commands:
debian: "curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh"
ubuntu: "curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh"
fedora: "sudo dnf install -y docker"
centos: "sudo yum install -y docker"
rhel: "sudo yum install -y docker"
macos: "brew install --cask docker"
- name: docker-compose
description: "Multi-container Docker applications"
check_command: "which docker-compose"
install_commands:
debian: "sudo apt update && sudo apt install -y docker-compose"
ubuntu: "sudo apt update && sudo apt install -y docker-compose"
fedora: "sudo dnf install -y docker-compose"
centos: "sudo yum install -y docker-compose"
rhel: "sudo yum install -y docker-compose"
macos: "brew install docker-compose"