.files/nix/overlays/iosevka/default.nix

58 lines
1.3 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)
([ identityOverlay ] ++ import ./variants.nix)
];
iosevkas = lib.genAttrs' overlays (
overlay:
let
mergedConfig = lib.fix (lib.extends overlay iosevkaConfig);
in
lib.nameValuePair mergedConfig.family (mkIosevka mergedConfig)
);
iosevka-nerds = builtins.mapAttrs (_: mkNerdFont) iosevkas;
in
iosevkas
// {
nerd-fonts = prev.nerd-fonts // iosevka-nerds;
}