nix-stuff/roles/kde/patches/default.nix

44 lines
1.2 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";
}
);
system.extraDependencies = lib.lists.forEach programsToPatch (
package: pkgs.kdePackages."${package}-patched"
);
}