# 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; }