e686bd2771
There is some weird issue with 9.4 that needs to be resolved. 8.2 is used by iOS anyway so that makes it easier.
51 lines
2.0 KiB
Nix
51 lines
2.0 KiB
Nix
{ stdenv, requireFile, targetPlatform, lib }:
|
|
|
|
let requireXcode = version: sha256:
|
|
let
|
|
xip = "Xcode_" + version + ".xip";
|
|
# TODO(alexfmpe): Find out how to validate the .xip signature in Linux
|
|
unxip = if stdenv.isDarwin
|
|
then ''
|
|
open -W ${xip}
|
|
rm -rf ${xip}
|
|
''
|
|
else ''
|
|
xar -xf ${xip}
|
|
rm -rf ${xip}
|
|
pbzx -n Content | cpio -i
|
|
rm Content Metadata
|
|
'';
|
|
app = requireFile rec {
|
|
name = "Xcode.app";
|
|
url = "https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_${version}/${xip}";
|
|
hashMode = "recursive";
|
|
inherit sha256;
|
|
message = ''
|
|
Unfortunately, we cannot download ${name} automatically.
|
|
Please go to ${url}
|
|
to download it yourself, and add it to the Nix store by running the following commands.
|
|
Note: download (~ 5GB), extraction and storing of Xcode will take a while
|
|
|
|
${unxip}
|
|
nix-store --add-fixed --recursive sha256 Xcode.app
|
|
rm -rf Xcode.app
|
|
'';
|
|
};
|
|
meta = with stdenv.lib; {
|
|
homepage = https://developer.apple.com/downloads/;
|
|
description = "Apple's XCode SDK";
|
|
license = licenses.unfree;
|
|
platforms = platforms.darwin ++ platforms.linux;
|
|
};
|
|
|
|
in app.overrideAttrs ( oldAttrs: oldAttrs // { inherit meta; });
|
|
|
|
in lib.makeExtensible (self: {
|
|
xcode_8_1 = requireXcode "8.1" "18xjvfipwzia66gm3r9p770xdd4r375vak7chw5vgqnv9yyjiq2n";
|
|
xcode_8_2 = requireXcode "8.2" "13nd1zsfqcp9hwp15hndr0rsbb8rgprrz7zr2ablj4697qca06m2";
|
|
xcode_9_1 = requireXcode "9.1" "0ab1403wy84ys3yn26fj78cazhpnslmh3nzzp1wxib3mr1afjvic";
|
|
xcode_9_2 = requireXcode "9.2" "1bgfgdp266cbbqf2axcflz92frzvhi0qw0jdkcw6r85kdpc8dj4c";
|
|
xcode_9_4 = requireXcode "9.4" "6731381785075602a52489f7ea47ece8f6daf225007ba3ffae1fd59b1c0b5f01";
|
|
xcode = self."xcode_${lib.replaceStrings ["."] ["_"] (if targetPlatform.useiOSPrebuilt then targetPlatform.xcodeVer else "8.2")}";
|
|
})
|