41 lines
1.1 KiB
Nix
41 lines
1.1 KiB
Nix
{lib, pkgs, ...}: let
|
|
rootDirs = builtins.readDir ./.;
|
|
removeFiles = lib.attrsets.filterAttrs (n: v: v == "directory") rootDirs;
|
|
programsToPatch = builtins.attrNames removeFiles;
|
|
|
|
getPatches = name:
|
|
builtins.map (value: ./${name}/${value}) (builtins.attrNames (
|
|
lib.attrsets.filterAttrs (
|
|
n: v:
|
|
v == "regular" && lib.strings.hasSuffix ".patch" n
|
|
) (builtins.readDir ./${name})
|
|
));
|
|
|
|
bigOverlay = final: prev:
|
|
lib.attrsets.mergeAttrsList (
|
|
lib.lists.forEach programsToPatch (
|
|
program: let
|
|
unpatchedProgram = prev."${program}";
|
|
in {
|
|
"${program}-patched" = unpatchedProgram.overrideAttrs {
|
|
patches = unpatchedProgram.patches ++ getPatches program;
|
|
};
|
|
}
|
|
)
|
|
);
|
|
in {
|
|
nixpkgs.overlays = [
|
|
(
|
|
final: prev: {
|
|
kdePackages = prev.kdePackages.overrideScope bigOverlay;
|
|
}
|
|
)
|
|
];
|
|
|
|
system.replaceDependencies.replacements = lib.lists.forEach programsToPatch (
|
|
package: {
|
|
oldDependency = pkgs.kdePackages.${package};
|
|
newDependency = pkgs.kdePackages."${package}-patched";
|
|
}
|
|
);
|
|
}
|