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