at 18.03-beta 2.3 kB view raw
1{ lib }: 2with import ./parse.nix { inherit lib; }; 3with lib.attrsets; 4with lib.lists; 5 6rec { 7 patterns = rec { 8 i686 = { cpu = cpuTypes.i686; }; 9 x86_64 = { cpu = cpuTypes.x86_64; }; 10 PowerPC = { cpu = cpuTypes.powerpc; }; 11 x86 = { cpu = { family = "x86"; }; }; 12 Arm = { cpu = { family = "arm"; }; }; 13 Aarch64 = { cpu = { family = "aarch64"; }; }; 14 Mips = { cpu = { family = "mips"; }; }; 15 RiscV = { cpu = { family = "riscv"; }; }; 16 Wasm = { cpu = { family = "wasm"; }; }; 17 18 "32bit" = { cpu = { bits = 32; }; }; 19 "64bit" = { cpu = { bits = 64; }; }; 20 BigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; 21 LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; 22 23 BSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; 24 Unix = [ BSD Darwin Linux SunOS Hurd Cygwin ]; 25 26 Darwin = { kernel = kernels.darwin; }; 27 Linux = { kernel = kernels.linux; }; 28 SunOS = { kernel = kernels.solaris; }; 29 FreeBSD = { kernel = kernels.freebsd; }; 30 Hurd = { kernel = kernels.hurd; }; 31 NetBSD = { kernel = kernels.netbsd; }; 32 OpenBSD = { kernel = kernels.openbsd; }; 33 Windows = { kernel = kernels.windows; }; 34 Cygwin = { kernel = kernels.windows; abi = abis.cygnus; }; 35 MinGW = { kernel = kernels.windows; abi = abis.gnu; }; 36 37 Android = [ { abi = abis.android; } { abi = abis.androideabi; } ]; 38 Musl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; 39 40 Kexecable = map (family: { kernel = kernels.linux; cpu.family = family; }) 41 [ "x86" "arm" "aarch64" "mips" ]; 42 Efi = map (family: { cpu.family = family; }) 43 [ "x86" "arm" "aarch64" ]; 44 Seccomputable = map (family: { kernel = kernels.linux; cpu.family = family; }) 45 [ "x86" "arm" "aarch64" "mips" ]; 46 }; 47 48 matchAnyAttrs = patterns: 49 if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns 50 else matchAttrs patterns; 51 52 predicates = mapAttrs' 53 (name: value: nameValuePair ("is" + name) (matchAnyAttrs value)) 54 patterns; 55}