{ inputs , lib , pkgs , ... }: let mainVersions = lib.importJSON "${inputs.chaotic}/pkgs/linux-cachyos/versions.json"; mainConfig = import "${inputs.chaotic}/pkgs/linux-cachyos/config-nix/cachyos.x86_64-linux.nix"; usedModules = builtins.readFile ./modprobed.db; toLowerParts = list: (lib.lists.unique (lib.lists.flatten (builtins.map (elem: (lib.strings.splitString "_" (lib.strings.toLower elem))) list))); usedModuleNames = builtins.map (x: lib.strings.toLower x) (lib.strings.splitString "\n" usedModules); usedModuleNameParts = toLowerParts usedModuleNames; filterParts = [ "crypto" "intel" "hid" "drm" "x86" "64" "" ]; usedModuleNamePartsFiltered = (lib.lists.partition (elem: !(builtins.elem elem filterParts)) usedModuleNameParts).right; usedModuleNamePartsTrace = builtins.trace usedModuleNameParts usedModuleNamePartsFiltered; filteredConfig = builtins.listToAttrs ( builtins.map (attr: let no_conf_key = builtins.replaceStrings [ "CONFIG_" ] [ "" ] attr.name; in { name = attr.name; value = if attr.value == "m" && !(builtins.elem (lib.strings.toLower no_conf_key) usedModuleNames) && ((lib.lists.intersectLists (toLowerParts [ no_conf_key ]) usedModuleNamePartsFiltered) == [ ]) then "n" else attr.value; }) (builtins.attrValues (builtins.mapAttrs (name: value: { inherit name value; }) mainConfig)) ); mkCachyKernel = attrs: pkgs.callPackage ./pkgs-for.nix ({ versions = mainVersions; } // attrs); mainKernel = mkCachyKernel { inherit inputs; taste = "linux-cachyos"; kConfig = filteredConfig; withUpdateScript = "stable"; }; in mainKernel