at master 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 "powerpc-linux" 49 "powerpc64-linux" 50 "powerpc64le-linux" 51 "riscv32-linux" 52 "riscv64-linux" 53 "s390-linux" 54 "s390x-linux" 55 "x86_64-linux" 56 57 # MMIXware 58 "mmix-mmixware" 59 60 # NetBSD 61 "aarch64-netbsd" 62 "armv6l-netbsd" 63 "armv7a-netbsd" 64 "armv7l-netbsd" 65 "i686-netbsd" 66 "m68k-netbsd" 67 "mipsel-netbsd" 68 "powerpc-netbsd" 69 "riscv32-netbsd" 70 "riscv64-netbsd" 71 "x86_64-netbsd" 72 73 # none 74 "aarch64_be-none" 75 "aarch64-none" 76 "arm-none" 77 "armv6l-none" 78 "avr-none" 79 "i686-none" 80 "microblaze-none" 81 "microblazeel-none" 82 "mips-none" 83 "mips64-none" 84 "msp430-none" 85 "or1k-none" 86 "m68k-none" 87 "powerpc-none" 88 "powerpcle-none" 89 "riscv32-none" 90 "riscv64-none" 91 "rx-none" 92 "s390-none" 93 "s390x-none" 94 "vc4-none" 95 "x86_64-none" 96 97 # OpenBSD 98 "i686-openbsd" 99 "x86_64-openbsd" 100 101 # Redox 102 "x86_64-redox" 103 104 # WASI 105 "wasm64-wasi" 106 "wasm32-wasi" 107 108 # Windows 109 "aarch64-windows" 110 "x86_64-windows" 111 "i686-windows" 112 ]; 113 114 allParsed = map parse.mkSystemFromString all; 115 116 filterDoubles = f: map parse.doubleFromSystem (lists.filter f allParsed); 117 118in 119{ 120 inherit all; 121 122 none = [ ]; 123 124 arm = filterDoubles predicates.isAarch32; 125 armv7 = filterDoubles predicates.isArmv7; 126 aarch = filterDoubles predicates.isAarch; 127 aarch64 = filterDoubles predicates.isAarch64; 128 x86 = filterDoubles predicates.isx86; 129 i686 = filterDoubles predicates.isi686; 130 x86_64 = filterDoubles predicates.isx86_64; 131 microblaze = filterDoubles predicates.isMicroBlaze; 132 mips = filterDoubles predicates.isMips; 133 mmix = filterDoubles predicates.isMmix; 134 power = filterDoubles predicates.isPower; 135 riscv = filterDoubles predicates.isRiscV; 136 riscv32 = filterDoubles predicates.isRiscV32; 137 riscv64 = filterDoubles predicates.isRiscV64; 138 rx = filterDoubles predicates.isRx; 139 vc4 = filterDoubles predicates.isVc4; 140 or1k = filterDoubles predicates.isOr1k; 141 m68k = filterDoubles predicates.isM68k; 142 s390 = filterDoubles predicates.isS390; 143 s390x = filterDoubles predicates.isS390x; 144 loongarch64 = filterDoubles predicates.isLoongArch64; 145 js = filterDoubles predicates.isJavaScript; 146 147 bigEndian = filterDoubles predicates.isBigEndian; 148 littleEndian = filterDoubles predicates.isLittleEndian; 149 150 cygwin = filterDoubles predicates.isCygwin; 151 darwin = filterDoubles predicates.isDarwin; 152 freebsd = filterDoubles predicates.isFreeBSD; 153 # Should be better, but MinGW is unclear. 154 gnu = 155 filterDoubles (matchAttrs { 156 kernel = parse.kernels.linux; 157 abi = parse.abis.gnu; 158 }) 159 ++ filterDoubles (matchAttrs { 160 kernel = parse.kernels.linux; 161 abi = parse.abis.gnueabi; 162 }) 163 ++ filterDoubles (matchAttrs { 164 kernel = parse.kernels.linux; 165 abi = parse.abis.gnueabihf; 166 }) 167 ++ filterDoubles (matchAttrs { 168 kernel = parse.kernels.linux; 169 abi = parse.abis.gnuabin32; 170 }) 171 ++ filterDoubles (matchAttrs { 172 kernel = parse.kernels.linux; 173 abi = parse.abis.gnuabi64; 174 }) 175 ++ filterDoubles (matchAttrs { 176 kernel = parse.kernels.linux; 177 abi = parse.abis.gnuabielfv1; 178 }) 179 ++ filterDoubles (matchAttrs { 180 kernel = parse.kernels.linux; 181 abi = parse.abis.gnuabielfv2; 182 }); 183 illumos = filterDoubles predicates.isSunOS; 184 linux = filterDoubles predicates.isLinux; 185 netbsd = filterDoubles predicates.isNetBSD; 186 openbsd = filterDoubles predicates.isOpenBSD; 187 unix = filterDoubles predicates.isUnix; 188 wasi = filterDoubles predicates.isWasi; 189 redox = filterDoubles predicates.isRedox; 190 windows = filterDoubles predicates.isWindows; 191 genode = filterDoubles predicates.isGenode; 192 193 embedded = filterDoubles predicates.isNone; 194}