Skip to content

Add IDX template configuration to Gemini samples #2344

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jul 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions dynamic_theme/.idx/dev.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# To learn more about how to use Nix to configure your environment
# see: https://developers.google.com/idx/guides/customize-idx-env
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodePackages.firebase-tools
pkgs.jdk17
pkgs.unzip
];
# Sets environment variables in the workspace
env = {};
idx = {
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
extensions = [
"Dart-Code.flutter"
"Dart-Code.dart-code"
];
workspace = {
# Runs when a workspace is first created with this `dev.nix` file
onCreate = {
build-flutter = ''
cd /home/user/myapp/android
./gradlew \
--parallel \
-Pverbose=true \
-Ptarget-platform=android-x86 \
-Ptarget=/home/user/myapp/lib/main.dart \
-Pbase-application-name=android.app.Application \
-Pdart-defines=RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC85NzU1MDkwN2I3MGY0ZjNiMzI4YjZjMTYwMGRmMjFmYWMxYTE4ODlhLw== \
-Pdart-obfuscation=false \
-Ptrack-widget-creation=true \
-Ptree-shake-icons=false \
-Pfilesystem-scheme=org-dartlang-root \
assembleDebug
# TODO: Execute web build in debug mode.
# flutter run does this transparently either way
# https://github.com/flutter/flutter/issues/96283#issuecomment-1144750411
# flutter build web --profile --dart-define=Dart2jsOptimization=O0
adb -s localhost:5555 wait-for-device
'';
};

# To run something each time the workspace is (re)started, use the `onStart` hook
};
# Enable previews and customize configuration
previews = {
enable = true;
previews = {
web = {
command = ["flutter" "run" "--machine" "-d" "web-server" "--web-hostname" "0.0.0.0" "--web-port" "$PORT"];
manager = "flutter";
};
android = {
command = ["flutter" "run" "--machine" "-d" "android" "-d" "localhost:5555"];
manager = "flutter";
};
};
};
};
}
9 changes: 9 additions & 0 deletions dynamic_theme/idx-template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "Flutter dynamic theme",
"description": "A template for a Flutter app that uses Gemini to dynamically create a theme.",
"icon": "https://www.gstatic.com/images/branding/productlogos/idx/v1/192px.svg",
"params": [],
"host": {
"virtualization": true
}
}
15 changes: 15 additions & 0 deletions dynamic_theme/idx-template.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# No user-configurable parameters
{ pkgs, ... }: {
packages = [
pkgs.flutter
];
# Shell script that produces the final environment
bootstrap = ''
export HOME=/home/user
export PATH="$PATH":"$HOME/flutter/bin"

cp -rf ${./.} "$out"
chmod -R +w "$out"
rm -rf "$out/.git" "$out/idx-template".{nix,json}
'';
}
62 changes: 62 additions & 0 deletions gemini_tasks/.idx/dev.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# To learn more about how to use Nix to configure your environment
# see: https://developers.google.com/idx/guides/customize-idx-env
{ pkgs, ... }: {
# Which nixpkgs channel to use.
channel = "stable-23.11"; # or "unstable"
# Use https://search.nixos.org/packages to find packages
packages = [
pkgs.nodePackages.firebase-tools
pkgs.jdk17
pkgs.unzip
];
# Sets environment variables in the workspace
env = {};
idx = {
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
extensions = [
"Dart-Code.flutter"
"Dart-Code.dart-code"
];
workspace = {
# Runs when a workspace is first created with this `dev.nix` file
onCreate = {
build-flutter = ''
cd /home/user/myapp/android
./gradlew \
--parallel \
-Pverbose=true \
-Ptarget-platform=android-x86 \
-Ptarget=/home/user/myapp/lib/main.dart \
-Pbase-application-name=android.app.Application \
-Pdart-defines=RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC85NzU1MDkwN2I3MGY0ZjNiMzI4YjZjMTYwMGRmMjFmYWMxYTE4ODlhLw== \
-Pdart-obfuscation=false \
-Ptrack-widget-creation=true \
-Ptree-shake-icons=false \
-Pfilesystem-scheme=org-dartlang-root \
assembleDebug
# TODO: Execute web build in debug mode.
# flutter run does this transparently either way
# https://github.com/flutter/flutter/issues/96283#issuecomment-1144750411
# flutter build web --profile --dart-define=Dart2jsOptimization=O0
adb -s localhost:5555 wait-for-device
'';
};

# To run something each time the workspace is (re)started, use the `onStart` hook
};
# Enable previews and customize configuration
previews = {
enable = true;
previews = {
web = {
command = ["flutter" "run" "--machine" "-d" "web-server" "--web-hostname" "0.0.0.0" "--web-port" "$PORT"];
manager = "flutter";
};
android = {
command = ["flutter" "run" "--machine" "-d" "android" "-d" "localhost:5555"];
manager = "flutter";
};
};
};
};
}
9 changes: 9 additions & 0 deletions gemini_tasks/idx-template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "Todo list with Flutter and Gemini",
"description": "A template for a todo list app that integrates with the Gemini API",
"icon": "https://www.gstatic.com/images/branding/productlogos/idx/v1/192px.svg",
"params": [],
"host": {
"virtualization": true
}
}
15 changes: 15 additions & 0 deletions gemini_tasks/idx-template.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# No user-configurable parameters
{ pkgs, ... }: {
packages = [
pkgs.flutter
];
# Shell script that produces the final environment
bootstrap = ''
export HOME=/home/user
export PATH="$PATH":"$HOME/flutter/bin"

cp -rf ${./.} "$out"
chmod -R +w "$out"
rm -rf "$out/.git" "$out/idx-template".{nix,json}
'';
}
Loading