Geckoforge uses a carefully curated font stack optimized for development workflows and modern desktop use.
- Purpose: Terminal, code editor, development tools
- Features: Programming ligatures, comprehensive symbols, monospace
- Source: Mozilla Fira Code + Nerd Font patches
- Size: 12pt default (configurable)
- Liberation - Microsoft font metric-compatible
- DejaVu - Comprehensive Unicode coverage
- Noto Sans - Google's universal font family
- Noto Emoji - Color emoji support
- Noto CJK - Chinese, Japanese, Korean support
<package>liberation-fonts</package>
<package>dejavu-fonts</package>
<package>noto-sans-fonts</package>
<package>noto-emoji-fonts</package>
<package>fontconfig</package># Enhanced development fonts
(nerdfonts.override { fonts = [ "FiraCode" "JetBrainsMono" "SourceCodePro" ]; })
fira-code
jetbrains-mono
source-code-pro
ubuntu-font-family
liberation_ttf
dejavu_fonts
noto-fonts
noto-fonts-cjk
noto-fonts-emoji- Font: FiraCode Nerd Font Mono
- Ligatures: Enabled for better code readability
- Features: Enhanced symbol rendering for development
- Theme: Gruvbox Dark for comfortable extended use
+cv01 +cv02 +cv05 +cv09 +cv14 +cv16 +cv18 +cv25 +cv26 +cv28 +cv29 +cv30 +cv31
These features provide:
- Better arrow symbols
- Enhanced equality operators
- Improved parentheses and brackets
- Clearer distinction between similar characters
- Ligatures: Combines characters like
->,=>,!=into single symbols - Nerd Font patch: Adds icons and symbols for shells, file managers, status bars
- Readability: Designed specifically for code with clear character distinction
- Compatibility: Works across terminals, editors, and development tools
- Liberation: Ensures compatibility with Microsoft Office documents
- DejaVu: Provides excellent fallback for technical and scientific symbols
- Noto: Google's commitment to supporting all Unicode scripts
- Emoji support: Modern communication and documentation needs
- Monospace consistency: All development fonts maintain proper spacing
- Symbol coverage: Mathematical, logical, and programming symbols included
- Ligature support: Enhanced readability for common programming constructs
- High DPI support: Scalable fonts that work on modern high-resolution displays
- Git status: Enhanced with Nerd Font symbols
- File listings: Icons and symbols for different file types
- Shell prompts: Rich symbols for status, git branches, etc.
- Ligatures:
==,!=,->,=>render as single symbols - Comments: Clear distinction from code
- Strings: Easy identification with font styling
- KDE Plasma: Uses system fonts for menus and dialogs
- Application text: Consistent rendering across applications
- International text: Proper support for non-Latin scripts
Edit home/modules/desktop.nix:
programs.kitty = {
font = {
name = "JetBrains Mono Nerd Font"; # Alternative
size = 14; # Larger size
};
};Add to font packages list:
home.packages = with pkgs; [
# Add your preferred fonts
cascadia-code
hack-font
# etc.
];Add to KIWI profile config.xml:
<package>your-font-package</package>- FiraCode specimens: GitHub repository
- Nerd Font previews: nerdfonts.com
- Font testing: Use
fc-listto see installed fonts
If FiraCode doesn't suit your preference:
- JetBrains Mono: Modern, designed by JetBrains
- Source Code Pro: Adobe's monospace font
- Cascadia Code: Microsoft's development font
- Hack: Designed specifically for code
# List available fonts
fc-list | grep -i fira
# Test font rendering
echo "Testing FiraCode: -> => != >= <="
# Fontconfig cache refresh
fc-cache -fv- Layer 1 (ISO): Basic system fonts for installer and early boot
- Layer 4 (Home-Manager): Development and user-specific fonts
- No layer violations: Fonts properly distributed between system and user space
- Nerd Font subset: Only includes needed fonts (FiraCode, JetBrains, Source Code)
- System fonts: Essential coverage without bloat
- Font caching: Fontconfig handles caching automatically
Fonts are version-controlled and reproducible:
- Modify font configuration in
home/modules/desktop.nix - Apply with
home-manager switch --flake . - Fonts available immediately in new terminal sessions
- Changes tracked in Git for team consistency