deer social fork for personal usage. but you might see a use idk. github mirror
at main 3.6 kB view raw
1{ 2 inputs = { 3 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 4 flake-utils.url = "github:numtide/flake-utils"; 5 android-nixpkgs.url = "github:tadfisher/android-nixpkgs"; 6 wrangler-flake.url = "github:ryand56/wrangler"; 7 }; 8 9 outputs = { 10 nixpkgs, 11 flake-utils, 12 wrangler-flake, 13 android-nixpkgs, 14 ... 15 }: 16 flake-utils.lib.eachDefaultSystem ( 17 system: let 18 noEmulator = (builtins.getEnv "NO_EMULATOR") == "1"; 19 xdgStateHome = builtins.getEnv "XDG_STATE_HOME"; 20 21 android-arch = 22 if system == "aarch64-darwin" 23 then "arm64-v8a" 24 else "x86-64"; 25 android-arch-underline = 26 if system == "aarch64-darwin" 27 then "arm64-v8a" 28 else "x86_64"; 29 homedir = builtins.getEnv "HOME"; 30 state-home = 31 if pkgs.lib.last (pkgs.lib.splitString "-" system) == "darwin" 32 then "${homedir}/." # ~/.android 33 else "${xdgStateHome}/"; 34 35 pkgs = import nixpkgs { 36 inherit system; 37 config = { 38 android_sdk.accept_license = true; 39 allowUnfree = true; 40 }; 41 }; 42 pinnedJDK = pkgs.jdk17; 43 androidSdk = android-nixpkgs.sdk.${system} ( 44 sdk: 45 with sdk; 46 [ 47 build-tools-35-0-0 48 cmdline-tools-latest 49 platform-tools 50 platforms-android-35 51 sources-android-35 52 ndk-27-1-12297006 53 cmake-3-22-1 54 ] 55 ++ pkgs.lib.optionals (!noEmulator) [ 56 emulator 57 sdk."system-images-android-35-google-apis-${android-arch}" 58 sdk."system-images-android-35-google-apis-playstore-${android-arch}" 59 ] 60 ); 61 62 create-avd = pkgs.writeShellScriptBin "create-avd" '' 63 avdmanager create avd \ 64 --name android-35 \ 65 --package 'system-images;android-35;google_apis_playstore;${android-arch-underline}' \ 66 --tag google_apis_playstore \ 67 --device pixel_8 \ 68 --force 69 ''; 70 in 71 with pkgs; { 72 packages = { 73 default = callPackage ./default.nix {}; 74 }; 75 devShells = { 76 default = mkShell rec { 77 buildInputs = [ 78 androidSdk 79 pinnedJDK 80 ]; 81 82 JAVA_HOME = pinnedJDK; 83 ANDROID_HOME = "${androidSdk}/share/android-sdk"; 84 ANDROID_SDK_ROOT = "${androidSdk}/share/android-sdk"; 85 ANDROID_USER_HOME = "${state-home}android"; # has leading '/' sorted out already 86 ANDROID_AVD_HOME = "${ANDROID_USER_HOME}/avd"; 87 88 GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/35.0.0/aapt2"; 89 90 packages = 91 [ 92 gradle_8 93 94 just 95 fastmod 96 nodejs 97 yarn 98 crowdin-cli 99 eas-cli 100 101 bundletool 102 103 typescript 104 typescript-language-server 105 106 go 107 gopls 108 109 wrangler-flake.packages.${system}.wrangler 110 ] 111 ++ pkgs.lib.optionals (!noEmulator) [create-avd]; 112 113 shellHook = '' 114 export GRADLE_USER_HOME=~/.cache/gradle 115 ''; 116 }; 117 }; 118 } 119 ); 120}