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

with pkgs;

{
  # A bunch of boot parameters needed for optimal runtime on RPi 4B
  boot.kernelPackages = linuxPackages_rpi4;
  boot.kernelParams = [
    "zfs.zfs_arc_max=134217728"
    "console=TTYAMA0,115200"
    "console=tty1"
    "8250.nr_uarts=1"
    "iomem=relaxed"
    "strict-devmem=0"
  ];

  # Enable SATA-HAT GPIO features
  boot.loader = {
    grub.enable = false;
    generic-extlinux-compatible.enable = lib.mkForce false;
  };
  boot.loader.raspberryPi = {
    enable = true;
    version = 4;
    firmwareConfig = ''
      iomem=relaxed
      strict-devmem=0
      dtoverlay=w1-gpio
    '';
  };

  boot.kernelModules = [ "pwm_bcm2835" "w1-gpio" "w1-therm" ];
  # Load PWM hardware timers
  hardware.raspberry-pi."4".pwm0.enable = true;

  # Enable I2C
  hardware.raspberry-pi."4".i2c1.enable = true;

}