I’m running NixOS unstable channel and trying to set up Isoveska and Nerd Fonts. While the fonts seem to load and render OK, my challenge is getting glyphs / symbols to show. The glyphs and symbols all show up as expected in each of my multiple terminal emulators but not in apps like rofi-wayland
, Waybar
, or wofi
for my Hyprland Wayland compositor.
One added quirk to consider is that my dotfiles are not stored using home-manager. Instead the Hyprland and other UI component configuration files are elegantly crafted as a part of Aditya’s popular “Archcraft” project and distibuted on ko-fi. While the project is native to Arch, the maintainer supports other distros as well. The package of Hyprland configuration files are all called and started using bash scripts. For some added context and to get a sense as to how the rest of the Wayland components are configured with scripts rather than dotfiles, you can view the relevant sub directory tree also on my GitHub there. So this adds a layer of complexity since there are some moving parts.
The rofi/shared/fonts.rasi
file includes this declaration:
/* Text Font */
* {
font: "Iosevka 10";
}
That’s it. That is the only declaration in that whole file. Easy enough. However when I call the rofi_powermenu
script this is how the glyphs render:
I’d like to draw your attention to lines 16-29 of my current rofi_powermenu script on my GitHub repo frozen at the latest commit. Take notice of the glyphs menu icons as blank rectangles at those lines.
I can imagine that some of you may be thinking that this is an issue with rofi and not NixOS. Now consider that there are font and glyph issues with both Waybar and wofi-power-menu too:
Further more, based on my inquiries on Aditya’s official Discord support server, other users of this project both natively on Arch and other distros aren’t experiencing this same font issues. This suggests the source of the issue is isolated to NixOS or my system in particular.
For the upcoming NIxOS release at the end of this month, the way fonts are configured in configuration.nix
will be different from previous versions as noted in the official Wiki. This leads me to think that it could be a bug that still needs to be resolved ahead of release although before I log a bug report on the nixpkg GitHub repo I want to make sure I am not overlooking a process or tool or technique more experienced NixOS users might suggest I try first.
According to the NixOS Wiki, as a departure from 24.11 and earlier, the correct expression requires specifying individual fonts in this way:
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
];
I have done so accordingly as you can see in my configuration.nix on GitHub at lines 234-244 tt this permalink here.
rofi
as quoted earlier uses Iosevka 10
but Waybar
uses “Nerd Fonts Symbols Only”. Here is Waybar’s style.css font declaration line:
* {
font-family: "JetBrains Mono", "Symbols Nerd Font", Iosevka, archcraft, sans-serif; /** "Symbols Nerd Font Mono", */
font-size: 12px;
}
I even went so far as to visit Nerd Fonts official website and downloaded the specific “Symbols Only” font package, extracted the zip file locally, and moved the contents to ~/.local/share/fonts
directory and then executed $ fc-cache -r
after switching and moving the text files around as some NixOS user recommended on reddit.
As a result, take a look at the output of this command:
$ fc-list -v | grep -i symbols
family: "Symbols Nerd Font Mono"(s)
fullname: "Symbols Nerd Font Mono"(s)
file: "/nix/store/zsqw8zwma40dbajnl3xajl73plkqxz51-nerd-fonts-symbols-only-3.4.0/share/fonts/truetype/NerdFonts/Symbols/SymbolsNerdFontMono-Regular.ttf"(s)
postscriptname: "SymbolsNFM"(s)
family: "Symbols Nerd Font"(s)
fullname: "Symbols Nerd Font"(s)
file: "/home/evangelist/.local/share/fonts/SymbolsNerdFont-Regular.ttf"(s)
postscriptname: "SymbolsNF"(s)
family: "Symbols Nerd Font"(s)
fullname: "Symbols Nerd Font"(s)
file: "/nix/store/zsqw8zwma40dbajnl3xajl73plkqxz51-nerd-fonts-symbols-only-3.4.0/share/fonts/truetype/NerdFonts/Symbols/SymbolsNerdFont-Regular.ttf"(s)
postscriptname: "SymbolsNF"(s)
family: "Symbols Nerd Font"(s)
fullname: "Symbols Nerd Font"(s)
file: "/run/current-system/sw/share/fonts/truetype/NerdFonts/Symbols/SymbolsNerdFont-Regular.ttf"(s)
postscriptname: "SymbolsNF"(s)
family: "Symbols Nerd Font Mono"(s)
fullname: "Symbols Nerd Font Mono"(s)
file: "/run/current-system/sw/share/fonts/truetype/NerdFonts/Symbols/SymbolsNerdFontMono-Regular.ttf"(s)
postscriptname: "SymbolsNFM"(s)
family: "Symbols Nerd Font Mono"(s)
fullname: "Symbols Nerd Font Mono"(s)
file: "/home/evangelist/.local/share/fonts/SymbolsNerdFontMono-Regular.ttf"(s)
postscriptname: "SymbolsNFM"(s)
That is proof that Symbols Nerd Font is installed correctly. Symbols Nerd Fonts is installed redundantly using both nixpkgs and manually yet Waybar glyphs are still broken.
As far as I can tell, I have done everything right. What am I missing? Is this a bug? If not, what might more experienced NixOS users suggest I try to troubleshoot next?