47 lines
1.8 KiB
Nix
47 lines
1.8 KiB
Nix
{ 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
|