1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 nix-update-script,
6 setuptools-rust,
7 rustPlatform,
8 cargo,
9 rustc,
10 pkg-config,
11 llvmPackages,
12 libxml2,
13 ncurses,
14 zlib,
15}:
16
17buildPythonPackage rec {
18 pname = "verilogae";
19 version = "24.0.0mob-unstable-2025-07-21";
20 pyproject = true;
21
22 stdenv = llvmPackages.stdenv;
23
24 src = fetchFromGitHub {
25 owner = "OpenVAF";
26 repo = "OpenVAF-Reloaded";
27 rev = "d878f5519b1767b64c6ebeb4d67e29e7cd46e60b";
28 hash = "sha256-TDE2Ewokhm2KSKe+sunUbV8KD3kaTSd5dB3CLCWGJ9U=";
29 };
30
31 postPatch = ''
32 substituteInPlace openvaf/osdi/build.rs \
33 --replace-fail "-fPIC" ""
34 '';
35
36 cargoDeps = rustPlatform.fetchCargoVendor {
37 inherit pname version src;
38 hash = "sha256-5SLrVL3h6+tptHv3GV7r8HUTrYQC9VdF68O2/Uct3xA=";
39 };
40
41 nativeBuildInputs = [
42 setuptools-rust
43 rustPlatform.cargoSetupHook
44 rustPlatform.bindgenHook
45 cargo
46 rustc
47 pkg-config
48 llvmPackages.llvm
49 ];
50
51 buildInputs = [
52 libxml2.dev
53 llvmPackages.libclang
54 ncurses
55 zlib
56 ];
57
58 cargoBuildType = "release";
59
60 pythonImportsCheck = [ "verilogae" ];
61
62 hardeningDisable = [ "pic" ];
63
64 passthru.updateScript = nix-update-script {
65 extraArgs = [ "--version=branch" ];
66 };
67
68 meta = {
69 description = "Verilog-A tool useful for compact model parameter extraction";
70 homepage = "https://man.sr.ht/~dspom/openvaf_doc/verilogae/";
71 license = lib.licenses.gpl3Only;
72 maintainers = with lib.maintainers; [
73 jasonodoom
74 jleightcap
75 ];
76 platforms = lib.platforms.unix;
77 sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
78 };
79}