Evie Litherland-Smith
7a10373030
Move all of the logic for configuring and building the custom fonts to iosevka.nix, to keep everything relevant in one place.
110 lines
2.8 KiB
Nix
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";
|
|
};
|
|
};
|
|
}
|