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