at 25.11-pre 4.5 kB view raw
1{ lib }: 2let 3 inherit (lib) lists; 4 inherit (lib.systems) parse; 5 inherit (lib.systems.inspect) predicates; 6 inherit (lib.attrsets) matchAttrs; 7 8 all = [ 9 # Cygwin 10 "i686-cygwin" 11 "x86_64-cygwin" 12 13 # Darwin 14 "x86_64-darwin" 15 "aarch64-darwin" 16 17 # FreeBSD 18 "i686-freebsd" 19 "x86_64-freebsd" 20 "aarch64-freebsd" 21 22 # Genode 23 "aarch64-genode" 24 "i686-genode" 25 "x86_64-genode" 26 27 # illumos 28 "x86_64-solaris" 29 30 # JS 31 "javascript-ghcjs" 32 33 # Linux 34 "aarch64-linux" 35 "armv5tel-linux" 36 "armv6l-linux" 37 "armv7a-linux" 38 "armv7l-linux" 39 "i686-linux" 40 "loongarch64-linux" 41 "m68k-linux" 42 "microblaze-linux" 43 "microblazeel-linux" 44 "mips-linux" 45 "mips64-linux" 46 "mips64el-linux" 47 "mipsel-linux" 48 "powerpc64-linux" 49 "powerpc64le-linux" 50 "riscv32-linux" 51 "riscv64-linux" 52 "s390-linux" 53 "s390x-linux" 54 "x86_64-linux" 55 56 # MMIXware 57 "mmix-mmixware" 58 59 # NetBSD 60 "aarch64-netbsd" 61 "armv6l-netbsd" 62 "armv7a-netbsd" 63 "armv7l-netbsd" 64 "i686-netbsd" 65 "m68k-netbsd" 66 "mipsel-netbsd" 67 "powerpc-netbsd" 68 "riscv32-netbsd" 69 "riscv64-netbsd" 70 "x86_64-netbsd" 71 72 # none 73 "aarch64_be-none" 74 "aarch64-none" 75 "arm-none" 76 "armv6l-none" 77 "avr-none" 78 "i686-none" 79 "microblaze-none" 80 "microblazeel-none" 81 "mips-none" 82 "mips64-none" 83 "msp430-none" 84 "or1k-none" 85 "m68k-none" 86 "powerpc-none" 87 "powerpcle-none" 88 "riscv32-none" 89 "riscv64-none" 90 "rx-none" 91 "s390-none" 92 "s390x-none" 93 "vc4-none" 94 "x86_64-none" 95 96 # OpenBSD 97 "i686-openbsd" 98 "x86_64-openbsd" 99 100 # Redox 101 "x86_64-redox" 102 103 # WASI 104 "wasm64-wasi" 105 "wasm32-wasi" 106 107 # Windows 108 "aarch64-windows" 109 "x86_64-windows" 110 "i686-windows" 111 ]; 112 113 allParsed = map parse.mkSystemFromString all; 114 115 filterDoubles = f: map parse.doubleFromSystem (lists.filter f allParsed); 116 117in 118{ 119 inherit all; 120 121 none = [ ]; 122 123 arm = filterDoubles predicates.isAarch32; 124 armv7 = filterDoubles predicates.isArmv7; 125 aarch = filterDoubles predicates.isAarch; 126 aarch64 = filterDoubles predicates.isAarch64; 127 x86 = filterDoubles predicates.isx86; 128 i686 = filterDoubles predicates.isi686; 129 x86_64 = filterDoubles predicates.isx86_64; 130 microblaze = filterDoubles predicates.isMicroBlaze; 131 mips = filterDoubles predicates.isMips; 132 mmix = filterDoubles predicates.isMmix; 133 power = filterDoubles predicates.isPower; 134 riscv = filterDoubles predicates.isRiscV; 135 riscv32 = filterDoubles predicates.isRiscV32; 136 riscv64 = filterDoubles predicates.isRiscV64; 137 rx = filterDoubles predicates.isRx; 138 vc4 = filterDoubles predicates.isVc4; 139 or1k = filterDoubles predicates.isOr1k; 140 m68k = filterDoubles predicates.isM68k; 141 s390 = filterDoubles predicates.isS390; 142 s390x = filterDoubles predicates.isS390x; 143 loongarch64 = filterDoubles predicates.isLoongArch64; 144 js = filterDoubles predicates.isJavaScript; 145 146 bigEndian = filterDoubles predicates.isBigEndian; 147 littleEndian = filterDoubles predicates.isLittleEndian; 148 149 cygwin = filterDoubles predicates.isCygwin; 150 darwin = filterDoubles predicates.isDarwin; 151 freebsd = filterDoubles predicates.isFreeBSD; 152 # Should be better, but MinGW is unclear. 153 gnu = 154 filterDoubles (matchAttrs { 155 kernel = parse.kernels.linux; 156 abi = parse.abis.gnu; 157 }) 158 ++ filterDoubles (matchAttrs { 159 kernel = parse.kernels.linux; 160 abi = parse.abis.gnueabi; 161 }) 162 ++ filterDoubles (matchAttrs { 163 kernel = parse.kernels.linux; 164 abi = parse.abis.gnueabihf; 165 }) 166 ++ filterDoubles (matchAttrs { 167 kernel = parse.kernels.linux; 168 abi = parse.abis.gnuabin32; 169 }) 170 ++ filterDoubles (matchAttrs { 171 kernel = parse.kernels.linux; 172 abi = parse.abis.gnuabi64; 173 }) 174 ++ filterDoubles (matchAttrs { 175 kernel = parse.kernels.linux; 176 abi = parse.abis.gnuabielfv1; 177 }) 178 ++ filterDoubles (matchAttrs { 179 kernel = parse.kernels.linux; 180 abi = parse.abis.gnuabielfv2; 181 }); 182 illumos = filterDoubles predicates.isSunOS; 183 linux = filterDoubles predicates.isLinux; 184 netbsd = filterDoubles predicates.isNetBSD; 185 openbsd = filterDoubles predicates.isOpenBSD; 186 unix = filterDoubles predicates.isUnix; 187 wasi = filterDoubles predicates.isWasi; 188 redox = filterDoubles predicates.isRedox; 189 windows = filterDoubles predicates.isWindows; 190 genode = filterDoubles predicates.isGenode; 191 192 embedded = filterDoubles predicates.isNone; 193}