1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 unstableGitUpdater,
6 setuptools,
7 setuptools-scm,
8 fonttools,
9 ufomerge,
10 fontmake,
11 glyphslib,
12 ttfautohint-py,
13 ufo2ft,
14 gftools,
15 fontbakery,
16 diffenator2,
17 chevron,
18 sh,
19 ninja,
20}:
21
22buildPythonPackage {
23 pname = "notobuilder";
24 version = "0-unstable-2025-08-20";
25 pyproject = true;
26
27 src = fetchFromGitHub {
28 owner = "notofonts";
29 repo = "notobuilder";
30 rev = "fb0d6067beee888e6132b50c227da1f051b1ef9f";
31 hash = "sha256-U9NVpXzdzBpgs8LFQJk70vs2dfHg+kD+YzuYZt6zQ5g=";
32 };
33
34 postPatch = ''
35 substituteInPlace Lib/notobuilder/__main__.py \
36 --replace-fail '"ninja"' '"${lib.getExe ninja}"'
37 '';
38
39 build-system = [
40 setuptools
41 setuptools-scm
42 ];
43
44 env.SETUPTOOLS_SCM_PRETEND_VERSION = "0.0.0";
45
46 dependencies = [
47 fonttools
48 ufomerge
49 fontmake
50 glyphslib
51 ttfautohint-py
52 ufo2ft
53 gftools
54 fontbakery
55 diffenator2
56 chevron
57 sh
58 ]
59 ++ gftools.optional-dependencies.qa;
60
61 pythonImportsCheck = [
62 "notobuilder"
63 "notoqa"
64 ];
65
66 passthru.updateScript = unstableGitUpdater { };
67
68 meta = {
69 description = "Python module for building Noto fonts";
70 homepage = "https://github.com/notofonts/notobuilder";
71 license = lib.licenses.asl20;
72 maintainers = with lib.maintainers; [ jopejoe1 ];
73 };
74}