nixos-config/modules/fonts/default.nix

129 lines
3.5 KiB
Nix
Raw Normal View History

{ lib
, pkgs
, config
, ...
2022-03-01 22:19:03 +01:00
}:
with lib; let
cfg = config.eboskma.fonts;
2023-01-13 10:30:49 +01:00
iosevka-aile = pkgs.iosevka.override {
privateBuildPlan = {
family = "Iosevka Aile";
desc = "Sans serif";
spacing = "quasi-proportional";
snapshotFamily = "Iosevka Aile";
snapshotFeature = { "NWID" = 0; };
export-glyph-names = true;
variants.design = {
capital-i = "serifless";
capital-j = "serifless";
capital-k = "straight-serifless";
capital-m = "flat-bottom";
capital-w = "straight-flat-top";
a = "double-storey-serifless";
d = "toothed-serifless";
e = "flat-crossbar";
f = "flat-hook";
g = "single-storey-serifless";
i = "serifless";
j = "flat-hook-serifless";
k = "straight-serifless";
l = "serifless";
r = "compact";
t = "flat-hook";
u = "toothed";
w = "straight-flat-top";
y = "straight";
long-s = "flat-hook";
eszet = "longs-s-lig";
lower-iota = "flat-tailed";
lower-lambda = "straight-turn";
cyrl-ef = "serifless";
cyrl-capital-ka = "symmetric-connected-serifless";
cyrl-ka = "symmetric-connected-serifless";
cyrl-capital-u = "straight";
at = "fourfold";
percent = "rings-continuous-slash";
};
derivingVariants.mathtt.design = {
capital-i = "serifed";
capital-j = "serifless";
capital-k = "straight-serifless";
capital-m = "flat-bottom";
capital-w = "straight-flat-top";
a = "double-storey-serifless";
d = "toothed-serifless";
e = "flat-crossbar";
f = "flat-hook";
g = "single-storey-serifless";
i = "serifed";
j = "flat-hook-serifed";
k = "straight-serifless";
l = "serifed";
r = "compact";
t = "flat-hook";
u = "toothed";
w = "straight-flat-top";
y = "straight";
long-s = "flat-hook";
eszet = "longs-s-lig";
lower-iota = "flat-tailed";
lower-lambda = "straight-turn";
cyrl-ef = "serifless";
cyrl-capital-ka = "symmetric-connected-serifless";
cyrl-ka = "symmetric-connected-serifless";
cyrl-capital-u = "straight";
at = "fourfold";
percent = "rings-continuous-slash";
};
widths.normal = {
shape = 600;
menu = 5;
css = "normal";
};
};
set = "aile";
};
in
{
options.eboskma.fonts = {
enable = mkEnableOption "activate fonts";
iosevka-aile = mkOption {
description = "Install Iosevka Aile";
type = types.bool;
default = true;
};
};
2021-11-21 19:07:12 +01:00
config = mkIf cfg.enable {
fonts = {
fontDir.enable = true;
fonts = with pkgs; [
2022-11-19 17:24:39 +01:00
(nerdfonts.override { fonts = [ "CascadiaCode" "DroidSansMono" "FiraCode" "Inconsolata" "Iosevka" "Monoid" "Meslo" "Noto" "SourceCodePro" ]; })
2023-01-13 10:30:49 +01:00
corefonts
2021-11-21 19:07:12 +01:00
dejavu_fonts
2021-11-22 18:56:59 +01:00
google-fonts
2021-11-21 19:07:12 +01:00
kochi-substitute
2021-12-06 09:58:39 +01:00
material-icons
2021-11-21 19:07:12 +01:00
noto-fonts-emoji
recursive
ttf_bitstream_vera
2023-01-13 10:30:49 +01:00
twitter-color-emoji
] ++ lib.optional cfg.iosevka-aile iosevka-aile;
2021-11-21 19:07:12 +01:00
fontconfig = {
defaultFonts = {
serif = [ "Recursive Sans Casual Static Medium" ];
sansSerif = [ (if cfg.iosevka-aile then "Iosevka Aile" else "DejaVu Sans") ];
monospace = [ "Iosevka Nerd Font" ];
2023-01-13 10:30:49 +01:00
emoji = [ "Twitter Color Emoji" ];
2021-11-21 19:07:12 +01:00
};
};
};
};
}