#+title: Brewfile #+PROPERTY: header-args:ruby :tangle Brewfile This file defines all the software that needs to be installed on the system. First off, of course, needs to be Emacs. This is done through a cask, which is what all graphical applications are installed as. Although the default Emacs cask doesn't work well with macos, so I've had to install emacs-plus instead, which needs a separate tap first. #+begin_src ruby tap "d12frosted/emacs-plus" cask "emacs-plus-app" #+end_src Then comes Glide, the browser that's configurable and extensible through TypeScript. It lets me configure things that Firefox generally doesn't, but it's still based on Firefox, so I don't have to use Chrome. #+begin_src ruby cask "glide-browser" #+end_src Third is the terminal that I use, Wezterm, which can be configured through Lua. #+begin_src ruby cask "wezterm" #+end_src Then I need some things for configuration and development purposes: - git :: Version control system that I use. - stow :: Mainly used with this repository, "installs" configuration files by making and maintaining symbolic links. - make :: The bundled version with macos is really old and doesn't support some of the features that I use. - tailscale-app :: Mesh VPN that lets me connect to my self-hosted services like music streaming. - hammerspoon :: Automation framework like AutoHotKey for Windows. But different. - fennel :: Fennel is a lisp -> lua compiler, it allows me to write lua config (like Wezterm and Hammerspoon) in lisp. - zplug :: A plug-in manager for ZSH. - atuin :: Shell history completion on steroids. - bettercmdtab :: Trying out this program that lets me have a better experience switching windows. #+begin_src ruby brew "git" brew "stow" cask "tailscale-app" cask "hammerspoon" brew "fennel" brew "zplug" brew "atuin" cask "bettercmdtab" #+end_src Install make because the bundled version is really old and doesn't support some of the features that I used. Surprisingly it /is/ GNU make, not BSD make that's installed. #+begin_src ruby brew "make" #+end_src This requires an alias in ZSH to make sure that the newly installed make is actually used. #+begin_src sh :tangle .config/zsh/conf.d/macos.sh alias make=gmake #+end_src And there are some development projects that I need to be able to install. - docker :: This runs all of my development projects. - docker-compose :: This is used to organize the different docker containers. - colima :: This is apparently needed to run the docker daemon if you don't want to run Docker Desktop. I can't run Docker Desktop because you have to pay quite a bit of money for that. - postgres@16 :: We use PostgreSQL here and I need the client to be able to connect to the containers in docker. - php :: It's what we use. #+begin_src ruby brew "docker" brew "docker-compose" brew "colima" brew "postgresql" brew "php" #+end_src For postgresql we also need to have a shell script to add the tools to the path. #+begin_src shell :tangle .config/zsh/conf.d/postgresql.sh :mkdirp t export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH" #+end_src Fonts too! - fantasque-sans-mono :: This is my main coding font. I've been attached to this font for years, I can't let it go. It has the nicest parentheses that I've found so far. - dosis :: This is a variable-width font that I'm trying out for any text that isn't code. I haven't found anything that I like as much as Fantasque Sans Mono for code yet. #+begin_src ruby cask "font-fantasque-sans-mono" cask "font-dosis" #+end_src I also created my own tap for SCSH: #+begin_src ruby tap "ryuslash/scsh", "https://git.sr.ht/~ryuslash/homebrew-scsh", trusted: true brew "scsh" #+end_src Flameshot, for easier screenshot taking. Aside from installing through Homebrew this needs some extra work to be enabled. If I try to start it it will be blocked, but after that I have to go into System Settings -> Privacy & Security, and then scroll down to the line that says that Flameshot was blocked, and then allow it. Then I can use it. #+begin_src ruby cask "flameshot" #+end_src Install the coreutils packages because the BSD alternatives that MacOS comes with are very disappointing. #+begin_src ruby brew "coreutils" #+end_src This requires some aliases to actually work, otherwise the bundled versions get referenced instead. #+begin_src sh :tangle .config/zsh/conf.d/macos.sh alias ls="gls --color=always" #+end_src