{ pkgs, lib, stdenv, libdrm, dpkg, vulkan-loader, patchelf, fetchurl }:

let
  sources = import ./amdgpu-src.nix { inherit fetchurl; };
in
stdenv.mkDerivation rec {
  pname = "amdgpu-firmware";
  version = sources.version;

  src = sources.bit64.amdgpu-dkms-firmware;

  passthru = {
    vcn = stdenv.mkDerivation rec {
      pname = "amdgpu-firmware-vcn";
      inherit src;
      inherit version;
      inherit meta;
      inherit unpackPhase;
      inherit dontBuild;
      inherit dontFixup;
      inherit dontPatchELF;
      inherit nativeBuildInputs;
      inherit sourceRoot;


      installPhase = ''
        mkdir -p $out/lib/firmware/amdgpu
        mv lib/firmware/updates/amdgpu/vcn* $out/lib/firmware/amdgpu
      '';

    };
  };


  dontFixup = true;
  dontBuild = true;
  dontPatchELF = true;
  sourceRoot = ".";

  nativeBuildInputs = [
    dpkg
  ];
  unpackPhase = ''
    dpkg -x $src .
  '';

  installPhase = ''
    mkdir -p $out/lib/firmware/
    mv lib/firmware/updates/amdgpu $out/lib/firmware/amdgpu
  '';

  meta = with lib; {
    description = "AMDGPU Firmware, needed to be in sync for AMF to work";
    homepage = "https://www.amd.com";
    license = licenses.unfreeRedistributableFirmware;
    platforms = platforms.linux;
  };
}