···1818with lib.lists;
1919with lib.types;
2020with lib.attrsets;
2121+with lib.strings;
2122with (import ./inspect.nix { inherit lib; }).predicates;
22232324let
···179180 } // { # aliases
180181 # 'darwin' is the kernel for all of them. We choose macOS by default.
181182 darwin = kernels.macos;
182182- # TODO(@Ericson2314): Handle these Darwin version suffixes more generally.
183183- darwin10 = kernels.macos;
184184- darwin14 = kernels.macos;
185183 watchos = kernels.ios;
186184 tvos = kernels.ios;
187185 win32 = kernels.windows;
···269267 then { cpu = elemAt l 0; kernel = elemAt l 1; abi = elemAt l 2; }
270268 else if (elemAt l 2 == "mingw32") # autotools breaks on -gnu for window
271269 then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; abi = "gnu"; }
270270+ else if hasPrefix "netbsd" (elemAt l 2)
271271+ then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; }
272272 else throw "Target specification with 3 components is ambiguous";
273273 "4" = { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; };
274274 }.${toString (length l)}
···295295 else if isDarwin parsed then vendors.apple
296296 else if isWindows parsed then vendors.pc
297297 else vendors.unknown;
298298- kernel = getKernel args.kernel;
298298+ kernel = if hasPrefix "darwin" args.kernel then getKernel "darwin"
299299+ else if hasPrefix "netbsd" args.kernel then getKernel "netbsd"
300300+ else getKernel args.kernel;
299301 abi =
300302 /**/ if args ? abi then getAbi args.abi
301303 else if isLinux parsed then