nix-stuff/roles/kde/patches/default.nix
Toast a4f27b49af Kde/patches: override packages instead of replacing at runtime
This causes A LOT more rebuilds, but it's less hacky
2025-09-30 21:08:38 +02:00

36 lines
1 KiB
Nix

{lib, ...}: 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}" = unpatchedProgram.overrideAttrs {
version = "${unpatchedProgram.version}-patched";
__intentionallyOverridingVersion = true;
patches = unpatchedProgram.patches ++ getPatches program;
};
}
)
);
in {
nixpkgs.overlays = [
(
final: prev: {
kdePackages = prev.kdePackages.overrideScope bigOverlay;
}
)
];
}