786b813f7b
- Full UNO game logic with AI opponents - Compose Multiplatform UI with animations - Shared module (commonMain) with game engine - Desktop app (Compose Desktop) - Android app (Compose Multiplatform) - Web app (Kotlin/Wasm) - Nix shell for reproducible dev environment
62 lines
1.5 KiB
Nix
62 lines
1.5 KiB
Nix
{
|
|
pkgs ? import <nixpkgs> { config.allowUnfree = true; },
|
|
}:
|
|
|
|
let
|
|
androidSdk = pkgs.androidenv.composeAndroidPackages {
|
|
buildToolsVersions = [ "35.0.0" ];
|
|
platformVersions = [ "35" ];
|
|
abiVersions = [ "x86_64" ];
|
|
includeEmulator = false;
|
|
includeSystemImages = false;
|
|
includeNDK = false;
|
|
};
|
|
in
|
|
pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
jdk21
|
|
kotlin
|
|
gradle
|
|
androidSdk.androidsdk
|
|
android-tools
|
|
|
|
libGL
|
|
libX11
|
|
libXcursor
|
|
libXext
|
|
libXi
|
|
libXrender
|
|
fontconfig
|
|
libxkbcommon
|
|
];
|
|
|
|
shellHook = ''
|
|
ln -sfn ${pkgs.jdk21}/lib/openjdk .jdk
|
|
export ANDROID_HOME="${androidSdk.androidsdk}/libexec/android-sdk"
|
|
export ANDROID_SDK_ROOT="${androidSdk.androidsdk}/libexec/android-sdk"
|
|
export GRADLE_OPTS="-Dorg.gradle.java.installations.paths=${pkgs.jdk21}/lib/openjdk"
|
|
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$JAVA_HOME/bin:$PATH"
|
|
export LD_LIBRARY_PATH=${
|
|
pkgs.lib.makeLibraryPath [
|
|
pkgs.libGL
|
|
pkgs.libX11
|
|
pkgs.libXcursor
|
|
pkgs.libXext
|
|
pkgs.libXi
|
|
pkgs.libXrender
|
|
pkgs.fontconfig
|
|
pkgs.libxkbcommon
|
|
]
|
|
}
|
|
|
|
echo "sdk.dir=$ANDROID_HOME" > local.properties
|
|
|
|
echo "=== UNO KMP Dev Shell ==="
|
|
echo "JDK: $(java -version 2>&1 | head -1)"
|
|
echo "Kotlin: $(kotlin -version 2>&1 | head -1)"
|
|
echo "Gradle: $(gradle --version 2>&1 | grep 'Gradle')"
|
|
echo "Android: $ANDROID_HOME"
|
|
echo "========================"
|
|
'';
|
|
}
|