Modules: Add fonts module
This commit is contained in:
55
system/modules/fonts/default.nix
Normal file
55
system/modules/fonts/default.nix
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
mylib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (config.modules) fonts;
|
||||
in {
|
||||
options.modules.fonts = import ./options.nix {inherit lib mylib;};
|
||||
|
||||
config = lib.mkIf fonts.enable {
|
||||
fonts = {
|
||||
# Some default fonts for unicode coverage
|
||||
enableDefaultPackages = true;
|
||||
|
||||
# Puts fonts to /run/current-system/sw/share/X11/fonts
|
||||
# https://wiki.nixos.org/wiki/Fonts#Flatpak_applications_can.27t_find_system_fonts
|
||||
fontDir.enable = true;
|
||||
|
||||
# Font packages go here.
|
||||
# They are installed system-wide so they land in fontdir,
|
||||
# this is required for flatpak to find them.
|
||||
packages = with pkgs; [
|
||||
# Monospace fonts
|
||||
nerd-fonts.jetbrains-mono
|
||||
nerd-fonts.victor-mono
|
||||
monolisa
|
||||
|
||||
# Sans/Serif fonts
|
||||
noto-fonts
|
||||
noto-fonts-emoji
|
||||
noto-fonts-cjk-sans
|
||||
lxgw-wenkai
|
||||
];
|
||||
|
||||
fontconfig = {
|
||||
enable = true;
|
||||
antialias = true;
|
||||
hinting.enable = true;
|
||||
hinting.autohint = true;
|
||||
cache32Bit = true;
|
||||
|
||||
# https://wiki.nixos.org/wiki/Fonts#Noto_Color_Emoji_doesn.27t_render_on_Firefox
|
||||
useEmbeddedBitmaps = true;
|
||||
|
||||
defaultFonts = {
|
||||
serif = [fonts.defaultSerifFont] ++ fonts.fallbackSerifFonts;
|
||||
sansSerif = [fonts.defaultSansSerifFont] ++ fonts.fallbackSansSerifFonts;
|
||||
monospace = [fonts.defaultMonoFont] ++ fonts.fallbackMonoFonts;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
69
system/modules/fonts/options.nix
Normal file
69
system/modules/fonts/options.nix
Normal file
@ -0,0 +1,69 @@
|
||||
{
|
||||
lib,
|
||||
mylib,
|
||||
...
|
||||
}: {
|
||||
enable = lib.mkEnableOption "Enable fonts configuration";
|
||||
|
||||
defaultSerifFont = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "Select default serif font";
|
||||
example = ''
|
||||
"Noto Serif CJK SC"
|
||||
'';
|
||||
default = "Noto Serif CJK SC";
|
||||
};
|
||||
|
||||
defaultSansSerifFont = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "Select default sans-serif font";
|
||||
example = ''
|
||||
"Noto Sans CJK SC"
|
||||
'';
|
||||
default = "Noto Sans CJK SC";
|
||||
};
|
||||
|
||||
defaultMonoFont = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "Select default monospace font";
|
||||
example = ''
|
||||
"MonoLisa Alt Script"
|
||||
'';
|
||||
default = "MonoLisa Alt Script";
|
||||
};
|
||||
|
||||
fallbackSerifFonts = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Select fallback serif fonts";
|
||||
example = ''
|
||||
[
|
||||
"Noto Serif CJK SC"
|
||||
]
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
fallbackSansSerifFonts = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Select fallback sans-serif fonts";
|
||||
example = ''
|
||||
[
|
||||
"Noto Sans CJK SC"
|
||||
]
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
fallbackMonoFonts = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Select fallback monospace fonts";
|
||||
example = ''
|
||||
[
|
||||
"JetBrainsMono Nerd Font Mono"
|
||||
]
|
||||
'';
|
||||
default = [
|
||||
"JetBrainsMono Nerd Font Mono"
|
||||
];
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user