Skip to content

Instantly share code, notes, and snippets.

@davidteren
Last active February 10, 2026 15:45
Show Gist options
  • Select an option

  • Save davidteren/898f2dcccd42d9f8680ec69a3a5d350e to your computer and use it in GitHub Desktop.

Select an option

Save davidteren/898f2dcccd42d9f8680ec69a3a5d350e to your computer and use it in GitHub Desktop.
Install Nerd Fonts via Homebrew [updated & fixed]

Nerd Fonts for your IDE

https://www.nerdfonts.com/font-downloads

The following solution thanks to @hackerzgz & @snacky101 will install all nerd fonts;

brew tap homebrew/cask-fonts
brew search '/font-.*-nerd-font/' | awk '{ print $1 }' | xargs -I{} brew install --cask {} || true

If you prefer to explicitly list the nerd fonts you want to install then you can use the solution provided by @frame45

#!/bin/bash

fonts_list=(
  font-3270-nerd-font
  font-fira-mono-nerd-font
  font-inconsolata-go-nerd-font
  font-inconsolata-lgc-nerd-font
  font-inconsolata-nerd-font
  font-monofur-nerd-font
  font-overpass-nerd-font
  font-ubuntu-mono-nerd-font
  font-agave-nerd-font
  font-arimo-nerd-font
  font-anonymice-nerd-font
  font-aurulent-sans-mono-nerd-font
  font-bigblue-terminal-nerd-font
  font-bitstream-vera-sans-mono-nerd-font
  font-blex-mono-nerd-font
  font-caskaydia-cove-nerd-font
  font-code-new-roman-nerd-font
  font-cousine-nerd-font
  font-daddy-time-mono-nerd-font
  font-dejavu-sans-mono-nerd-font
  font-droid-sans-mono-nerd-font
  font-fantasque-sans-mono-nerd-font
  font-fira-code-nerd-font
  font-go-mono-nerd-font
  font-gohufont-nerd-font
  font-hack-nerd-font
  font-hasklug-nerd-font
  font-heavy-data-nerd-font
  font-hurmit-nerd-font
  font-im-writing-nerd-font
  font-iosevka-nerd-font
  font-jetbrains-mono-nerd-font
  font-lekton-nerd-font
  font-liberation-nerd-font
  font-meslo-lg-nerd-font
  font-monoid-nerd-font
  font-mononoki-nerd-font
  font-mplus-nerd-font
  font-noto-nerd-font
  font-open-dyslexic-nerd-font
  font-profont-nerd-font
  font-proggy-clean-tt-nerd-font
  font-roboto-mono-nerd-font
  font-sauce-code-pro-nerd-font
  font-shure-tech-mono-nerd-font
  font-space-mono-nerd-font
  font-terminess-ttf-nerd-font
  font-tinos-nerd-font
  font-ubuntu-nerd-font
  font-victor-mono-nerd-font
)

brew tap homebrew/cask-fonts

for font in "${fonts_list[@]}"
do
  brew install --cask "$font"
done
exit
@mariotristan
Copy link

Updated version Feb 8 2026

image
#!/usr/bin/env bash

# Script: install_nerd_fonts.sh
# Description: Interactively select and install Nerd Fonts for macOS using GitHub releases + fzf.
# Author: zx0r
# Version: 1.1

set -euo pipefail

FZF_PROMPT="Select Nerd Fonts: "
FZF_HEIGHT="60%"
FZF_LAYOUT="reverse"

CYAN='\033[0;36m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m'

is_command_installed() { command -v "$1" &>/dev/null; }

print_step()    { echo -e "\n${CYAN}${1}${NC}\n"; }
print_success() { echo -e "\n${GREEN}${1}${NC}\n"; }
print_warn()    { echo -e "${YELLOW}[Warn] ${1}${NC}"; }
print_error()   { echo -e "${RED}❗️${1}${NC}"; exit 1; }

check_dependencies() {
  local dependencies=("curl" "fzf" "unzip")
  for dep in "${dependencies[@]}"; do
    if ! is_command_installed "$dep"; then
      print_warn "$dep is not installed."
      if [[ "$dep" == "fzf" ]]; then
        print_step "Installing fzf via Homebrew..."
        brew install fzf
      else
        print_error "Please install $dep first."
      fi
    fi
  done
}

# Fetch Nerd Fonts list from GitHub releases
fetch_nerd_fonts() {
  curl -s https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest \
    | grep "browser_download_url" \
    | grep ".zip" \
    | sed -E 's/.*\/([^\/]+)\.zip.*/\1/'
}

select_fonts() {
  local fonts="$1"
  echo "$fonts" | fzf --multi --prompt="$FZF_PROMPT" --height="$FZF_HEIGHT" --layout="$FZF_LAYOUT"
}

install_fonts() {
  local selected_fonts="$1"
  if [[ -z "$selected_fonts" ]]; then
    print_warn "No fonts selected. Exiting."
    exit 0
  fi

  print_step "Downloading and installing selected Nerd Fonts..."
  echo "$selected_fonts" | while read -r font; do
    url="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${font}.zip"
    tmpdir=$(mktemp -d)
    print_step "Downloading $font..."
    curl -L "$url" -o "$tmpdir/$font.zip"
    unzip -q "$tmpdir/$font.zip" -d "$tmpdir/$font"
    cp "$tmpdir/$font"/*.ttf ~/Library/Fonts/ || true
    rm -rf "$tmpdir"
    print_success "Installed $font."
  done
}

main() {
  print_step "Select the Nerd Fonts you want to install (TAB to select multiple):"
  check_dependencies

  local fonts
  fonts=$(fetch_nerd_fonts)
  if [[ -z "$fonts" ]]; then
    print_error "No Nerd Fonts found from GitHub API."
  fi

  local selected_fonts
  selected_fonts=$(select_fonts "$fonts")

  install_fonts "$selected_fonts"
}

main

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment