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