My list of *nix packages to be installed on MacOS via Homebrew, for the ultimate dev setup
To get started, install Homebrew, then just download the Brewfile
to ~/.Brewfile
, make any desired changes, and run brew bundle --global
to install the listed packages. Done 🍻
Note - Tracking Changes
If you wish to make any ammendments, it's recommended to fork the repo, in order to easily keep track of your personal package list. If you're running a fork of this project, be sure to replace [lissy93] with your own username!
Alternatively, there's a guided install process, which can be initiated with:
bash <(curl -s https://lissy93.github.io/Brewfile/install.sh)
Homebrew is an unofficial package manager for MacOS, that makes installing, updating and managing user applications easier.
It only ever installs packages within it's prefix, but then symlinks them to the appropriate place on disk. And since it's just Git and Ruby underneath, it's easy to modify to your liking, and roll back changes if necissary.
Homebrew is used via the terminal, with the brew
command, but there is an unofficial GUI, Cakebrew. For more infomation, take a look at the Documentation.
The Brewfile defines a list of packages, that you'd like to install on your system.
It includes several keywords, like brew
, cask
, tap
, mas
, etc - this is explained in detail in the terminology section of the docs. But in short: Lines which start with brew are packages that are installed via their pre-compiled binaries. Where as casks are applications that require an installer (typically GUI apps). Taps just add additional repositories, and are used when an app's formula isn't published to the main Homebrew repo. And mas is a plugin that enables you to install apps from the Apple App Store from within your Brewfile.
The following packages will be installed, with the aim to setup a fully-featured development machine.
Click to expand full package list ↕️
Note: Be sure to remove anything that you do not need before installing.
CLI Essentials
CLI Basics
aria2
- Resuming download util (better wget)bat
- Output highlighting (better cat)ctags
- Indexing of file info + headersdiff-so-fancy
- Readable file compares (better diff)entr
- Run command whenever file changesduf
- Get info on mounted disks (better df)exa
- Listing files with info (better ls)exiftool
- Reading and writing exif metadatafdupes
- Duplicate file finderfzf
- Fuzzy file finder and filteringhyperfine
- Benchmarking for arbitrary commandsjq
- JSON parsermost
- Multi-window scroll pager (better less)procs
- Advanced process viewer (better ps)ripgrep
- Searching within files (better grep)rsync
- Fast, incremental file transferscc
- Count lines of code (better cloc)sd
- RegEx find and replace (better sed)thefuck
- Auto-correct miss-typed commandstldr
- Community-maintained docs (better man)tree
- Directory listings as treetrash-cli
- Record + restore removed fileswatch
- Run commands perioricallyxsel
- Copy paste access to X clipboardzoxide
- Easy navigation (better cd)
CLI Monitoring and Performance Apps
bandwhich
- Bandwidth utilization monitorctop
- Container metrics and monitoringbpytop
- Resource monitoring (like htop)glances
- Resource monitor + web and APIgping
- Interactive ping tool, with graphncdu
- Disk usage analyzer and monitor (better du)speedtest-cli
- Command line speed test utility
CLI Productivity Apps
CLI Dev Suits
httpie
- HTTP / API testing testing clientlazydocker
- Full Docker management applazygit
- Full Git managemtne app
CLI External Sercvices
CLI Fun
Development Apps
- Android Studio - IDE for Android development
- Boop - Test transformation tool (MacOS Only)
- iterm2 - Better terminal emulator (MacOS Only)
- Postman - HTTP API testing app
- Sourcetree - Git visual client (MacOS Only)
- Virtual Box - VM management console
- VS Code - Code editor
Development Langs, Compilers, Package Managers and SDKs
docker
- Containersgcc
- GNU C++ compilersgo
- Compiler for Go Langgradle
- Build tool for Javalua
- Lua interpreterluarocks
- Package manager for Luanode
- Node.jsnvm
- Switching node versionsopenjdk
- Java development kitpython
- Python interpriterrust
- Rust languageandroid-sdk
- Android software dev kit
Development Utils
gh
- Interact with GitHub PRs, issues, reposscrcpy
- Display and control Andrdroid devicesterminal-notifier
- Trigger Mac notifications from terminal (MacOS Only)tig
- Text-mode interface for gitttygif
- Generate GIF from terminal commands + output
Network and Security Testing
bettercap
- Network, scanning and monirotingnmap
- Port scanningwrk
- HTTP benchmarkingburp-suite
- Web security testingmetasploit
- Pen testing frameworkowasp-zap
- Web app security scannerwireshark
- Network analyzer + packet capture
Security Utilities
bcrypt
- Encryption utility, using blowfishclamav
- Open source virus scanning suitegit-crypt
- Transparent encryption for git reposlynis
- Scan system for common security issuesopenssl
- Cryptography and SSL/TLS Toolkitrkhunter
- Search / detect potential root kitsveracrypt
- File and volume encryption
Creativity
- Audacity - Multi-track audio editor and recording
- Blender - 3D modelling, rendering and sculpting
- Cura - 3D Printing software, for slicing models
- DarkTable - Organize and bulk edit photos (similar to Lightroom)
- Dia - Versatile diagramming tool, useful for UML
- Gimp - Image and photo editing application
- HandBrake - For converting video from any format to a selection of modern codecs
- InkScape - Digital drawing/ illustration
- OBS Studio - Streaming and screencasting
- Shotcut - Video editor
- Synfig Studio - 2D animation
Media
- Calibre - E-Book reader
- Spotify - Propietary music streaming
- Transmission - Torrent client
- VLC - Media player
- Pandoc - Universal file converter
- Youtube-dl - YouTube video downloader
Personal Applications
- 1Password - Password manager (proprietary)
- Tresorit - Encrypted file backup (proprietary)
- Standard Notes - Encrypted synced notes
- Signal - Link to encrypted mobile messenger
- Ledger Live - Crypto hardware wallet manager
- ProtonMail-Bridge - Decrypt ProtonMail emails
- ProtonVPN - Client app for ProtonVPN
MacOS Mods and Imrovments
alt-tab
- Much better alt-tab window switcheranybar
- Custom programatic menubar iconscopyq
- Clipboard manager (cross platform)espanso
- Live text expander (cross-platform)finicky
- Website-specific default browserhiddenbar
- Hide / show annoying menubar iconsiproute2mac
- MacOS port of netstat and ifconfiglporg
- Backup and restore launchpad layoutm-cli
- All in one MacOS management CLI appmjolnir
- Util for loading Lua automationsopeninterminal
- Finder button, opens directory in terminalpopclip
- Popup options for text on highlightraycast
- Spotlight alternativeshottr
- Better screenshot utilityskhd
- Hotkey daemon for macOSstats
- System resource usage in menubaryabai
- Tiling window manager
The Brewfile is really useful to incorporate into your dotfiles, or for quickly setting up new machines. You can see how I am using this in Lissy93/Dotfiles. Other package managers have similar features. For example, here's the scripts I use to manage my package list for Arch, Debian, Alpine and MacOS.
Contributions are welcome :) If you're new to GitHub, see the documentation for a step-by-step guide on how to submit edits to projects.
Changes to the Brewfile should be made up-stream, directly into Lissy93/Dotfiles (in Brewfile
), which will then be automatically synced to this repo.
Note For licenses for each package listed here, see their websites (linked to above).
Lissy93/Brewfile is licensed under MIT © Alicia Sykes 2022.
For information, see TLDR Legal > MIT
Expand License
The MIT License (MIT)
Copyright (c) Alicia Sykes <alicia@omg.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sub-license, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included install
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
© Alicia Sykes 2022
Licensed under MIT
Thanks for visiting :)