at 22.05-pre 3.4 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_32 = { cpu = { family = "x86"; bits = 32; }; }; 13 isx86_64 = { cpu = { family = "x86"; bits = 64; }; }; 14 isPowerPC = { cpu = cpuTypes.powerpc; }; 15 isPower = { cpu = { family = "power"; }; }; 16 isx86 = { cpu = { family = "x86"; }; }; 17 isAarch32 = { cpu = { family = "arm"; bits = 32; }; }; 18 isAarch64 = { cpu = { family = "arm"; bits = 64; }; }; 19 isMips = { cpu = { family = "mips"; }; }; 20 isMmix = { cpu = { family = "mmix"; }; }; 21 isRiscV = { cpu = { family = "riscv"; }; }; 22 isSparc = { cpu = { family = "sparc"; }; }; 23 isWasm = { cpu = { family = "wasm"; }; }; 24 isMsp430 = { cpu = { family = "msp430"; }; }; 25 isVc4 = { cpu = { family = "vc4"; }; }; 26 isAvr = { cpu = { family = "avr"; }; }; 27 isAlpha = { cpu = { family = "alpha"; }; }; 28 isOr1k = { cpu = { family = "or1k"; }; }; 29 isM68k = { cpu = { family = "m68k"; }; }; 30 isS390 = { cpu = { family = "s390"; }; }; 31 isJavaScript = { cpu = cpuTypes.js; }; 32 33 is32bit = { cpu = { bits = 32; }; }; 34 is64bit = { cpu = { bits = 64; }; }; 35 isBigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; 36 isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; 37 38 isBSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; 39 isDarwin = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; }; 40 isUnix = [ isBSD isDarwin isLinux isSunOS isCygwin isRedox ]; 41 42 isMacOS = { kernel = kernels.macos; }; 43 isiOS = { kernel = kernels.ios; }; 44 isLinux = { kernel = kernels.linux; }; 45 isSunOS = { kernel = kernels.solaris; }; 46 isFreeBSD = { kernel = kernels.freebsd; }; 47 isNetBSD = { kernel = kernels.netbsd; }; 48 isOpenBSD = { kernel = kernels.openbsd; }; 49 isWindows = { kernel = kernels.windows; }; 50 isCygwin = { kernel = kernels.windows; abi = abis.cygnus; }; 51 isMinGW = { kernel = kernels.windows; abi = abis.gnu; }; 52 isWasi = { kernel = kernels.wasi; }; 53 isRedox = { kernel = kernels.redox; }; 54 isGhcjs = { kernel = kernels.ghcjs; }; 55 isGenode = { kernel = kernels.genode; }; 56 isNone = { kernel = kernels.none; }; 57 58 isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ]; 59 isGnu = with abis; map (a: { abi = a; }) [ gnuabi64 gnu gnueabi gnueabihf ]; 60 isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; 61 isUClibc = with abis; map (a: { abi = a; }) [ uclibc uclibceabi uclibceabihf ]; 62 63 isEfi = map (family: { cpu.family = family; }) 64 [ "x86" "arm" "aarch64" ]; 65 }; 66 67 matchAnyAttrs = patterns: 68 if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns 69 else matchAttrs patterns; 70 71 predicates = mapAttrs (_: matchAnyAttrs) patterns; 72}