From ed8a33e00cfa08f314cd849b3196f0d88f67b2e9 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 08:42:00 -0700 Subject: [PATCH 01/11] Modify environment variables for Flutter, Android, and Java. --- tasks/workstation/linux/software/android.yml | 39 +---------- tasks/workstation/linux/software/flutter.yml | 3 +- tasks/workstation/linux/software/java.yml | 68 +++++++++++++------- 3 files changed, 51 insertions(+), 59 deletions(-) diff --git a/tasks/workstation/linux/software/android.yml b/tasks/workstation/linux/software/android.yml index 9743658..7320a41 100644 --- a/tasks/workstation/linux/software/android.yml +++ b/tasks/workstation/linux/software/android.yml @@ -397,47 +397,13 @@ ## Configure Environment ## -- name: Workstation | Linux | Software | Android | Modify PATH (.bashrc) - ansible.builtin.blockinfile: - path: "{{ item }}/.bashrc" - block: | - export PATH="$PATH:{{ android_bin_location }}:{{ android_sdk_cmdline_final }}" - marker: '# {mark} MANAGED BY ANSIBLE | Android' - state: absent - create: true - backup: true - mode: "0755" - loop: - - "{{ user_root.home }}" - - "{{ user_user.home }}" - when: coding - and user_root.home != "" - and user_user.home != "" - -- name: Workstation | Linux | Software | Android | Modify PATH (.zshrc) - ansible.builtin.blockinfile: - path: "{{ item }}/.zshrc" - block: | - export PATH="$PATH:{{ android_bin_location }}:{{ android_sdk_cmdline_final }}" - marker: '# {mark} MANAGED BY ANSIBLE | Android' - state: absent - create: true - backup: true - mode: "0755" - loop: - - "{{ user_root.home }}" - - "{{ user_user.home }}" - when: coding - and user_root.home != "" - and user_user.home != "" - -- name: Workstation | Linux | Software | Flutter | Modify PATH (profiles) +- name: Workstation | Linux | Software | Android | Modify PATH (profiles) ansible.builtin.blockinfile: path: "{{ user_user.home }}/{{ item }}" block: | export ANDROID_HOME="{{ android_sdk_location }}" export ANDROID_SDK_ROOT="$ANDROID_HOME" - export PATH="$PATH:{{ android_bin_location }}:{{ android_sdk_cmdline_final }}" + export PATH="{{ android_bin_location }}:{{ android_sdk_cmdline_final }}:$PATH" marker: '# {mark} MANAGED BY ANSIBLE | Android' state: present create: true @@ -446,6 +412,7 @@ loop: - ".bash_profile" - ".zprofile" + - ".profile" when: coding and user_user.home != "" diff --git a/tasks/workstation/linux/software/flutter.yml b/tasks/workstation/linux/software/flutter.yml index 68c2d4d..7253f07 100644 --- a/tasks/workstation/linux/software/flutter.yml +++ b/tasks/workstation/linux/software/flutter.yml @@ -166,7 +166,7 @@ ansible.builtin.blockinfile: path: "{{ user_user.home }}/{{ item }}" block: | - export PATH="$PATH:{{ flutter_bin_location }}" + export PATH="{{ flutter_bin_location }}:$PATH" marker: '# {mark} MANAGED BY ANSIBLE | Flutter' state: present create: true @@ -175,6 +175,7 @@ loop: - ".bash_profile" - ".zprofile" + - ".profile" when: coding and user_user.home != "" diff --git a/tasks/workstation/linux/software/java.yml b/tasks/workstation/linux/software/java.yml index 3819cce..9ea8766 100644 --- a/tasks/workstation/linux/software/java.yml +++ b/tasks/workstation/linux/software/java.yml @@ -5,31 +5,55 @@ - name: Workstation | Linux | Software | Java | pacman block: - - name: Workstation | Linux | Software | Java | pacman | Facts - ansible.builtin.set_fact: - jdk_version: 21 - jdk_dir: ~/SDKs/Java + - name: Workstation | Linux | Software | Java | pacman | Facts + ansible.builtin.set_fact: + jdk_version: 21 + jdk_src: /usr/lib/jvm/default + jdk_dir: ~/SDKs/Java + jdk_path: ~/SDKs/Java/bin - - name: Workstation | Linux | Software | Java | pacman | Install - ansible.builtin.package: - name: - - "jdk{{ item }}-openjdk" - state: present - loop: - - "{{ jdk_version }}" - - 25 - - 21 - - 17 + - name: Workstation | Linux | Software | Java | pacman | Install + ansible.builtin.package: + name: + - "jdk{{ item }}-openjdk" + state: present + loop: + - "{{ jdk_version }}" + - 25 + - 21 + - 17 - - name: Workstation | Linux | Software | Java | pacman | Set - ansible.builtin.shell: "archlinux-java set java-{{ jdk_version }}-openjdk" + - name: Workstation | Linux | Software | Java | pacman | Set + ansible.builtin.shell: "archlinux-java set java-{{ jdk_version }}-openjdk" + register: shell_check + changed_when: shell_check.rc == 0 - - name: Workstation | Linux | Software | Java | pacman | Link - ansible.builtin.shell: "ln -sf /usr/lib/jvm {{ jdk_dir }}" - args: - creates: "{{ jdk_dir }}" - become: true - become_user: "{{ user }}" + - name: Workstation | Linux | Software | Java | pacman | Link + ansible.builtin.file: + src: "{{ jdk_src }}" + dest: "{{ jdk_dir }}" + state: link + become: true + become_user: "{{ user }}" + + - name: Workstation | Linux | Software | Java | Modify PATH (profiles) + ansible.builtin.blockinfile: + path: "{{ user_user.home }}/{{ item }}" + block: | + export JAVA_HOME="{{ jdk_dir }}" + export JAVA_PATH="{{ jdk_path }}" + export PATH="$JAVA_PATH:$PATH + marker: '# {mark} MANAGED BY ANSIBLE | Java' + state: present + create: true + backup: true + mode: "0755" + loop: + - ".bash_profile" + - ".zprofile" + - ".profile" + when: coding + and user_user.home != "" when: coding is true and ansible_pkg_mgr == "pacman" From 494a9b70f6fe422ce59bee76c5c61fa2cf8e81d8 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:04:12 -0700 Subject: [PATCH 02/11] system, check the 2nd var, it is 0 more often but seems more accurate. --- facts/general/system.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facts/general/system.yml b/facts/general/system.yml index b5c2843..2a672d4 100644 --- a/facts/general/system.yml +++ b/facts/general/system.yml @@ -23,7 +23,7 @@ sleep_long=10 sleep_short=1 - if [[ "$1" != 0 ]]; then + if [[ "$2" != 0 ]]; then echo "FINISH: Sleeping for $sleep_long seconds due to error..." sleep $sleep_long else From 007f338d2e7253d68fe1e404f640b825fc0c7e89 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:04:41 -0700 Subject: [PATCH 03/11] flutter, add FLUTTER_HOME and refactor some variables. --- tasks/workstation/linux/software/flutter.yml | 46 +++----------------- 1 file changed, 7 insertions(+), 39 deletions(-) diff --git a/tasks/workstation/linux/software/flutter.yml b/tasks/workstation/linux/software/flutter.yml index 7253f07..2ecc521 100644 --- a/tasks/workstation/linux/software/flutter.yml +++ b/tasks/workstation/linux/software/flutter.yml @@ -12,19 +12,20 @@ - name: Workstation | Linux | Software | Flutter | Facts 2 ansible.builtin.set_fact: - flutter_bin_location: "{{ flutter_sdk_location }}/flutter/bin" + flutter_home: "{{ flutter_sdk_location }}/flutter" + flutter_bin: "{{ flutter_sdk_location }}/flutter/bin" - name: Workstation | Linux | Software | Flutter | Facts 3 ansible.builtin.set_fact: - flutter: "{{ flutter_bin_location }}/flutter" + flutter_exe: "{{ flutter_bin }}/flutter" - name: Workstation | Linux | Software | Flutter | Facts 4 ansible.builtin.set_fact: flutter_report_commands: - "date > {{ flutter_report }}" - - "{{ flutter }} --disable-analytics >> {{ flutter_report }}" + - "{{ flutter_exe }} --disable-analytics >> {{ flutter_report }}" - "date >> {{ flutter_report }}" - - "{{ flutter }} doctor -v >> {{ flutter_report }}" + - "{{ flutter_exe }} doctor -v >> {{ flutter_report }}" - "date >> {{ flutter_report }}" ## Checks ## @@ -128,45 +129,12 @@ ## Configure Environment ## -- name: Workstation | Linux | Software | Flutter | Modify PATH (.bashrc) - ansible.builtin.blockinfile: - path: "{{ item }}/.bashrc" - block: | - export PATH="$PATH:{{ flutter_bin_location }}" - marker: '# {mark} MANAGED BY ANSIBLE | Flutter' - state: absent - create: true - backup: true - mode: "0755" - loop: - - "{{ user_root.home }}" - - "{{ user_user.home }}" - when: coding - and user_root.home != "" - and user_user.home != "" - -- name: Workstation | Linux | Software | Flutter | Modify PATH (.zshrc) - ansible.builtin.blockinfile: - path: "{{ item }}/.zshrc" - block: | - export PATH="$PATH:{{ flutter_bin_location }}" - marker: '# {mark} MANAGED BY ANSIBLE | Flutter' - state: absent - create: true - backup: true - mode: "0755" - loop: - - "{{ user_root.home }}" - - "{{ user_user.home }}" - when: coding - and user_root.home != "" - and user_user.home != "" - - name: Workstation | Linux | Software | Flutter | Modify PATH (profiles) ansible.builtin.blockinfile: path: "{{ user_user.home }}/{{ item }}" block: | - export PATH="{{ flutter_bin_location }}:$PATH" + export FLUTTER_HOME="{{ flutter_sdk }}" + export PATH="{{ flutter_bin }}:$PATH" marker: '# {mark} MANAGED BY ANSIBLE | Flutter' state: present create: true From 049df1ab61979cf834281baa29c7615e7bc3cee1 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:05:06 -0700 Subject: [PATCH 04/11] java, be more system agnostic and remove the coding requirement. --- tasks/workstation/linux/software/java.yml | 68 +++++++++++++---------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/tasks/workstation/linux/software/java.yml b/tasks/workstation/linux/software/java.yml index 9ea8766..f45b1d2 100644 --- a/tasks/workstation/linux/software/java.yml +++ b/tasks/workstation/linux/software/java.yml @@ -2,15 +2,25 @@ # 20260912 - Hyperling # Arch has too new of Java for Android / Gradle to even run AGP Assistant on. +- name: Workstation | Linux | Software | Java | Facts + ansible.builtin.set_fact: + jdk_version: 21 + jdk_src: /usr/lib/jvm/default-java + jdk_dir: ~/SDKs/Java + jdk_path: ~/SDKs/Java/bin + +- name: Workstation | Linux | Software | Java | apt + ansible.builtin.package: + name: + - "default-jdk" + state: present + - name: Workstation | Linux | Software | Java | pacman block: - name: Workstation | Linux | Software | Java | pacman | Facts ansible.builtin.set_fact: - jdk_version: 21 jdk_src: /usr/lib/jvm/default - jdk_dir: ~/SDKs/Java - jdk_path: ~/SDKs/Java/bin - name: Workstation | Linux | Software | Java | pacman | Install ansible.builtin.package: @@ -28,32 +38,30 @@ register: shell_check changed_when: shell_check.rc == 0 - - name: Workstation | Linux | Software | Java | pacman | Link - ansible.builtin.file: - src: "{{ jdk_src }}" - dest: "{{ jdk_dir }}" - state: link - become: true - become_user: "{{ user }}" + when: ansible_pkg_mgr == "pacman" - - name: Workstation | Linux | Software | Java | Modify PATH (profiles) - ansible.builtin.blockinfile: - path: "{{ user_user.home }}/{{ item }}" - block: | - export JAVA_HOME="{{ jdk_dir }}" - export JAVA_PATH="{{ jdk_path }}" - export PATH="$JAVA_PATH:$PATH - marker: '# {mark} MANAGED BY ANSIBLE | Java' - state: present - create: true - backup: true - mode: "0755" - loop: - - ".bash_profile" - - ".zprofile" - - ".profile" - when: coding - and user_user.home != "" +- name: Workstation | Linux | Software | Java | pacman | Link + ansible.builtin.file: + src: "{{ jdk_src }}" + dest: "{{ jdk_dir }}" + state: link + become: true + become_user: "{{ user }}" - when: coding is true - and ansible_pkg_mgr == "pacman" +- name: Workstation | Linux | Software | Java | Modify PATH (profiles) + ansible.builtin.blockinfile: + path: "{{ user_user.home }}/{{ item }}" + block: | + export JAVA_HOME="{{ jdk_dir }}" + export JAVA_PATH="{{ jdk_path }}" + export PATH="$JAVA_PATH:$PATH + marker: '# {mark} MANAGED BY ANSIBLE | Java' + state: present + create: true + backup: true + mode: "0755" + loop: + - ".bash_profile" + - ".zprofile" + - ".profile" + when: user_user.home != "" From 6c79addc3c3eefa5c75ee6ca737cd40589760df6 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:10:02 -0700 Subject: [PATCH 05/11] java, fix apt to only be for apt, only install all JDKs on Arch if coding. --- tasks/workstation/linux/software/java.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tasks/workstation/linux/software/java.yml b/tasks/workstation/linux/software/java.yml index f45b1d2..ef8e400 100644 --- a/tasks/workstation/linux/software/java.yml +++ b/tasks/workstation/linux/software/java.yml @@ -14,6 +14,7 @@ name: - "default-jdk" state: present + when: ansible_pkg_mgr == 'apt" - name: Workstation | Linux | Software | Java | pacman block: @@ -22,16 +23,22 @@ ansible.builtin.set_fact: jdk_src: /usr/lib/jvm/default - - name: Workstation | Linux | Software | Java | pacman | Install + - name: Workstation | Linux | Software | Java | pacman | Install [base] + ansible.builtin.package: + name: + - "jdk{{ jdk_version }}-openjdk" + state: present + + - name: Workstation | Linux | Software | Java | pacman | Install [all] ansible.builtin.package: name: - "jdk{{ item }}-openjdk" state: present loop: - - "{{ jdk_version }}" - 25 - 21 - 17 + when: coding - name: Workstation | Linux | Software | Java | pacman | Set ansible.builtin.shell: "archlinux-java set java-{{ jdk_version }}-openjdk" From 9f74361af1f83cc65dd12911f03eabc471cf74b6 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:15:03 -0700 Subject: [PATCH 06/11] Small fixes for Java and Flutter. --- tasks/workstation/linux/software/flutter.yml | 2 +- tasks/workstation/linux/software/java.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/workstation/linux/software/flutter.yml b/tasks/workstation/linux/software/flutter.yml index 2ecc521..37228e3 100644 --- a/tasks/workstation/linux/software/flutter.yml +++ b/tasks/workstation/linux/software/flutter.yml @@ -133,7 +133,7 @@ ansible.builtin.blockinfile: path: "{{ user_user.home }}/{{ item }}" block: | - export FLUTTER_HOME="{{ flutter_sdk }}" + export FLUTTER_HOME="{{ flutter_home }}" export PATH="{{ flutter_bin }}:$PATH" marker: '# {mark} MANAGED BY ANSIBLE | Flutter' state: present diff --git a/tasks/workstation/linux/software/java.yml b/tasks/workstation/linux/software/java.yml index ef8e400..6eff5b1 100644 --- a/tasks/workstation/linux/software/java.yml +++ b/tasks/workstation/linux/software/java.yml @@ -14,7 +14,7 @@ name: - "default-jdk" state: present - when: ansible_pkg_mgr == 'apt" + when: ansible_pkg_mgr == "apt" - name: Workstation | Linux | Software | Java | pacman block: From 847dfe88d4f0dfb721bb4ae95df0a5e3d87ea84d Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:22:02 -0700 Subject: [PATCH 07/11] android, fix Flutter var. --- tasks/workstation/linux/software/android.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/workstation/linux/software/android.yml b/tasks/workstation/linux/software/android.yml index 7320a41..6f9f127 100644 --- a/tasks/workstation/linux/software/android.yml +++ b/tasks/workstation/linux/software/android.yml @@ -363,7 +363,7 @@ ## Flutter and Licenses ## - name: Workstation | Linux | Software | Android | Inform Flutter - ansible.builtin.shell: "{{ flutter }} config --android-sdk={{ android_sdk_location }}" + ansible.builtin.shell: "{{ flutter_exe }} config --android-sdk={{ android_sdk_location }}" become: true become_user: "{{ user }}" register: shell_check @@ -379,7 +379,7 @@ when: coding - name: Workstation | Linux | Software | Android | License Agreements [2/2] - ansible.builtin.shell: "yes | {{ flutter }} doctor --android-licenses" + ansible.builtin.shell: "yes | {{ flutter_exe }} doctor --android-licenses" become: true become_user: "{{ user }}" register: shell_check @@ -401,7 +401,7 @@ ansible.builtin.blockinfile: path: "{{ user_user.home }}/{{ item }}" block: | - export ANDROID_HOME="{{ android_sdk_location }}" + export ANDROID_HOME="{{ android_sdk_location | replace('~', '$HOME') }}" export ANDROID_SDK_ROOT="$ANDROID_HOME" export PATH="{{ android_bin_location }}:{{ android_sdk_cmdline_final }}:$PATH" marker: '# {mark} MANAGED BY ANSIBLE | Android' From 24e4ea9c8c04710e705385fcfc5763811d171f07 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:22:17 -0700 Subject: [PATCH 08/11] java, do not use ~ in environment variables. --- tasks/workstation/linux/software/java.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tasks/workstation/linux/software/java.yml b/tasks/workstation/linux/software/java.yml index 6eff5b1..14887fb 100644 --- a/tasks/workstation/linux/software/java.yml +++ b/tasks/workstation/linux/software/java.yml @@ -2,12 +2,15 @@ # 20260912 - Hyperling # Arch has too new of Java for Android / Gradle to even run AGP Assistant on. -- name: Workstation | Linux | Software | Java | Facts +- name: Workstation | Linux | Software | Java | Facts 1 ansible.builtin.set_fact: jdk_version: 21 jdk_src: /usr/lib/jvm/default-java - jdk_dir: ~/SDKs/Java - jdk_path: ~/SDKs/Java/bin + jdk_dir: "{{ user_user.home}}/SDKs/Java" + +- name: Workstation | Linux | Software | Java | Facts 2 + ansible.builtin.set_fact: + jdk_path: "{{ jdk_dir }}/bin" - name: Workstation | Linux | Software | Java | apt ansible.builtin.package: From 4474ad664e04e188b018653d5778e6c563d763b9 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:32:11 -0700 Subject: [PATCH 09/11] system, change back to checking exit code not status. --- facts/general/system.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/facts/general/system.yml b/facts/general/system.yml index 2a672d4..b5c2843 100644 --- a/facts/general/system.yml +++ b/facts/general/system.yml @@ -23,7 +23,7 @@ sleep_long=10 sleep_short=1 - if [[ "$2" != 0 ]]; then + if [[ "$1" != 0 ]]; then echo "FINISH: Sleeping for $sleep_long seconds due to error..." sleep $sleep_long else From 17684becbbd127090b306e1cb58d5eb012f4f71e Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:32:41 -0700 Subject: [PATCH 10/11] test, add Java task since LLM now relies on its vars. --- test.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test.yml b/test.yml index 23df97c..ee59f13 100644 --- a/test.yml +++ b/test.yml @@ -18,10 +18,13 @@ ####################### ####################### - - name: TEST | Main + - name: TEST | LLMs block: - - name: LLMs + - name: Java + ansible.builtin.include_tasks: tasks/workstation/linux/software/java.yml + + - name: LLM ansible.builtin.include_tasks: tasks/workstation/linux/software/llm.yml ####################### From 96dd0118fa81e6356bea7f8999b6da518a0dcb15 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 22 Oct 2026 09:48:19 -0700 Subject: [PATCH 11/11] llm, add SDK homes for open-terminal. --- tasks/workstation/linux/software/llm.md | 11 ++++++++++ tasks/workstation/linux/software/llm.yml | 26 ++++++++++++++++-------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/tasks/workstation/linux/software/llm.md b/tasks/workstation/linux/software/llm.md index 4cacc3e..0df4495 100644 --- a/tasks/workstation/linux/software/llm.md +++ b/tasks/workstation/linux/software/llm.md @@ -43,6 +43,17 @@ overwhelming them with technical details unless asked. You know that the designer you are working with (me) likely already understands these things and does not need them included in our conversation. +Android SDK is at $ANDROID_HOME and should be "$HOME/SDKs/Android/Sdk". +Flutter SDK is at $FLUTTER_HOME and should be "$HOME/SDKs/Flutter/flutter". +Java SDK (JDK) is at $JAVA_HOME and should be "$HOME/SDKs/Java". + +These may be useful to add to your PATH: + +- "$ANDROID_HOME/platform-tools" +- "$ANDROID_HOME/cmdline-tools/latest/bin" +- "$FLUTTER_HOME/bin" +- "$JAVA_HOME/bin" + #### Quick Developer Handles code changes with simpler technologies, preferring minimal changes, and diff --git a/tasks/workstation/linux/software/llm.yml b/tasks/workstation/linux/software/llm.yml index bd02572..6a1ba50 100644 --- a/tasks/workstation/linux/software/llm.yml +++ b/tasks/workstation/linux/software/llm.yml @@ -558,11 +558,12 @@ echo "RUN: Updating..." docker pull $image & - if curl -sf --max-time 5 -o /dev/null https://hyperling.com; then - # Internet is available, pull extra packages. useful for having - # model compile Android apps, need to verify for Flutter. - packages="xz-utils libglu1-mesa libglu1-mesa ninja-build libnotify-bin libgtk-3-dev liblzma-dev libstdc++-12-dev libc6:amd64 libstdc++6 lib32z1 libbz2-1.0 default-jdk libncurses-dev android-udev-rules" - fi + # This takes too long. Mount JDK from the host instead. + #if curl -sf --max-time 5 -o /dev/null https://hyperling.com; then + # # Internet is available, pull extra packages. useful for having + # # model compile Android apps, need to verify for Flutter. + # packages="default-jdk xz-utils libglu1-mesa libglu1-mesa ninja-build libnotify-bin libgtk-3-dev liblzma-dev libstdc++-12-dev libc6:amd64 libstdc++6 lib32z1 libbz2-1.0 libncurses-dev android-udev-rules" + #fi # Start the open-terminal program. # https://github.com/open-webui/open-terminal#configuration @@ -570,10 +571,17 @@ exec docker run \ --name open-terminal \ --network=host \ - -v {{ user_user.home }}/AI-Sandbox:{{ user_user.home }} \ - -v {{ user_user.home }}/Code:{{ user_user.home }}/Code \ - -e OPEN_TERMINAL_FILE_BROWSER_ROOT={{ user_user.home }} \ - -e OPEN_TERMINAL_API_KEY={{ open_terminal_key }} \ + -v {{ user_user.home }}/AI-Sandbox:/home/user \ + -v {{ user_user.home }}/Code:/home/user/Code \ + -v {{ user_user.home }}/SDKs:/home/user/SDKs \ + -v {{ jdk_src }}:{{ jdk_src }} \ + -e ANDROID_HOME="/home/user/SDKs/Android/Sdk" \ + -e FLUTTER_HOME="/home/user/SDKs/Flutter/flutter" \ + -e JAVA_HOME="/home/user/SDKs/Java" \ + -v {{ user_user.home }}/.gradle:/home/user/.gradle \ + -v {{ user_user.home }}/.pub_cache:/home/user/.pub_cache \ + -e OPEN_TERMINAL_FILE_BROWSER_ROOT="/home/user" \ + -e OPEN_TERMINAL_API_KEY="{{ open_terminal_key }}" \ -e OPEN_TERMINAL_PACKAGES="$packages" \ $image run --port {{ open_terminal_port }}