aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-03-18 15:18:21 -0400
committerXe Iaso <me@xeiaso.net>2023-03-18 15:18:21 -0400
commitccf0864e49a3dcf4c42c4a8a5f62877b45148cb4 (patch)
tree3ec4d12c74c8b080c9ac3a8b6a6a4e9569eb9966 /flake.nix
parentf0f0ad8df5c5ad5e9940b4d65d47f89c9f502798 (diff)
downloadxesite-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.nix164
1 files changed, 163 insertions, 1 deletions
diff --git a/flake.nix b/flake.nix
index 2d9dfb9..8db7b09 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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 {