56 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { lib }:
 | |
| with import ./parse.nix { inherit lib; };
 | |
| with lib.attrsets;
 | |
| with lib.lists;
 | |
| 
 | |
| rec {
 | |
|   patterns = rec {
 | |
|     i686         = { cpu = cpuTypes.i686; };
 | |
|     x86_64       = { cpu = cpuTypes.x86_64; };
 | |
|     PowerPC      = { cpu = cpuTypes.powerpc; };
 | |
|     x86          = { cpu = { family = "x86"; }; };
 | |
|     Arm          = { cpu = { family = "arm"; }; };
 | |
|     Aarch64      = { cpu = { family = "aarch64"; }; };
 | |
|     Mips         = { cpu = { family = "mips"; }; };
 | |
|     RiscV        = { cpu = { family = "riscv"; }; };
 | |
|     Wasm         = { cpu = { family = "wasm"; }; };
 | |
| 
 | |
|     "32bit"      = { cpu = { bits = 32; }; };
 | |
|     "64bit"      = { cpu = { bits = 64; }; };
 | |
|     BigEndian    = { cpu = { significantByte = significantBytes.bigEndian; }; };
 | |
|     LittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; };
 | |
| 
 | |
|     BSD          = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
 | |
|     Unix         = [ BSD Darwin Linux SunOS Hurd Cygwin ];
 | |
| 
 | |
|     Darwin       = { kernel = kernels.darwin; };
 | |
|     Linux        = { kernel = kernels.linux; };
 | |
|     SunOS        = { kernel = kernels.solaris; };
 | |
|     FreeBSD      = { kernel = kernels.freebsd; };
 | |
|     Hurd         = { kernel = kernels.hurd; };
 | |
|     NetBSD       = { kernel = kernels.netbsd; };
 | |
|     OpenBSD      = { kernel = kernels.openbsd; };
 | |
|     Windows      = { kernel = kernels.windows; };
 | |
|     Cygwin       = { kernel = kernels.windows; abi = abis.cygnus; };
 | |
|     MinGW        = { kernel = kernels.windows; abi = abis.gnu; };
 | |
| 
 | |
|     Android      = [ { abi = abis.android; } { abi = abis.androideabi; } ];
 | |
|     Musl         = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ];
 | |
| 
 | |
|     Kexecable    = map (family: { kernel = kernels.linux; cpu.family = family; })
 | |
|                      [ "x86" "arm" "aarch64" "mips" ];
 | |
|     Efi          = map (family: { cpu.family = family; })
 | |
|                      [ "x86" "arm" "aarch64" ];
 | |
|     Seccomputable = map (family: { kernel = kernels.linux; cpu.family = family; })
 | |
|                       [ "x86" "arm" "aarch64" "mips" ];
 | |
|   };
 | |
| 
 | |
|   matchAnyAttrs = patterns:
 | |
|     if builtins.isList patterns then attrs: any (pattern: matchAttrs pattern attrs) patterns
 | |
|     else matchAttrs patterns;
 | |
| 
 | |
|   predicates = mapAttrs'
 | |
|     (name: value: nameValuePair ("is" + name) (matchAnyAttrs value))
 | |
|     patterns;
 | |
| }
 | 
