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 ###########################
##########################################################
tap "homebrew/bundle"
tap "homebrew/services"
tap "hashicorp/tap"
tap "juftin/terraform-docs-recursive", "https://github.com/juftin/terraform-docs-recursive"
##########################################################
####################### 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"
brew "grep"
brew "hashicorp/tap/terraform"
brew "helm"
brew "htop"
brew "hugo"
brew "juftin/terraform-docs-recursive/terraform-docs-recursive"
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 "terraform-docs"
brew "terragrunt"
brew "thefuck"
brew "tree"
brew "wget"
brew "yq"
##########################################################
######################### CASKS ##########################
##########################################################
cask "1password", greedy: true
cask "amazon-q", greedy: true
cask "caffeine", greedy: true
cask "cyberduck", greedy: true
cask "docker", 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 "ollama", greedy: true
cask "slack", greedy: true
cask "sourcetree", greedy: true
cask "spotify", greedy: true
cask "syntax-highlight", greedy: true, args: { no_quarantine: true }
cask "visual-studio-code", 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
: