{ config, lib, pkgs, ... }:

with lib;

{

  ###### interface

  options = {

    hardware.cpu.amd.updateMicrocode = mkOption {
      default = false;
      type = types.bool;
      description = ''
        Update the CPU microcode for AMD processors.
      '';
    };

  };


  ###### implementation

  config = mkIf config.hardware.cpu.amd.updateMicrocode {
    hardware.firmware = [ "${pkgs.amdUcode}/lib/firmware" ];
    boot.kernelModules = [ "microcode" ];
  };

}

{ config, lib, pkgs, ... }:

with lib;

{

  ###### interface

  options = {

    hardware.cpu.amd.updateMicrocode = mkOption {
      default = false;
      type = types.bool;
      description = ''
        Update the CPU microcode for AMD processors.
      '';
    };

  };


  ###### implementation

  config = mkIf config.hardware.cpu.amd.updateMicrocode {
    boot.initrd.prepend = [ "${pkgs.microcodeAmd}/amd-ucode.img" ];
  };

}

Update to early initrd loader
nixos/microcode-amd: Update to early initrd loader
