diff --git a/lib/systems/default.nix b/lib/systems/default.nix index ce257d5307b6..eab2561678e3 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -531,6 +531,35 @@ let "-uefi" ]; }; + } + // { + go = { + # See https://pkg.go.dev/internal/platform for a list of known platforms + GOARCH = + { + "aarch64" = "arm64"; + "arm" = "arm"; + "armv5tel" = "arm"; + "armv6l" = "arm"; + "armv7l" = "arm"; + "i686" = "386"; + "loongarch64" = "loong64"; + "mips" = "mips"; + "mips64el" = "mips64le"; + "mipsel" = "mipsle"; + "powerpc64" = "ppc64"; + "powerpc64le" = "ppc64le"; + "riscv64" = "riscv64"; + "s390x" = "s390x"; + "x86_64" = "amd64"; + "wasm32" = "wasm"; + } + .${final.parsed.cpu.name} or (throw "Unknown CPU variant ${final.parsed.cpu.name} by Go"); + GOOS = if final.isWasi then "wasip1" else final.parsed.kernel.name; + + # See https://go.dev/wiki/GoArm + GOARM = toString (lib.intersectLists [ (final.parsed.cpu.version or "") ] [ "5" "6" "7" ]); + }; }; in assert final.useAndroidPrebuilt -> final.isAndroid;