Set Up Your Mac Development Environment in Minutes with Hola

Published: (December 3, 2025 at 10:56 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

Why Hola?

  • No heavy dependencies like traditional Chef installations.
  • Ruby DSL is readable and expressive, but optional for most users.
  • Handles Homebrew, mise, dotfiles, and macOS system settings in a single workflow.
  • Built in Zig for speed and tiny memory footprint.

Features

Convention Over Configuration

Use the tools you already know:

Brewfile (Homebrew’s native format)

brew "git"
brew "neovim"
cask "ghostty"
cask "visual-studio-code"

mise.toml (mise’s native format)

[tools]
node = "24"
python = "3.14"
rust = "stable"

Optional Ruby DSL

For advanced provisioning (90 % of users won’t need this):

# ~/.config/hola/provision.rb
package ["git", "tmux", "neovim"]

execute "install-oh-my-zsh" do
  command 'sh -c "$(curl -fsSL https://ohmyz.sh/install.sh)"'
  not_if { Dir.exist?(File.expand_path("~/.oh-my-zsh")) }
end

Intelligent Dotfiles Management

# Bootstrap from a GitHub repo (clones + installs packages + links dotfiles)
hola apply --github username/dotfiles

# Or just link dotfiles from a local directory
hola link --dotfiles ~/.dotfiles

macOS Desktop Configuration

Define Dock layout and system defaults directly in Ruby:

# ~/.config/hola/provision.rb
macos_dock do
  apps [
    '/Applications/Ghostty.app/',
    '/Applications/Visual Studio Code.app/',
    '/Applications/Safari.app/',
  ]
  orientation "bottom"
  autohide true
  magnification true
  tilesize 50
  largesize 40
end

macos_defaults "show hidden files" do
  domain "com.apple.finder"
  key "AppleShowAllFiles"
  value true
end

macos_defaults "keyboard repeat rate" do
  global true
  key "KeyRepeat"
  value 1
end

Installation

# Quick install (recommended)
curl -fsSL https://hola.ac/install | bash

Or via Homebrew:

brew tap ratazzi/hola
brew install hola

Or download manually:

curl -fsSL https://github.com/ratazzi/hola/releases/latest/download/hola-macos-aarch64 -o hola
chmod +x hola
xattr -d com.apple.quarantine hola
sudo mv hola /usr/local/bin/

Example Repository Layout

repo/
├── Brewfile
├── mise.toml
└── .config/
    └── hola/
        └── provision.rb   # optional

Brewfile (repo root)

brew "git"
brew "gh"
brew "ripgrep"
brew "fzf"
cask "ghostty"
cask "zed"
cask "raycast"

mise.toml (repo root)

[tools]
node = "20"
python = "3.12"
go = "latest"

Provision file (optional – see the macOS Desktop Configuration section for examples).

One command sets everything up:

hola apply --github username/dotfiles

What Hola Does

  • ✅ Clones your dotfiles repo to ~/.dotfiles
  • ✅ Installs all Homebrew packages from Brewfile
  • ✅ Installs and pins tool versions from mise.toml
  • ✅ Symlinks dotfiles to your home directory
  • ✅ Runs provision.rb (if present) for Dock and system settings

Export Existing Configuration

# Export current Dock configuration
hola dock

# Export Homebrew packages to Brewfile
brew bundle dump

Company‑Wide Dotfiles Repo Example

Brewfile

# Core tools every developer needs
brew "git"
brew "docker"
brew "kubectl"

# Company‑specific tools
cask "slack"
cask "zoom"
cask "visual-studio-code"

Provision file (advanced setup)

# Install VS Code extensions
execute "install vscode extensions" do
  command "code --install-extension ms-python.python"
  command "code --install-extension dbaeumer.vscode-eslint"
  not_if "code --list-extensions | grep -q ms-python.python"
end

# Clone team repositories
directory "/Users/#{ENV['USER']}/work" do
  recursive true
end

git "/Users/#{ENV['USER']}/work/backend" do
  repository "git@github.com:company/backend.git"
end

New hires simply run:

hola apply --github company/dotfiles

Advanced Ruby DSL Usage

# In ~/.config/hola/provision.rb
if ENV['USER'] == 'john'
  package "discord"
end

case node['platform']
when 'darwin'
  package "mas"  # Mac App Store CLI
when 'ubuntu'
  apt_repository "ppa:graphics-drivers/ppa"
end

template "/Users/#{ENV['USER']}/.gitconfig" do
  content "It’s like Chef, but without the baggage."
end

“Finally, Dock management that works.” – No more manual dragging or complex AppleScript. Define your Dock layout in code.

“Convention over configuration done right.” – Smart defaults mean less typing. Hola knows where dotfiles should go.

Getting Started

# Install
curl -fsSL https://hola.ac/install | bash

# Bootstrap from your dotfiles repo
hola apply --github username/dotfiles

Or start simple with just a Brewfile:

echo 'brew "git"' > Brewfile
echo 'cask "ghostty"' >> Brewfile
hola apply

Built with ❤️ in Zig by developers who value their time.

Back to Blog

Related posts

Read more »