diff --git a/ci/setup_spack.sh b/ci/setup_spack.sh
index c52174c5cd11ad753b8c4f7223cf17b1cb47a421..ba9fa947575c7aaff7cb412dd108d6c37cb83b9d 100755
--- a/ci/setup_spack.sh
+++ b/ci/setup_spack.sh
@@ -83,34 +83,4 @@ spack/bin/spack buildcache keys \
 
 #spack/bin/spack buildcache update-index /buildcache
 
-target=$(jq -Mrc --arg env "${environment}" '
- .environments
-   | to_entries
-   | map(select(.key==env.environment))
-   | .[].value.target
-' ${STACK_CONFIG})
-
-require=$(jq -Mrc --arg environment "${environment}" '
- .environments
-   | to_entries
-   | map(select(.key==env.environment))
-   | .[].value
-   | if has("require") then
-      .require
-       | map("     - spec: \(.spec)\n       when: \(.when)")
-       | .[]
-     else
-      ""
-     end' ${STACK_CONFIG})
-
-cat <<EOF > ${SPACK_SYSTEM_CONFIG_PATH}/packages_env.yaml
-packages:
-  all:
-    target: [$target]
-EOF
-
-if [ "x$require" != "x" ]
-then
-  echo "    require:" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages_env.yaml
-  echo "${require}" >> ${SPACK_SYSTEM_CONFIG_PATH}/packages_env.yaml
-fi
+cp ${STACK_CONFIG_PATH}/packages_${environment}.yaml ${SPACK_SYSTEM_CONFIG_PATH}/packages_env.yaml
diff --git a/stacks/pinot-noir/config.json b/stacks/pinot-noir/config.json
index 92a7ae52a9c688a57c20f39c3bc9a76b8dc0c9e9..d8bf054f67984e4f89554fb1da980e848cfd2de4 100644
--- a/stacks/pinot-noir/config.json
+++ b/stacks/pinot-noir/config.json
@@ -54,17 +54,5 @@
             }
 
         }
-    },
-    "environments": {
-        "jed": {
-            "target": "icelake",
-            "require": [            {
-                "spec": "cuda_arch=90",
-                "when": "+cuda"
-            }]
-        },
-        "helvetios": {
-            "target": "skylake_avx512"
-        }
     }
 }
diff --git a/stacks/pinot-noir/packages.yaml b/stacks/pinot-noir/packages.yaml
index 68b07c9ac94cd3dcea34c34134e7cb001584b99d..e0d4397bf5c0be4a2283d862574bdf46ddff52bf 100644
--- a/stacks/pinot-noir/packages.yaml
+++ b/stacks/pinot-noir/packages.yaml
@@ -10,6 +10,9 @@ packages:
       - spec: ^openmpi
         when: '%gcc ^mpi'
 
+      - spec: "+ipo"
+        when: '%gcc'
+
   # System dependencies  # ----------------------------------------------------------------------------
   rdma-core:
     buildable: false
diff --git a/stacks/pinot-noir/packages_helvetios.yaml b/stacks/pinot-noir/packages_helvetios.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f654aa42a02e2392b5c852e3febeb9518ec1ec78
--- /dev/null
+++ b/stacks/pinot-noir/packages_helvetios.yaml
@@ -0,0 +1,5 @@
+packages:
+  all:
+    target: ["skylake_avx512"]
+    require:
+      - '~cuda'
diff --git a/stacks/pinot-noir/packages_jed.yaml b/stacks/pinot-noir/packages_jed.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..371b33b074d1563474f667432e48bbdb95f562da
--- /dev/null
+++ b/stacks/pinot-noir/packages_jed.yaml
@@ -0,0 +1,11 @@
+packages:
+  all:
+    target: ["icelake"]
+    require:
+      - spec: ^openmpi +cuda
+        when: '%gcc ^mpi'
+
+      - spec: cuda_arch=90
+        when: '+cuda'
+
+      - '+cuda'