summary refs log tree commit diff
path: root/pkgs/development/mobile/titaniumenv/default.nix
blob: 6c71116b5e819d38ffef83a8e5acf2bcc881210b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{pkgs, pkgs_i686, xcodeVersion ? "5.0", tiVersion ? "3.2.3.GA"}:

let
  # We have to use Oracle's JDK. On Darwin, just simply expose the host system's
  # JDK. According to their docs, OpenJDK is not supported.
  
  jdkWrapper = pkgs.stdenv.mkDerivation {
    name = "jdk-wrapper";
    buildCommand = ''
      mkdir -p $out/bin
      cd $out/bin
      ln -s /usr/bin/javac
      ln -s /usr/bin/java
      ln -s /usr/bin/jarsigner
      ln -s /usr/bin/jar
      ln -s /usr/bin/keytool
    '';
    setupHook = ''
      export JAVA_HOME=/usr
    '';
  };
in
rec {
  androidenv = pkgs.androidenv;

  xcodeenv = if pkgs.stdenv.system == "x86_64-darwin" then pkgs.xcodeenv.override {
    version = xcodeVersion;
  } else null;
  
  titaniumsdk = let
    titaniumSdkFile = if tiVersion == "3.1.4.GA" then ./titaniumsdk-3.1.nix
      else if tiVersion == "3.2.3.GA" then ./titaniumsdk-3.2.nix
      else if tiVersion == "3.3.0.GA" then ./titaniumsdk-3.3.nix
      else throw "Titanium version not supported: "+tiVersion;
    in
    import titaniumSdkFile {
      inherit (pkgs) stdenv fetchurl unzip makeWrapper python jdk;
    };
  
  buildApp = import ./build-app.nix {
    inherit (pkgs) stdenv python which;
    jdk = if pkgs.stdenv.isLinux then pkgs.oraclejdk7
      else if pkgs.stdenv.isDarwin then jdkWrapper
      else throw "Platform not supported: ${pkgs.stdenv.system}";
    inherit (pkgs.nodePackages) titanium;
    inherit (androidenv) androidsdk;
    inherit (xcodeenv) xcodewrapper;
    inherit titaniumsdk;
  };
}