1{ lib
2, buildPythonPackage
3, pythonOlder
4, fetchFromGitHub
5, setuptools
6, setuptools-scm
7, pyvcd
8, jinja2
9, importlib-resources
10, importlib-metadata
11, git
12
13# for tests
14, pytestCheckHook
15, yosys
16, symbiyosys
17, yices
18}:
19
20buildPythonPackage rec {
21 pname = "nmigen";
22 version = "unstable-2021-02-09";
23 # python setup.py --version
24 realVersion = "0.3.dev243+g${lib.substring 0 7 src.rev}";
25 disabled = pythonOlder "3.6";
26
27 src = fetchFromGitHub {
28 owner = "nmigen";
29 repo = "nmigen";
30 rev = "f7c2b9419f9de450be76a0e9cf681931295df65f";
31 sha256 = "0cjs9wgmxa76xqmjhsw4fsb2mhgvd85jgs2mrjxqp6fwp8rlgnl1";
32 };
33
34 nativeBuildInputs = [ setuptools-scm git ];
35
36 propagatedBuildInputs = [
37 setuptools
38 pyvcd
39 jinja2
40 ] ++
41 lib.optional (pythonOlder "3.9") importlib-resources ++
42 lib.optional (pythonOlder "3.8") importlib-metadata;
43
44 checkInputs = [ pytestCheckHook yosys symbiyosys yices ];
45
46 preBuild = ''
47 export SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}"
48 '';
49
50 meta = with lib; {
51 description = "A refreshed Python toolbox for building complex digital hardware";
52 homepage = "https://nmigen.info/nmigen";
53 license = licenses.bsd2;
54 maintainers = with maintainers; [ emily ];
55 };
56}