123 lines
3.1 KiB
Nix
123 lines
3.1 KiB
Nix
# SPDX-FileCopyrightText: 2020-2024 Simon Bruder <simon@sbruder.de>
|
||
#
|
||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||
|
||
{ config, lib, pkgs, ... }:
|
||
let
|
||
iosevka-sbruder = pkgs.iosevka.override {
|
||
privateBuildPlan = {
|
||
family = "Iosevka sbruder";
|
||
spacing = "term";
|
||
serifs = "sans";
|
||
noCvSs = false;
|
||
exportGlyphNames = true;
|
||
|
||
variants = {
|
||
inherits = "ss20";
|
||
|
||
design = {
|
||
capital-g = "toothless-rounded-serifless-hooked";
|
||
four = "closed-serifless";
|
||
six = "closed-contour";
|
||
nine = "closed-contour";
|
||
number-sign = "upright-tall";
|
||
at = "compact";
|
||
cent = "open";
|
||
percent = "dots";
|
||
lig-ltgteq = "slanted";
|
||
};
|
||
};
|
||
|
||
weights = {
|
||
regular = {
|
||
shape = 400;
|
||
menu = 400;
|
||
css = 400;
|
||
};
|
||
bold = {
|
||
shape = 700;
|
||
menu = 700;
|
||
css = 700;
|
||
};
|
||
};
|
||
|
||
slopes = {
|
||
upright = {
|
||
angle = 0;
|
||
shape = "upright";
|
||
menu = "upright";
|
||
css = "normal";
|
||
};
|
||
italic = {
|
||
angle = 9.4;
|
||
shape = "italic";
|
||
menu = "italic";
|
||
css = "italic";
|
||
};
|
||
};
|
||
|
||
widths = {
|
||
# ensures that extended won’t get built
|
||
normal = {
|
||
shape = 500;
|
||
menu = 5;
|
||
css = "normal";
|
||
};
|
||
};
|
||
};
|
||
|
||
set = "sbruder";
|
||
};
|
||
|
||
iosevka-sbruder-nerd-font = pkgs.runCommand "iosevka-sbruder-nerd-font" { } ''
|
||
${pkgs.parallel}/bin/parallel \
|
||
${pkgs.nerd-font-patcher}/bin/nerd-font-patcher \
|
||
--adjust-line-height \
|
||
--complete \
|
||
--careful \
|
||
--outputdir $out \
|
||
::: ${iosevka-sbruder}/share/fonts/truetype/*.ttf
|
||
'';
|
||
in
|
||
lib.mkIf config.sbruder.gui.enable {
|
||
fonts = {
|
||
packages = with pkgs; [
|
||
iosevka-sbruder-nerd-font
|
||
] ++ lib.optionals config.sbruder.full [
|
||
google-fonts # google font collection (free)
|
||
lmodern # Latin Modern for non-latex applications
|
||
noto-fonts-emoji-blob-bin # The most owo emojis (thanks google for killing them)
|
||
source-han-sans
|
||
source-han-serif # CJK fonts
|
||
] ++ lib.optionals (!config.sbruder.full) [
|
||
roboto # default sans-serif font (normally included in google-fonts)
|
||
] ++ lib.optionals config.sbruder.unfree.allowAssets [
|
||
corefonts # good ol’ microsoft fonts
|
||
vistafonts # newer microsoft fonts
|
||
];
|
||
|
||
enableDefaultPackages = true;
|
||
|
||
fontconfig = {
|
||
defaultFonts = {
|
||
emoji = [ "Blobmoji" ];
|
||
monospace = [ "IosevkaSbruder Nerd Font" "Source Han Sans" ];
|
||
sansSerif = [ "Roboto" "Source Han Sans" ];
|
||
serif = [ "Georgia" "Source Han Serif" ];
|
||
};
|
||
localConf = /* xml */ ''
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
|
||
<fontconfig>
|
||
<alias>
|
||
<family>system-ui</family>
|
||
<prefer>
|
||
<family>sans-serif</family>
|
||
</prefer>
|
||
</alias>
|
||
</fontconfig>
|
||
'';
|
||
};
|
||
};
|
||
}
|