chore: set up Flutter and Android SDK with devbox
This commit is contained in:
parent
dde44c873a
commit
c9f8efc867
5 changed files with 207 additions and 0 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -43,3 +43,7 @@ app.*.map.json
|
||||||
/android/app/debug
|
/android/app/debug
|
||||||
/android/app/profile
|
/android/app/profile
|
||||||
/android/app/release
|
/android/app/release
|
||||||
|
|
||||||
|
# devbox
|
||||||
|
.devbox/
|
||||||
|
nix-android-sdk/flake.lock
|
||||||
|
|
|
||||||
32
devbox.json
Normal file
32
devbox.json
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/main/schema/schemas/devbox.schema.json",
|
||||||
|
"packages": {
|
||||||
|
"flutter@3.41.9-sdk-links": {},
|
||||||
|
"nixpkgs#openjdk17": {},
|
||||||
|
"path:./nix-android-sdk#android-sdk": {},
|
||||||
|
"gtk3": {},
|
||||||
|
"clang": {},
|
||||||
|
"cmake": {},
|
||||||
|
"ninja": {},
|
||||||
|
"pkg-config": {},
|
||||||
|
"patchelf": {}
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"ANDROID_HOME": "$DEVBOX_PACKAGES_DIR/share/android-sdk",
|
||||||
|
"ANDROID_SDK_ROOT": "$DEVBOX_PACKAGES_DIR/share/android-sdk"
|
||||||
|
},
|
||||||
|
"shell": {
|
||||||
|
"init_hook": [
|
||||||
|
"export PKG_CONFIG_PATH=\"$PWD/.devbox/nix/profile/default/lib/pkgconfig:$PKG_CONFIG_PATH\"",
|
||||||
|
"export LD_LIBRARY_PATH=\"$PWD/.devbox/nix/profile/default/lib:$LD_LIBRARY_PATH\"",
|
||||||
|
"flutter config --jdk-dir \"$(dirname \"$(dirname \"$(command -v java)\")\")\" > /dev/null"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"analyze": "flutter analyze",
|
||||||
|
"test": "flutter test",
|
||||||
|
"run": "flutter run",
|
||||||
|
"run-linux": "flutter run -d linux",
|
||||||
|
"build-linux": "flutter build linux"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
85
devbox.lock
Normal file
85
devbox.lock
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
{
|
||||||
|
"lockfile_version": "1",
|
||||||
|
"packages": {
|
||||||
|
"clang": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D#clang",
|
||||||
|
"source": "nixpkg"
|
||||||
|
},
|
||||||
|
"cmake": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D#cmake",
|
||||||
|
"source": "nixpkg"
|
||||||
|
},
|
||||||
|
"flutter@3.41.9-sdk-links": {
|
||||||
|
"last_modified": "2026-05-21T08:15:18Z",
|
||||||
|
"resolved": "github:NixOS/nixpkgs/4a29d733e8a7d5b824c3d8c958a946a9867b3eb2#flutter",
|
||||||
|
"source": "devbox-search",
|
||||||
|
"version": "3.41.9-sdk-links",
|
||||||
|
"systems": {
|
||||||
|
"aarch64-darwin": {
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "out",
|
||||||
|
"path": "/nix/store/mp9x3mn0x5hs11m8z4m20w8gndkkccb7-flutter-wrapped-3.41.9-sdk-links",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"store_path": "/nix/store/mp9x3mn0x5hs11m8z4m20w8gndkkccb7-flutter-wrapped-3.41.9-sdk-links"
|
||||||
|
},
|
||||||
|
"aarch64-linux": {
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "out",
|
||||||
|
"path": "/nix/store/aidhap5ilmmf4fzyr0gwxxls0d7b9h7z-flutter-wrapped-3.41.9-sdk-links",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"store_path": "/nix/store/aidhap5ilmmf4fzyr0gwxxls0d7b9h7z-flutter-wrapped-3.41.9-sdk-links"
|
||||||
|
},
|
||||||
|
"x86_64-darwin": {
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "out",
|
||||||
|
"path": "/nix/store/27gbcgwqbaaf81i792zssg862xcwzwzg-flutter-wrapped-3.41.9-sdk-links",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"store_path": "/nix/store/27gbcgwqbaaf81i792zssg862xcwzwzg-flutter-wrapped-3.41.9-sdk-links"
|
||||||
|
},
|
||||||
|
"x86_64-linux": {
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "out",
|
||||||
|
"path": "/nix/store/fqcjikcpdcn123csd805bmg05jv75szj-flutter-wrapped-3.41.9-sdk-links",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"store_path": "/nix/store/fqcjikcpdcn123csd805bmg05jv75szj-flutter-wrapped-3.41.9-sdk-links"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"github:NixOS/nixpkgs/nixpkgs-unstable": {
|
||||||
|
"last_modified": "2026-09-29T03:29:29Z",
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?lastModified=1790652569&narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D"
|
||||||
|
},
|
||||||
|
"gtk3": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D#gtk3",
|
||||||
|
"source": "nixpkg"
|
||||||
|
},
|
||||||
|
"ninja": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D#ninja",
|
||||||
|
"source": "nixpkg"
|
||||||
|
},
|
||||||
|
"nixpkgs#openjdk17": {
|
||||||
|
"last_modified": "1970-01-01T00:00:00Z",
|
||||||
|
"resolved": "path:/nix/store/v8ynlbrldn7k8byb1kx0j0wka8dsbrw9-source?narHash=sha256-BZWCi9ZRJiARTuKTbbtvFTj7t1TK4G3UEckT3HyNfRg%3D#openjdk17"
|
||||||
|
},
|
||||||
|
"patchelf": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D#patchelf",
|
||||||
|
"source": "nixpkg"
|
||||||
|
},
|
||||||
|
"pkg-config": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/b6c8664de9b6cc07fe5666a29f91884ba81197c4?narHash=sha256-641r7xrlSOHYoktL9%2FaArPIYNgZJ9eM5URzSEOtPJDY%3D#pkg-config",
|
||||||
|
"source": "nixpkg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
59
nix-android-sdk/android-studio-devbox-config.sh
Executable file
59
nix-android-sdk/android-studio-devbox-config.sh
Executable file
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_DIR="$(cd -- "$SCRIPT_DIR/../.." && pwd)"
|
||||||
|
IDEA_DIR="$PROJECT_DIR/.idea"
|
||||||
|
LIBRARIES_DIR="$IDEA_DIR/libraries"
|
||||||
|
FLUTTER_SDK="$PROJECT_DIR/.devbox/nix/profile/default"
|
||||||
|
DART_SDK="$FLUTTER_SDK/bin/cache/dart-sdk"
|
||||||
|
|
||||||
|
mkdir -p "$IDEA_DIR"
|
||||||
|
if [ ! -x "$FLUTTER_SDK/bin/flutter" ]; then
|
||||||
|
echo "Flutter not found at $FLUTTER_SDK/bin/flutter. Run devbox install to download it." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$DART_SDK" ]; then
|
||||||
|
echo "Dart SDK not found at $DART_SDK. Run flutter doctor to populate the cache." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$LIBRARIES_DIR"
|
||||||
|
|
||||||
|
cat > "$IDEA_DIR/flutter.xml" <<'EOF'
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="FlutterSdkSettings">
|
||||||
|
<option name="FLUTTER_SDK_PATH" value="$PROJECT_DIR$/.devbox/nix/profile/default" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > "$IDEA_DIR/dart.xml" <<'EOF'
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DartSdkGlobalLibSettings">
|
||||||
|
<option name="dartSdkPath" value="$PROJECT_DIR$/.devbox/nix/profile/default/bin/cache/dart-sdk" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
dart_libs=$(find "$DART_SDK/lib" -maxdepth 1 -mindepth 1 -type d -printf '%f\n' | sort)
|
||||||
|
tmp_file=$(mktemp)
|
||||||
|
{
|
||||||
|
echo '<component name="libraryTable">'
|
||||||
|
echo ' <library name="Dart SDK">'
|
||||||
|
echo ' <CLASSES>'
|
||||||
|
for lib in $dart_libs; do
|
||||||
|
printf ' <root url="file://$PROJECT_DIR$/.devbox/nix/profile/default/bin/cache/dart-sdk/lib/%s" />\n' "$lib"
|
||||||
|
done
|
||||||
|
echo ' </CLASSES>'
|
||||||
|
echo ' <JAVADOC />'
|
||||||
|
echo ' <SOURCES />'
|
||||||
|
echo ' </library>'
|
||||||
|
echo '</component>'
|
||||||
|
} > "$tmp_file"
|
||||||
|
mv "$tmp_file" "$LIBRARIES_DIR/Dart_SDK.xml"
|
||||||
|
|
||||||
|
echo "Android Studio configured. Flutter SDK: $FLUTTER_SDK"
|
||||||
27
nix-android-sdk/flake.nix
Normal file
27
nix-android-sdk/flake.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
description = "A Flake for the Android SDK";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
android-nixpkgs.url = "github:tadfisher/android-nixpkgs/stable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, flake-utils, android-nixpkgs }:
|
||||||
|
flake-utils.lib.eachSystem ["x86_64-linux" "x86_64-darwin" "aarch64-darwin"] (system: {
|
||||||
|
packages.android-sdk = android-nixpkgs.sdk."${system}" (sdkPkgs: with sdkPkgs; [
|
||||||
|
cmdline-tools-latest
|
||||||
|
build-tools-33-0-0
|
||||||
|
build-tools-34-0-0
|
||||||
|
build-tools-35-0-0
|
||||||
|
build-tools-36-1-0
|
||||||
|
cmake-3-22-1
|
||||||
|
platform-tools
|
||||||
|
platforms-android-33
|
||||||
|
platforms-android-34
|
||||||
|
platforms-android-35
|
||||||
|
platforms-android-36
|
||||||
|
emulator
|
||||||
|
ndk-27-0-12077973
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue