at 17.09-beta 1.7 kB view raw
1with import ./parse.nix; 2with import ../attrsets.nix; 3with import ../lists.nix; 4 5rec { 6 patterns = rec { 7 "32bit" = { cpu = { bits = 32; }; }; 8 "64bit" = { cpu = { bits = 64; }; }; 9 i686 = { cpu = cpuTypes.i686; }; 10 x86_64 = { cpu = cpuTypes.x86_64; }; 11 PowerPC = { cpu = cpuTypes.powerpc; }; 12 x86 = { cpu = { family = "x86"; }; }; 13 Arm = { cpu = { family = "arm"; }; }; 14 Aarch64 = { cpu = { family = "aarch64"; }; }; 15 Mips = { cpu = { family = "mips"; }; }; 16 BigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; 17 LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; 18 19 BSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; 20 Unix = [ BSD Darwin Linux SunOS Hurd Cygwin ]; 21 22 Darwin = { kernel = kernels.darwin; }; 23 Linux = { kernel = kernels.linux; }; 24 SunOS = { kernel = kernels.solaris; }; 25 FreeBSD = { kernel = kernels.freebsd; }; 26 Hurd = { kernel = kernels.hurd; }; 27 NetBSD = { kernel = kernels.netbsd; }; 28 OpenBSD = { kernel = kernels.openbsd; }; 29 Windows = { kernel = kernels.windows; }; 30 Cygwin = { kernel = kernels.windows; abi = abis.cygnus; }; 31 MinGW = { kernel = kernels.windows; abi = abis.gnu; }; 32 }; 33 34 matchAnyAttrs = patterns: 35 if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns 36 else matchAttrs patterns; 37 38 predicates = mapAttrs' 39 (name: value: nameValuePair ("is" + name) (matchAnyAttrs value)) 40 patterns; 41}