1{ lib
2, buildPythonPackage
3, pythonOlder
4, fetchFromGitHub
5, fetchpatch
6, pdm
7, python3
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 # python -m setuptools_scm
25 version = "0.4.dev197+g${lib.substring 0 7 src.rev}";
26 disabled = pythonOlder "3.8";
27
28 src = fetchFromGitHub {
29 owner = "amaranth-lang";
30 repo = "amaranth";
31 rev = "11d5bb19eb34463918c07dc5e2e0eac7dbf822b0";
32 sha256 = "sha256-Ji5oYfF2hKSunAdAQTniv8Ajj6NE/bvW5cvadrGKa+U=";
33 };
34
35 nativeBuildInputs = [
36 git
37 ];
38
39 propagatedBuildInputs = [
40 jinja2
41 pdm
42 pyvcd
43 python3.pkgs.pdm-backend
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 = "A modern hardware definition language and toolchain based on Python";
59 homepage = "https://amaranth-lang.org/docs/amaranth";
60 license = licenses.bsd2;
61 maintainers = with maintainers; [ emily thoughtpolice ];
62 };
63}