.files/nix/overlays/iosevka/default.nix
Léana 江 f2bd846e22
overlays/iosevka: refactor
iosevka overlay now uses iosevka config build plans in extesible forms!
2026-01-23 00:41:41 +01:00

59 lines
1.4 KiB
Nix

# A thicker family of custom build of iosevkas. Optimized for Haskell and Nix.
final: prev:
let
inherit (prev) lib;
iosevkaConfig = final: import ./privateBuildPlan.nix;
mkIosevka =
mergedConfig:
prev.iosevka.override {
# HACK:
# Used to construct pname internally, appended to "Iosevka".
# We drop the prefix so it is not duplicated.
set = lib.removePrefix "Iosevka" mergedConfig.family;
privateBuildPlan = mergedConfig;
};
mkNerdFont =
font:
final.callPackage ../../lib/mkNerdFont.nix { } {
inherit font;
patcherArgs = [
"--complete"
"--careful"
"--name {/.}-NFM"
"--mono"
];
};
identityOverlay = _: _: { };
overlays =
lib.crossLists
(
spacingCfg: variantCfg:
lib.composeManyExtensions [
spacingCfg
variantCfg
]
)
[
(import ./spacings.nix { inherit lib; })
([ identityOverlay ] ++ import ./variants.nix)
];
iosevkas = lib.genAttrs' overlays (
overlay:
let
mergedConfig = lib.fix (lib.extends overlay iosevkaConfig);
toKebabCase = x: builtins.replaceStrings [ " " ] [ "-" ] (lib.toLower x);
in
lib.nameValuePair (toKebabCase mergedConfig.family) (mkIosevka mergedConfig)
);
iosevka-nerds = builtins.mapAttrs (_: mkNerdFont) iosevkas;
in
iosevkas
// {
nerd-fonts = prev.nerd-fonts // iosevka-nerds;
}