voidconf/modules/font.nix
2024-05-19 15:27:40 +02:00

85 lines
2 KiB
Nix

{ pkgs, config, lib, ... }:
with lib;
let cfg = config.voidconf.fontConfig;
in {
options.voidconf.fontConfig = {
enable = mkEnableOption "Enable opinionated font configuration";
joyPixels = mkEnableOption "Enables the JoyPixels font";
};
config = mkIf cfg.enable {
fonts = {
fontDir.enable = true;
packages = with pkgs; [
(nerdfonts.override { fonts = [ "FiraCode" "Iosevka" ]; })
baekmuk-ttf
blackout
bqn386
fira
fira-code
font-awesome
iosevka
ipafont
jetbrains-mono
liberation_ttf
libertine
libertinus
mononoki
mplus-outline-fonts.githubRelease
noto-fonts
noto-fonts-emoji
prociono
ubuntu_font_family
uiua386
vollkorn
];
fontconfig = {
enable = true;
includeUserConf = true;
antialias = true;
hinting.enable = true;
defaultFonts = {
serif = [ "Vollkorn" "Fira Code" "IPAMincho" "Noto Color Emoji" ];
sansSerif = [ "FiraSans" "Fira Code" "IPAGothic" "Noto Color Emoji" ];
monospace = [ "Fira Code" "JetBrains Mono" "Iosevka" "IPAGothic" "Noto Color Emoji" ];
emoji = [ "Noto Color Emoji" (mkIf cfg.joyPixels "JoyPixels") ];
};
localConf = ''
<fontconfig>
<match target="scan">
<test name="family">
<string>APL385 Unicode</string>
</test>
<edit name="spacing">
<int>100</int>
</edit>
</match>
<match target="scan">
<test name="family">
<string>BQN386 Unicode</string>
</test>
<edit name="spacing">
<int>100</int>
</edit>
</match>
<match target="scan">
<test name="family">
<string>Uiua386</string>
</test>
<edit name="spacing">
<int>100</int>
</edit>
</match>
</fontconfig>
'';
};
};
};
}