1{
2 buildPythonPackage,
3 cmsis-svd,
4 fetchFromGitHub,
5 future,
6 ipython,
7 lib,
8 prompt-toolkit,
9 pyfwup,
10 pygreat,
11 pythonOlder,
12 pyusb,
13 setuptools,
14 tabulate,
15 tqdm,
16}:
17
18buildPythonPackage rec {
19 pname = "greatfet";
20 version = "2024.0.3";
21 pyproject = true;
22
23 disabled = pythonOlder "3.8";
24
25 src = fetchFromGitHub {
26 owner = "greatscottgadgets";
27 repo = "greatfet";
28 rev = "refs/tags/v${version}";
29 hash = "sha256-jdOTEOotLiIxA9TxmFGOjP8IZ/8xo7mzXSJRg3A5Ri4=";
30 };
31
32 sourceRoot = "${src.name}/host";
33
34 postPatch = ''
35 substituteInPlace pyproject.toml \
36 --replace-fail ', "setuptools-git-versioning<2"' "" \
37 --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
38 '';
39
40 build-system = [ setuptools ];
41
42 dependencies = [
43 cmsis-svd
44 future
45 ipython
46 prompt-toolkit
47 pyfwup
48 pygreat
49 pyusb
50 tabulate
51 tqdm
52 ];
53
54 # Tests seem to require devices (or simulators) which are
55 # not available in the build sandbox.
56 doCheck = false;
57
58 meta = {
59 description = "Hardware hacking with the greatfet";
60 homepage = "https://greatscottgadgets.com/greatfet";
61 license = lib.licenses.bsd3;
62 platforms = lib.platforms.all;
63 mainProgram = "gf";
64 maintainers = with lib.maintainers; [
65 mog
66 msanft
67 ];
68 };
69}