mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  lib,
 | 
						|
  callPackage,
 | 
						|
  linuxPackagesFor,
 | 
						|
  kernelPatches,
 | 
						|
  fetchFromGitLab,
 | 
						|
  ...
 | 
						|
}:
 | 
						|
let
 | 
						|
  modDirVersion = "6.16.5";
 | 
						|
  reformDebianPackages = fetchFromGitLab {
 | 
						|
    domain = "source.mnt.re";
 | 
						|
    owner = "reform";
 | 
						|
    repo = "reform-debian-packages";
 | 
						|
    rev = "830c94db42beef876dc58ea56711659ae7bd415d";
 | 
						|
    hash = "sha256-mdORgTOM7RJnEjY5G/iWMHf69wQkql11yRpQ/DrQKb4=";
 | 
						|
  };
 | 
						|
  linuxPkg =
 | 
						|
    {
 | 
						|
      lib,
 | 
						|
      fetchzip,
 | 
						|
      buildLinux,
 | 
						|
      callPackage,
 | 
						|
      ...
 | 
						|
    }@args:
 | 
						|
    buildLinux (
 | 
						|
      args
 | 
						|
      // rec {
 | 
						|
        version = "${modDirVersion}-mnt-reform";
 | 
						|
        inherit modDirVersion;
 | 
						|
 | 
						|
        src = fetchzip {
 | 
						|
          url = "mirror://kernel/linux/kernel/v${lib.versions.major modDirVersion}.x/linux-${modDirVersion}.tar.xz";
 | 
						|
          hash = "sha256-XiTuH40b3VJqzwygZzU0FcvMDj41Rq6IsMbm+3+QxDY=";
 | 
						|
        };
 | 
						|
 | 
						|
        kernelPatches =
 | 
						|
          (map (patch: { inherit patch; }) (
 | 
						|
            lib.filesystem.listFilesRecursive "${reformDebianPackages}/linux/patches${lib.versions.majorMinor modDirVersion}"
 | 
						|
          ))
 | 
						|
          ++ [
 | 
						|
            {
 | 
						|
              patch = callPackage ./dtsPatch.nix {
 | 
						|
                inherit reformDebianPackages;
 | 
						|
                kernelSource = src;
 | 
						|
              };
 | 
						|
            }
 | 
						|
          ];
 | 
						|
 | 
						|
        structuredExtraConfig = with lib.kernel; {
 | 
						|
          # configuration options from https://source.mnt.re/reform/reform-debian-packages/-/blob/7f31ba3a6742d60d8d502c1d86e63ef5df3916bf/linux/config
 | 
						|
          DRM_LVDS_CODEC = module;
 | 
						|
          DRM_CDNS_MHDP8546 = module;
 | 
						|
          DRM_CDNS_HDMI_CEC = module;
 | 
						|
          DRM_IMX_CDNS_MHDP = module;
 | 
						|
          DRM_IMX_DCSS = module;
 | 
						|
          # PHY_FSL_IMX8MQ_HDPTX = module; # configuration option does not exist
 | 
						|
          DRM_PANEL_LVDS = module;
 | 
						|
          I2C_IMX_LPI2C = module;
 | 
						|
          I2C_MUX_REG = module;
 | 
						|
          INTERCONNECT_IMX = yes;
 | 
						|
          INTERCONNECT_IMX8MQ = yes;
 | 
						|
          MFD_WM8994 = module;
 | 
						|
          MUX_GPIO = module;
 | 
						|
          MUX_MMIO = module;
 | 
						|
          RTC_DRV_PCF8523 = module;
 | 
						|
          USB_EHCI_FSL = module;
 | 
						|
          # NO_HZ_IDLE = yes; # conflicts with NO_HZ_FULL
 | 
						|
          SND_SOC_FSL_MICFIL = module;
 | 
						|
          SND_IMX_SOC = module;
 | 
						|
          SND_SOC_FSL_ASOC_CARD = module;
 | 
						|
          SND_SOC_IMX_AUDMIX = module;
 | 
						|
          SND_SOC_IMX_HDMI = module;
 | 
						|
          INPUT_JOYSTICK = yes;
 | 
						|
          JOYSTICK_XPAD = module;
 | 
						|
          JOYSTICK_XPAD_FF = yes;
 | 
						|
          JOYSTICK_XPAD_LEDS = yes;
 | 
						|
 | 
						|
          INTERCONNECT_IMX8MP = yes;
 | 
						|
          SND_SOC_FSL_ASRC = yes;
 | 
						|
          DRM_IMX_LCDIF = yes;
 | 
						|
          DRM_IMX8MP_DW_HDMI_BRIDGE = yes;
 | 
						|
          DRM_IMX8MP_HDMI_PVI = yes;
 | 
						|
          IMX8MM_THERMAL = yes;
 | 
						|
          IMX2_WDT = yes;
 | 
						|
          DRM_SAMSUNG_DSIM = yes;
 | 
						|
          PHY_FSL_SAMSUNG_HDMI_PHY = yes;
 | 
						|
          DRM = yes;
 | 
						|
          DRM_PANEL_MNT_POCKET_REFORM = module;
 | 
						|
          IMX8M_BLK_CTRL = yes;
 | 
						|
          IMX_GPCV2_PM_DOMAINS = yes;
 | 
						|
          DRM_DISPLAY_CONNECTOR = yes;
 | 
						|
          DRM_FSL_LDB = yes;
 | 
						|
          BACKLIGHT_CLASS_DEVICE = yes;
 | 
						|
          BACKLIGHT_PWM = yes;
 | 
						|
          BACKLIGHT_GPIO = yes;
 | 
						|
          BACKLIGHT_LED = yes;
 | 
						|
          CPU_FREQ_GOV_PERFORMANCE = yes;
 | 
						|
          CPU_FREQ_GOV_POWERSAVE = yes;
 | 
						|
          CPU_FREQ_GOV_USERSPACE = yes;
 | 
						|
          CPU_FREQ_GOV_ONDEMAND = yes;
 | 
						|
          CPU_FREQ_GOV_CONSERVATIVE = yes;
 | 
						|
          CPU_FREQ_GOV_SCHEDUTIL = yes;
 | 
						|
          ARM_IMX_CPUFREQ_DT = yes;
 | 
						|
          ARM_IMX_BUS_DEVFREQ = yes;
 | 
						|
          IMX_IRQSTEER = yes;
 | 
						|
 | 
						|
          PCI_MESON = yes;
 | 
						|
          DWMAC_MESON = module;
 | 
						|
          MDIO_BUS_MUX_MESON_G12A = yes;
 | 
						|
          I2C_MESON = yes;
 | 
						|
          PWM_MESON = yes;
 | 
						|
          USB_DWC3_MESON_G12A = yes;
 | 
						|
          MMC_MESON_GX = yes;
 | 
						|
          MMC_MESON_MX_SDIO = yes;
 | 
						|
          MESON_DDR_PMU = yes;
 | 
						|
          RTW88_8822CS = module;
 | 
						|
 | 
						|
          PWM_FSL_FTM = yes;
 | 
						|
          FSL_RCPM = yes;
 | 
						|
 | 
						|
          ARCH_ROCKCHIP = yes;
 | 
						|
          # ARM_ROCKCHIP_CPUFREQ = module; # configuration option does not exist
 | 
						|
          DRM_PANTHOR = module;
 | 
						|
          NVMEM_ROCKCHIP_OTP = yes;
 | 
						|
          PHY_ROCKCHIP_SAMSUNG_HDPTX = module;
 | 
						|
          PHY_ROCKCHIP_USBDP = module;
 | 
						|
          REGULATOR = yes;
 | 
						|
          # ROCKCHIP_REGULATOR_COUPLER = yes; # configuration option does not exist
 | 
						|
          SPI_ROCKCHIP = yes;
 | 
						|
          SPI_ROCKCHIP_SFC = module;
 | 
						|
          ARM_SCMI_CPUFREQ = module;
 | 
						|
          VIDEO_ROCKCHIP_VDEC2 = module;
 | 
						|
          ROCKCHIP_DW_HDMI_QP = yes;
 | 
						|
          ROCKCHIP_DW_MIPI_DSI2 = yes;
 | 
						|
          PHY_ROCKCHIP_SAMSUNG_DCPHY = yes;
 | 
						|
          REGULATOR_FIXED_VOLTAGE = yes;
 | 
						|
          GPIO_ROCKCHIP = yes;
 | 
						|
          PL330_DMA = yes;
 | 
						|
 | 
						|
          DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW = no; # patches for 6.16 break this driver
 | 
						|
        };
 | 
						|
      }
 | 
						|
      // (args.argsOverride or { })
 | 
						|
    );
 | 
						|
 | 
						|
in
 | 
						|
lib.recurseIntoAttrs (linuxPackagesFor (callPackage linuxPkg { }))
 |