nixos/system/iosevka.nix
Evie Litherland-Smith 7a10373030 Add nerd-font patched version of custom Iosevka to fonts
Move all of the logic for configuring and building the custom fonts to
iosevka.nix, to keep everything relevant in one place.
2024-03-02 15:04:35 +00:00

110 lines
2.8 KiB
Nix

{
stdenv,
iosevka,
nerd-font-patcher,
}: let
customBuildPlan = {
noCvSs = true;
exportGlyphNames = false;
ligations.inherits = "dlig";
weights = {
Regular = {
shape = 400;
menu = 400;
css = 400;
};
Bold = {
shape = 700;
menu = 700;
css = 700;
};
};
variants.design = {
capital-g = "toothless-corner-serifless-hooked";
capital-j = "serifed-both-sides";
capital-q = "crossing";
capital-r = "curly-serifless";
e = "rounded";
f = "tailed";
g = "double-storey-open";
i = "tailed-serifed";
j = "serifed";
k = "cursive-serifless";
l = "tailed-serifed";
q = "diagonal-tailed-serifless";
y = "cursive-serifless";
z = "straight-serifless-with-horizontal-crossbar";
lower-delta = "flat-top";
lower-lambda = "tailed-turn";
lower-xi = "flat-top";
lower-chi = "semi-chancery-straight";
zero = "tall-slashed";
one = "no-base";
two = "straight-neck";
three = "flat-top";
four = "semi-open";
five = "oblique-arched";
six = "open-contour";
seven = "bend-serifless-crossbar";
eight = "two-circles";
nine = "open-contour";
ampersand = "closed";
at = "fourfold";
percent = "dots";
lig-ltgteq = "flat";
lig-neq = "more-slanted";
lig-equal-chain = "without-notch";
lig-hyphen-chain = "without-notch";
lig-double-arrow-bar = "without-notch";
lig-single-arrow-bar = "without-notch";
};
};
in {
etoile = rec {
name = "Iosevka Custom Etoile";
package = iosevka.override {
set = "etoile";
privateBuildPlan = {
inherit (customBuildPlan) noCvSs exportGlyphNames variants weights;
family = name;
spacing = "quasi-proportional";
serifs = "slab";
};
};
};
aile = rec {
name = "Iosevka Custom Aile";
package = iosevka.override {
set = "aile";
privateBuildPlan = {
inherit (customBuildPlan) noCvSs exportGlyphNames variants weights;
family = name;
spacing = "quasi-proportional";
serifs = "sans";
};
};
};
nerdfont = let
font = iosevka.override {
set = "custom";
privateBuildPlan = {
inherit (customBuildPlan) noCvSs exportGlyphNames variants weights;
family = "Iosevka Custom";
spacing = "normal";
serifs = "sans";
};
};
in {
name = "IosevkaCustomNerdFont";
package = stdenv.mkDerivation {
name = "${font.name}-nerd-font-patched";
src = font;
nativeBuildInputs = [nerd-font-patcher];
buildPhase = ''
find \( -name \*.ttf -o -name \*.otf \) -execdir nerd-font-patcher -c {} \;
'';
installPhase = "cp -a . $out";
};
};
}