pkgsi686Linux: only throw with aliases enabled

For the regular user, this still throws early whenever an attribute
tries to use `pkgsi686Linux`. For CI, this doesn't throw, but instead
overwrites `mkDerivation` to return only derivations marked as
`meta.broken`. This propagates to all reverse dependencies and allows
filtering out these attributes nicely on unsupported platforms.
This commit is contained in:
Wolfgang Walther
2025-07-23 08:52:16 +02:00
parent 174e6bba7a
commit eb875b4a98
+24 -4
View File
@@ -240,12 +240,32 @@ let
# All packages built for i686 Linux.
# Used by wine, firefox with debugging version of Flash, ...
pkgsi686Linux =
if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then
let
isSupported = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86;
in
if !config.allowAliases || isSupported then
nixpkgsFun {
overlays = [
(self': super': {
pkgsi686Linux = super';
})
(
self': super':
{
pkgsi686Linux = super';
}
// lib.optionalAttrs (!isSupported) {
# Overrides pkgsi686Linux.stdenv.mkDerivation to produce only broken derivations,
# when used on a non x86_64-linux platform in CI.
# TODO: Remove this, once pkgsi686Linux can become a variant.
stdenv = super'.stdenv // {
mkDerivation =
args:
(super'.stdenv.mkDerivation args).overrideAttrs (prevAttrs: {
meta = prevAttrs.meta or { } // {
broken = true;
};
});
};
}
)
] ++ overlays;
${if stdenv.hostPlatform == stdenv.buildPlatform then "localSystem" else "crossSystem"} = {
config = lib.systems.parse.tripleFromSystem (