1{
2 lib,
3
4 buildPythonPackage,
5 fetchFromGitHub,
6 pythonOlder,
7
8 nix-update-script,
9 pcpp,
10 platformdirs,
11 poetry-core,
12 pydantic,
13 pydantic-settings,
14 pyparsing,
15 pyyaml,
16 tree-sitter,
17 tree-sitter-grammars,
18 versionCheckHook,
19}:
20let
21 version = "0.22.1";
22in
23buildPythonPackage {
24 inherit version;
25 pname = "keymap-drawer";
26 pyproject = true;
27 disabled = pythonOlder "3.12";
28
29 src = fetchFromGitHub {
30 owner = "caksoylar";
31 repo = "keymap-drawer";
32 tag = "v${version}";
33 hash = "sha256-X3O5yspEdey03YQ6JsYN/DE9NUiq148u1W6LQpUQ3ns=";
34 };
35
36 build-system = [ poetry-core ];
37
38 pythonRelaxDeps = [
39 "tree-sitter-devicetree"
40 ];
41
42 dependencies = [
43 pcpp
44 platformdirs
45 pydantic
46 pydantic-settings
47 pyparsing
48 pyyaml
49 tree-sitter
50 tree-sitter-grammars.tree-sitter-devicetree
51 ];
52
53 nativeCheckInputs = [
54 versionCheckHook
55 ];
56
57 pythonImportsCheck = [ "keymap_drawer" ];
58
59 versionCheckProgram = "${placeholder "out"}/bin/keymap";
60 versionCheckProgramArg = "--version";
61
62 passthru.updateScript = nix-update-script { };
63
64 meta = {
65 description = "Module and CLI tool to help parse and draw keyboard layouts";
66 homepage = "https://github.com/caksoylar/keymap-drawer";
67 changelog = "https://github.com/caksoylar/keymap-drawer/releases/tag/v${version}";
68 license = lib.licenses.mit;
69 maintainers = with lib.maintainers; [
70 MattSturgeon
71 ];
72 mainProgram = "keymap";
73 };
74}