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