Dependencies#
Almost all of the dependencies in this project are managed via a file themselves. For macOS, we use a Homebrew Brewfile. In Linux, an Aptfile is used.
These files are located in the dotfiles
directory under macos
and linux
,
respectively.
Installation#
The dotfiles deps
command will install the right dependencies for
the current operating system. See the macOS and Linux
sections for the manual installation steps.
Linux#
📄 Aptfile
#!/usr/bin/env aptfile
update
##########################################################
########################## CORE ##########################
##########################################################
package "dialog"
package "apt-utils"
package "software-properties-common"
package "build-essential"
package "git"
package "curl"
package "wget"
package "gettext"
package "cmake"
package "unzip"
package "ninja-build"
##########################################################
####################### UTILITIES ########################
##########################################################
package "bat"
package "direnv"
package "fzf"
package "gh"
package "git-lfs"
package "grep"
package "htop"
package "jq"
package "make"
package "nano"
package "pipx"
package "ripgrep"
package "tree"
##########################################################
#################### PYTHON + PYENV ######################
##########################################################
package "libssl-dev"
package "zlib1g-dev"
package "libbz2-dev"
package "libreadline-dev"
package "libsqlite3-dev"
package "curl"
package "libncursesw5-dev"
package "xz-utils"
package "tk-dev"
package "libxml2-dev"
package "libxmlsec1-dev"
package "libffi-dev"
package "liblzma-dev"
Non-Debian Distributions
Not all Linux distributions use apt-get
as their package manager. If you
are using a dnf
/ yum
based distribution, the dependencies are enumerated
in different files.
📄 Yumfile
#!/usr/bin/env bash
set -e
if command -v dnf &>/dev/null; then
PACKAGE_MANAGER="dnf"
elif command -v yum &>/dev/null; then
PACKAGE_MANAGER="yum"
else
echo "dnf/yum not detected, exiting ❌"
exit 1
fi
##########################################################
########################## CORE ##########################
##########################################################
${PACKAGE_MANAGER} install --allowerasing -y \
dialog \
apt-utils \
git \
curl \
wget \
gettext \
cmake \
unzip \
ninja-build
##########################################################
####################### UTILITIES ########################
##########################################################
${PACKAGE_MANAGER} install -y \
bat \
direnv \
fzf \
gh \
git-lfs \
grep \
htop \
jq \
make \
nano \
pipx \
ripgrep \
tree \
neovim
##########################################################
#################### PYTHON + PYENV ######################
##########################################################
${PACKAGE_MANAGER} install -y \
gcc \
make \
patch \
zlib-devel \
bzip2 \
bzip2-devel \
readline-devel \
sqlite \
sqlite-devel \
openssl-devel \
tk-devel \
libffi-devel \
xz-devel
📄 AmazonLinuxfile
#!/usr/bin/env bash
set -e
if command -v dnf &>/dev/null; then
PACKAGE_MANAGER="dnf"
elif command -v yum &>/dev/null; then
PACKAGE_MANAGER="yum"
else
echo "dnf/yum not detected, exiting ❌"
exit 1
fi
##########################################################
########################## CORE ##########################
##########################################################
${PACKAGE_MANAGER} install --allowerasing -y \
git \
curl \
wget \
gettext \
cmake \
unzip \
ninja-build
##########################################################
####################### UTILITIES ########################
##########################################################
${PACKAGE_MANAGER} install -y \
gh \
git-lfs \
grep \
htop \
jq \
make \
nano \
tree
# direnv
# fzf
# pipx
# ripgrep
##########################################################
#################### PYTHON + PYENV ######################
##########################################################
${PACKAGE_MANAGER} install -y \
gcc \
make \
patch \
zlib-devel \
bzip2 \
bzip2-devel \
readline-devel \
sqlite \
sqlite-devel \
openssl-devel \
tk-devel \
libffi-devel \
xz-devel
macOS#
📄 Brewfile
##########################################################
######################### TAPS ###########################
##########################################################
##########################################################
####################### UTILITIES ########################
##########################################################
brew "asdf"
brew "bat"
brew "ca-certificates"
brew "checkov"
brew "coreutils"
brew "curl"
brew "direnv"
brew "ffmpeg"
brew "fzf"
brew "gh"
brew "git"
brew "git-lfs"
brew "glances"
brew "gnupg"
brew "go"
brew "go-task/tap/go-task"
brew "grep"
brew "hashicorp/tap/terraform"
brew "helm"
brew "htop"
brew "hugo"
brew "jc"
brew "jq"
brew "k9s"
brew "libomp"
brew "make"
brew "nano"
brew "neovim"
brew "node"
brew "nvm"
brew "openjdk"
brew "pipx"
brew "ripgrep"
brew "sops"
brew "starship"
brew "terraform-docs"
brew "terragrunt"
brew "thefuck"
brew "tree"
brew "wget"
brew "yq"
brew "zoxide"
##########################################################
######################### CASKS ##########################
##########################################################
cask "1password", greedy: true
cask "amazon-q", greedy: true
cask "caffeine", greedy: true
cask "cyberduck", greedy: true
cask "docker-desktop", greedy: true
cask "elgato-stream-deck", greedy: true
cask "ghostty", greedy: true
cask "github", greedy: true
cask "google-chrome", greedy: true
cask "hammerspoon", greedy: true
cask "iterm2", greedy: true
cask "jetbrains-toolbox", greedy: true
cask "lens", greedy: true
cask "logi-options+", greedy: true
cask "maccy", greedy: true
cask "ollama-app", greedy: true
cask "slack", greedy: true
cask "sourcetree", greedy: true
cask "spotify", greedy: true
cask "visual-studio-code", greedy: true
cask "vivaldi", greedy: true
cask "vlc", greedy: true
cask "zoom", greedy: true
##########################################################
######################### FONTS ##########################
##########################################################
cask "font-fontawesome", greedy: true
cask "font-meslo-lg-nerd-font", greedy: true
##########################################################
#################### PYTHON + PYENV ######################
##########################################################
brew "openssl"
brew "readline"
brew "sqlite3"
brew "tcl-tk"
brew "xz"
brew "zlib"
Cleanup#
After installing the dependencies, you can run the cleanup
command to remove
any non-specific dependencies. Add the --force
flag to actually remove the
packages.
x86 macOS#
This project uses x86 emulation via Rosetta 2
on Apple Silicon Macs. Any x86 specific dependencies will be installed via the XBrewfile
:
Python#
This project uses pipx to install Python CLI
tools globally. It also includes a pipx-utils
executable to help manage these
tools on a single PipFile
: