|
|
|
@ -5,51 +5,49 @@ 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" ]; |
|
|
|
|
isi686 = { cpu = cpuTypes.i686; }; |
|
|
|
|
isx86_64 = { cpu = cpuTypes.x86_64; }; |
|
|
|
|
isPowerPC = { cpu = cpuTypes.powerpc; }; |
|
|
|
|
isx86 = { cpu = { family = "x86"; }; }; |
|
|
|
|
isArm = { cpu = { family = "arm"; }; }; |
|
|
|
|
isAarch64 = { cpu = { family = "aarch64"; }; }; |
|
|
|
|
isMips = { cpu = { family = "mips"; }; }; |
|
|
|
|
isRiscV = { cpu = { family = "riscv"; }; }; |
|
|
|
|
isWasm = { cpu = { family = "wasm"; }; }; |
|
|
|
|
|
|
|
|
|
is32bit = { cpu = { bits = 32; }; }; |
|
|
|
|
is64bit = { cpu = { bits = 64; }; }; |
|
|
|
|
isBigEndian = { cpu = { significantByte = significantBytes.bigEndian; }; }; |
|
|
|
|
isLittleEndian = { cpu = { significantByte = significantBytes.littleEndian; }; }; |
|
|
|
|
|
|
|
|
|
isBSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; }; |
|
|
|
|
isUnix = [ isBSD isDarwin isLinux isSunOS isHurd isCygwin ]; |
|
|
|
|
|
|
|
|
|
isDarwin = { kernel = kernels.darwin; }; |
|
|
|
|
isLinux = { kernel = kernels.linux; }; |
|
|
|
|
isSunOS = { kernel = kernels.solaris; }; |
|
|
|
|
isFreeBSD = { kernel = kernels.freebsd; }; |
|
|
|
|
isHurd = { kernel = kernels.hurd; }; |
|
|
|
|
isNetBSD = { kernel = kernels.netbsd; }; |
|
|
|
|
isOpenBSD = { kernel = kernels.openbsd; }; |
|
|
|
|
isWindows = { kernel = kernels.windows; }; |
|
|
|
|
isCygwin = { kernel = kernels.windows; abi = abis.cygnus; }; |
|
|
|
|
isMinGW = { kernel = kernels.windows; abi = abis.gnu; }; |
|
|
|
|
|
|
|
|
|
isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ]; |
|
|
|
|
isMusl = with abis; map (a: { abi = a; }) [ musl musleabi musleabihf ]; |
|
|
|
|
|
|
|
|
|
isKexecable = map (family: { kernel = kernels.linux; cpu.family = family; }) |
|
|
|
|
[ "x86" "arm" "aarch64" "mips" ]; |
|
|
|
|
isEfi = map (family: { cpu.family = family; }) |
|
|
|
|
[ "x86" "arm" "aarch64" ]; |
|
|
|
|
isSeccomputable = 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; |
|
|
|
|
predicates = mapAttrs (_: matchAnyAttrs) patterns; |
|
|
|
|
} |
|
|
|
|