nixpkgs/pkgs/os-specific/darwin/xcode/default.nix
2018-05-23 20:32:15 +01:00

49 lines
1.7 KiB
Nix

{ stdenv, requireFile }:
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://download.developer.apple.com/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 {
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";
}