{ config, lib, pkgs, ... }: let cfg = config.custom.hardware.intelLaptop; in { options.custom.hardware.intelLaptop.enable = lib.mkEnableOption "Intel laptop hardware configuration"; config = lib.mkIf cfg.enable { services = { tlp = { enable = true; settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_MIN_PERF_ON_AC = 0; CPU_MAX_PERF_ON_AC = 100; CPU_MIN_PERF_ON_BAT = 0; CPU_MAX_PERF_ON_BAT = 40; #Optional helps save long term battery health START_CHARGE_THRESH_BAT0 = 60; # 60 and bellow it starts to charge STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging }; }; }; boot = { initrd = { availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ]; kernelModules = [ ]; }; kernelModules = [ "kvm-intel" ]; extraModulePackages = [ ]; }; networking.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware = { enableRedistributableFirmware = lib.mkDefault true; cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; graphics = { extraPackages = with pkgs; [ intel-media-driver intel-compute-runtime ]; }; }; }; }