mirror of
https://github.com/nix-packages/nixapks.git
synced 2025-12-18 15:01:20 +01:00
86 lines
2.9 KiB
Nix
86 lines
2.9 KiB
Nix
{
|
|
inputs,
|
|
...
|
|
}:
|
|
{
|
|
# Overlay to extend lib with our custom functions
|
|
libOverlay = _final: prev: {
|
|
inherit ((prev.callPackage ./builders/gradle-dot-nix.nix { inherit inputs; })) buildGradleApk;
|
|
};
|
|
|
|
# Auto-discover packages by directory structure
|
|
# Takes pkgs as parameter so it can be called with overlayed pkgs
|
|
byNameOverlay =
|
|
pkgs': baseDirectory:
|
|
let
|
|
inherit (pkgs') lib;
|
|
namesForShard =
|
|
shard: _:
|
|
lib.mapAttrs (name: _: baseDirectory + "/${shard}/${name}/package.nix") (
|
|
builtins.readDir (baseDirectory + "/${shard}")
|
|
);
|
|
packageFiles = lib.mergeAttrsList (
|
|
lib.attrsets.mapAttrsToList namesForShard (builtins.readDir baseDirectory)
|
|
);
|
|
in
|
|
lib.mapAttrs (
|
|
name: path:
|
|
let
|
|
pkg = pkgs'.callPackage path { inherit inputs; };
|
|
in
|
|
lib.warnIf (!(pkg.meta ? description) || pkg.meta.description == null)
|
|
"APK ${name} is missing a meta.description field."
|
|
|
|
lib.warnIf
|
|
(!(pkg.meta ? homepage) || pkg.meta.homepage == null)
|
|
"APK ${name} is missing a meta.homepage field."
|
|
|
|
lib.warnIf
|
|
(!(pkg.meta ? maintainers) || pkg.meta.maintainers == null)
|
|
"APK ${name} is missing a meta.maintainers field."
|
|
|
|
lib.warnIf
|
|
(!(pkg.meta ? license) || pkg.meta.license == null)
|
|
"APK ${name} is missing a meta.license field."
|
|
|
|
lib.warnIf
|
|
(!(pkg.meta ? sourceProvenance) || pkg.meta.sourceProvenance == null)
|
|
"APK ${name} is missing a meta.sourceProvenance field."
|
|
|
|
lib.warnIf
|
|
(!(pkg.meta ? android) || pkg.meta.android == null)
|
|
"APK ${name} is missing a meta.android field."
|
|
|
|
lib.warnIf
|
|
(pkg.meta ? android && (!(pkg.meta.android ? minSdk) || pkg.meta.android.minSdk == null))
|
|
"APK ${name} is missing meta.android.minSdk field."
|
|
|
|
lib.warnIf
|
|
(pkg.meta ? android && (!(pkg.meta.android ? targetSdk) || pkg.meta.android.targetSdk == null))
|
|
"APK ${name} is missing meta.android.targetSdk field."
|
|
|
|
lib.warnIf
|
|
(
|
|
pkg.meta ? android
|
|
&& (!(pkg.meta.android ? applicationId) || pkg.meta.android.applicationId == null)
|
|
)
|
|
"APK ${name} is missing meta.android.applicationId field."
|
|
|
|
lib.warnIf
|
|
(
|
|
pkg.meta ? android
|
|
&& (!(pkg.meta.android ? abis) || pkg.meta.android.abis == null || pkg.meta.android.abis == [ ])
|
|
)
|
|
"APK ${name} is missing or has empty meta.android.abis field."
|
|
|
|
lib.warnIf
|
|
(pkg ? buildInputs && pkg.buildInputs != [ ])
|
|
"APK ${name} has buildInputs which may cause runtime dependencies. APKs should have no runtime dependencies."
|
|
|
|
lib.warnIf
|
|
(pkg ? propagatedBuildInputs && pkg.propagatedBuildInputs != [ ])
|
|
"APK ${name} has propagatedBuildInputs which will cause runtime dependencies. APKs should have no runtime dependencies."
|
|
|
|
pkg
|
|
) packageFiles;
|
|
}
|