diff --git a/dynamic_theme/.idx/dev.nix b/dynamic_theme/.idx/dev.nix new file mode 100644 index 000000000..0354484f0 --- /dev/null +++ b/dynamic_theme/.idx/dev.nix @@ -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"; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/dynamic_theme/idx-template.json b/dynamic_theme/idx-template.json new file mode 100644 index 000000000..8fca44b6c --- /dev/null +++ b/dynamic_theme/idx-template.json @@ -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 + } +} \ No newline at end of file diff --git a/dynamic_theme/idx-template.nix b/dynamic_theme/idx-template.nix new file mode 100644 index 000000000..5ef65ad7a --- /dev/null +++ b/dynamic_theme/idx-template.nix @@ -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} + ''; +} \ No newline at end of file diff --git a/gemini_tasks/.idx/dev.nix b/gemini_tasks/.idx/dev.nix new file mode 100644 index 000000000..0354484f0 --- /dev/null +++ b/gemini_tasks/.idx/dev.nix @@ -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"; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/gemini_tasks/idx-template.json b/gemini_tasks/idx-template.json new file mode 100644 index 000000000..9db171f54 --- /dev/null +++ b/gemini_tasks/idx-template.json @@ -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 + } +} \ No newline at end of file diff --git a/gemini_tasks/idx-template.nix b/gemini_tasks/idx-template.nix new file mode 100644 index 000000000..5ef65ad7a --- /dev/null +++ b/gemini_tasks/idx-template.nix @@ -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} + ''; +} \ No newline at end of file