{ ... }: { flake.nixosModules.systemFonts = { config, lib, pkgs, ... }: let cfg = config.chiasson.system.fonts; in { options.chiasson.system.fonts = { enable = lib.mkOption { type = lib.types.bool; default = true; description = "Bundled fonts + fontconfig defaults."; }; packages = lib.mkOption { type = lib.types.listOf lib.types.package; default = with pkgs; [ noto-fonts noto-fonts-cjk-sans noto-fonts-color-emoji liberation_ttf fira-code fira-code-symbols mplus-outline-fonts.githubRelease dina-font proggyfonts nerd-fonts.fira-code nerd-fonts.droid-sans-mono nerd-fonts.jetbrains-mono ]; description = "System font packages to install."; }; defaultFonts = { monospace = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ "FiraCode Nerd Font" "Fira Code" "DejaVu Sans Mono" ]; description = "Default monospace font fallback chain."; }; sansSerif = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ "Noto Sans" "DejaVu Sans" ]; description = "Default sans-serif font fallback chain."; }; serif = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ "Noto Serif" "DejaVu Serif" ]; description = "Default serif font fallback chain."; }; }; }; config = lib.mkIf cfg.enable { fonts.packages = cfg.packages; fonts.fontconfig = { enable = true; defaultFonts = { monospace = cfg.defaultFonts.monospace; sansSerif = cfg.defaultFonts.sansSerif; serif = cfg.defaultFonts.serif; }; }; }; }; }