{ description = "Iosevka fonts for Modulo Notes"; inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, utils }: utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: let pkgs = import nixpkgs { inherit system; }; in { packages.default = pkgs.stdenvNoCC.mkDerivation { name = "iosevka-modulo"; dontUnpack = true; buildInputs = with pkgs; [ python311Packages.brotli python311Packages.fonttools ]; buildPhase = let iosevka-regular = pkgs.iosevka.override { set = "regular"; privateBuildPlan = { family = "Iosevka Regular Modulo"; spacing = "normal"; serifs = "sans"; no-ligation = false; no-cv-ss = true; variants = { design = { l = "flat-tailed"; zero = "dotted"; asterisk = "turn-hex-high"; number-sign = "slanted-tall"; at = "fourfold-solid-inner"; }; }; slopes.upright = { angle = 0; shape = "upright"; menu = "upright"; css = "normal"; }; slopes.italic = { angle = 9.4; shape = "italic"; menu = "italic"; css = "italic"; }; weights.regular = { shape = 400; menu = 400; css = 400; }; weights.bold = { shape = 700; menu = 700; css = 700; }; weights.heavy = { shape = 900; menu = 900; css = 900; }; }; }; 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 = { design = { l = "serifed-flat-tailed"; zero = "dotted"; asterisk = "turn-hex-high"; number-sign = "slanted-tall"; at = "fourfold-solid-inner"; }; }; 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; }; weights.bold = { shape = 700; menu = 700; css = 700; }; weights.heavy = { shape = 900; menu = 900; css = 900; }; }; }; in '' mkdir -p ttf for ttf in ${iosevka-regular}/share/fonts/truetype/*.ttf ${iosevka-etoile}/share/fonts/truetype/*.ttf; do cp $ttf . echo "processing $ttf" name=`basename -s .ttf $ttf` pyftsubset \ $ttf \ --output-file="$name".woff2 \ --flavor=woff2 \ --layout-features=* \ --no-hinting \ --desubroutinize \ --unicodes="U+0000-0170,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD,U+00E8" mv *.ttf ttf done ${pkgs.zip}/bin/zip ttf.zip ttf/*.ttf ${pkgs.python3}/bin/python3 ${./src/specimen.py} ''; installPhase = '' mkdir -p $out cp *.woff2 $out cp ttf.zip $out cp ${src/family.css} $out/family.css cp *.html $out ''; }; devShells.default = pkgs.mkShell { buildInputs = [pkgs.python3]; }; }); }