# Homelab Git Ignore Configuration
# =================================
# This file tells git which files to ignore (not track in version control)

# Environment Files (contain sensitive information)
# ------------------------------------------------
.env                    # Your actual environment configuration
*.env.local            # Local environment overrides
*.env.production       # Production environment files
*.env.*.local          # Any local environment variations

# Secrets and Credentials
# ----------------------
secrets/               # Directory for any secret files
*.key                  # Private keys
*.pem                  # SSL certificates and keys
*.crt                  # Certificate files (unless you explicitly need them tracked)
*.pfx                  # Certificate files
*.p12                  # Certificate files
credentials.json       # Credential files
auth.json             # Authentication files
*.token               # Token files
*.secret              # Secret files

# Proxmox & Virtual Machine Data
# -----------------------------
*.iso                  # ISO files (too large for git)
*.qcow2               # QEMU disk images
*.vmdk                # VMware disk images
*.vdi                 # VirtualBox disk images
*.img                 # Raw disk images
*.ova                 # Virtual appliance packages
*.ovf                 # Open virtualization format

# Backup and Export Files
# ----------------------
*.tar.gz              # Compressed archives
!archive-homelab/*.tar.gz  # EXCEPT archives in archive-homelab directory
*.tgz                 # Compressed archives
*.zip                 # Zip archives
*.bak                 # Backup files
*.backup              # Backup files
backups/              # Backup directory
exports/              # Export directory (if not needed in git)
homelab-export-*/     # Your homelab export directories
!disaster-recovery/homelab-export-*/  # EXCEPT exports in disaster-recovery directory
*.log                 # Log files (unless you specifically want to track them)
!disaster-recovery/**/*.log  # EXCEPT log files in disaster-recovery exports

# Temporary Files
# --------------
*.tmp                 # Temporary files
*.temp                # Temporary files
*.cache               # Cache files
*.swp                 # Vim swap files
*.swo                 # Vim swap files
*~                    # Backup files created by editors
.DS_Store             # macOS metadata files
Thumbs.db             # Windows thumbnail cache

# IDE and Editor Files
# -------------------
.vscode/              # VS Code settings (unless you want to share them)
.idea/                # JetBrains IDE settings
*.sublime-*           # Sublime Text settings
.project              # Eclipse project files
.classpath            # Eclipse classpath

# Terraform State (if you use Terraform)
# -------------------------------------
*.tfstate             # Terraform state files (contain sensitive data)
*.tfstate.*           # Terraform state backups
.terraform/           # Terraform plugin directory
.terraform.lock.hcl   # Terraform lock file (some prefer to track this)

# Ansible Vault (if you use Ansible)
# ---------------------------------
# Note: You might want to track encrypted vault files
# but ignore the decrypted versions
*.vault.yml.dec       # Decrypted vault files
vault-password.txt    # Vault password file

# Python (if you have Python scripts)
# ----------------------------------
__pycache__/          # Python cache
*.py[cod]             # Python compiled files
*$py.class            # Python class files
venv/                 # Python virtual environment
env/                  # Python virtual environment
.Python               # Python runtime

# Node.js (if you have Node.js projects)
# -------------------------------------
node_modules/         # Node.js dependencies
npm-debug.log*        # npm debug logs
yarn-debug.log*       # Yarn debug logs
yarn-error.log*       # Yarn error logs

# Claude Code Configuration Files
# -------------------------------
.claude.json              # Claude MCP server configuration (contains API keys)
*.claude.json            # Any Claude config files
.claude/                 # Claude configuration directory

# Script Variants (with embedded credentials)
# -------------------------------------------
# Sanitized scripts are tracked in git, but variants with
# real credentials embedded should be kept local only
scripts/**/*_with_creds.*       # Any script with embedded credentials
scripts/**/*.local.*            # Local script variants
scripts/**/*_prod.*             # Production script variants
scripts/**/fix_*_original.sh    # Original unsanitized fix scripts

# Docker Compose Service Exclusions
# ---------------------------------
# Ignore runtime data and sensitive files in services directory
services/**/.env                # Service environment files with secrets
services/**/.env.local          # Local environment overrides
services/**/volumes/            # Docker volume mount directories
services/**/data/               # Data directories
services/**/*.log               # Service log files
services/**/logs/               # Log directories
services/**/node_modules/       # Node.js dependencies in services
services/**/*.db                # Database files
services/**/*.sqlite            # SQLite database files
services/**/*.sqlite3           # SQLite3 database files

# Homepage Configuration (Sensitive)
# ----------------------------------
# Exclude the actual configuration file (contains API keys/passwords)
# Template file (.template) is tracked for reference
services/homepage/services.yaml

# Operational Scripts (Sensitive)
# -------------------------------
# Exclude scripts with embedded credentials
# Template files (.template) are tracked for reference
scripts/fixers/fix_n8n_db_c_locale.sh

# Monitoring Stack Sensitive Files
# --------------------------------
# Exclude files containing Proxmox credentials and local paths
**/pve.yml                         # Proxmox credentials for exporters (NOT templates)

# Custom Exclusions
# ----------------
# Add any custom patterns specific to your homelab below:
.env
*.nullbyte-backup          # Nullbyte corruption recovery backups
*.control-chars-backup     # Control character fix backups
