# 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 = let # Useless complexity just for the fun n-airyToList = acc: x: { value = acc ++ [ x ]; __functor = self: n-airyToList self.value; }; combinations = lib.crossLists (n-airyToList [ ]) [ (import ./spacings.nix) ([ identityOverlay ] ++ import ./variants.nix) ]; in map ({ value, ... }: lib.composeManyExtensions value) combinations; 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; }