Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, pkgs 3, newScope 4, darwin 5, llvmPackages_15 6, overrideCC 7}: 8 9let 10 self = rec { 11 12 callPackage = newScope self; 13 14 # Current versions of Swift on Darwin require macOS SDK 10.15 at least. 15 # Re-export this so we can rely on the minimum Swift SDK elsewhere. 16 apple_sdk = pkgs.darwin.apple_sdk_11_0; 17 18 # Swift builds its own Clang for internal use. We wrap that clang with a 19 # cc-wrapper derived from the clang configured below. Because cc-wrapper 20 # applies a specific resource-root, the two versions are best matched, or 21 # we'll often run into compilation errors. 22 # 23 # The following selects the correct Clang version, matching the version 24 # used in Swift, and applies the same libc overrides as `apple_sdk.stdenv`. 25 clang = if pkgs.stdenv.isDarwin 26 then 27 llvmPackages_15.clang.override rec { 28 libc = apple_sdk.Libsystem; 29 bintools = pkgs.bintools.override { inherit libc; }; 30 } 31 else 32 llvmPackages_15.clang; 33 34 # Overrides that create a useful environment for swift packages, allowing 35 # packaging with `swiftPackages.callPackage`. These are similar to 36 # `apple_sdk_11_0.callPackage`, with our clang on top. 37 inherit (clang) bintools; 38 stdenv = overrideCC pkgs.stdenv clang; 39 darwin = pkgs.darwin.overrideScope (_: prev: { 40 inherit apple_sdk; 41 inherit (apple_sdk) Libsystem LibsystemCross libcharset libunwind objc4 configd IOKit Security; 42 CF = apple_sdk.CoreFoundation; 43 }); 44 xcodebuild = pkgs.xcbuild.override { 45 inherit (apple_sdk.frameworks) CoreServices CoreGraphics ImageIO; 46 inherit stdenv; 47 sdkVer = "10.15"; 48 }; 49 xcbuild = xcodebuild; 50 51 swift-unwrapped = callPackage ./compiler { 52 inherit (darwin) DarwinTools cctools sigtool; 53 inherit (apple_sdk) MacOSX-SDK CLTools_Executables; 54 inherit (apple_sdk.frameworks) CoreServices Foundation Combine; 55 }; 56 57 swiftNoSwiftDriver = callPackage ./wrapper { 58 swift = swift-unwrapped; 59 useSwiftDriver = false; 60 }; 61 62 Dispatch = if stdenv.isDarwin 63 then null # part of libsystem 64 else callPackage ./libdispatch { swift = swiftNoSwiftDriver; }; 65 66 Foundation = if stdenv.isDarwin 67 then apple_sdk.frameworks.Foundation 68 else callPackage ./foundation { swift = swiftNoSwiftDriver; }; 69 70 # TODO: Apple distributes a binary XCTest with Xcode, but it is not part of 71 # CLTools (or SUS), so would have to figure out how to fetch it. The binary 72 # version has several extra features, like a test runner and ObjC support. 73 XCTest = callPackage ./xctest { 74 inherit (darwin) DarwinTools; 75 swift = swiftNoSwiftDriver; 76 }; 77 78 swiftpm = callPackage ./swiftpm { 79 inherit (darwin) DarwinTools cctools; 80 inherit (apple_sdk.frameworks) CryptoKit LocalAuthentication; 81 swift = swiftNoSwiftDriver; 82 }; 83 84 swift-driver = callPackage ./swift-driver { 85 swift = swiftNoSwiftDriver; 86 }; 87 88 swift = callPackage ./wrapper { 89 swift = swift-unwrapped; 90 }; 91 92 sourcekit-lsp = callPackage ./sourcekit-lsp { 93 inherit (apple_sdk.frameworks) CryptoKit LocalAuthentication; 94 }; 95 96 swift-docc = callPackage ./swift-docc { 97 inherit (apple_sdk.frameworks) CryptoKit LocalAuthentication; 98 }; 99 100 swift-format = callPackage ./swift-format { }; 101 102 }; 103 104in self