summaryrefslogtreecommitdiffstats
path: root/pkgs/data/fonts/iosevka/comfy.nix
blob: 0fc7c0a76d7b3d466611103c3a9fb80efb156af5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{
  lib,
  iosevka,
  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 = "2.1.0";
  src = fetchFromGitHub {
    owner = "protesilaos";
    repo = "iosevka-comfy";
    rev = version;
    sha256 = "sha256-z9OlxeD88HuPJF88CsAy3vd1SFpJF1qh5c/0AIeMA7o=";
  };
  privateBuildPlan = src.outPath + "/private-build-plans.toml";
  makeIosevkaFont =
    set:
    let
      superBuildNpmPackage = buildNpmPackage;
    in
    (iosevka.override {
      inherit set privateBuildPlan;
      buildNpmPackage =
        args:
        superBuildNpmPackage (
          args
          // {
            pname = "iosevka-${set}";
            inherit version;

            src = fetchFromGitHub {
              owner = "be5invis";
              repo = "iosevka";
              rev = "v31.9.1";
              hash = "sha256-eAC4afBfHfiteYCzBNGFG2U/oCA7C5CdUlQVSO9Dg6E=";
            };

            npmDepsHash = "sha256-xwGR21+CpZRFdZYz8SQrSf1tkp3fjGudoMmP5TGgEe8=";

            meta = {
              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 = lib.licenses.ofl;
              platforms = iosevka.meta.platforms;
              maintainers = [ lib.maintainers.DamienCassou ];
            };
          }
        );
    });
in
builtins.listToAttrs (
  map (set: {
    name = set;
    value = makeIosevkaFont set;
  }) sets
)