|
1 | 1 | { |
2 | | - description = "Tailscale build environment"; |
| 2 | + description = "Tailscale Android build environment"; |
3 | 3 |
|
4 | 4 | inputs = { |
5 | | - nixpkgs.url = "github:NixOS/nixpkgs"; |
6 | | - android.url = "github:tadfisher/android-nixpkgs"; |
7 | | - android.inputs.nixpkgs.follows = "nixpkgs"; |
| 5 | + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; |
8 | 6 | }; |
9 | 7 |
|
10 | | - outputs = { self, nixpkgs, android }: |
| 8 | + outputs = { self, nixpkgs }: |
11 | 9 | let |
12 | 10 | supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ]; |
13 | 11 | forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); |
14 | 12 | in |
15 | 13 | { |
16 | | - devShells = forAllSystems |
17 | | - (system: |
18 | | - let |
19 | | - pkgs = import nixpkgs { |
20 | | - inherit system; |
21 | | - }; |
22 | | - android-sdk = android.sdk.${system} (sdkPkgs: with sdkPkgs; |
23 | | - [ |
24 | | - build-tools-30-0-2 |
25 | | - cmdline-tools-latest |
26 | | - platform-tools |
27 | | - platforms-android-31 |
28 | | - platforms-android-30 |
29 | | - ndk-23-1-7779620 |
30 | | - patcher-v4 |
31 | | - ]); |
32 | | - in |
33 | | - { |
34 | | - default = (with pkgs; buildFHSUserEnv { |
35 | | - name = "tailscale"; |
36 | | - profile = '' |
37 | | - export ANDROID_SDK_ROOT="${android-sdk}/share/android-sdk" |
38 | | - export JAVA_HOME="${jdk8.home}" |
39 | | - ''; |
40 | | - targetPkgs = pkgs: with pkgs; [ |
41 | | - android-sdk |
42 | | - jdk8 |
43 | | - clang |
44 | | - ] ++ (if stdenv.isLinux then [ |
45 | | - vulkan-headers |
46 | | - libxkbcommon |
47 | | - wayland |
48 | | - xorg.libX11 |
49 | | - xorg.libXcursor |
50 | | - xorg.libXfixes |
51 | | - libGL |
52 | | - pkgconfig |
53 | | - ] else [ ]); |
54 | | - }).env; |
55 | | - } |
56 | | - ); |
| 14 | + devShells = forAllSystems (system: |
| 15 | + let |
| 16 | + pkgs = import nixpkgs { inherit system; }; |
| 17 | + |
| 18 | + commonPackages = with pkgs; [ |
| 19 | + bash |
| 20 | + cacert |
| 21 | + curl |
| 22 | + git |
| 23 | + gnumake |
| 24 | + gzip |
| 25 | + jdk21 |
| 26 | + unzip |
| 27 | + zip |
| 28 | + ]; |
| 29 | + |
| 30 | + linuxPackages = with pkgs; [ |
| 31 | + gcc |
| 32 | + glibc |
| 33 | + libGL |
| 34 | + libx11 |
| 35 | + libxcursor |
| 36 | + libxfixes |
| 37 | + libxkbcommon |
| 38 | + pkg-config |
| 39 | + stdenv.cc.cc.lib |
| 40 | + wayland |
| 41 | + zlib |
| 42 | + ]; |
| 43 | + |
| 44 | + shellProfile = '' |
| 45 | + export JAVA_HOME="${pkgs.jdk21.home}" |
| 46 | + export ANDROID_SDK_ROOT="''${ANDROID_SDK_ROOT:-$PWD/android-sdk}" |
| 47 | + export ANDROID_HOME="''${ANDROID_HOME:-$ANDROID_SDK_ROOT}" |
| 48 | + export PATH="$PWD/tool:$PWD/android/build/go/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH" |
| 49 | +
|
| 50 | + export GOTOOLCHAIN=local |
| 51 | + export TS_USE_TOOLCHAIN=1 |
| 52 | +
|
| 53 | + if [ ! -x "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" ]; then |
| 54 | + echo "Android SDK not found at $ANDROID_HOME." |
| 55 | + echo "Run: make androidsdk" |
| 56 | + fi |
| 57 | + ''; |
| 58 | + in |
| 59 | + { |
| 60 | + default = pkgs.mkShell { |
| 61 | + packages = commonPackages ++ pkgs.lib.optionals pkgs.stdenv.isLinux linuxPackages; |
| 62 | + shellHook = shellProfile; |
| 63 | + }; |
| 64 | + }); |
57 | 65 | }; |
58 | 66 | } |
0 commit comments