biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / security / chipsec / default.nix
blob73c1ade5bd6379ee8399bb43aef996e74b6ebfa2
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , kernel ? null
5 , elfutils
6 , nasm
7 , python3
8 , withDriver ? false
9 }:
11 python3.pkgs.buildPythonApplication rec {
12   pname = "chipsec";
13   version = "1.10.6";
15   disabled = !stdenv.hostPlatform.isLinux;
17   src = fetchFromGitHub {
18     owner = "chipsec";
19     repo = "chipsec";
20     rev = version;
21     hash = "sha256-+pbFG1SmSO/cnt1e+kel7ereC0I1OCJKKsS0KaJDWdc=";
22   };
24   patches = lib.optionals withDriver [ ./ko-path.diff ./compile-ko.diff ];
26   postPatch = ''
27     substituteInPlace tests/software/util.py \
28       --replace-fail "assertRegexpMatches" "assertRegex"
29   '';
31   KSRC = lib.optionalString withDriver "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
33   nativeBuildInputs = [
34     nasm
35   ] ++ lib.optionals (lib.meta.availableOn stdenv.buildPlatform elfutils) [
36     elfutils
37   ] ++ lib.optionals withDriver kernel.moduleBuildDependencies;
39   nativeCheckInputs = with python3.pkgs; [
40     distro
41     pytestCheckHook
42   ];
44   preBuild = lib.optionalString withDriver ''
45     export CHIPSEC_BUILD_LIB=$(mktemp -d)
46     mkdir -p $CHIPSEC_BUILD_LIB/chipsec/helper/linux
47   '';
49   env.NIX_CFLAGS_COMPILE = toString [
50     # Needed with GCC 12
51     "-Wno-error=dangling-pointer"
52   ];
54   preInstall = lib.optionalString withDriver ''
55     mkdir -p $out/${python3.pkgs.python.sitePackages}/drivers/linux
56     mv $CHIPSEC_BUILD_LIB/chipsec/helper/linux/chipsec.ko \
57       $out/${python3.pkgs.python.sitePackages}/drivers/linux/chipsec.ko
58   '';
60   setupPyBuildFlags = [
61     "--build-lib=$CHIPSEC_BUILD_LIB"
62   ] ++ lib.optionals (!withDriver) [
63     "--skip-driver"
64   ];
66   pythonImportsCheck = [
67     "chipsec"
68   ];
70   meta = with lib; {
71     description = "Platform Security Assessment Framework";
72     longDescription = ''
73       CHIPSEC is a framework for analyzing the security of PC platforms
74       including hardware, system firmware (BIOS/UEFI), and platform components.
75       It includes a security test suite, tools for accessing various low level
76       interfaces, and forensic capabilities. It can be run on Windows, Linux,
77       Mac OS X and UEFI shell.
78     '';
79     license = licenses.gpl2Only;
80     homepage = "https://github.com/chipsec/chipsec";
81     maintainers = with maintainers; [ johnazoidberg erdnaxe ];
82     platforms = [ "x86_64-linux" ] ++ lib.optional (!withDriver) "x86_64-darwin";
83     # https://github.com/chipsec/chipsec/issues/1793
84     broken = withDriver && kernel.kernelOlder "5.4" && kernel.isHardened;
85   };