2021-05-04 07:08:20 +03:00
|
|
|
{ lib
|
|
|
|
, buildPackages, pkgs, targetPackages
|
2022-12-24 18:44:09 +03:00
|
|
|
, generateSplicesForMkScope, makeScopeWithSplicing
|
|
|
|
, stdenv
|
2021-05-11 22:20:15 +03:00
|
|
|
, preLibcCrossHeaders
|
2023-07-04 13:46:42 +03:00
|
|
|
, config
|
2018-04-16 02:21:45 +03:00
|
|
|
}:
|
2017-08-30 23:44:42 +03:00
|
|
|
|
|
|
|
let
|
2020-11-19 11:22:54 +03: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 + "-");
|
2017-08-30 23:44:42 +03:00
|
|
|
in
|
|
|
|
|
2023-07-29 00:04:09 +03:00
|
|
|
makeScopeWithSplicing (generateSplicesForMkScope "darwin") (_: {}) (spliced: spliced.apple_sdk.frameworks) (self: let
|
2021-05-04 07:08:20 +03:00
|
|
|
inherit (self) mkDerivation callPackage;
|
2017-08-30 23:44:42 +03:00
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
# Must use pkgs.callPackage to avoid infinite recursion.
|
2017-08-30 23:48:33 +03:00
|
|
|
|
2020-11-19 11:23:29 +03:00
|
|
|
# Open source packages that are built from source
|
|
|
|
appleSourcePackages = pkgs.callPackage ../os-specific/darwin/apple-source-releases { } self;
|
2021-05-04 07:08:20 +03:00
|
|
|
|
|
|
|
impure-cmds = pkgs.callPackage ../os-specific/darwin/impure-cmds { };
|
|
|
|
|
2020-11-19 11:23:29 +03:00
|
|
|
# macOS 10.12 SDK
|
|
|
|
apple_sdk_10_12 = pkgs.callPackage ../os-specific/darwin/apple-sdk {
|
2021-05-04 07:08:20 +03:00
|
|
|
inherit (buildPackages.darwin) print-reexports;
|
|
|
|
inherit (self) darwin-stubs;
|
2019-06-18 00:12:07 +03:00
|
|
|
};
|
2020-11-19 11:23:29 +03:00
|
|
|
|
|
|
|
# macOS 11.0 SDK
|
|
|
|
apple_sdk_11_0 = pkgs.callPackage ../os-specific/darwin/apple-sdk-11.0 { };
|
|
|
|
|
|
|
|
# Pick an SDK
|
|
|
|
apple_sdk = if stdenv.hostPlatform.isAarch64 then apple_sdk_11_0 else apple_sdk_10_12;
|
|
|
|
|
|
|
|
# Pick the source of libraries: either Apple's open source releases, or the
|
|
|
|
# SDK.
|
|
|
|
useAppleSDKLibs = stdenv.hostPlatform.isAarch64;
|
|
|
|
|
2021-04-27 13:56:59 +03:00
|
|
|
selectAttrs = attrs: names:
|
2023-02-14 21:11:59 +03:00
|
|
|
lib.listToAttrs (lib.concatMap (n: lib.optionals (attrs ? "${n}") [(lib.nameValuePair n attrs."${n}")]) names);
|
2021-04-27 13:56:59 +03:00
|
|
|
|
|
|
|
chooseLibs = (
|
|
|
|
# There are differences in which libraries are exported. Avoid evaluation
|
|
|
|
# errors when a package is not provided.
|
|
|
|
selectAttrs (
|
2020-11-19 11:23:29 +03:00
|
|
|
if useAppleSDKLibs
|
|
|
|
then apple_sdk
|
|
|
|
else appleSourcePackages
|
2021-04-27 13:56:59 +03:00
|
|
|
) ["Libsystem" "LibsystemCross" "libcharset" "libunwind" "objc4" "configd" "IOKit"]
|
|
|
|
) // {
|
2020-11-19 11:23:29 +03:00
|
|
|
inherit (
|
|
|
|
if useAppleSDKLibs
|
|
|
|
then apple_sdk.frameworks
|
|
|
|
else appleSourcePackages
|
|
|
|
) Security;
|
|
|
|
};
|
2021-05-04 07:08:20 +03:00
|
|
|
in
|
|
|
|
|
2020-11-19 11:23:29 +03:00
|
|
|
impure-cmds // appleSourcePackages // chooseLibs // {
|
2019-06-18 00:12:07 +03:00
|
|
|
|
2022-06-06 16:48:25 +03:00
|
|
|
inherit apple_sdk apple_sdk_10_12 apple_sdk_11_0;
|
2021-05-04 07:08:20 +03:00
|
|
|
|
|
|
|
stdenvNoCF = stdenv.override {
|
|
|
|
extraBuildInputs = [];
|
2020-09-18 11:12:43 +03:00
|
|
|
};
|
2017-08-30 23:44:42 +03:00
|
|
|
|
2018-04-16 02:21:45 +03:00
|
|
|
binutils-unwrapped = callPackage ../os-specific/darwin/binutils {
|
|
|
|
inherit (pkgs) binutils-unwrapped;
|
2020-11-19 11:23:29 +03:00
|
|
|
inherit (pkgs.llvmPackages) llvm clang-unwrapped;
|
2018-04-16 02:21:45 +03:00
|
|
|
};
|
|
|
|
|
2017-08-26 18:43:30 +03:00
|
|
|
binutils = pkgs.wrapBintoolsWith {
|
|
|
|
libc =
|
2018-08-20 21:43:41 +03:00
|
|
|
if stdenv.targetPlatform != stdenv.hostPlatform
|
2017-08-26 18:43:30 +03:00
|
|
|
then pkgs.libcCross
|
|
|
|
else pkgs.stdenv.cc.libc;
|
2021-05-04 07:08:20 +03:00
|
|
|
bintools = self.binutils-unwrapped;
|
|
|
|
};
|
|
|
|
|
2022-12-26 15:16:17 +03:00
|
|
|
binutilsDualAs-unwrapped = callPackage ../os-specific/darwin/binutils {
|
|
|
|
inherit (pkgs) binutils-unwrapped;
|
|
|
|
inherit (pkgs.llvmPackages) llvm clang-unwrapped;
|
|
|
|
dualAs = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
binutilsDualAs = pkgs.wrapBintoolsWith {
|
|
|
|
libc =
|
|
|
|
if stdenv.targetPlatform != stdenv.hostPlatform
|
|
|
|
then pkgs.libcCross
|
|
|
|
else pkgs.stdenv.cc.libc;
|
|
|
|
bintools = self.binutilsDualAs-unwrapped;
|
|
|
|
};
|
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
binutilsNoLibc = pkgs.wrapBintoolsWith {
|
2021-05-11 22:20:15 +03:00
|
|
|
libc = preLibcCrossHeaders;
|
2021-05-04 07:08:20 +03:00
|
|
|
bintools = self.binutils-unwrapped;
|
2017-09-07 13:22:33 +03:00
|
|
|
};
|
2017-08-30 23:44:42 +03:00
|
|
|
|
2023-05-18 15:14:03 +03:00
|
|
|
cctools = self.cctools-llvm;
|
2023-05-18 15:16:24 +03:00
|
|
|
|
|
|
|
cctools-apple = callPackage ../os-specific/darwin/cctools/apple.nix {
|
2017-08-30 23:44:42 +03:00
|
|
|
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
|
|
|
|
};
|
|
|
|
|
2023-05-18 15:16:24 +03:00
|
|
|
cctools-llvm = callPackage ../os-specific/darwin/cctools/llvm.nix {
|
|
|
|
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
|
|
|
|
};
|
|
|
|
|
|
|
|
cctools-port = callPackage ../os-specific/darwin/cctools/port.nix {
|
2022-02-01 04:35:00 +03:00
|
|
|
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
|
|
|
|
};
|
|
|
|
|
2023-05-01 18:45:15 +03:00
|
|
|
# TODO(@connorbaker): See https://github.com/NixOS/nixpkgs/issues/229389.
|
2021-05-04 07:08:20 +03:00
|
|
|
cf-private = self.apple_sdk.frameworks.CoreFoundation;
|
2017-08-30 23:44:42 +03:00
|
|
|
|
|
|
|
DarwinTools = callPackage ../os-specific/darwin/DarwinTools { };
|
|
|
|
|
2020-09-10 13:06:20 +03:00
|
|
|
darwin-stubs = callPackage ../os-specific/darwin/darwin-stubs { };
|
|
|
|
|
2020-11-19 10:48:10 +03:00
|
|
|
print-reexports = callPackage ../os-specific/darwin/print-reexports { };
|
|
|
|
|
2020-11-19 10:45:11 +03:00
|
|
|
rewrite-tbd = callPackage ../os-specific/darwin/rewrite-tbd { };
|
|
|
|
|
2020-11-19 11:23:29 +03:00
|
|
|
checkReexportsHook = pkgs.makeSetupHook {
|
2023-01-18 19:29:22 +03:00
|
|
|
name = "darwin-check-reexports-hook";
|
2023-01-01 23:10:24 +03:00
|
|
|
propagatedBuildInputs = [ pkgs.darwin.print-reexports ];
|
2020-11-19 10:48:10 +03:00
|
|
|
} ../os-specific/darwin/print-reexports/setup-hook.sh;
|
2020-09-18 11:10:03 +03:00
|
|
|
|
2020-11-19 10:41:41 +03:00
|
|
|
sigtool = callPackage ../os-specific/darwin/sigtool { };
|
|
|
|
|
2020-11-19 11:22:54 +03:00
|
|
|
postLinkSignHook = pkgs.writeTextFile {
|
|
|
|
name = "post-link-sign-hook";
|
|
|
|
executable = true;
|
|
|
|
|
|
|
|
text = ''
|
2022-07-20 00:50:33 +03:00
|
|
|
if [ "$linkerOutput" != "/dev/null" ]; then
|
|
|
|
CODESIGN_ALLOCATE=${targetPrefix}codesign_allocate \
|
|
|
|
${self.sigtool}/bin/codesign -f -s - "$linkerOutput"
|
|
|
|
fi
|
2020-11-19 11:22:54 +03:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
2021-02-15 08:54:58 +03:00
|
|
|
signingUtils = callPackage ../os-specific/darwin/signing-utils { };
|
|
|
|
|
|
|
|
autoSignDarwinBinariesHook = pkgs.makeSetupHook {
|
2023-01-18 19:29:22 +03:00
|
|
|
name = "auto-sign-darwin-binaries-hook";
|
2023-01-01 23:10:24 +03:00
|
|
|
propagatedBuildInputs = [ self.signingUtils ];
|
2021-02-15 08:54:58 +03:00
|
|
|
} ../os-specific/darwin/signing-utils/auto-sign-hook.sh;
|
|
|
|
|
2017-08-30 23:44:42 +03:00
|
|
|
maloader = callPackage ../os-specific/darwin/maloader {
|
|
|
|
};
|
|
|
|
|
2017-12-09 22:37:24 +03:00
|
|
|
insert_dylib = callPackage ../os-specific/darwin/insert_dylib { };
|
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
iosSdkPkgs = callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix {
|
2018-04-16 02:21:45 +03:00
|
|
|
buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
|
|
|
|
targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
|
|
|
|
inherit (pkgs.llvmPackages) clang-unwrapped;
|
2017-08-30 23:44:42 +03:00
|
|
|
};
|
|
|
|
|
2018-06-09 23:13:01 +03:00
|
|
|
iproute2mac = callPackage ../os-specific/darwin/iproute2mac { };
|
|
|
|
|
2020-11-19 11:23:29 +03:00
|
|
|
libobjc = self.objc4;
|
2018-06-09 23:13:01 +03:00
|
|
|
|
2018-02-05 19:41:35 +03:00
|
|
|
lsusb = callPackage ../os-specific/darwin/lsusb { };
|
2017-08-30 23:44:42 +03:00
|
|
|
|
2022-06-06 16:49:32 +03:00
|
|
|
moltenvk = pkgs.darwin.apple_sdk_11_0.callPackage ../os-specific/darwin/moltenvk {
|
|
|
|
inherit (apple_sdk_11_0.frameworks) AppKit Foundation Metal QuartzCore;
|
|
|
|
inherit (apple_sdk_11_0) MacOSX-SDK Libsystem;
|
|
|
|
inherit (pkgs.darwin) cctools sigtool;
|
|
|
|
};
|
2022-02-08 02:32:02 +03:00
|
|
|
|
2017-08-30 23:44:42 +03:00
|
|
|
opencflite = callPackage ../os-specific/darwin/opencflite { };
|
|
|
|
|
2023-02-02 07:14:37 +03:00
|
|
|
openwith = pkgs.darwin.apple_sdk_11_0.callPackage ../os-specific/darwin/openwith {
|
|
|
|
inherit (apple_sdk_11_0.frameworks) AppKit Foundation UniformTypeIdentifiers;
|
|
|
|
};
|
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
stubs = pkgs.callPackages ../os-specific/darwin/stubs { };
|
2017-08-30 23:44:42 +03:00
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
trash = callPackage ../os-specific/darwin/trash { };
|
2017-05-11 21:37:59 +03:00
|
|
|
|
2021-06-07 13:51:17 +03:00
|
|
|
xattr = pkgs.python3Packages.callPackage ../os-specific/darwin/xattr { };
|
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
inherit (pkgs.callPackages ../os-specific/darwin/xcode { })
|
2019-10-16 02:14:33 +03:00
|
|
|
xcode_8_1 xcode_8_2
|
2022-07-06 10:12:11 +03: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
|
2019-10-16 02:14:33 +03:00
|
|
|
xcode;
|
2017-08-30 23:44:42 +03:00
|
|
|
|
2018-04-08 08:40:24 +03:00
|
|
|
CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
|
|
|
|
|
2020-11-19 11:23:29 +03:00
|
|
|
# TODO: make swift-corefoundation build with apple_sdk_11_0.Libsystem
|
|
|
|
CF = if useAppleSDKLibs
|
2021-01-29 08:39:23 +03:00
|
|
|
then
|
|
|
|
# This attribute (CF) is included in extraBuildInputs in the stdenv. This
|
|
|
|
# is typically the open source project. When a project refers to
|
|
|
|
# "CoreFoundation" it has an extra setup hook to force impure system
|
|
|
|
# CoreFoundation into the link step.
|
|
|
|
#
|
|
|
|
# In this branch, we only have a single "CoreFoundation" to choose from.
|
|
|
|
# To be compatible with the existing convention, we define
|
|
|
|
# CoreFoundation with the setup hook, and CF as the same package but
|
|
|
|
# with the setup hook removed.
|
|
|
|
#
|
|
|
|
# This may seem unimportant, but without it packages (e.g., bacula) will
|
|
|
|
# fail with linker errors referring ___CFConstantStringClassReference.
|
|
|
|
# It's not clear to me why some packages need this extra setup.
|
|
|
|
lib.overrideDerivation apple_sdk.frameworks.CoreFoundation (drv: {
|
|
|
|
setupHook = null;
|
|
|
|
})
|
2020-11-19 11:23:29 +03:00
|
|
|
else callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { };
|
2018-10-24 13:04:05 +03:00
|
|
|
|
2018-09-09 20:36:05 +03: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 07:08:20 +03:00
|
|
|
# libdispatch-broken = callPackage ../os-specific/darwin/swift-corelibs/libdispatch.nix { };
|
2018-04-08 08:29:08 +03:00
|
|
|
|
2019-01-26 02:04:50 +03:00
|
|
|
libtapi = callPackage ../os-specific/darwin/libtapi {};
|
|
|
|
|
2020-07-20 18:50:41 +03:00
|
|
|
ios-deploy = callPackage ../os-specific/darwin/ios-deploy {};
|
|
|
|
|
2021-05-04 07:08:20 +03:00
|
|
|
discrete-scroll = callPackage ../os-specific/darwin/discrete-scroll { };
|
2020-08-19 00:07:54 +03:00
|
|
|
|
2022-12-20 21:03:48 +03:00
|
|
|
# See doc/builders/special/darwin-builder.section.md
|
2023-07-04 13:46:42 +03:00
|
|
|
linux-builder = lib.makeOverridable ({ modules }:
|
2022-12-20 03:07:02 +03:00
|
|
|
let
|
|
|
|
toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ];
|
|
|
|
|
|
|
|
nixos = import ../../nixos {
|
|
|
|
configuration = {
|
|
|
|
imports = [
|
|
|
|
../../nixos/modules/profiles/macos-builder.nix
|
2023-06-14 02:16:34 +03:00
|
|
|
] ++ modules;
|
2022-12-20 03:07:02 +03:00
|
|
|
|
|
|
|
virtualisation.host = { inherit pkgs; };
|
|
|
|
};
|
|
|
|
|
|
|
|
system = toGuest stdenv.hostPlatform.system;
|
|
|
|
};
|
|
|
|
|
|
|
|
in
|
2023-06-14 02:16:34 +03:00
|
|
|
nixos.config.system.build.macos-builder-installer) { modules = [ ]; };
|
2023-07-04 13:46:42 +03:00
|
|
|
|
|
|
|
} // lib.optionalAttrs config.allowAliases {
|
|
|
|
builder = throw "'darwin.builder' has been changed and renamed to 'darwin.linux-builder'. The default ssh port is now 31022. Please update your configuration or override the port back to 22. See https://nixos.org/manual/nixpkgs/unstable/#sec-darwin-builder"; # added 2023-07-06
|
2023-07-29 00:04:09 +03:00
|
|
|
})
|