An interactive installer for Nerd Fonts with automatic distribution detection and dependency management.
- 🐧 Cross-platform Support - Works on Arch, Debian, Ubuntu, Fedora, CentOS, RHEL, and Linux Mint
- 📦 Automatic Dependencies - Installs
curl,unzip, andfontconfigautomatically - 🔍 Live Font Discovery - Fetches current font list from Nerd Fonts GitHub API
- 🎯 Interactive Selection - Choose specific fonts or install all with one command
- 🏠 Smart Installation - Installs to
~/.local/share/fontswith automatic cache updates - 🎨 Beautiful Interface - Colorful terminal output for better user experience
- 🛡️ Robust Error Handling - Comprehensive error checking and recovery
- 🔒 Secure by Design - Input validation, memory safety (C version), and hardened binary compilation
- ⚡ High Performance - C version optimized for speed and memory efficiency
Important
Security Notice: Please ensure you are using version v2026.01.09 or newer. Older versions are considered unsupported.
curl -sSLo nerdfonts-installer https://github.com/fam007e/nerd_fonts_installer/releases/latest/download/nerdfonts-installer && chmod +x nerdfonts-installer && sudo mv nerdfonts-installer /usr/local/bin/Then run:
nerdfonts-installerClick to expand AUR installation options
# Using yay (recommended)
yay -S nerdfonts-installer-bin
# Using paru
paru -S nerdfonts-installer-bin
# Manual installation
git clone https://aur.archlinux.org/nerdfonts-installer-bin.git
cd nerdfonts-installer-bin
makepkg -si# Download and install
curl -sSLo nerdfonts-installer https://github.com/fam007e/nerd_fonts_installer/releases/latest/download/nerdfonts-installer
chmod +x nerdfonts-installer
sudo mv nerdfonts-installer /usr/local/bin/Click to expand build instructions
Install build dependencies:
# Arch Linux / Manjaro
sudo pacman -S gcc make curl jansson
# Ubuntu / Debian / Linux Mint
sudo apt-get install build-essential libcurl4-openssl-dev libjansson-dev
# Fedora
sudo dnf install gcc make libcurl-devel jansson-devel
# CentOS / RHEL
sudo yum install gcc make libcurl-devel jansson-develBuild and install:
git clone https://github.com/fam007e/nerd_fonts_installer.git
cd nerd_fonts_installer
make
sudo cp nerdfonts-installer /usr/local/bin/Simply run:
nerdfonts-installer❯ nerdfonts-installer
🚀 Nerd Fonts Installer
━━━━━━━━━━━━━━━━━━━━━━━━
Detected OS: arch
✓ All dependencies are installed
Fetching available fonts from GitHub...
Found 70 available fonts
Select fonts to install (separate with spaces, or enter "all" to install all fonts):
---------------------------------------------
1. 0xProto 15. CommitMono 29. Hack 43. LiberationMono 57. ProggyClean
2. 3270 16. Cousine 30. Hasklig 44. Lilex 58. Recursive
3. AdwaitaMono 17. D2Coding 31. HeavyData 45. MPlus 59. RobotoMono
4. Agave 18. DaddyTimeMono 32. Hermit 46. MartianMono 60. ShareTechMono
5. AnonymousPro 19. DejaVuSansMono 33. IBMPlexMono 47. Meslo 61. SourceCodePro
6. Arimo 20. DepartureMono 34. Inconsolata 48. Monaspace 62. SpaceMono
7. AtkinsonHyperlegibleMono 21. DroidSansMono 35. InconsolataGo 49. Monofur 63. Terminus
8. AurulentSansMono 22. EnvyCodeR 36. InconsolataLGC 50. Monoid 64. Tinos
9. BigBlueTerminal 23. FantasqueSansMono 37. IntelOneMono 51. Mononoki 65. Ubuntu
10. BitstreamVeraSansMono 24. FiraCode 38. Iosevka 52. NerdFontsSymbolsOnly 66. UbuntuMono
11. CascadiaCode 25. FiraMono 39. IosevkaTerm 53. Noto 67. UbuntuSans
12. CascadiaMono 26. GeistMono 40. IosevkaTermSlab 54. OpenDyslexic 68. VictorMono
13. CodeNewRoman 27. Go-Mono 41. JetBrainsMono 55. Overpass 69. ZedMono
14. ComicShannsMono 28. Gohu 42. Lekton 56. ProFont 70. iA-Writer
---------------------------------------------
Enter the numbers of the fonts to install (e.g., "1 2 3") or type "all" to install all fonts:
For minimal dependencies or systems without build tools:
# Run directly (no installation required)
curl -sSL https://raw.githubusercontent.com/fam007e/nerd_fonts_installer/main/nerdfonts_installer.sh | bash
# Or download first
wget https://raw.githubusercontent.com/fam007e/nerd_fonts_installer/main/nerdfonts_installer.sh
chmod +x nerdfonts_installer.sh
./nerdfonts_installer.sh| Distribution | Package Manager | Shell Script | C Binary | Notes |
|---|---|---|---|---|
| Arch Linux | pacman |
✅ | ✅ | AUR package available |
| Manjaro | pacman |
✅ | ✅ | Full compatibility |
| EndeavourOS | pacman |
✅ | ✅ | Full compatibility |
| Ubuntu 22.04+ | apt-get |
✅ | ✅ | GLIBC 2.35+ required for binary |
| Ubuntu < 22.04 | apt-get |
✅ | Use Shell Script (Binary may fail) | |
| Debian 12+ | apt-get |
✅ | ✅ | Stable and testing |
| Debian < 12 | apt-get |
✅ | Use Shell Script (Binary may fail) | |
| Linux Mint 21+ | apt-get |
✅ | ✅ | All versions |
| Fedora 34+ | dnf |
✅ | ✅ | Recent versions |
| CentOS 7/8 | yum |
✅ | ❌ | Use Shell Script (Binary requires new GLIBC) |
| RHEL 7/8/9 | yum |
✅ | RHEL 9 OK, older usage Shell Script |
Note: The C Binary is built on Ubuntu Latest and requires a recent GLIBC. For older distributions (CentOS 7, Ubuntu 18.04, etc.), please us the Shell Script version.
Note: Other distributions may work but are not officially tested.
Runtime Dependencies
curl- Downloads fonts and makes API requestsunzip- Extracts font archivesfontconfig- Manages font cache and detection
All dependencies are installed automatically if missing.
Build Dependencies (C version)
gcc- GNU Compiler Collectionmake- Build automationlibcurl-dev- HTTP client librarylibjansson-dev- JSON parsing library
Fonts are installed to ~/.local/share/fonts/ following XDG specifications:
- ✅ No root required - User-local installation
- ✅ Automatic detection - Scanned by fontconfig
- ✅ Standard location - Compatible with all applications
- ✅ Easy management - Simple to backup or remove
| Version | Dependencies | Speed | Memory | Security | verification |
|---|---|---|---|---|---|
| C Binary | libcurl, libjansson | 🔥 Fast | 💚 Low | 🛡️ Hardened (PIE, RELRO, Canary) | ✅ Verified (ASan, MSan, CodeQL, Flawfinder) |
| Shell Script | bash, curl, unzip | 🐌 Slower | 🟡 Higher | ❌ Manual Check Only |
The C version is built with a defense-in-depth approach:
- Sanitizers: Continuous testing with AddressSanitizer (ASan), MemorySanitizer (MSan), and ThreadSanitizer (TSan).
- Static Analysis: Scanned weekly with CodeQL, CppCheck, and Flawfinder.
- Hardening: Compiled with
-fstack-protector-strong,-fPIE,-Wl,-z,relro, and-Wl,-z,noexecstack.
# Clone the repository
git clone https://github.com/fam007e/nerd_fonts_installer.git
cd nerd_fonts_installer
# Build the C version
make
# Test the build
./nerdfonts-installer
# Clean build artifacts
make clean📦 nerd_fonts_installer/
├── 📄 nerdfonts_installer.c # Main C implementation
├── 📄 nerdfonts_installer.sh # Shell script version
├── 📄 Makefile # Build configuration
├── 📄 LICENSE # MIT license
└── 📄 README.md # Documentation
We welcome contributions! Here's how you can help:
Found a bug? Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- System information (OS, version)
Have an idea? We'd love to hear it! Include:
- Use case description
- Proposed solution
- Benefits to users
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- C code: Follow C11 standard with comprehensive error handling
- Shell scripts: Maintain POSIX compliance where possible
- Testing: Verify functionality across multiple distributions
- Documentation: Update README for user-facing changes
This project is licensed under the MIT License - see the LICENSE file for details.
- 🎨 Nerd Fonts: Huge thanks to @ryanoasis for the incredible Nerd Fonts project
- 🔌 GitHub API: For providing reliable font metadata
- 🐧 Linux Community: For inspiration and feedback
Thank you to everyone who has contributed to the development of nerd_fonts_installer. Your efforts are greatly appreciated, and you're helping make this tool better for everyone!
- 🐛 Issues: GitHub Issues
- 📦 AUR Package: nerdfonts-installer
- 📋 Releases: Latest Release
- 📖 Documentation: Wiki
💖 Made with love for the Linux community
If this project helped you, please consider giving it a ⭐!