1{ lib, stdenv, linux-firmware, libarchive }:
2
3stdenv.mkDerivation {
4 pname = "amd-ucode";
5 version = linux-firmware.version;
6
7 src = linux-firmware;
8
9 sourceRoot = ".";
10
11 nativeBuildInputs = [ libarchive ];
12
13 buildPhase = ''
14 mkdir -p kernel/x86/microcode
15 find ${linux-firmware}/lib/firmware/amd-ucode -name \*.bin -print0 | sort -z |\
16 xargs -0 -I{} sh -c 'cat {} >> kernel/x86/microcode/AuthenticAMD.bin'
17 '';
18
19 installPhase = ''
20 mkdir -p $out
21 touch -d @$SOURCE_DATE_EPOCH kernel/x86/microcode/AuthenticAMD.bin
22 echo kernel/x86/microcode/AuthenticAMD.bin | bsdtar --uid 0 --gid 0 -cnf - -T - | bsdtar --null -cf - --format=newc @- > $out/amd-ucode.img
23 '';
24
25 meta = with lib; {
26 description = "AMD Processor microcode patch";
27 homepage = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git";
28 license = licenses.unfreeRedistributableFirmware;
29 platforms = platforms.linux;
30 };
31}