1{ lib, stdenv, fetchFromGitHub, libarchive, iucode-tool }:
2
3stdenv.mkDerivation rec {
4 pname = "microcode-intel";
5 version = "20240514";
6
7 src = fetchFromGitHub {
8 owner = "intel";
9 repo = "Intel-Linux-Processor-Microcode-Data-Files";
10 rev = "microcode-${version}";
11 hash = "sha256-6XHlAtQzHtlRs3Zy4+CC/XGJS/PkDPtTg/Y2bX7PJek=";
12 };
13
14 nativeBuildInputs = [ iucode-tool libarchive ];
15
16 installPhase = ''
17 runHook preInstall
18
19 mkdir -p $out kernel/x86/microcode
20 iucode_tool -w kernel/x86/microcode/GenuineIntel.bin intel-ucode/
21 touch -d @$SOURCE_DATE_EPOCH kernel/x86/microcode/GenuineIntel.bin
22 echo kernel/x86/microcode/GenuineIntel.bin | bsdtar --uid 0 --gid 0 -cnf - -T - | bsdtar --null -cf - --format=newc @- > $out/intel-ucode.img
23
24 runHook postInstall
25 '';
26
27 meta = with lib; {
28 homepage = "https://www.intel.com/";
29 changelog = "https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/tag/${src.rev}";
30 description = "Microcode for Intel processors";
31 license = licenses.unfreeRedistributableFirmware;
32 platforms = platforms.linux;
33 maintainers = with maintainers; [ ];
34 };
35}