Skip to content

Instantly share code, notes, and snippets.

@chadmayfield
Last active October 22, 2024 00:32
Show Gist options
  • Save chadmayfield/ada07e4e506d7acd577a665541a70c9b to your computer and use it in GitHub Desktop.
Save chadmayfield/ada07e4e506d7acd577a665541a70c9b to your computer and use it in GitHub Desktop.
My current Brewfile used when setting up my mac and also for updating it.
# Brewfile: Homebrew bundle file for macOS or Linux app install (with notes/source repos)
#
# Author : Chad Mayfield ([email protected])
# License : GPLv3
#
# INFO: * Links and comments are added because I'm too old to remember where everything is :)
# * install.sh can be used, but it needs some love (some of it doesn't work correctly).
# * TODO items (and additional information) is listed at the bottom
#
# Installation steps;
# 1. Install Xcode CLI Tools: sudo xcode-select --install
# 2. Install Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 3. Install Brewfile: brew bundle install
# 4. Verify Brewfile Install: brew bundle check --verbose
#
# Optional steps;
# 1. Mirror system to Brewfile: brew bundle --force cleanup (will delete non-existant pkgs)
# 2. Check for current updates: brew cu -a -f --include-mas
# 3. Setup autoupdate every 12 hours: brew autoupdate start 43200
#
# Ruby Modules
# OS : https://rubydoc.brew.sh/OS.html (https://github.com/rdp/os)
#
# --- My Homebrew cheatsheet --------------------------------
#
# Brew Docs : https://docs.brew.sh/
# Brew Manpage : https://docs.brew.sh/Manpage
# Brewfile Docs : https://github.com/Homebrew/homebrew-bundle
# FAQs : https://docs.brew.sh/FAQ
# Terminology : https://docs.brew.sh/Formula-Cookbook#homebrew-terminology
# Linuxbrew : https://docs.brew.sh/Homebrew-on-Linux
#
# brew help <cmd> # print help for sub-command
# brew doctor # diagnose brew issues
# brew analytics <on|off> # turn analytics on or off
# brew shellenv # display env variable exports
# brew --config # display brew configurations
# brew --cache # display cache download location
# brew --caskroom # display caskroom location for GUI apps
# brew --cellar # display location of CLI apps
# brew update # update brew and cask
# brew upgrade # upgrade all formulae
# brew upgrade --greedy # upgrade all formulae and casks with auto_update: true
# brew autoupdate start # start homebrew autoupdate (required interval)
# brew autoupdate status # check status of autoupdate
# brew cu # upgrade mac apps using 'buo/cask-upgrade'
# brew list # list installed
# brew list --cask # list installed applications
# brew list --versions # list installed versions
# brew tap # list current tapped repos
# brew deps --tree <frmla> # show dependencies
# brew outdated # what is due for an upgrade
# brew leaves # display unused formula to uninstall
# brew cleanup # remove older formulae versions
# brew search <string> # search for formulae
# mas search <string> # use mas to search for App Store apps
# brew info <formula> # display info on formulae
# brew install <formula> # install formulae
# brew uninstall <formula> # uninstall formulae
# brew pin <formula> # pin at version (to prevent upgrades)
# brew cu pin <caskname> # pin cask at version (to prevent upgrades)
# brew bundle list # list deps in Brewfile
# brew bundle check -v # check if apps from brewfile are installed
# brew bundle cleanup # cleanup unused deps left
#
# -----------------------------------------------------------
require 'date'
require 'open-uri'
# brew version
hb = `brew -v`
# bash version
bv = `bash -c 'echo $BASH_VERSION'`
sh = `echo $SHELL`
# current date
now = DateTime.now
now.strftime("%B %d %Y")
# auto-update status
au = ENV.fetch("HOMEBREW_AUTO_UPDATE_COMMAND")
status = au ? "True" : "False"
# fail if Homebrew is not installed, (or if it's not in $PATH)
if !hb.include? "Homebrew"
abort("ERROR: Homebrew does not appear to be installed!")
end
# display some basic system env information
puts("--------------------------------")
puts("HOMEBREW_PRODUCT : " + ENV.fetch("HOMEBREW_PRODUCT"))
puts("HOMEBREW_SYSTEM : " + ENV.fetch("HOMEBREW_SYSTEM"))
puts("HOMEBREW_OS_VERSION : " + ENV.fetch("HOMEBREW_OS_VERSION"))
puts("HOMEBREW_VERSION : " + ENV.fetch("HOMEBREW_VERSION"))
puts("HOMEBREW_PROCESSOR : " + ENV.fetch("HOMEBREW_PROCESSOR"))
puts("AUTO_UPDATE_ENABLED : " + status + " (" + au + ")")
puts("BASH_VERSION : " + bv)
puts("CURRENT_USER_SHELL : " + sh)
puts("--------------------------------")
puts("\n")
# give us time to CTRL-C
sleep(5)
###############################################################################
# Add some third-party repos to use.
#
# 'brew tap user/repo'
#
# Docs: https://docs.brew.sh/Taps
# https://docs.brew.sh/Interesting-Taps-and-Forks
#
###############################################################################
# official taps
tap "homebrew/autoupdate" # [https://github.com/Homebrew/homebrew-autoupdate]
tap "homebrew/bundle" # [https://github.com/Homebrew/homebrew-bundle]
tap "homebrew/cask-fonts" # [https://github.com/Homebrew/homebrew-cask-fonts]
tap "homebrew/services" # [https://github.com/Homebrew/homebrew-services]
# unnecessary taps in v4: https://brew.sh/2023/02/16/homebrew-4.0.0/
if ENV.fetch("HOMEBREW_VERSION") < '4.0.0'
tap "homebrew/cask" # [https://github.com/Homebrew/homebrew-cask]
tap "homebrew/core" # [https://github.com/Homebrew/homebrew-core]
end
# third-party taps
tap "anchore/grype" # grype [https://github.com/anchore/grype]
tap "aquasecurity/trivy" # trivy [https://github.com/aquasecurity/trivy]
tap "boz/repo" # kail [https://github.com/boz/kail]
tap "buo/cask-upgrade" # 'brew cu' [https://github.com/buo/homebrew-cask-upgrade]
tap "charmbracelet/tap" # softserve/pop/vhs [https://github.com/charmbracelet/homebrew-tap]
tap "hacker1024/hacker1024" # coretemp [https://github.com/hacker1024/coretemp]
tap "itchyny/tap" # bed [https://github.com/itchyny/bed]
tap "knqyf263/pet" # pet [https://github.com/knqyf263/pet]
tap "localstack/tap" # localstack [https://github.com/localstack/homebrew-tap]
tap "natesales/repo" || true # q [https://github.com/natesales/q]
tap "neilotoole/sq" # sq [https://github.com/neilotoole/sq]
tap "tinygo-org/tools" # tinygo [https://tinygo.org/getting-started/install/macos/]
tap "wader/tap" # fq [https://github.com/wader/fq]
#tap "martido/homebrew-graph" # 'brew graph' [https://github.com/martido/homebrew-graph]
###############################################################################
# Install most used formulae.
#
# 'brew install <formula>'
#
# Docs: https://docs.brew.sh/
# https://docs.brew.sh/Bottles
# https://docs.brew.sh/Tips-N'-Tricks
#
# Formula browser: https://formulae.brew.sh/
#
###############################################################################
### homebrew, appstore & docker deps
brew "brew-cask-completion" # fish completion for brew-cask [https://github.com/xyb/homebrew-cask-completion]
#brew "cakebrew" # homebrew GUI [https://www.cakebrew.com/]
brew "mas" # mac app store cli [https://github.com/mas-cli/mas]
brew "whalebrew" if File.symlink?("/usr/local/bin/docker") # hombrew for docker [https://github.com/whalebrew/whalebrew]
### ansible
brew "ansible", link: :overwrite # config mgmt [https://www.ansible.com]
brew "ansible-lint", link: :overwrite # check best practices/behavior [https://ansible-lint.readthedocs.io/]
### backup utilities
brew "tarsnap" if OS.linux? # online backups for the paranoid [https://www.tarsnap.com/]
### cloud
brew "awscli", link: :overwrite # aws cli client [https://aws.amazon.com/cli/]
brew "azure-cli" # ms azure cli client [https://docs.microsoft.com/cli/azure/overview]
brew "doctl" # digitalocean cli client [https://github.com/digitalocean/doctl]
brew "faas-cli" # cli for openfaas [https://github.com/openfaas/faas-cli]
brew "localstack-cli" # local aws stack [https://github.com/localstack/localstack]
brew "s3cmd" # s3 bucjets [https://github.com/s3tools/s3cmd]
brew "vultr" # vultr cli client [https://jamesclonk.github.io/vultr]
### communications
brew "bandwhich" # bandwidth utilization tool [https://github.com/imsnif/bandwhich]
brew "curl" # cli data xfers [https://curl.se]
brew "curlie" # power of curl, ease of httpie [https://github.com/rs/curlie]
brew "doggo" # cli dns client in go [https://github.com/mr-karan/doggo]
brew "hey" # http load generator [https://github.com/rakyll/hey]
brew "httpie" # human-friendly http cli client [https://github.com/httpie/httpie] https://httpie.io/docs/cli
brew "httpstat" # curl statistics made simple [https://github.com/reorx/httpstat]
brew "iftop" # interface b/w stats [https://github.com/soarpenguin/iftop]
brew "ipinfo-cli" # cli ip info from ipinfo.io [https://github.com/ipinfo/cli]
brew "k6" # k6 loadtest util (https://github.com/grafana?q=k6) https://k6.io
brew "mailpit" # email/SMTP testing tool [https://github.com/axllent/mailpit]
brew "mosh" # the mobile shell [https://mosh.org/]
brew "mtr" # network diagnostics [https://github.com/traviscross/mtr]
brew "natesales/repo/q" # a tiny dns client [https://github.com/natesales/q]
brew "netcat" # network util [https://netcat.sourceforge.net/]
brew "plow" # high-performance http benchmarking [https://github.com/six-ddc/plow]
brew "pop" # send email from your terminal (https://github.com/charmbracelet/pop)
brew "speedtest-cli", link: true # speedtest.net cli bandwidth test [https://github.com/sivel/speedtest-cli]
brew "vnstat" # network traffic monitor [https://github.com/vergoh/vnstat]
brew "wget" # internet file retreiver [https://www.gnu.org/software/wget/]
brew "yt-dlp", link: :overwrite # download all the videos [https://github.com/yt-dlp/yt-dlp]
brew "zrok" # resource sharing platform, vis-à-vis ngrok [https://zrok.io/]
### development tools
# build
#brew "bazel" # google build tool [https://bazel.build/]
brew "drone-cli" # cli drone.io client [https://drone.io]
brew "make" # direct complication [https://www.gnu.org/software/make/]
brew "travis" # cli travis-ci client [https://github.com/travis-ci/travis.rb/]
# diff tools
brew "colordiff" # colored diff [https://www.colordiff.org/]
brew "diff-so-fancy" # good-lookin' diffs [https://github.com/so-fancy/diff-so-fancy]
brew "difftastic" # structural diff [https://github.com/Wilfred/difftastic]
brew "git-delta" # syntax-highlighting pager [https://github.com/dandavison/delta]
# docs
brew "glow" # render markdown in terminal [https://github.com/charmbracelet/glow]
if OS.mac?
brew "hugo" # static site generator [https://gohugo.io/]
brew "mkdocs", link: true # project docs in markdown [https://www.mkdocs.org/]
brew "asciidoctor" # textfile formatter [https://asciidoc.org/]
end
# editors
brew "bed" # binary editor (in Go) [https://github.com/itchyny/bed]
brew "hexyl" # simple cli hex viewer (in Rust) [https://github.com/sharkdp/hexyl]
# filter tools (json/yaml/sql/binary)
brew "fx" # terminal json viewer [https://github.com/antonmedv/fx]
brew "htmlq" # jq for html [https://github.com/mgdm/htmlq]
brew "lemmeknow" # identify any file [https://github.com/swanandx/lemmeknow]
brew "jo" # json ouput in terminal [https://github.com/jpmens/jo]
brew "jq" # cli json processor [https://jqlang.github.io/jq/]
brew "sq" # jq for sql [https://github.com/neilotoole/sq]
brew "yq" # yaml/csv/xml/json processor [https://github.com/mikefarah/yq]
brew "yamllint" # yaml linter [https://github.com/adrienverge/yamllint]
brew "wader/tap/fq" # "jq for binary formats" [https://github.com/wader/fq]
# git
brew "act" # run github actions locally [https://github.com/nektos/act]
brew "bfg" # repo cleaner [https://rtyley.github.io/bfg-repo-cleaner/]
brew "gh" if Dir.exist?("~/Documents/code") # github cli [https://github.com/cli/cli]
brew "git" # distributed revision control [https://git-scm.com]
brew "git-cal" # git contribs calendar for terminal [https://github.com/k4rthik/git-cal]
brew "git-extras" # git utilities [https://github.com/tj/git-extras]
brew "git-flow" # git-flow branching [https://github.com/nvie/gitflow]
brew "git-lfs" # git-lfs [https://git-lfs.github.com/]
brew "git-town" # git-town [https://github.com/git-town/git-town] (https://www.git-town.com/)
brew "lazygit" # tui for git [https://github.com/jesseduffield/lazygit]
# golang
brew "go" # https://go.dev/
brew "golangci-lint" # https://golangci-lint.run/
brew "staticcheck" # https://staticcheck.io/
brew "tinygo" # https://tinygo.org/
brew "upx" # https://upx.github.io/
# java
brew "groovy" # [https://www.groovy-lang.org/]
brew "gradle" # [https://www.gradle.org/]
brew "openjdk"
# python (should always be installed)
if OS.mac?
brew "micropython" # python for microcontrollers [https://www.micropython.org/]
brew "pyenv", link: false # simple python version mgmt [https://github.com/pyenv/pyenv]
brew "pipenv", link: false # create virtenvs for projects [https://docs.pipenv.org/]
brew "pyenv-virtualenv", link: false
brew "python", link: false
end
# rpm build tools
brew "create-dmg" # build fancy DMGs [https://github.com/create-dmg/create-dmg]
if !Hardware::CPU.arm?
brew "rpm", link: :overwrite # 4.19+ now only bottled for x86_64 (>4.18.1 ventura required)
brew "rpm2cpio", link: :overwrite
end
# rust
brew "rust" # [https://www.rust-lang.org/]
brew "rustup" # [https://rust-lang.github.io/rustup/]
### kubernetes tools
brew "stern" # multi-pod tail [https://github.com/stern/stern]
### linux utilities (https://bit.ly/2KLMXDp)
# archive utls
brew "cabextract" # extract files from ms cabinet files [https://www.cabextract.org.uk/]
brew "p7zip" # posix port of 7-zip [https://p7zip.sourceforge.net/]
brew "unar" # the unarchiver [https://theunarchiver.com/command-line]
brew "xz" # lossless compression, improved LZMA [https://tukaani.org/xz/]
# editors
brew "helix" # post-modern modal text editor [https://github.com/helix-editor/helix]
brew "micro" # modern terminal-based text editor [https://micro-editor.github.io/]
brew "neovim" if OS.mac? # extensible vim-fork [https://neovim.io/]
brew "rmate", link: :overwrite # HOWTO: https://github.com/textmate/rmate
brew "vim" if OS.linux?
# file/filesystem
brew "ast-grep" # structural search, lint, rewriting [https://github.com/ast-grep/ast-grep]
brew "bat" # cat with syntax highlighting [https://github.com/sharkdp/bat]
brew "cloc" # count lines of code [https://github.com/AlDanial/cloc/]
brew "diskonaut" # terminal visual disk space [https://github.com/imsnif/diskonaut]
brew "diskus" # fast alt to 'du -sh' [https://github.com/sharkdp/diskus]
brew "duf" # a better df [https://github.com/muesli/duf]
brew "dua-cli" # view disk space tui (in rust) [https://github.com/Byron/dua-cli]
#brew "exa" # modern ls [https://github.com/ogham/exa/issues/1243] UNMAINTAINED UPSTREAM!
brew "eza", link: :overwrite # modern ls (https://eza.rocks/) [https://github.com/eza-community/eza]
brew "fd" # find clone [https://github.com/sharkdp/fd]
brew "gdu" # view disk space tui (in go) [https://github.com/dundee/gdu]
brew "lsd" # next gen ls [https://github.com/lsd-rs/lsd]
brew "ripgrep" # blazing fast grep (https://github.com/BurntSushi/ripgrep)
brew "scc" # fast code counter [https://github.com/boyter/scc]
brew "tree"
brew "tre-command" # tree, improved [https://github.com/dduan/tre]
brew "walk" # terminal file manager [https://github.com/antonmedv/walk]
brew "yazi" # fast file manager [https://github.com/sxyazi/yazi]
brew "zoxide" # a smarter cd command [https://github.com/ajeetdsouza/zoxide]
# hardware
brew "lsusb"
brew "smartmontools"
# misc
brew "chezmoi" # securely sync dotfiles (https://www.chezmoi.io/) [https://github.com/twpayne/chezmoi]
brew "coreutils" # chown/chmod, du, cut, uniq, shred, etc.
brew "dos2unix"
brew "mackup" # sync mac/linux app settings [https://github.com/lra/mackup]
brew "moreutils" # sponge, pee, parallel, etc.
brew "podman"
brew "pv" # pipe viewer, monitor data through pipe [http://www.ivarch.com/programs/pv.shtml]
brew "tldr" # user-friendly man [https://tldr.sh/]
brew "viddy" # a modern watch replacement [https://github.com/sachaos/viddy]
brew "watch"
# multiplexers
brew "tmux" # https://github.com/tmux/tmux/wiki/Getting-Started (https://tmuxcheatsheet.com/)
#brew "zellij" # terminal workspaces [https://github.com/zellij-org/zellij]
# processes/resource mgmt
brew "btop" # resource monitor [https://github.com/aristocratos/btop]
#brew "bpytop" # resource monitor [https://github.com/aristocratos/bpytop]
#brew "hacker1024/hacker1024/coretemp" # recommended for bpytop
brew "htop"
brew "pstree"
# shells
if OS.mac? && bv.split('.').first >= '4'
# only upgrade bash if it's been previously installed (stock version is ancient)
brew "bash"
brew "bash-completion"
if !sh.include? "bash"
# warn to chsh since running shell is not bash
puts("ATTN: Run chsh to change default shell!")
end
end
brew "fish" # shell for the 90s [https://github.com/fish-shell/fish-shell]
# shell lint
brew "shellcheck" # static analysis tool [https://github.com/koalaman/shellcheck]
brew "shfmt" # shell parser [https://github.com/mvdan/sh]
# shell recorders/share/snippets
brew "asciinema" # record shell [https://asciinema.org/]
brew "knqyf263/pet/pet" # cli snippet manager [https://github.com/knqyf263/pet]
brew "ttyd" # ttyd over web (required by vhs) [https://github.com/tsl0922/ttyd]
brew "vhs" # cli home video recorder [https://github.com/charmbracelet/vhs/]
### multimedia tools
#brew "spotify-tui" # https://github.com/Rigellute/spotify-tui#connecting-to-spotifys-api
brew "ffmpeg" # record/edit video [https://ffmpeg.org/]
brew "jhead" # extract EXIF data [https://github.com/Matthias-Wandel/jhead]
brew "exiftool" # read/write EXIF data [https://exiftool.org]
brew "ghostscript" # required for imagemagick
brew "imagemagick"#, args: ["with-webp"]
### network services
if OS.linux?
brew "coredns", restart_service: true
brew "sdns", restart_service: true
end
### security tools
#brew "afl-fuzz" # DEPRECATED 9/17/22
brew "age" # simple, modern encryptionn tool [https://github.com/FiloSottile/age]
brew "aircrack-ng" # next-gen auth cracker [https://aircrack-ng.org/]
brew "certbot" if OS.linux? # formerly letsencrypt [https://certbot.eff.org/]
brew "ffuf" # fast web fuzzer (in Go) [https://github.com/ffuf/ffuf]
brew "fzf" # cli fuzzy finder (in Go) [https://github.com/junegunn/fzf]
brew "gnupg"
brew "grype" # container vuln scanner [https://github.com/anchore/grype]
brew "hydra" # net logon cracker [https://github.com/vanhauser-thc/thc-hydra]
brew "john" # password cracker [https://www.openwall.com/john/]
brew "nmap" # port scanner [https://nmap.org/]
brew "rustscan" # a modern port scanner [https://github.com/RustScan/RustScan]
brew "socat" # bidirectional byte streams [http://www.dest-unreach.org/socat/]
brew "sslscan" # sslscan test suite [https://github.com/rbsec/sslscan]
brew "trivy" # kubernetes vuln/misconfiguration scanner [https://github.com/aquasecurity/trivy]
### stats
brew "archey4" # system info [https://github.com/HorlogeSkynet/archey4]
brew "gtop" # system monitor [https://github.com/aksakalli/gtop]
brew "hyperfine" # cli benchmarking tool [https://github.com/sharkdp/hyperfine]
brew "node_exporter", restart_service: true
### virtualization tools
if OS.mac?
brew "colima" # container runtimes [https://github.com/abiosoft/colima
brew "docker" # required by colima [https://www.docker.com/]
brew "lima" # linux virtual machines [https://github.com/lima-vm/lima] (https://lima-vm.io/docs/templates/)
end
brew "packer" # image builds [https://www.packer.io/]
brew "terraform" # automate infrastructure [https://www.terraform.io/]
brew "xhyve" if OS.mac? && !Hardware::CPU.arm?
###############################################################################
# Add our casks (GUI applications) to the system.
#
# 'brew install --cask'
#
# Docs: https://formulae.brew.sh/formula/cask
# https://github.com/Homebrew/homebrew-cask
#
# Cask browser: https://formulae.brew.sh/cask/
# https://github.com/Homebrew/homebrew-cask/tree/master/Casks
#
# Pinning: https://apple.stackexchange.com/a/436413
#
###############################################################################
if OS.mac?
# specify a directory to install
cask_args appdir: "/Applications"#, require_sha: true
# BASE INSTALL
cask "aldente" # AlDente Pro
cask "balenaetcher"
cask "chatgpt" # https://chatgpt.com/
cask "coconutbattery"
cask "daisydisk"
cask "dbngin" # https://dbngin.com/
cask "expressions"
cask "firefox"#, greedy: true
cask "fork"
cask "garmin-express"
cask "google-chrome"
cask "goland"
cask "gpg-suite"
cask "handbrake"
cask "inkscape"
cask "intellij-idea"
cask "jetbrains-toolbox"
cask "kaleidoscope"
cask "little-snitch"
cask "malwarebytes" # subscription exp-2/25
cask "micro-snitch"
cask "microsoft-auto-update"
cask "microsoft-excel"
cask "microsoft-powerpoint"
cask "microsoft-remote-desktop"
cask "microsoft-word"
cask "mitmproxy", link: :overwrite
cask "obsidian"
cask "podman-desktop"
cask "postman"
cask "proton-drive"
cask "proton-mail"
cask "proton-pass"
cask "protonvpn"
cask "sqlpro-studio"
cask "textmate"
cask "the-unarchiver"
cask "transmit"
cask "versions"
if !Hardware::CPU.arm? # intel only as of 2/1/23
cask "virtualbox"
cask "virtualbox-extension-pack"
end
cask "visual-studio-code"
cask "vlc"
cask "warp"
cask "yaak" # https://yaak.app/ - API client
cask "zoom"
# MY SPECIFIC VERSION CASK INSTALLS
# Supposedly pinning isn't recommended since it causes issue with auto-update
# (https://github.com/Homebrew/homebrew-cask/issues/49127). So these tasks will
# install a "locked" version via the older ruby formulae. If the date check
# evalutes to less than now, the Brewfile will abort with a message of which cask
# to update with it's "last" formula file. This way I can lock the casks to
# the versions for which I have licenses
puts("===================================================================================")
puts("Older casks must be downloaded and installed manually.")
# https://binarynights.com/
forklift_date = Date.new(2025,4,7)
if forklift_date < now
abort("ERROR! Expiration is closing in, replace the URL with the latest forklift.rb.")
download = URI.open('https://raw.githubusercontent.com/Homebrew/homebrew-cask/bcffca4b0a070995bd4b746f202ab341d05c45ad/Casks/f/forklift.rb')
IO.copy_stream(download, './forklift.rb')
puts(" - Downloaded formula: forklift.rb")
else
cask "forklift"
end
# https://kaleidoscope.app/support
kaleidoscope_date = Date.new(2023,5,30)
if kaleidoscope_date < now
# install [email protected],2176" since v4 moved to a subscription model
download = URI.open('https://raw.githubusercontent.com/Homebrew/homebrew-cask/37fbc0aa85273355e74fc52eb16606403c821aa9/Casks/kaleidoscope.rb')
IO.copy_stream(download, './kaleidoscope.rb')
puts(" - Downloaded formula: kaleidoscope.rb")
else
cask "kaleidoscope"
end
# https://tableplus.com/blog/2017/02/changelogs.html
tableplus_date = Date.new(2024,2,15)
if tableplus_date < now
# TODO: update tableplus version on 2/15/24 to latest (5.9.0,538 on 2/24/24)
download = URI.open('https://raw.githubusercontent.com/Homebrew/homebrew-cask/13e91bd80e07f3d16a0a26f83af8b90d823e37aa/Casks/t/tableplus.rb')
IO.copy_stream(download, './tableplus.rb')
puts(" - Downloaded formula: tableplus.rb")
else
cask "tableplus"
end
puts("These casks can now be manually installed using: brew install --HEAD <cask-name>.rb")
puts("===================================================================================")
puts("\n")
# MAIN FONTS (https://fonts.google.com/)
cask "font-anonymous-pro" # https://www.marksimonson.com/fonts/view/anonymous-pro
cask "font-bebas-neue" # https://fonts.adobe.com/fonts/bebas-neue
cask "font-courier-prime" # https://quoteunquoteapps.com/courierprime/
cask "font-fira-code" # https://github.com/tonsky/FiraCode
cask "font-ia-writer-duo" # https://github.com/iaolo/iA-Fonts/
#cask "font-ia-writer-duospace" # https://ia.net/topics/in-search-of-the-perfect-writing-font
cask "font-ia-writer-mono" # https://github.com/iaolo/iA-Fonts/
cask "font-ia-writer-quattro" # https://ia.net/topics/a-typographic-christmas
cask "font-inconsolata" # https://levien.com/type/myfonts/inconsolata.html
cask "font-input" # https://input.djr.com/
cask "font-intel-one-mono" # https://github.com/intel/intel-one-mono/
cask "font-jetbrains-mono" # https://www.jetbrains.com/lp/mono/
cask "font-iosevka" # https://typeof.net/Iosevka/customizer
cask "font-liberation" # https://github.com/liberationfonts/liberation-fonts
cask "font-red-hat-mono" # https://github.com/RedHatOfficial/RedHatFont
cask "font-ubuntu-mono" # https://design.ubuntu.com/font
cask "font-victor-mono" # https://github.com/rubjo/victor-mono
# NERD FONTS (https://www.nerdfonts.com/)
cask "font-dejavu-sans-mono-nerd-font"
cask "font-inconsolata-go-nerd-font"
cask "font-jetbrains-mono-nerd-font"
# OPTIONAL (install as needed)
#cask "1password"
#cask "1password-cli"
#cask "appcleaner"
#cask "burn"
#cask "burp-suite"
#cask "caffeine"
#cask "datagrip"
#cask "displays"
#cask "expandrive"
#cask "fleet"
#cask "github"
#cask "ghidra"
#cask "gimp"
#cask "imazing"
#cask "insomnia"
#cask "intellij-idea-ce"
#cask "jetbrains-gateway"
#cask "jetbrains-space"
#cask "keybase"
#cask "ksdiff"
#cask "lens"
#cask "logseq"
#cask "makemkv"
#cask "mattermost"
#cask "microsoft-office" if !Dir.exist?("/Applications/Microsoft Word.app")
#cask "microsoft-teams"
#cask "ngrok"
#cask "obs"
#cask "protonmail-import-export"
#cask "pycharm-ce"
#cask "raspberry-pi-imager"
#cask "rustrover"
#cask "scribus"
#cask "signal"
#cask "slack"
#cask "smartgit"
#cask "spotify"
#cask "steam"
#cask "strongsync"
#cask "terminus"
#cask "thonny" # python ide for beginners [https://thonny.org/]
#cask "tower"
#cask "transmission"
#cask "typora"
#cask "vagrant"
#cask "vagrant-manager"
#cask "virtualbuddy" if !Hardware::CPU.arm?
#cask "viscosity"
#cask "vmware-fusion"
#cask "vnc-viewer"
#cask "wireshark"
#cask "writerside"
#cask "zed"
end
###############################################################################
# Install apps not available as casks from Mac App Store using mas-cli
#
# 'mas install'
#
# Docs: https://github.com/mas-cli/mas
#
# https://github.com/mas-cli/mas#-usage
# list : mas list
# search : mas search Xcode
# install : mas install <id>
# purchase : mas purchase <id>
# upgrade : mas upgrade
#
# https://github.com/mas-cli/mas#-sign-in
# sign-in : mas signin --dialog [email protected]
#
###############################################################################
if OS.mac? && File.exist?("/opt/homebrew/bin/mas")
mas "booktracker", id: 1496543317
#mas "dayone", id: 1055511498
mas "iawriter", id: 775737590
mas "imovie", id: 408981434
mas "keynote", id: 409183694
mas "numbers", id: 409203825
mas "pages", id: 409201541
#mas "patterns", id: 429449079
#mas "testflight", id: 899247664
#mas "wattsconnected", id: 1639692859
end
###############################################################################
# Create aliases for Docker images and run them as native commands
#
# 'whalebrew install'
#
# Docs: https://github.com/whalebrew/whalebrew
#
###############################################################################
whalebrew "whalebrew/wget" if File.exist?("/opt/homebrew/bin/whalebrew")
#################### TODO ####################
# * Fix flog tap and install it's not installing. Currently it fails with the following message;
# - Error: flog: wrong number of arguments (given 1, expected 0)
# - tap "mingrammer/flog"
# - brew "flog" # fake log generator [https://github.com/mingrammer/flog]
# *
# *
# *
##############################################
#!/usr/bin/env bash
#
# Author : Chad Mayfield ([email protected])
# License : GPLv3
#
# setup macOS using Homebrew
#
# install rosetta on apple silicon
if [[ "$(sysctl -n machdep.cpu.brand_string)" == *'Apple'* ]]; then
if [ ! -d "/usr/libexec/rosetta" ]; then
echo "Installing Rosetta..."
sudo softwareupdate --install-rosetta --agree-to-license
fi
# show our install history, we should have rosetta
sudo softwareupdate --history
fi
# install xcode cli tools
command -v "xcode-select -p" >/dev/null 2>&1; has_xcode=1 || { has_xcode=0; }
if [ "$has_xcode" -eq 0 ]; then
echo "Installing XCode CLI Tools..."
sudo xcode-select --install
else
# show path
xcode-select -p
# show version
xcode-select --version
# show compiler version
#gcc -v
#llvm-gcc -v
#clang -v
fi
# install homebrew
command -v brew >/dev/null 2>&1; has_brew=1 || { has_brew=0; }
if [ "$has_brew" -eq 0 ]; then
echo "Installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# add 'brew --prefix' location to $PATH
# https://applehelpwriter.com/2018/03/21/how-homebrew-invites-users-to-get-pwned/
# https://www.n00py.io/2016/10/privilege-escalation-on-os-x-without-exploits/
if [[ "$(sysctl -n machdep.cpu.brand_string)" == *'Apple'* ]]; then
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/${USER}/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/${USER}/.bash_profile
eval "$(/opt/homebrew/bin/brew shellenv)"
#echo 'export PATH=/opt/homebrew/bin:$PATH' >> /Users/${USER}/.bash_profile
#echo 'export PATH=/opt/homebrew/sbin:$PATH' >> /Users/${USER}/.bash_profile
else
echo 'export PATH="/usr/local/sbin:$PATH"' >> /Users/${USER}/.bash_profile
fi
source /Users/${USER}/.bash_profile
# turn off brew analytics
brew analytics off
if
# update brew
brew update
# run brewfile to install packages
brew bundle install
# check for issues
brew doctor
# set brew to update every 12 hours (in seconds)
brew autoupdate start 43200
# show brew auto update status for feedback
brew autoupdate status
# display outdated apps and auto-update status
brew cu --include-mas
#EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment