1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 pdm-backend,
7 pyvcd,
8 jinja2,
9 importlib-resources,
10 importlib-metadata,
11 git,
12
13 # for tests
14 pytestCheckHook,
15 symbiyosys,
16 yices,
17 yosys,
18}:
19
20buildPythonPackage rec {
21 pname = "amaranth";
22 format = "pyproject";
23 version = "0.4.5";
24 disabled = pythonOlder "3.8";
25
26 src = fetchFromGitHub {
27 owner = "amaranth-lang";
28 repo = "amaranth";
29 rev = "refs/tags/v${version}";
30 hash = "sha256-g9dn6gUTdFHz9GMWHERsRLWHoI3E7vjuQDK0usbZO7g=";
31 };
32
33 nativeBuildInputs = [
34 git
35 pdm-backend
36 ];
37
38 dependencies =
39 [
40 jinja2
41 pyvcd
42 ]
43 ++ lib.optional (pythonOlder "3.9") importlib-resources
44 ++ lib.optional (pythonOlder "3.8") importlib-metadata;
45
46 nativeCheckInputs = [
47 pytestCheckHook
48 symbiyosys
49 yices
50 yosys
51 ];
52
53 pythonImportsCheck = [ "amaranth" ];
54
55 meta = with lib; {
56 description = "A modern hardware definition language and toolchain based on Python";
57 mainProgram = "amaranth-rpc";
58 homepage = "https://amaranth-lang.org/docs/amaranth";
59 license = licenses.bsd2;
60 maintainers = with maintainers; [
61 emily
62 thoughtpolice
63 pbsds
64 ];
65 };
66}