diff --git a/var/spack/repos/builtin/packages/py-linear-tree/package.py b/var/spack/repos/builtin/packages/py-linear-tree/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..25d96ef577a4b4ff07d6dc58f11def656f1f269e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-linear-tree/package.py
@@ -0,0 +1,21 @@
+# Copyright Spack Project Developers. See COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class PyLinearTree(PythonPackage):
+    """A python library to build Model Trees with Linear Models at the leaves."""
+
+    homepage = "https://github.com/cerlymarco/linear-tree"
+    pypi = "linear-tree/linear-tree-0.3.5.tar.gz"
+    git = "https://github.com/cerlymarco/linear-tree.git"
+
+    version("0.3.5", sha256="2db9fc976bcd693a66d8d92fdd7f97314125b3330eea4778885bfe62190d586c")
+
+    depends_on("python@3.8:", type=("build", "run"))
+    depends_on("py-setuptools", type="build")
+    depends_on("py-scikit-learn@0.24.2:", type=("build", "run"))
+    depends_on("py-numpy", type=("build", "run"))
+    depends_on("py-scipy", type=("build", "run"))
diff --git a/var/spack/repos/builtin/packages/py-pyomo/package.py b/var/spack/repos/builtin/packages/py-pyomo/package.py
index 4ed84791ec8517f6f0e0911bc4f68f041ff8de8d..4fb9ccf71570d8e79e1c59af78c178ae83a77a17 100644
--- a/var/spack/repos/builtin/packages/py-pyomo/package.py
+++ b/var/spack/repos/builtin/packages/py-pyomo/package.py
@@ -14,9 +14,13 @@ class PyPyomo(PythonPackage):
     pypi = "Pyomo/Pyomo-5.6.6.tar.gz"
     git = "https://github.com/Pyomo/pyomo.git"
 
-    # Maintainer accurate as of 2024-02-21
+    # Maintainer accurate as of 2024-12-17
     maintainers("mrmundt")
 
+    version("6.8.2", sha256="40d8f7b216ad1602bb254f4296591608dd94fe2c961dc1e63ca6b84fb397bed6")
+    version("6.8.1", sha256="dc3369193a915d6fa9a59382f1c02c17f6bf540584f641b9bd20d1f1a7f8ba8c")
+    version("6.8.0", sha256="a204a78d8ed5fa7ad8fa94d3c8ed4f6da38b5c02a68b8fe446bc694f16c8d1ea")
+    version("6.7.3", sha256="b7f0441c405af4f42f38527ae38826a5c0a4984dd7bea1fe07172789d8594770")
     version("6.7.2", sha256="53bef766854f7607ca1fcfe3f218594ab382f137a275cee3d925d2b2f96876bf")
     version("6.7.1", sha256="735b66c45937f1caa43f073d8218a4918b6de658914a699397d38d5b8c219a40")
     version("6.7.0", sha256="a245ec609ef2fd907269f0b8e0923f74d5bf868b2ec0e62bf2a30b3f253bd17b")
@@ -76,7 +80,10 @@ class PyPyomo(PythonPackage):
     ############################
 
     # python_requires
-    depends_on("python@3.8:3.12", when="@6.7:", type=("build", "run"))
+    # Preemptively tagging 3.8:3.13 for 6.8.1 and 6.8.2; 3.8 support will
+    # be removed in 6.9.0(MRM - Dec 2024)
+    depends_on("python@3.8:3.13", when="@6.8.1:6.8.2", type=("build", "run"))
+    depends_on("python@3.8:3.12", when="@6.7:6.8.0", type=("build", "run"))
     depends_on("python@3.7:3.11", when="@6.4:6.6", type=("build", "run"))
     depends_on("python@3.6:3.10", when="@6.3", type=("build", "run"))
     depends_on("python@3.6:3.9", when="@6.0:6.2", type=("build", "run"))
@@ -98,9 +105,9 @@ class PyPyomo(PythonPackage):
     # when tests is requested
     depends_on("py-coverage", when="@6.1:+tests", type=("run"))
     depends_on("py-nose", when="@6.1:6.2+tests", type=("run"))
+    depends_on("py-parameterized", when="@6.1:+tests", type=("run"))
     depends_on("py-pytest", when="@6.3:+tests", type=("run"))
     depends_on("py-pytest-parallel", when="@6.3:+tests", type=("run"))
-    depends_on("py-parameterized", when="@6.1:+tests", type=("run"))
     depends_on("py-pybind11", when="@6.1:+tests", type=("run"))
 
     # when docs is requested
@@ -112,18 +119,19 @@ class PyPyomo(PythonPackage):
     depends_on("py-sphinxcontrib-napoleon", when="@6.1:+docs", type=("run"))
     depends_on("py-sphinx-toolbox@2.16:", when="@6.7.1:+docs", type=("run"))
     depends_on("py-sphinx-jinja2-compat@0.1.1:", when="@6.7.1:+docs", type=("run"))
-    depends_on("py-enum-tools", when="@6.7.1:+docs", type=("run"))
-    # Pyomo does not support NumPy2 (May 9, 2024)
-    depends_on("py-numpy@1", when="@6.1:+docs", type=("run"))
+    depends_on("py-enum-tools", when="@6.7.1:6.8.0+docs", type=("run"))
+    depends_on("py-numpy@1", when="@6.1:6.7+docs", type=("run"))
+    depends_on("py-numpy", when="@6.8:+docs", type=("run"))
     depends_on("py-scipy", when="@6.4.2:+docs", type=("run"))
 
     # when optional is requested
     depends_on("py-dill", when="@6.1:+optional", type=("run"))
     depends_on("py-ipython", when="@6.1:+optional", type=("run"))
+    depends_on("py-linear-tree", when="@6.8:+optional", type=("run"))
     depends_on("py-matplotlib@:3.6.0,3.6.2:", when="@6.1:+optional", type=("run"))
     depends_on("py-networkx", when="@6.1:+optional", type=("run"))
-    # Pyomo does not support NumPy2 (May 9, 2024)
-    depends_on("py-numpy@1", when="@6.1:+optional", type=("run"))
+    depends_on("py-numpy@1", when="@6.1:6.7+optional", type=("run"))
+    depends_on("py-numpy", when="@6.8:+optional", type=("run"))
     depends_on("py-openpyxl", when="@6.1:+optional", type=("run"))
     depends_on("py-pint", when="@6.1:+optional", type=("run"))
     depends_on("py-plotly", when="@6.6:+optional", type=("run"))