{ config, lib, pkgs, namespace, ... }: let cfg = config.${namespace}.hardware.raspberry-pi.i2c; inherit (config.${namespace}.hardware.raspberry-pi) variant; in { options.${namespace}.hardware.raspberry-pi.i2c = { enable = lib.mkEnableOption "enable i2c dt overlays"; }; config = lib.mkIf cfg.enable { hardware.deviceTree = { overlays = if (variant == "5") then [ { name = "i2c0-pi5-overlay"; dtsFile = "${ pkgs.${namespace}.raspberrypi-overlays }/dtbs/raspberrypi-overlays/i2c0-pi5-overlay.dts"; } { name = "i2c1-pi5-overlay"; dtsFile = "${ pkgs.${namespace}.raspberrypi-overlays }/dtbs/raspberrypi-overlays/i2c1-pi5-overlay.dts"; } { name = "i2c2-pi5-overlay"; dtsFile = "${ pkgs.${namespace}.raspberrypi-overlays }/dtbs/raspberrypi-overlays/i2c2-pi5-overlay.dts"; } { name = "i2c3-pi5-overlay"; dtsFile = "${ pkgs.${namespace}.raspberrypi-overlays }/dtbs/raspberrypi-overlays/i2c3-pi5-overlay.dts"; } ] else [ { name = "i2c0-overlay"; dtsFile = "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/i2c0-overlay.dts"; } { name = "i2c1-overlay"; dtsFile = "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/i2c1-overlay.dts"; } { name = "i2c3-overlay"; dtsFile = "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/i2c3-overlay.dts"; } { name = "i2c4-overlay"; dtsFile = "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/i2c4-overlay.dts"; } { name = "i2c5-overlay"; dtsFile = "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/i2c5-overlay.dts"; } { name = "i2c6-overlay"; dtsFile = "${pkgs.${namespace}.raspberrypi-overlays}/dtbs/raspberrypi-overlays/i2c6-overlay.dts"; } ]; }; }; }