Skip to content

fam007e/nerd_fonts_installer

🚀 Nerd Fonts Installer

An interactive installer for Nerd Fonts with automatic distribution detection and dependency management.

GitHub stars License: MIT Packaging status


✨ Features

  • 🐧 Cross-platform Support - Works on Arch, Debian, Ubuntu, Fedora, CentOS, RHEL, and Linux Mint
  • 📦 Automatic Dependencies - Installs curl, unzip, and fontconfig automatically
  • 🔍 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/fonts with 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

🚀 Quick Start

Important

Security Notice: Please ensure you are using version v2026.01.09 or newer. Older versions are considered unsupported.

One-Line Installation (Recommended)

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-installer

📥 Installation Methods

🎯 Method 1: AUR (Arch Linux Users)

Click 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

📦 Method 2: Pre-built Binary

# 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/

🔨 Method 3: Build from Source

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-devel

Build and install:

git clone https://github.com/fam007e/nerd_fonts_installer.git
cd nerd_fonts_installer
make
sudo cp nerdfonts-installer /usr/local/bin/

🎮 Usage

Interactive Mode

Simply run:

nerdfonts-installer

Example Session

❯ 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:

🖥️ Alternative: Shell Script Version

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

🐧 Supported Distributions

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.


🔧 Technical Details

📋 Dependencies

Runtime Dependencies
  • curl - Downloads fonts and makes API requests
  • unzip - Extracts font archives
  • fontconfig - Manages font cache and detection

All dependencies are installed automatically if missing.

Build Dependencies (C version)
  • gcc - GNU Compiler Collection
  • make - Build automation
  • libcurl-dev - HTTP client library
  • libjansson-dev - JSON parsing library

📁 Font Installation

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

⚡ Performance & Security

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 ⚠️ Basic ❌ Manual Check Only

🔒 Security Measures

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.

🛠️ Development

Building Locally

# 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

📁 Project Structure

📦 nerd_fonts_installer/
├── 📄 nerdfonts_installer.c    # Main C implementation
├── 📄 nerdfonts_installer.sh   # Shell script version
├── 📄 Makefile                 # Build configuration
├── 📄 LICENSE                 # MIT license
└── 📄 README.md               # Documentation

🤝 Contributing

We welcome contributions! Here's how you can help:

🐛 Report Issues

Found a bug? Open an issue with:

  • Steps to reproduce
  • Expected vs actual behavior
  • System information (OS, version)

💡 Feature Requests

Have an idea? We'd love to hear it! Include:

  • Use case description
  • Proposed solution
  • Benefits to users

🔧 Code Contributions

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📋 Development Guidelines

  • 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

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Credits & Acknowledgments

  • 🎨 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!

Contributors


📞 Support & Links


🌟 Star History

Star History Chart


💖 Made with love for the Linux community

If this project helped you, please consider giving it a ⭐!

⬆️ Back to top

About

Nerd-fonts installer.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors