pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / top-level / pkg-config / defaultPkgConfigPackages.nix
blobb3cf3cdca2fcd18fbe64eda47ebd080914887ffd
1 /* A set of aliases to be used in generated expressions.
3    In case of ambiguity, this will pick a sensible default.
5    This was initially based on cabal2nix's mapping.
7    It'd be nice to generate this mapping, based on a set of derivations.
8    It can not be fully automated, so it should be a expression or tool
9    that makes suggestions about which pkg-config module names can be added.
10  */
11 pkgs:
13 let
14   inherit (pkgs) lib;
15   inherit (lib)
16     all
17     flip
18     mapAttrs
19     mapAttrsToList
20     getAttrFromPath
21     importJSON
22     ;
24   data = importJSON ./pkg-config-data.json;
25   inherit (data) modules;
27   platform = pkgs.stdenv.hostPlatform;
29   isSupported = moduleData:
30     moduleData?supportedWhenPlatformAttrsEqual ->
31       all (x: x) (
32         mapAttrsToList
33           (k: v: platform?${k} && platform.${k} == v)
34           moduleData.supportedWhenPlatformAttrsEqual
35       );
37   modulePkgs = flip mapAttrs modules (_moduleName: moduleData:
38     if moduleData?attrPath && isSupported moduleData then
39       getAttrFromPath moduleData.attrPath pkgs
40     else
41       null
42   );
45   modulePkgs