let autoCalledPackages = import ./by-name-overlay.nix ../os-specific/darwin/by-name; in { lib, buildEnv, cctools, generateSplicesForMkScope, libc, llvmPackages, makeScopeWithSplicing', nixosTests, pkgs, preLibcHeaders, stdenv, targetPackages, wrapBintoolsWith, config, }: let aliases = final: prev: lib.optionalAttrs config.allowAliases (import ../top-level/darwin-aliases.nix lib final prev pkgs); autoCalledPackagesWithAliases = lib.composeManyExtensions [ autoCalledPackages aliases ]; mkBootstrapStdenv = stdenv: stdenv.override (old: { extraBuildInputs = map ( pkg: if lib.isDerivation pkg && lib.getName pkg == "apple-sdk" then pkg.override { enableBootstrap = true; } else pkg ) (old.extraBuildInputs or [ ]); }); in makeScopeWithSplicing' { otherSplices = generateSplicesForMkScope "darwin"; extra = self: { inherit (llvmPackages) clang-unwrapped; # This is an internal helper for building source-release packages. # It’s not intended for use outside of the Darwin package set. mkAppleDerivation = self.callPackage ../os-specific/darwin/mk-apple-derivation { }; }; f = lib.extends autoCalledPackagesWithAliases ( self: lib.recurseIntoAttrs { inherit (self.adv_cmds) ps; # Removes propagated packages from the stdenv, so those packages can be built without depending upon themselves. bootstrapStdenv = mkBootstrapStdenv stdenv; # Note: Not in `package.nix` because it messes up the overrides. binutils = wrapBintoolsWith { libc = targetPackages.libc or libc; bintools = self.binutils-unwrapped; }; binutilsNoLibc = wrapBintoolsWith { libc = targetPackages.preLibcHeaders or preLibcHeaders; bintools = self.binutils-unwrapped; }; sourceRelease = self.callPackage ../os-specific/darwin/sourceRelease { }; inherit (self.file_cmds) xattr; # Note: Not in `packages.nix` because it’s a package set not a derivation. inherit (self.callPackage ../os-specific/darwin/xcode { }) xcode_8_1 xcode_8_2 xcode_9_1 xcode_9_2 xcode_9_3 xcode_9_4 xcode_9_4_1 xcode_10_1 xcode_10_2 xcode_10_2_1 xcode_10_3 xcode_11 xcode_11_1 xcode_11_2 xcode_11_3_1 xcode_11_4 xcode_11_5 xcode_11_6 xcode_11_7 xcode_12 xcode_12_0_1 xcode_12_1 xcode_12_2 xcode_12_3 xcode_12_4 xcode_12_5 xcode_12_5_1 xcode_13 xcode_13_1 xcode_13_2 xcode_13_3 xcode_13_3_1 xcode_13_4 xcode_13_4_1 xcode_14 xcode_14_1 xcode_15 xcode_15_0_1 xcode_15_1 xcode_15_2 xcode_15_3 xcode_15_4 xcode_16 xcode_16_1 xcode_16_2 xcode_16_3 xcode_16_4 xcode_26 xcode_26_Apple_silicon xcode_26_0_1 xcode_26_0_1_Apple_silicon xcode_26_1 xcode_26_1_Apple_silicon xcode_26_1_1 xcode_26_1_1_Apple_silicon xcode_26_2 xcode_26_2_Apple_silicon xcode_26_3 xcode_26_3_Apple_silicon xcode_26_4 xcode_26_4_Apple_silicon xcode_26_4_1 xcode_26_4_1_Apple_silicon xcode_26_5 xcode_26_5_Apple_silicon xcode_26_6 xcode_26_6_Apple_silicon xcode_27 xcode requireXcode ; # Note: Not in `package.nix` because it references files outside of the package. # See doc/packages/darwin-builder.section.md linux-builder = lib.makeOverridable ( { modules }: let toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ]; nixos = import ../../nixos { configuration = { imports = [ ../../nixos/modules/profiles/nix-builder-vm.nix ] ++ modules; # If you need to override this, consider starting with the right Nixpkgs # in the first place, ie change `pkgs` in `pkgs.darwin.linux-builder`. # or if you're creating new wiring that's not `pkgs`-centric, perhaps use the # macos-builder profile directly. virtualisation.host = { inherit pkgs; }; nixpkgs.hostPlatform = lib.mkDefault (toGuest stdenv.hostPlatform.system); }; system = null; }; in nixos.config.system.build.macos-builder-installer ) { modules = [ ]; }; linux-builder-x86_64 = self.linux-builder.override { modules = [ { nixpkgs.hostPlatform = "x86_64-linux"; } ]; }; # Like `linux-builder`, but runs the guest on Apple's Virtualization.framework # via `vzvm`, translating x86_64-linux builds with Rosetta instead of emulating # them. See doc/packages/darwin-builder.section.md linux-builder-vz = lib.makeOverridable ( { modules }: let nixos = import ../../nixos { configuration = { imports = [ ../../nixos/modules/profiles/nix-builder-vz-vm.nix ] ++ modules; virtualisation.host = { inherit pkgs; }; # aarch64-darwin is the only supported host, so the guest is fixed too. nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; }; system = null; }; in nixos.config.system.build.macos-builder-installer.overrideAttrs (oldAttrs: { passthru = oldAttrs.passthru // { tests = (oldAttrs.passthru.tests or { }) // { store-gc = nixosTests.linux-builder-vz-store-gc; }; }; }) ) { modules = [ ]; }; } ); }