nixpkgs/pkgs/top-level/darwin-packages.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

245 lines
8.2 KiB
Nix
Raw Normal View History

{ lib
, buildPackages, pkgs, targetPackages
, generateSplicesForMkScope, makeScopeWithSplicing
, stdenv
, preLibcCrossHeaders
}:
let
2020-11-19 09:22:54 +01: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 + "-");
in
makeScopeWithSplicing (generateSplicesForMkScope "darwin") (_: {}) (spliced: spliced.apple_sdk.frameworks) (self: let
inherit (self) mkDerivation callPackage;
# Must use pkgs.callPackage to avoid infinite recursion.
2017-08-30 22:48:33 +02:00
2020-11-19 09:23:29 +01:00
# Open source packages that are built from source
appleSourcePackages = pkgs.callPackage ../os-specific/darwin/apple-source-releases { } self;
impure-cmds = pkgs.callPackage ../os-specific/darwin/impure-cmds { };
2020-11-19 09:23:29 +01:00
# macOS 10.12 SDK
apple_sdk_10_12 = pkgs.callPackage ../os-specific/darwin/apple-sdk {
inherit (buildPackages.darwin) print-reexports;
inherit (self) darwin-stubs;
};
2020-11-19 09:23:29 +01: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;
selectAttrs = attrs: names:
2023-02-14 19:11:59 +01:00
lib.listToAttrs (lib.concatMap (n: lib.optionals (attrs ? "${n}") [(lib.nameValuePair n attrs."${n}")]) names);
chooseLibs = (
# There are differences in which libraries are exported. Avoid evaluation
# errors when a package is not provided.
selectAttrs (
2020-11-19 09:23:29 +01:00
if useAppleSDKLibs
then apple_sdk
else appleSourcePackages
) ["Libsystem" "LibsystemCross" "libcharset" "libunwind" "objc4" "configd" "IOKit"]
) // {
2020-11-19 09:23:29 +01:00
inherit (
if useAppleSDKLibs
then apple_sdk.frameworks
else appleSourcePackages
) Security;
};
in
2020-11-19 09:23:29 +01:00
impure-cmds // appleSourcePackages // chooseLibs // {
inherit apple_sdk apple_sdk_10_12 apple_sdk_11_0;
stdenvNoCF = stdenv.override {
extraBuildInputs = [];
2020-09-18 10:12:43 +02:00
};
binutils-unwrapped = callPackage ../os-specific/darwin/binutils {
inherit (pkgs) binutils-unwrapped;
2020-11-19 09:23:29 +01:00
inherit (pkgs.llvmPackages) llvm clang-unwrapped;
};
binutils = pkgs.wrapBintoolsWith {
libc =
if stdenv.targetPlatform != stdenv.hostPlatform
then pkgs.libcCross
else pkgs.stdenv.cc.libc;
bintools = self.binutils-unwrapped;
};
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;
};
binutilsNoLibc = pkgs.wrapBintoolsWith {
libc = preLibcCrossHeaders;
bintools = self.binutils-unwrapped;
};
cctools = callPackage ../os-specific/darwin/cctools/port.nix {
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
};
cctools-apple = callPackage ../os-specific/darwin/cctools/apple.nix {
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
};
2023-05-01 17:45:15 +02:00
# TODO(@connorbaker): See https://github.com/NixOS/nixpkgs/issues/229389.
cf-private = self.apple_sdk.frameworks.CoreFoundation;
DarwinTools = callPackage ../os-specific/darwin/DarwinTools { };
2020-09-10 12:06:20 +02:00
darwin-stubs = callPackage ../os-specific/darwin/darwin-stubs { };
print-reexports = callPackage ../os-specific/darwin/print-reexports { };
2020-11-19 08:45:11 +01:00
rewrite-tbd = callPackage ../os-specific/darwin/rewrite-tbd { };
2020-11-19 09:23:29 +01:00
checkReexportsHook = pkgs.makeSetupHook {
2023-01-18 17:29:22 +01:00
name = "darwin-check-reexports-hook";
propagatedBuildInputs = [ pkgs.darwin.print-reexports ];
} ../os-specific/darwin/print-reexports/setup-hook.sh;
2020-11-19 08:41:41 +01:00
sigtool = callPackage ../os-specific/darwin/sigtool { };
2020-11-19 09:22:54 +01:00
postLinkSignHook = pkgs.writeTextFile {
name = "post-link-sign-hook";
executable = true;
text = ''
2022-07-19 23:50:33 +02:00
if [ "$linkerOutput" != "/dev/null" ]; then
CODESIGN_ALLOCATE=${targetPrefix}codesign_allocate \
${self.sigtool}/bin/codesign -f -s - "$linkerOutput"
fi
2020-11-19 09:22:54 +01:00
'';
};
signingUtils = callPackage ../os-specific/darwin/signing-utils { };
autoSignDarwinBinariesHook = pkgs.makeSetupHook {
2023-01-18 17:29:22 +01:00
name = "auto-sign-darwin-binaries-hook";
propagatedBuildInputs = [ self.signingUtils ];
} ../os-specific/darwin/signing-utils/auto-sign-hook.sh;
maloader = callPackage ../os-specific/darwin/maloader {
};
2017-12-09 20:37:24 +01:00
insert_dylib = callPackage ../os-specific/darwin/insert_dylib { };
iosSdkPkgs = callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix {
buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
inherit (pkgs.llvmPackages) clang-unwrapped;
};
2018-06-09 22:13:01 +02:00
iproute2mac = callPackage ../os-specific/darwin/iproute2mac { };
2020-11-19 09:23:29 +01:00
libobjc = self.objc4;
2018-06-09 22:13:01 +02:00
2018-02-05 17:41:35 +01:00
lsusb = callPackage ../os-specific/darwin/lsusb { };
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 00:32:02 +01:00
opencflite = callPackage ../os-specific/darwin/opencflite { };
openwith = pkgs.darwin.apple_sdk_11_0.callPackage ../os-specific/darwin/openwith {
inherit (apple_sdk_11_0.frameworks) AppKit Foundation UniformTypeIdentifiers;
};
stubs = pkgs.callPackages ../os-specific/darwin/stubs { };
trash = callPackage ../os-specific/darwin/trash { };
2017-05-11 20:37:59 +02:00
2021-06-07 12:51:17 +02:00
xattr = pkgs.python3Packages.callPackage ../os-specific/darwin/xattr { };
inherit (pkgs.callPackages ../os-specific/darwin/xcode { })
xcode_8_1 xcode_8_2
2022-07-06 09:12:11 +02: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
xcode;
2018-04-08 07:40:24 +02:00
CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
2020-11-19 09:23:29 +01:00
# TODO: make swift-corefoundation build with apple_sdk_11_0.Libsystem
CF = if useAppleSDKLibs
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 09:23:29 +01:00
else callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { };
# 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
# libdispatch-broken = callPackage ../os-specific/darwin/swift-corelibs/libdispatch.nix { };
libtapi = callPackage ../os-specific/darwin/libtapi {};
ios-deploy = callPackage ../os-specific/darwin/ios-deploy {};
discrete-scroll = callPackage ../os-specific/darwin/discrete-scroll { };
2020-08-18 23:07:54 +02:00
# See doc/builders/special/darwin-builder.section.md
builder =
let
toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ];
nixos = import ../../nixos {
configuration = {
imports = [
../../nixos/modules/profiles/macos-builder.nix
];
virtualisation.host = { inherit pkgs; };
};
system = toGuest stdenv.hostPlatform.system;
};
in
nixos.config.system.build.macos-builder-installer;
})