#!/usr/bin/env bash
### ---------------------------------------------------------
### Directories
### ---------------------------------------------------------
NERD_BASE="/usr/share/fonts/nerdfonts"
LOCAL_BASE="/usr/share/fonts/local"
sudo mkdir -p "$NERD_BASE"
sudo mkdir -p "$LOCAL_BASE"
TMP_DIR="/tmp/font-installer"
mkdir -p "$TMP_DIR"
### ---------------------------------------------------------
### Nerd Fonts (Mono TTF)
### ---------------------------------------------------------
TTF_FONTS=(
"0xProto"
"AdwaitaMono"
"BitstreamVeraSansMono"
"CascadiaCode"
"DejaVuSansMono"
"IBMPlexMono"
"Mononoki"
"FiraCode"
"Hack"
"IntelOneMono"
"JetBrainsMono"
"Meslo"
"Noto"
"Recursive"
"SpaceMono"
)
### ---------------------------------------------------------
### Nerd Fonts (OTF)
### ---------------------------------------------------------
OTF_FONTS=(
"AtkinsonHyperlegibleMono"
"CodeNewRoman"
"Hermit"
"GeistMono"
)
echo "Installing Nerd Fonts into: $NERD_BASE"
### ---------------------------------------------------------
### 1. Install TTF-based Nerd Fonts (Mono variants only)
### ---------------------------------------------------------
for FONT in "${TTF_FONTS[@]}"; do
ZIP="${TMP_DIR}/${FONT}.zip"
FONT_DIR="${NERD_BASE}/${FONT}"
URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${FONT}.zip"
echo "Downloading $FONT..."
sudo wget -q --show-progress "$URL" -O "$ZIP"
echo "Extracting *NerdFontMono*.ttf..."
sudo mkdir -p "$FONT_DIR"
sudo unzip -j "$ZIP" "*NerdFontMono*.ttf" -d "$FONT_DIR" >/dev/null
done
### ---------------------------------------------------------
### 2. Install OTF-based Nerd Fonts
### ---------------------------------------------------------
for FONT in "${OTF_FONTS[@]}"; do
ZIP="${TMP_DIR}/${FONT}.zip}"
FONT_DIR="${NERD_BASE}/${FONT}"
URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${FONT}.zip"
echo "Downloading $FONT (OTF)..."
sudo wget -q --show-progress "$URL" -O "$ZIP"
echo "Extracting *.otf..."
sudo mkdir -p "$FONT_DIR"
sudo unzip -j "$ZIP" "*.otf" -d "$FONT_DIR" >/dev/null
done
### ---------------------------------------------------------
### 3. Install Inter (Inter-*.ttf → /usr/share/fonts/local)
### ---------------------------------------------------------
echo "Installing Inter..."
INTER_ZIP="${TMP_DIR}/inter.zip"
sudo wget -q --show-progress \
"https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" \
-O "$INTER_ZIP"
sudo unzip -j "$INTER_ZIP" "extras/ttf/Inter-*.ttf" -d "$LOCAL_BASE" >/dev/null
### ---------------------------------------------------------
### 4. Install Office Code Pro (.ttf → /usr/share/fonts/local)
### ---------------------------------------------------------
echo "Installing Office Code Pro..."
OCP_ZIP="${TMP_DIR}/officecodepro.zip"
sudo wget -q --show-progress \
"https://globalfonts.pro/global_files/64677722a717112392dab2d4/office-code-pro.zip" \
-O "$OCP_ZIP"
sudo unzip -j "$OCP_ZIP" "*.ttf" -d "$LOCAL_BASE" >/dev/null
### ---------------------------------------------------------
### 5. Install SF Mono (.otf → /usr/share/fonts/nerdfonts/SFMono)
### ---------------------------------------------------------
echo "Installing SF Mono..."
SF_DIR="${NERD_BASE}/SFMono"
SF_ZIP="${TMP_DIR}/sfmono.zip"
sudo mkdir -p "$SF_DIR"
sudo wget -q --show-progress \
"https://github.com/epk/SF-Mono-Nerd-Font/archive/refs/tags/v18.0d1e1.0.zip" \
-O "$SF_ZIP"
sudo unzip -j "$SF_ZIP" "*.otf" -d "$SF_DIR" >/dev/null
### ---------------------------------------------------------
### Final Cleanup + Font Cache
### ---------------------------------------------------------
echo "Cleaning up temporary files..."
sudo rm -rf "$TMP_DIR"
echo "Updating font cache..."
sudo fc-cache -fv
echo "All fonts installed successfully."