summaryrefslogtreecommitdiff
path: root/Brewfile
blob: 800741f06ad310e25fd9a89b27e709ce6fad9bef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# The account's tools: what this repo's own config and scripts use, so that a
# machine with only this repo has what the shell, editor and terminals expect,
# plus the handful of Mac apps this account wants on any machine it uses.
# What is not here: per-machine apps and toolchains -- install those by hand --
# and server software, which comes from whatever provisions that machine.
# install.sh applies this with `brew bundle`, which only adds.

# Something breaks without these.
brew "bash"                # macOS ships 3.2. szecret's fallback that fetches
                           # age -- the path taken before this file is applied
                           # -- dies there on `${os,,}`, and config/bashrc
                           # looks for the bash-completion 2.x that needs 4.2
brew "tmux"                # both terminals start every window in tmux
brew "neovim"              # the editor; vi, vim and git all call nvim
brew "age"                 # szecret
brew "git"
brew "git-lfs"             # config/git/config sets up the lfs filter
brew "fzf"                 # zshrc loads its key bindings from Homebrew

# Used when present.
brew "bat"                 # man pages, fzf previews
brew "lsd"                 # ls
brew "ripgrep"             # nvim's grep
brew "the_silver_searcher"
brew "gh"                  # config/profile hands it the GitHub token
brew "mosh"                # alacritty-mosh, mosh-tmux.sh
brew "terminal-notifier"   # bin/notify
brew "fswatch"             # bin/sz-wait-for
brew "n"                   # node versions, under $N_PREFIX
brew "bash-completion"
brew "shellcheck"
brew "tree-sitter-cli"     # nvim-treesitter generates and compiles parsers with it

# Wanted on any machine this account uses, though nothing here reads them.
brew "glow"                # markdown rendered in the terminal

cask "alacritty"
cask "hammerspoon"
cask "neovide-app"
# Wanted on any Mac this account uses, though nothing here depends on it.
cask "keepingyouawake"     # menu-bar toggle that stops the Mac sleeping
cask "jordanbaird-ice"     # Ice: hides and arranges the menu bar itself

# Neither of these is in homebrew-cask, so they come from their authors' own
# taps, with what that means: nobody reviewed the cask, and the tap can change
# what it installs between two runs of install.sh, which applies this file
# again every time. brew will not load a cask from an unofficial tap until it
# is trusted, once per machine, which cannot be expressed here -- install.sh
# does it, so the decision sits in a tracked file rather than in a README
# someone pastes from.
tap "satrik/togglemute"
tap "b451c/quickmd"
cask "satrik/togglemute/togglemute"  # menu-bar mic mute, and it follows the
                                     # hardware mute button on a headset.
                                     # Ad-hoc signed, no Developer ID, and
                                     # spctl calls the bundle modified, so it
                                     # only opens once install.sh clears its
                                     # quarantine flag -- see the note there
cask "b451c/quickmd/quickmd"         # qmd.app: native markdown viewer, live
                                     # preview, AppKit rather than Electron

# Only where no Ghostty is installed yet: a machine running the ghostty@tip
# build would collide with a second cask over /Applications/Ghostty.app.
cask "ghostty" unless File.exist?("/Applications/Ghostty.app")

# Every Nerd Font Homebrew has, asked at run time rather than listed, so new
# families arrive without editing this file. brew bundle evaluates it with no
# brew on PATH, hence the full path it passes in HOMEBREW_BREW_FILE.
brew_bin = ENV.fetch("HOMEBREW_BREW_FILE") { "#{ENV.fetch("HOMEBREW_PREFIX", "/opt/homebrew")}/bin/brew" }
`"#{brew_bin}" search --cask nerd-font`.split.grep(/\Afont-.*-nerd-font\z/).each { |font| cask font }