1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 10:41:16 +02:00

packaging: Add overrideAllMesonComponents

This commit is contained in:
Robert Hensing 2025-02-18 13:35:12 +01:00
parent cca01407a7
commit f31d86284f

View file

@ -161,11 +161,28 @@ in
inherit resolvePath filesetToSource; inherit resolvePath filesetToSource;
/**
A user-provided extension function to apply to each component derivation.
*/
mesonComponentOverrides = finalAttrs: prevAttrs: { };
/**
Apply an extension function (i.e. overlay-shaped) to all component derivations.
*/
overrideAllMesonComponents =
f:
scope.overrideScope (
finalScope: prevScope: {
mesonComponentOverrides = lib.composeExtensions scope.mesonComponentOverrides f;
}
);
mkMesonDerivation = mkPackageBuilder [ mkMesonDerivation = mkPackageBuilder [
miscGoodPractice miscGoodPractice
localSourceLayer localSourceLayer
setVersionLayer setVersionLayer
mesonLayer mesonLayer
scope.mesonComponentOverrides
]; ];
mkMesonExecutable = mkPackageBuilder [ mkMesonExecutable = mkPackageBuilder [
miscGoodPractice miscGoodPractice
@ -174,6 +191,7 @@ in
setVersionLayer setVersionLayer
mesonLayer mesonLayer
mesonBuildLayer mesonBuildLayer
scope.mesonComponentOverrides
]; ];
mkMesonLibrary = mkPackageBuilder [ mkMesonLibrary = mkPackageBuilder [
miscGoodPractice miscGoodPractice
@ -183,6 +201,7 @@ in
setVersionLayer setVersionLayer
mesonBuildLayer mesonBuildLayer
mesonLibraryLayer mesonLibraryLayer
scope.mesonComponentOverrides
]; ];
nix-util = callPackage ../src/libutil/package.nix { }; nix-util = callPackage ../src/libutil/package.nix { };
@ -224,5 +243,18 @@ in
nix-perl-bindings = callPackage ../src/perl/package.nix { }; nix-perl-bindings = callPackage ../src/perl/package.nix { };
nix-everything = callPackage ../packaging/everything.nix { }; nix-everything = callPackage ../packaging/everything.nix { } // {
# Note: no `passthru.overrideAllMesonComponents`
# This would propagate into `nix.overrideAttrs f`, but then discard
# `f` when `.overrideAllMesonComponents` is used.
# Both "methods" should be views on the same fixpoint overriding mechanism
# for that to work. For now, we intentionally don't support the broken
# two-fixpoint solution.
/**
Apply an extension function (i.e. overlay-shaped) to all component derivations, and return the nix package.
*/
overrideAllMesonComponents = f: (scope.overrideAllMesonComponents f).nix-everything;
scope = scope;
};
} }