1{ lib, pkgs, ... }: 2let 3 nixpkgsFun = import ../../top-level; 4in 5lib.recurseIntoAttrs { 6 platformEquality = 7 let 8 configsLocal = [ 9 # crossSystem is implicitly set to localSystem. 10 { 11 localSystem = { 12 system = "x86_64-linux"; 13 }; 14 } 15 { 16 localSystem = { 17 system = "aarch64-linux"; 18 }; 19 crossSystem = null; 20 } 21 # Both systems explicitly set to the same string. 22 { 23 localSystem = { 24 system = "x86_64-linux"; 25 }; 26 crossSystem = { 27 system = "x86_64-linux"; 28 }; 29 } 30 # Vendor and ABI inferred from system double. 31 { 32 localSystem = { 33 system = "aarch64-linux"; 34 }; 35 crossSystem = { 36 config = "aarch64-unknown-linux-gnu"; 37 }; 38 } 39 ]; 40 configsCross = [ 41 # GNU is inferred from double, but config explicitly requests musl. 42 { 43 localSystem = { 44 system = "aarch64-linux"; 45 }; 46 crossSystem = { 47 config = "aarch64-unknown-linux-musl"; 48 }; 49 } 50 # Cross-compile from AArch64 to x86-64. 51 { 52 localSystem = { 53 system = "aarch64-linux"; 54 }; 55 crossSystem = { 56 system = "x86_64-unknown-linux-gnu"; 57 }; 58 } 59 ]; 60 61 pkgsLocal = map nixpkgsFun configsLocal; 62 pkgsCross = map nixpkgsFun configsCross; 63 in 64 assert lib.all (p: p.buildPlatform == p.hostPlatform) pkgsLocal; 65 assert lib.all (p: p.buildPlatform != p.hostPlatform) pkgsCross; 66 pkgs.emptyFile; 67}