diff options
| author | Xe Iaso <me@xeiaso.net> | 2023-03-18 15:18:21 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2023-03-18 15:18:21 -0400 |
| commit | ccf0864e49a3dcf4c42c4a8a5f62877b45148cb4 (patch) | |
| tree | 3ec4d12c74c8b080c9ac3a8b6a6a4e9569eb9966 /flake.nix | |
| parent | f0f0ad8df5c5ad5e9940b4d65d47f89c9f502798 (diff) | |
| download | xesite-ccf0864e49a3dcf4c42c4a8a5f62877b45148cb4.tar.xz xesite-ccf0864e49a3dcf4c42c4a8a5f62877b45148cb4.zip | |
flake: build Iosevka Iaso fonts
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 164 |
1 files changed, 163 insertions, 1 deletions
@@ -31,6 +31,7 @@ }; naersk-lib = naersk.lib."${system}"; src = ./.; + lib = pkgs.lib; tex = with pkgs; texlive.combine { inherit (texlive) scheme-medium bitter titlesec; }; @@ -111,6 +112,167 @@ paths = [ share-button wasiterm ]; }; + iosevka = pkgs.stdenvNoCC.mkDerivation { + name = "custom-iosevka"; + dontUnpack = true; + buildPhase = + let + metric-override = { + cap = 790; + ascender = 790; + xHeight = 570; + }; + iosevka-term = pkgs.iosevka.override { + set = "curly"; + privateBuildPlan = { + family = "Iosevka Term Iaso"; + spacing = "term"; + serifs = "sans"; + no-ligation = false; + ligations = { + "inherit" = "default-calt"; + }; + no-cv-ss = true; + variants = { + inherits = "ss01"; + design = { + tilde = "low"; + number-sign = "slanted-tall"; + at = "fourfold-solid-inner-tall"; + }; + }; + slopes.upright = { + angle = 0; + shape = "upright"; + menu = "upright"; + css = "normal"; + }; + weights.regular = { + shape = 400; + menu = 400; + css = 400; + }; + widths.normal = { + shape = 600; + menu = 7; + css = "expanded"; + }; + inherit metric-override; + }; + }; + iosevka-aile = pkgs.iosevka.override { + set = "aile"; + privateBuildPlan = { + family = "Iosevka Aile Iaso"; + spacing = "quasi-proportional-extension-only"; + no-ligation = true; + no-cv-ss = true; + variants = { + inherits = "ss01"; + design = { + tilde = "low"; + number-sign = "slanted-tall"; + at = "fourfold-solid-inner-tall"; + }; + }; + slopes = { + upright = { + angle = 0; + shape = "upright"; + menu = "upright"; + css = "normal"; + }; + italic = { + angle = 9.4; + shape = "italic"; + menu = "italic"; + css = "italic"; + }; + }; + weights.regular = { + shape = 400; + menu = 400; + css = 400; + }; + widths.normal = { + shape = 550; + menu = 7; + css = "expanded"; + }; + inherit metric-override; + }; + }; + iosevka-etoile = pkgs.iosevka.override { + set = "etoile"; + privateBuildPlan = { + family = "Iosevka Etoile Iaso"; + spacing = "quasi-proportional"; + serifs = "slab"; + no-ligation = true; + no-cv-ss = true; + variants = { + inherits = "ss01"; + design = { + capital-w = "straight-flat-top"; + f = "flat-hook-serifed"; + j = "flat-hook-serifed"; + t = "flat-hook"; + capital-t = "serifed"; # not part of original Iosevka Aile + w = "straight-flat-top"; + #capital-g = "toothless-rounded-serifless-hooked"; + r = "corner-hooked"; + + tilde = "low"; + number-sign = "slanted-tall"; + at = "fourfold-solid-inner-tall"; + }; + italic = { + f = "flat-hook-tailed"; + }; + }; + slopes = { + upright = { + angle = 0; + shape = "upright"; + menu = "upright"; + css = "normal"; + }; + italic = { + angle = 9.4; + shape = "italic"; + menu = "italic"; + css = "italic"; + }; + }; + weights.regular = { + shape = 400; + menu = 400; + css = 400; + }; + widths.normal = { + shape = 600; + menu = 7; + css = "expanded"; + }; + inherit metric-override; + }; + }; + in + '' + mkdir -p ttf + for ttf in ${iosevka-term}/share/fonts/truetype/*.ttf ${iosevka-aile}/share/fonts/truetype/*.ttf ${iosevka-etoile}/share/fonts/truetype/*.ttf; do + cp $ttf . + ${pkgs.woff2}/bin/woff2_compress *.ttf + mv *.ttf ttf + done + ''; + installPhase = '' + mkdir -p $out/static/css/iosevka + cp *.woff2 $out/static/css/iosevka + cp ttf/*.ttf $out/static/css/iosevka + ''; + }; + static = pkgs.stdenv.mkDerivation { pname = "xesite-static"; inherit (bin) version; @@ -142,7 +304,7 @@ default = pkgs.symlinkJoin { name = "xesite-${bin.version}"; - paths = [ config posts static bin frontend resumePDF ]; + paths = [ config posts static bin frontend resumePDF iosevka ]; }; docker = pkgs.dockerTools.buildLayeredImage { |
