Files
2026-07-17 09:32:25 +02:00

60 lines
1.5 KiB
Nix

{
lib,
fetchFromGitHub,
buildPythonPackage,
# build-system
setuptools,
# dependencies
luna-usb,
}:
buildPythonPackage rec {
pname = "luna-soc";
version = "0.3.2";
pyproject = true;
src = fetchFromGitHub {
owner = "greatscottgadgets";
repo = "luna-soc";
tag = version;
hash = "sha256-Rks1wC0CR5FSu4TrE1thzolT3QBd0yh7q+SxZ1U+pB4=";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail '"setuptools-git-versioning<2"' "" \
--replace-fail 'dynamic = ["version"]' 'version = "${version}"'
# Read CSR field annotations from the class, not the instance, so amaranth-soc
# works on Python 3.14 (PEP 649). https://github.com/greatscottgadgets/luna-soc/issues/48
substituteInPlace luna_soc/gateware/vendor/amaranth_soc/csr/reg.py \
--replace-fail 'if hasattr(self, "__annotations__"):' \
'if getattr(type(self), "__annotations__", None):' \
--replace-fail 'filter_fields(self.__annotations__)' \
'filter_fields(type(self).__annotations__)'
'';
build-system = [
setuptools
];
dependencies = [ luna-usb ];
# has no tests
doCheck = false;
pythonImportsCheck = [
"luna_soc"
];
meta = {
changelog = "https://github.com/greatscottgadgets/luna-soc/releases/tag/${src.tag}";
description = "Amaranth HDL library for building USB-capable SoC designs";
homepage = "https://github.com/greatscottgadgets/luna-soc";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ carlossless ];
};
}