ocamlPackages.hxd: 0.3.2 -> 0.3.3 (#364231)
[NixPkgs.git] / pkgs / tools / misc / coreboot-utils / default.nix
blob82c0acd63f1217f50b538b2faa9cebec6632bf45
2   lib,
3   stdenv,
4   fetchgit,
5   pkg-config,
6   zlib,
7   pciutils,
8   openssl,
9   coreutils,
10   acpica-tools,
11   makeWrapper,
12   gnugrep,
13   gnused,
14   file,
15   buildEnv,
18 let
19   version = "24.08";
21   commonMeta = {
22     description = "Various coreboot-related tools";
23     homepage = "https://www.coreboot.org";
24     license = with lib.licenses; [
25       gpl2Only
26       gpl2Plus
27     ];
28     maintainers = with lib.maintainers; [
29       felixsinger
30       jmbaur
31     ];
32     platforms = lib.platforms.linux;
33   };
35   generic =
36     {
37       pname,
38       path ? "util/${pname}",
39       ...
40     }@args:
41     stdenv.mkDerivation (
42       {
43         inherit pname version;
45         src = fetchgit {
46           url = "https://review.coreboot.org/coreboot";
47           rev = version;
48           hash = "sha256-BwuoBuWKHTnSwV8ubm5NqcddgxP5OMXuTl3zmwwKEsg=";
49         };
51         enableParallelBuilding = true;
53         postPatch = ''
54           substituteInPlace 3rdparty/vboot/Makefile --replace 'ar qc ' '$$AR qc '
55           cd ${path}
56           patchShebangs .
57         '';
59         makeFlags = [
60           "INSTALL=install"
61           "PREFIX=${placeholder "out"}"
62         ];
64         meta = commonMeta // args.meta;
65       }
66       // (removeAttrs args [ "meta" ])
67     );
69   utils = {
70     msrtool = generic {
71       pname = "msrtool";
72       meta.description = "Dump chipset-specific MSR registers";
73       meta.platforms = [
74         "x86_64-linux"
75         "i686-linux"
76       ];
77       buildInputs = [
78         pciutils
79         zlib
80       ];
81       preConfigure = "export INSTALL=install";
82     };
83     cbmem = generic {
84       pname = "cbmem";
85       meta.description = "coreboot console log reader";
86     };
87     ifdtool = generic {
88       pname = "ifdtool";
89       meta.description = "Extract and dump Intel Firmware Descriptor information";
90     };
91     intelmetool = generic {
92       pname = "intelmetool";
93       meta.description = "Dump interesting things about Management Engine";
94       meta.platforms = [
95         "x86_64-linux"
96         "i686-linux"
97       ];
98       buildInputs = [
99         pciutils
100         zlib
101       ];
102     };
103     cbfstool = generic {
104       pname = "cbfstool";
105       meta.description = "Management utility for CBFS formatted ROM images";
106     };
107     nvramtool = generic {
108       pname = "nvramtool";
109       meta.description = "Read and write coreboot parameters and display information from the coreboot table in CMOS/NVRAM";
110       meta.mainProgram = "nvramtool";
111     };
112     superiotool = generic {
113       pname = "superiotool";
114       meta.description = "User-space utility to detect Super I/O of a mainboard and provide detailed information about the register contents of the Super I/O";
115       meta.platforms = [
116         "x86_64-linux"
117         "i686-linux"
118       ];
119       buildInputs = [
120         pciutils
121         zlib
122       ];
123     };
124     ectool = generic {
125       pname = "ectool";
126       meta.description = "Dump the RAM of a laptop's Embedded/Environmental Controller (EC)";
127       meta.platforms = [
128         "x86_64-linux"
129         "i686-linux"
130       ];
131       preInstall = "mkdir -p $out/sbin";
132     };
133     inteltool = generic {
134       pname = "inteltool";
135       meta.description = "Provides information about Intel CPU/chipset hardware configuration (register contents, MSRs, etc)";
136       meta.platforms = [
137         "x86_64-linux"
138         "i686-linux"
139       ];
140       buildInputs = [
141         pciutils
142         zlib
143       ];
144     };
145     amdfwtool = generic {
146       pname = "amdfwtool";
147       meta.description = "Create AMD firmware combination";
148       buildInputs = [ openssl ];
149       nativeBuildInputs = [ pkg-config ];
150       installPhase = ''
151         runHook preInstall
153         install -Dm755 amdfwtool $out/bin/amdfwtool
155         runHook postInstall
156       '';
157     };
158     acpidump-all = generic {
159       pname = "acpidump-all";
160       path = "util/acpi";
161       meta.description = "Walk through all ACPI tables with their addresses";
162       nativeBuildInputs = [ makeWrapper ];
163       dontBuild = true;
164       installPhase = ''
165         runHook preInstall
167         install -Dm755 acpidump-all $out/bin/acpidump-all
169         runHook postInstall
170       '';
171       postFixup = ''
172         wrapProgram $out/bin/acpidump-all \
173           --set PATH ${
174             lib.makeBinPath [
175               coreutils
176               acpica-tools
177               gnugrep
178               gnused
179               file
180             ]
181           }
182       '';
183     };
184   };
187 utils
188 // {
189   coreboot-utils =
190     (buildEnv {
191       name = "coreboot-utils-${version}";
192       paths = lib.filter (lib.meta.availableOn stdenv.hostPlatform) (lib.attrValues utils);
193       postBuild = "rm -rf $out/sbin";
194     })
195     // {
196       inherit version;
197       meta = commonMeta;
198     };