# ==============================================================================
# Homebrew-provided taps
# ==============================================================================
tap "homebrew/command-not-found"

# ==============================================================================
# Third-party/custom taps
# ==============================================================================
tap "ian-h-chamberlain/dotfiles"
tap "shihanng/gig"
tap "srkomodo/tap"
tap "superatomic/bundle-extensions", "git@github.com:ian-h-chamberlain/homebrew-bundle-extensions"

# ==============================================================================
# Device-specific brewfiles
# ==============================================================================

# It would be nicer to use __dir__ here, but seems that this file is sometimes
# `eval`ed which leaves __dir__ as an empty string. So we just hardcode the path.
Dir.glob(File.join(Dir.home, ".config", "brew", "*.Brewfile")) do |brewfile|
  STDERR.puts "Loading #{brewfile}..."
  instance_eval File.read(brewfile)
end

# ==============================================================================
# Formulae
# ==============================================================================
# TODO: some of these probably should be macOS only

# Simple, fast and user-friendly alternative to find
brew "fd"
# User-friendly command-line shell for UNIX-like operating systems
brew "fish"
# GitHub command-line tool
brew "gh"
# Distributed revision control system
brew "git"
# Enable transparent encryption/decryption of files in a git repo
brew "git-crypt"
# GNU Pretty Good Privacy (PGP) package
brew "gnupg"
# Lightweight and flexible command-line JSON processor
brew "jq"
# Curses-based tool for viewing and analyzing log files
brew "lnav"
# Ambitious Vim-fork focused on extensibility and agility
brew "neovim"
# Programmatically correct mistyped console commands
brew "thefuck"
# Display directories as trees (with optional color/HTML output)
brew "tree"
# Check your $HOME for unwanted files and directories
brew "xdg-ninja"
# Yet Another Dotfiles Manager
brew "yadm"
# Static analysis and lint tool, for (ba)sh scripts
brew "shellcheck"
# Python version management
brew "pyenv"
# Pyenv plugin to manage virtualenv
brew "pyenv-virtualenv"
# Clone of cat(1) with syntax highlighting and Git integration
brew "bat"
# Improved top (interactive process viewer)
brew "htop"
# Container runtimes on MacOS (and Linux) with minimal setup
brew "colima"
# Git extension for versioning large files
brew "git-lfs"
# Pack, ship and run any application as a lightweight container
brew "docker"
# Platform keystore credential helper for Docker
brew "docker-credential-helper"
# Framework for managing multi-language pre-commit hooks
brew "pre-commit"
# Search tool like grep and The Silver Searcher
brew "ripgrep"
# An automatic updater for ShadowFox
brew "srkomodo/tap/shadowfox-updater"
# Run your GitHub Actions locally
brew "act"
# More intuitive version of du in rust
brew "dust"
# Select default apps for documents and URL schemes on macOS
brew "duti"
# OpenBSD freely-licensed SSH connectivity tools
brew "openssh"
# Ruby version manager
brew "rbenv"
# Rust toolchain installer
brew "rustup-init"
# Intuitive find & replace CLI
brew "sd"
# Terminal multiplexer
brew "tmux"
# Executes a program periodically, showing output fullscreen
brew "watch"
# Internet file retriever
brew "wget"
# gitignore file generator
brew "shihanng/gig/gig"
# Formatting tools for C, C++, Obj-C, Java, JavaScript, TypeScript
brew "clang-format"
# Static checker for GitHub Actions workflow files
brew "actionlint"
# General-purpose data compression with high compression ratio
brew "xz"
# New file format for still image compression
brew "jpeg-xl"
# Codec library for encoding and decoding AV1 video streams
brew "aom"
# Interpreted, interactive, object-oriented programming language
brew "python@3.12"
# Python code formatter
brew "black"
# Generic machine emulator and virtualizer
brew "qemu"
# Library for JPEG-2000 image manipulation
brew "openjpeg"
# Package for scientific computing with Python
brew "numpy"
# Open Visual Inference And Optimization toolkit for AI inference
brew "openvino"
# OCR (Optical Character Recognition) engine
brew "tesseract"
# Play, record, convert, and stream audio and video
brew "ffmpeg"
# Library to render SVG files using Cairo
brew "librsvg"
# Next-gen compiler infrastructure
brew "llvm"
# Port scanning utility for large networks
brew "nmap"
# Development kit for the Java programming language
brew "openjdk"
# Display and control your Android device
brew "scrcpy"
# User interface to the TELNET protocol
brew "telnet"
# Tool for creating isolated virtual python environments
brew "virtualenv"
# Sends magic packets to wake up network-devices
brew "wakeonlan"
# Ambitious Vim-fork focused on extensibility and agility
brew "ian-h-chamberlain/dotfiles/neovim@0.9.5"
