depot/third_party/nixpkgs/pkgs/data/fonts/iosevka/comfy.nix

68 lines
2.8 KiB
Nix
Raw Normal View History

{ lib, iosevka, fetchFromSourcehut, fetchFromGitHub, buildNpmPackage }:
let
sets = [
# Family | Shapes | Spacing | Style | Ligatures |
# ------------------------+--------+---------+------------+-----------|
"comfy" # Sans | Compact | Monospaced | Yes |
"comfy-fixed" # Sans | Compact | Monospaced | No |
"comfy-duo" # Sans | Compact | Duospaced | Yes |
# ------------------------+--------+---------+------------+-----------|
"comfy-motion" # Slab | Compact | Monospaced | Yes |
"comfy-motion-fixed" # Slab | Compact | Monospaced | No |
"comfy-motion-duo" # Slab | Compact | Duospaced | Yes |
# ------------------------+--------+---------+------------+-----------|
"comfy-wide" # Sans | Wide | Monospaced | Yes |
"comfy-wide-fixed" # Sans | Wide | Monospaced | No |
"comfy-wide-duo" # Sans | Wide | Duospaced | Yes |
# ------------------------+--------+---------+------------+-----------|
"comfy-wide-motion" # Slab | Wide | Monospaced | Yes |
"comfy-wide-motion-fixed" # Slab | Wide | Monospaced | No |
"comfy-wide-motion-duo" # Slab | Wide | Duospaced | Yes |
];
version = "1.3.0";
src = fetchFromSourcehut {
owner = "~protesilaos";
repo = "iosevka-comfy";
rev = version;
sha256 = "sha256-ajzUbobNf+Je8ls9htOCLPsB0OPSiqZzrc8bO6hQvio=";
};
privateBuildPlan = src.outPath + "/private-build-plans.toml";
makeIosevkaFont = set:
let superBuildNpmPackage = buildNpmPackage; in
(iosevka.override rec {
inherit set privateBuildPlan;
buildNpmPackage = args: superBuildNpmPackage
(args // {
inherit version;
src = fetchFromGitHub {
owner = "be5invis";
repo = "iosevka";
rev = "7ef24b8d87fe50793444f9f84b140767f7e47029";
hash = "sha256-RVBgJVMNyxV1KeNniwySsJUOmLDh6sFZju8szvzKlH4=";
};
npmDepsHash = "sha256-yogUBf+yfjfK8DE4gGgoGaTaYZagW8R1pCn7y0rEPt4=";
meta = with lib; {
inherit (src.meta) homepage;
description = ''
Customised build of the Iosevka typeface, with a consistent
rounded style and overrides for almost all individual glyphs
in both roman (upright) and italic (slanted) variants.
'';
license = licenses.ofl;
platforms = iosevka.meta.platforms;
maintainers = [ maintainers.DamienCassou ];
};
});
});
in
builtins.listToAttrs (builtins.map
(set: {
name = set;
value = makeIosevkaFont set;
})
sets)