You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
2.9 KiB

  1. { lib }:
  2. with import ./parse.nix { inherit lib; };
  3. with lib.attrsets;
  4. with lib.lists;
  5. let abis_ = abis; in
  6. let abis = lib.mapAttrs (_: abi: builtins.removeAttrs abi [ "assertions" ]) abis_; in
  7. rec {
  8. patterns = rec {
  9. isi686 = { cpu = cpuTypes.i686; };
  10. isx86_32 = { cpu = { family = "x86"; bits = 32; }; };
  11. isx86_64 = { cpu = { family = "x86"; bits = 64; }; };
  12. isPowerPC = { cpu = cpuTypes.powerpc; };
  13. isPower = { cpu = { family = "power"; }; };
  14. isx86 = { cpu = { family = "x86"; }; };
  15. isAarch32 = { cpu = { family = "arm"; bits = 32; }; };
  16. isAarch64 = { cpu = { family = "arm"; bits = 64; }; };
  17. isMips = { cpu = { family = "mips"; }; };
  18. isRiscV = { cpu = { family = "riscv"; }; };
  19. isSparc = { cpu = { family = "sparc"; }; };
  20. isWasm = { cpu = { family = "wasm"; }; };
  21. isMsp430 = { cpu = { family = "msp430"; }; };
  22. isVc4 = { cpu = { family = "vc4"; }; };
  23. isAvr = { cpu = { family = "avr"; }; };
  24. isAlpha = { cpu = { family = "alpha"; }; };
  25. isJavaScript = { cpu = cpuTypes.js; };
  26. is32bit = { cpu = { bits = 32; }; };
  27. is64bit = { cpu = { bits = 64; }; };
  28. isBigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; };
  29. isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; };
  30. isBSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
  31. isDarwin = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; };
  32. isUnix = [ isBSD isDarwin isLinux isSunOS isCygwin ];
  33. isMacOS = { kernel = kernels.macos; };
  34. isiOS = { kernel = kernels.ios; };
  35. isLinux = { kernel = kernels.linux; };
  36. isSunOS = { kernel = kernels.solaris; };
  37. isFreeBSD = { kernel = kernels.freebsd; };
  38. isNetBSD = { kernel = kernels.netbsd; };
  39. isOpenBSD = { kernel = kernels.openbsd; };
  40. isWindows = { kernel = kernels.windows; };
  41. isCygwin = { kernel = kernels.windows; abi = abis.cygnus; };
  42. isMinGW = { kernel = kernels.windows; abi = abis.gnu; };
  43. isWasi = { kernel = kernels.wasi; };
  44. isGhcjs = { kernel = kernels.ghcjs; };
  45. isNone = { kernel = kernels.none; };
  46. isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ];
  47. isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
  48. isUClibc = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ];
  49. isEfi = map (family: { cpu.family = family; })
  50. [ "x86" "arm" "aarch64" ];
  51. };
  52. matchAnyAttrs = patterns:
  53. if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns
  54. else matchAttrs patterns;
  55. predicates = mapAttrs (_: matchAnyAttrs) patterns;
  56. }