diff --git a/form.yml b/form.yml
index a3b4713969b8d75caae236bb1bef0a1ebefc045d..72837a41b5b9c6b3c7c0f48a434e2983d93c6261 100644
--- a/form.yml
+++ b/form.yml
@@ -11,7 +11,7 @@
 cluster: "owens"
 
 # Title of the app displayed in the Dashboard
-title: "Jupyter Notebook"
+title: "Jupyter Notebook (example)"
 
 # Description of the app displayed in the Dashboard (can use multi-line string
 # and Markdown syntax)
@@ -33,7 +33,15 @@ attributes:
   #     modules: "python/3.5"
   # @example Using combination of modules
   #     modules: "python/3.5 cuda/8.0.44"
-  modules: "python"
+  custom_environment:
+    widget: text_area
+    label: Environment Setup
+    value: |
+      # Restore module environment to avoid conflicts
+      module restore
+
+      # Load required modules
+      module load python/3.5
 
   # Whether Conda extensions will be available within the Jupyter notebook
   # server
@@ -61,7 +69,7 @@ attributes:
 #   option, then it will not appear in the form page that the user sees in the
 #   Dashboard
 form:
-  - modules
+  - custom_environment
   - conda_extensions
   - extra_jupyter_args
   - bc_num_hours
diff --git a/template/script.sh.erb b/template/script.sh.erb
index c5d51a66dfe70be08b0da2587e24a94989e20354..7c36f2db2709c7e342c1f5d5e56be6f8b09439dc 100755
--- a/template/script.sh.erb
+++ b/template/script.sh.erb
@@ -6,14 +6,7 @@ cd "${HOME}"
 #
 # Start Jupyter Notebook Server
 #
-
-<%- unless context.modules.blank? -%>
-# Restore the module environment to avoid conflicts
-module restore
-
-# Load the require modules
-module load <%= context.modules %>
-<%- end -%>
+<%= context.custom_environment %>
 
 # Launch the Jupyter Notebook Server
 jupyter notebook --config="${CONFIG_FILE}" <%= context.extra_jupyter_args %>