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

let
  cfg = config.greg.rpi4;

in
with lib;
{
  options = {
    greg.rpi4 = {
      enable = mkEnableOption "Enable support for Raspberry Pi 4s";
    };
  };

  config = mkIf cfg.enable {
    boot = {
      # This prevents us from having to compile our own kernel
      kernelPackages = pkgs.linuxPackages_rpi4;
      kernelParams = [
        "8250.nr_uarts=1"
        "console=ttyAMA0,115200"
        "console=tty1"
        "cma=128M"
      ];

      loader = {
        raspberryPi = {
          enable = true;
          version = 4;
        };

        # Use the extlinux boot loader. (NixOS wants to enable GRUB by default)
        grub.enable = false;

        # Enables the generation of /boot/extlinux/extlinux.conf
        #generic-extlinux-compatible.enable = true;
      };
    };

    environment.systemPackages = with pkgs; [
      raspberrypifw
      usbutils
    ];
  };
}
