2021-05-04 04:08:20 +00:00
|
|
|
{ lib
|
|
|
|
, buildPackages, pkgs, targetPackages
|
2023-08-13 23:49:53 +00:00
|
|
|
, generateSplicesForMkScope, makeScopeWithSplicing'
|
2022-12-24 15:44:09 +00:00
|
|
|
, stdenv
|
2021-05-11 19:20:15 +00:00
|
|
|
, preLibcCrossHeaders
|
2023-07-04 10:46:42 +00:00
|
|
|
, config
|
2018-04-15 23:21:45 +00:00
|
|
|
}:
|
2017-08-30 20:44:42 +00:00
|
|
|
|
|
|
|
let
|
2020-11-19 08:22:54 +00:00
|
|
|
# Prefix for binaries. Customarily ends with a dash separator.
|
|
|
|
#
|
|
|
|
# TODO(@Ericson2314) Make unconditional, or optional but always true by
|
|
|
|
# default.
|
|
|
|
targetPrefix = lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
|
|
|
|
(stdenv.targetPlatform.config + "-");
|
2023-10-13 22:47:56 +00:00
|
|
|
|
|
|
|
# Bootstrap `fetchurl` needed to build SDK packages without causing an infinite recursion.
|
|
|
|
fetchurlBoot = import ../build-support/fetchurl/boot.nix {
|
|
|
|
inherit (stdenv) system;
|
|
|
|
};
|
2024-03-27 01:19:39 +00:00
|
|
|
|
|
|
|
aliases = self: super: lib.optionalAttrs config.allowAliases (import ../top-level/darwin-aliases.nix lib self super pkgs);
|
2024-08-21 11:50:34 +00:00
|
|
|
|
|
|
|
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 [ ]);
|
|
|
|
});
|
2024-09-29 22:25:05 +00:00
|
|
|
|
|
|
|
mkStub = pkgs.callPackage ../os-specific/darwin/apple-sdk/mk-stub.nix { };
|
2017-08-30 20:44:42 +00:00
|
|
|
in
|
|
|
|
|
2023-08-13 23:49:53 +00:00
|
|
|
makeScopeWithSplicing' {
|
|
|
|
otherSplices = generateSplicesForMkScope "darwin";
|
|
|
|
extra = spliced: spliced.apple_sdk.frameworks;
|
2024-03-27 01:19:39 +00:00
|
|
|
f = lib.extends aliases (self: let
|
2021-05-04 04:08:20 +00:00
|
|
|
inherit (self) mkDerivation callPackage;
|
2017-08-30 20:44:42 +00:00
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
# Must use pkgs.callPackage to avoid infinite recursion.
|
2017-08-30 20:48:33 +00:00
|
|
|
|
2020-11-19 08:23:29 +00:00
|
|
|
# Open source packages that are built from source
|
|
|
|
appleSourcePackages = pkgs.callPackage ../os-specific/darwin/apple-source-releases { } self;
|
2021-05-04 04:08:20 +00:00
|
|
|
|
|
|
|
impure-cmds = pkgs.callPackage ../os-specific/darwin/impure-cmds { };
|
|
|
|
|
2020-11-19 08:23:29 +00:00
|
|
|
# macOS 10.12 SDK
|
2024-09-26 02:16:56 +00:00
|
|
|
apple_sdk_10_12 = pkgs.callPackage ../os-specific/darwin/apple-sdk { };
|
2020-11-19 08:23:29 +00:00
|
|
|
|
|
|
|
# macOS 11.0 SDK
|
2024-09-26 02:19:41 +00:00
|
|
|
apple_sdk_11_0 = pkgs.callPackage ../os-specific/darwin/apple-sdk-11.0 { };
|
2020-11-19 08:23:29 +00:00
|
|
|
|
2024-07-11 21:09:04 +00:00
|
|
|
# macOS 12.3 SDK
|
|
|
|
apple_sdk_12_3 = pkgs.callPackage ../os-specific/darwin/apple-sdk-12.3 { };
|
|
|
|
|
2020-11-19 08:23:29 +00:00
|
|
|
# Pick an SDK
|
2024-06-30 23:42:02 +00:00
|
|
|
apple_sdk = {
|
|
|
|
"10.12" = apple_sdk_10_12;
|
|
|
|
"11.0" = apple_sdk_11_0;
|
|
|
|
}.${stdenv.hostPlatform.darwinSdkVersion}
|
|
|
|
or (throw "Unsupported sdk: ${stdenv.hostPlatform.darwinSdkVersion}");
|
2020-11-19 08:23:29 +00:00
|
|
|
|
2024-09-26 02:19:41 +00:00
|
|
|
stubs = {
|
2024-09-26 02:16:56 +00:00
|
|
|
inherit apple_sdk apple_sdk_10_12 apple_sdk_11_0 apple_sdk_12_3;
|
2024-09-02 23:27:03 +00:00
|
|
|
libobjc = self.objc4;
|
2024-09-26 02:19:41 +00:00
|
|
|
} // lib.genAttrs [
|
2024-09-21 14:06:58 +00:00
|
|
|
"CF"
|
2024-09-02 23:27:03 +00:00
|
|
|
"CarbonHeaders"
|
2024-09-02 23:27:03 +00:00
|
|
|
"CommonCrypto"
|
2024-10-02 03:42:10 +00:00
|
|
|
"CoreSymbolication"
|
2024-09-02 23:27:03 +00:00
|
|
|
"IOKit"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Libc"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Libinfo"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Libm"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Libnotify"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Librpcsvc"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Libsystem"
|
|
|
|
"LibsystemCross"
|
2024-09-02 23:27:03 +00:00
|
|
|
"Security"
|
2024-09-02 23:27:03 +00:00
|
|
|
"architecture"
|
2024-09-02 23:27:03 +00:00
|
|
|
"configd"
|
|
|
|
"configdHeaders"
|
2024-09-21 14:06:58 +00:00
|
|
|
"darwin-stubs"
|
2024-09-02 23:27:03 +00:00
|
|
|
"dtrace"
|
2024-09-02 23:27:03 +00:00
|
|
|
"dyld"
|
2024-09-02 23:27:03 +00:00
|
|
|
"eap8021x"
|
2024-09-02 23:27:03 +00:00
|
|
|
"hfs"
|
|
|
|
"hfsHeaders"
|
2024-09-02 23:27:03 +00:00
|
|
|
"launchd"
|
2024-09-02 23:27:03 +00:00
|
|
|
"libclosure"
|
2024-09-02 23:27:03 +00:00
|
|
|
"libdispatch"
|
2024-09-02 23:27:03 +00:00
|
|
|
"libmalloc"
|
2024-09-02 23:27:03 +00:00
|
|
|
"libplatform"
|
2024-09-02 23:27:03 +00:00
|
|
|
"libpthread"
|
2024-09-02 23:27:03 +00:00
|
|
|
"mDNSResponder"
|
2024-09-02 23:27:03 +00:00
|
|
|
"objc4"
|
2024-09-21 14:06:58 +00:00
|
|
|
] (mkStub apple_sdk.version);
|
2021-05-04 04:08:20 +00:00
|
|
|
in
|
2024-09-02 23:27:03 +00:00
|
|
|
|
2024-09-21 14:06:58 +00:00
|
|
|
impure-cmds // appleSourcePackages // stubs // {
|
2019-06-17 21:12:07 +00:00
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
stdenvNoCF = stdenv.override {
|
|
|
|
extraBuildInputs = [];
|
2020-09-18 08:12:43 +00:00
|
|
|
};
|
2017-08-30 20:44:42 +00:00
|
|
|
|
2024-09-21 14:25:31 +00:00
|
|
|
inherit (self.adv_cmds) locale ps;
|
|
|
|
|
2018-04-15 23:21:45 +00:00
|
|
|
binutils-unwrapped = callPackage ../os-specific/darwin/binutils {
|
2024-07-01 22:33:24 +00:00
|
|
|
inherit (pkgs) cctools;
|
2024-05-02 12:07:39 +00:00
|
|
|
inherit (pkgs.llvmPackages) clang-unwrapped llvm llvm-manpages;
|
2018-04-15 23:21:45 +00:00
|
|
|
};
|
|
|
|
|
2017-08-26 15:43:30 +00:00
|
|
|
binutils = pkgs.wrapBintoolsWith {
|
|
|
|
libc =
|
2018-08-20 18:43:41 +00:00
|
|
|
if stdenv.targetPlatform != stdenv.hostPlatform
|
2017-08-26 15:43:30 +00:00
|
|
|
then pkgs.libcCross
|
|
|
|
else pkgs.stdenv.cc.libc;
|
2021-05-04 04:08:20 +00:00
|
|
|
bintools = self.binutils-unwrapped;
|
|
|
|
};
|
|
|
|
|
2024-04-15 19:30:13 +00:00
|
|
|
# x86-64 Darwin gnat-bootstrap emits assembly
|
|
|
|
# with MOVQ as the mnemonic for quadword interunit moves
|
|
|
|
# such as `movq %rbp, %xmm0`.
|
|
|
|
# The clang integrated assembler recognises this as valid,
|
|
|
|
# but unfortunately the cctools.gas GNU assembler does not;
|
|
|
|
# it instead uses MOVD as the mnemonic.
|
|
|
|
# The assembly that a GCC build emits is determined at build time
|
|
|
|
# and cannot be changed afterwards.
|
|
|
|
#
|
|
|
|
# To build GNAT on x86-64 Darwin, therefore,
|
|
|
|
# we need both the clang _and_ the cctools.gas assemblers to be available:
|
|
|
|
# the former to build at least the stage1 compiler,
|
|
|
|
# and the latter at least to be detectable
|
|
|
|
# as the target for the final compiler.
|
|
|
|
binutilsDualAs-unwrapped = pkgs.buildEnv {
|
|
|
|
name = "${lib.getName self.binutils-unwrapped}-dualas-${lib.getVersion self.binutils-unwrapped}";
|
|
|
|
paths = [
|
|
|
|
self.binutils-unwrapped
|
2024-07-18 02:17:05 +00:00
|
|
|
(lib.getOutput "gas" pkgs.cctools)
|
2024-04-15 19:30:13 +00:00
|
|
|
];
|
2022-12-26 12:16:17 +00:00
|
|
|
};
|
|
|
|
|
2024-04-15 19:30:13 +00:00
|
|
|
binutilsDualAs = self.binutils.override {
|
2022-12-26 12:16:17 +00:00
|
|
|
bintools = self.binutilsDualAs-unwrapped;
|
|
|
|
};
|
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
binutilsNoLibc = pkgs.wrapBintoolsWith {
|
2021-05-11 19:20:15 +00:00
|
|
|
libc = preLibcCrossHeaders;
|
2021-05-04 04:08:20 +00:00
|
|
|
bintools = self.binutils-unwrapped;
|
2017-09-07 10:22:33 +00:00
|
|
|
};
|
2017-08-30 20:44:42 +00:00
|
|
|
|
2024-08-21 11:50:34 +00:00
|
|
|
# Removes propagated packages from the stdenv, so those packages can be built without depending upon themselves.
|
|
|
|
bootstrapStdenv = mkBootstrapStdenv pkgs.stdenv;
|
|
|
|
|
2024-09-30 13:12:53 +00:00
|
|
|
libSystem = callPackage ../os-specific/darwin/libSystem { };
|
|
|
|
|
2023-05-01 15:45:15 +00:00
|
|
|
# TODO(@connorbaker): See https://github.com/NixOS/nixpkgs/issues/229389.
|
2021-05-04 04:08:20 +00:00
|
|
|
cf-private = self.apple_sdk.frameworks.CoreFoundation;
|
2017-08-30 20:44:42 +00:00
|
|
|
|
|
|
|
DarwinTools = callPackage ../os-specific/darwin/DarwinTools { };
|
|
|
|
|
2020-11-19 07:48:10 +00:00
|
|
|
print-reexports = callPackage ../os-specific/darwin/print-reexports { };
|
|
|
|
|
2020-11-19 07:45:11 +00:00
|
|
|
rewrite-tbd = callPackage ../os-specific/darwin/rewrite-tbd { };
|
|
|
|
|
2020-11-19 08:23:29 +00:00
|
|
|
checkReexportsHook = pkgs.makeSetupHook {
|
2023-01-18 16:29:22 +00:00
|
|
|
name = "darwin-check-reexports-hook";
|
2023-01-01 20:10:24 +00:00
|
|
|
propagatedBuildInputs = [ pkgs.darwin.print-reexports ];
|
2020-11-19 07:48:10 +00:00
|
|
|
} ../os-specific/darwin/print-reexports/setup-hook.sh;
|
2020-09-18 08:10:03 +00:00
|
|
|
|
2024-09-02 14:07:54 +00:00
|
|
|
libunwind = callPackage ../os-specific/darwin/libunwind { };
|
|
|
|
|
2020-11-19 07:41:41 +00:00
|
|
|
sigtool = callPackage ../os-specific/darwin/sigtool { };
|
|
|
|
|
2021-02-15 05:54:58 +00:00
|
|
|
signingUtils = callPackage ../os-specific/darwin/signing-utils { };
|
|
|
|
|
2023-07-08 09:44:20 +00:00
|
|
|
postLinkSignHook = callPackage ../os-specific/darwin/signing-utils/post-link-sign-hook.nix { };
|
|
|
|
|
2021-02-15 05:54:58 +00:00
|
|
|
autoSignDarwinBinariesHook = pkgs.makeSetupHook {
|
2023-01-18 16:29:22 +00:00
|
|
|
name = "auto-sign-darwin-binaries-hook";
|
2023-01-01 20:10:24 +00:00
|
|
|
propagatedBuildInputs = [ self.signingUtils ];
|
2021-02-15 05:54:58 +00:00
|
|
|
} ../os-specific/darwin/signing-utils/auto-sign-hook.sh;
|
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
iosSdkPkgs = callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix {
|
2018-04-15 23:21:45 +00:00
|
|
|
buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
|
|
|
|
targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
|
|
|
|
inherit (pkgs.llvmPackages) clang-unwrapped;
|
2017-08-30 20:44:42 +00:00
|
|
|
};
|
|
|
|
|
2018-06-09 20:13:01 +00:00
|
|
|
iproute2mac = callPackage ../os-specific/darwin/iproute2mac { };
|
|
|
|
|
2018-02-05 16:41:35 +00:00
|
|
|
lsusb = callPackage ../os-specific/darwin/lsusb { };
|
2017-08-30 20:44:42 +00:00
|
|
|
|
2024-07-11 23:33:55 +00:00
|
|
|
moltenvk = callPackage ../os-specific/darwin/moltenvk {
|
|
|
|
stdenv = pkgs.overrideSDK stdenv {
|
|
|
|
darwinMinVersion = "10.15";
|
|
|
|
darwinSdkVersion = "12.3";
|
|
|
|
};
|
|
|
|
inherit (apple_sdk.frameworks) AppKit Foundation Metal QuartzCore;
|
|
|
|
inherit (apple_sdk.libs) simd;
|
2022-06-06 13:49:32 +00:00
|
|
|
};
|
2022-02-07 23:32:02 +00:00
|
|
|
|
2024-05-14 03:35:59 +00:00
|
|
|
openwith = callPackage ../os-specific/darwin/openwith { };
|
2023-02-02 04:14:37 +00:00
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
stubs = pkgs.callPackages ../os-specific/darwin/stubs { };
|
2017-08-30 20:44:42 +00:00
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
trash = callPackage ../os-specific/darwin/trash { };
|
2017-05-11 18:37:59 +00:00
|
|
|
|
2021-06-07 10:51:17 +00:00
|
|
|
xattr = pkgs.python3Packages.callPackage ../os-specific/darwin/xattr { };
|
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
inherit (pkgs.callPackages ../os-specific/darwin/xcode { })
|
2019-10-15 23:14:33 +00:00
|
|
|
xcode_8_1 xcode_8_2
|
2022-07-06 07:12:11 +00:00
|
|
|
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
|
2024-05-19 22:49:24 +00:00
|
|
|
xcode_15 xcode_15_1 xcode_15_2 xcode_15_3 xcode_15_4
|
2019-10-15 23:14:33 +00:00
|
|
|
xcode;
|
2017-08-30 20:44:42 +00:00
|
|
|
|
2024-09-02 23:27:03 +00:00
|
|
|
xcodeProjectCheckHook = pkgs.makeSetupHook {
|
|
|
|
name = "xcode-project-check-hook";
|
|
|
|
propagatedBuildInputs = [ pkgs.pkgsBuildHost.openssl ];
|
|
|
|
} ../os-specific/darwin/xcode-project-check-hook/setup-hook.sh;
|
|
|
|
|
2023-11-02 00:56:50 +00:00
|
|
|
# Formerly the CF attribute. Use this is you need the open source release.
|
|
|
|
swift-corelibs-foundation = callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { };
|
2018-10-24 10:04:05 +00:00
|
|
|
|
2018-09-09 17:36:05 +00:00
|
|
|
# As the name says, this is broken, but I don't want to lose it since it's a direction we want to go in
|
2021-05-04 04:08:20 +00:00
|
|
|
# libdispatch-broken = callPackage ../os-specific/darwin/swift-corelibs/libdispatch.nix { };
|
2018-04-08 05:29:08 +00:00
|
|
|
|
2020-07-20 15:50:41 +00:00
|
|
|
ios-deploy = callPackage ../os-specific/darwin/ios-deploy {};
|
|
|
|
|
2021-05-04 04:08:20 +00:00
|
|
|
discrete-scroll = callPackage ../os-specific/darwin/discrete-scroll { };
|
2020-08-18 21:07:54 +00:00
|
|
|
|
2024-02-28 14:36:13 +00:00
|
|
|
# See doc/packages/darwin-builder.section.md
|
2023-07-04 10:46:42 +00:00
|
|
|
linux-builder = lib.makeOverridable ({ modules }:
|
2022-12-20 00:07:02 +00:00
|
|
|
let
|
|
|
|
toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ];
|
|
|
|
|
|
|
|
nixos = import ../../nixos {
|
|
|
|
configuration = {
|
|
|
|
imports = [
|
|
|
|
../../nixos/modules/profiles/macos-builder.nix
|
2023-06-13 23:16:34 +00:00
|
|
|
] ++ modules;
|
2022-12-20 00:07:02 +00:00
|
|
|
|
2023-10-19 09:11:07 +00:00
|
|
|
# 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.
|
2022-12-20 00:07:02 +00:00
|
|
|
virtualisation.host = { inherit pkgs; };
|
2023-10-19 09:11:07 +00:00
|
|
|
|
|
|
|
nixpkgs.hostPlatform = lib.mkDefault (toGuest stdenv.hostPlatform.system);
|
2022-12-20 00:07:02 +00:00
|
|
|
};
|
|
|
|
|
2023-10-19 09:11:07 +00:00
|
|
|
system = null;
|
2022-12-20 00:07:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
in
|
2023-06-13 23:16:34 +00:00
|
|
|
nixos.config.system.build.macos-builder-installer) { modules = [ ]; };
|
2023-07-04 10:46:42 +00:00
|
|
|
|
2023-10-19 09:11:07 +00:00
|
|
|
linux-builder-x86_64 = self.linux-builder.override {
|
|
|
|
modules = [ { nixpkgs.hostPlatform = "x86_64-linux"; } ];
|
|
|
|
};
|
|
|
|
|
2023-08-13 23:49:53 +00:00
|
|
|
});
|
|
|
|
}
|