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}