···110110 hasUnfreeLicense = attrs: hasLicense attrs && isUnfree attrs.meta.license;
111111112112 hasNoMaintainers =
113113+ # To get usable output, we want to avoid flagging "internal" derivations.
114114+ # Because we do not have a way to reliably decide between internal or
115115+ # external derivation, some heuristics are required to decide.
116116+ #
117117+ # If `outputHash` is defined, the derivation is a FOD, such as the output of a fetcher.
118118+ # If `description` is not defined, the derivation is probably not a package.
119119+ # Simply checking whether `meta` is defined is insufficient,
120120+ # as some fetchers and trivial builders do define meta.
113121 attrs:
114114- (attrs ? meta.maintainers && (length attrs.meta.maintainers) == 0)
115115- && (attrs ? meta.teams && (length attrs.meta.teams) == 0);
122122+ (!attrs ? outputHash)
123123+ && (attrs ? meta.description)
124124+ && (attrs.meta.maintainers or [ ] == [ ])
125125+ && (attrs.meta.teams or [ ] == [ ]);
116126117127 isMarkedBroken = attrs: attrs.meta.broken or false;
118128