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