diff --git a/packages/nanoflann/package.py b/packages/nanoflann/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..387c139610fbfa4fd95653dbe1e03a6adc951e23
--- /dev/null
+++ b/packages/nanoflann/package.py
@@ -0,0 +1,27 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class Nanoflann(CMakePackage):
+    """a C++ header-only library for Nearest Neighbor (NN) search wih KD-trees."""
+
+    homepage = "https://github.com/jlblancoc/nanoflann"
+    url = "https://github.com/jlblancoc/nanoflann/archive/v1.2.3.tar.gz"
+
+    # begine EBRAINS: add version
+    version("1.5.4", sha256="a7f64d0bdff42614c561e52680b16de46c0edac9719f21f935c5e1f8b0654afc")
+    # end EBRAINS
+    version("1.4.3", sha256="cbcecf22bec528a8673a113ee9b0e134f91f1f96be57e913fa1f74e98e4449fa")
+    version("1.2.3", sha256="5ef4dfb23872379fe9eb306aabd19c9df4cae852b72a923af01aea5e8d7a59c3")
+
+    def patch(self):
+        filter_file("-mtune=native", "", "CMakeLists.txt")
+
+    def cmake_args(self):
+        args = ["-DBUILD_SHARED_LIBS=ON"]
+        return args
+
diff --git a/packages/open3d/package.py b/packages/open3d/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..86883731679efe38c66e62d4ae5e3467d7040136
--- /dev/null
+++ b/packages/open3d/package.py
@@ -0,0 +1,192 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import os
+
+from llnl.util import filesystem
+
+from spack.package import *
+
+
+# begin EBRAINS: modified (based on spack/0.21.2)
+class Open3d(CMakePackage, CudaPackage):
+    """Open3D: A Modern Library for 3D Data Processing."""
+
+    homepage = "http://www.open3d.org/"
+    url = "https://github.com/isl-org/Open3D/archive/refs/tags/v0.13.0.tar.gz"
+    git = "https://github.com/isl-org/Open3D.git"
+
+    # begin EBRAINS: added v0.18.0
+    version("0.18.0", tag="v0.18.0", submodules=True)
+    # end EBRAINS
+    version("0.13.0", tag="v0.13.0", submodules=True)
+
+    variant("python", default=False, description="Build the Python module")
+
+    # http://www.open3d.org/docs/latest/compilation.html
+
+    depends_on("cmake@3.19:", type="build")
+    # https://github.com/isl-org/Open3D/issues/3762
+    # https://github.com/isl-org/Open3D/issues/4570
+    depends_on("llvm@7:+clang")
+    # begin EBRAINS: modified
+    depends_on("eigen", type=("build"))
+    depends_on("flann", when="@:0.13")
+    # https://github.com/isl-org/Open3D/issues/4360
+    # https://github.com/isl-org/Open3D/pull/5303
+    depends_on("fmt@:7", when="@:0.16")
+    depends_on("fmt@:9", when="@0.17:")
+    depends_on("googletest")
+    depends_on("glew")
+    depends_on("glfw")
+    # depends_on('imgui')
+    depends_on("jpeg")
+    # depends_on('liblzf')
+    # depends_on("libpng")
+    depends_on("nanoflann@:1.4", when="@0.15:0.17")
+    depends_on("nanoflann@1.5:", when="@0.18:")
+    depends_on("py-pybind11", type=("build"))
+    # end EBRAINS
+    depends_on("qhull")
+    # depends_on('tinygltf')
+    # depends_on('tinyobjloader')
+
+    # begin EBRAINS: added
+    depends_on("assimp", when="@0.15:")
+    depends_on("jsoncpp", when="@0.15:")
+    depends_on("msgpack-c", when="@0.15:")
+    # depends_on("tbb", when="@0.15:")
+    depends_on("cppzmq", when="@0.15:")
+    depends_on("curl", when="@0.17:")
+    depends_on("openssl", when="@0.17:")
+    # depends_on("vtk", when="@0.17:")
+    depends_on("embree@:3", when="@0.18:")
+    # end EBRAINS
+
+    extends("python", when="+python", type=("build", "link", "run"))
+    depends_on("python@3.6:", when="+python", type=("build", "link", "run"))
+    depends_on("py-pip", when="+python", type="build")
+    depends_on("py-setuptools@40.8:", when="+python", type="build")
+    depends_on("py-wheel@0.36:", when="+python", type="build")
+    depends_on("py-numpy@1.18:", when="+python", type=("build", "run"))
+    depends_on("py-dash@2.6.0:", when="+python", type=("build", "run"))
+    depends_on("py-nbformat@5.7.0:", when="+python", type=("build", "run"))
+    depends_on("py-werkzeug@2.2.3:", when="+python", type=("build", "run"))
+    depends_on("py-configargparse", when="+python", type=("build", "run"))
+    depends_on("py-pytest", when="+python", type="test")
+    depends_on("cuda@10.1:", when="+cuda")
+
+    # C++14 compiler required
+    conflicts("%gcc@:4")
+    conflicts("%clang@:6")
+
+    # LLVM must be built with the C++ library
+    conflicts("^llvm libcxx=none")
+
+    def patch(self):
+        # Force Python libraries to be installed to self.prefix
+        args = std_pip_args + ["--prefix=" + self.prefix]
+        filter_file(
+            "pip install",
+            "pip " + " ".join(args),
+            os.path.join("cpp", "pybind", "make_install_pip_package.cmake"),
+        )
+
+    def cmake_args(self):
+        # begin EBRAINS: modified
+        libcxx_paths = filesystem.find_libraries(
+            "libc++", self.spec["llvm"].prefix, shared=True, recursive=True
+        )
+        if len(libcxx_paths) > 1:
+            raise InstallError(
+                "concretized llvm dependency must provide a "
+                "unique directory containing libc++.so, "
+                "found: {0}".format(libcxx_paths)
+            )
+        args = [
+            self.define("BUILD_UNIT_TESTS", self.run_tests),
+            self.define_from_variant("BUILD_PYTHON_MODULE", "python"),
+            self.define_from_variant("BUILD_CUDA_MODULE", "cuda"),
+            # https://github.com/isl-org/Open3D/issues/4570
+            # self.define('BUILD_FILAMENT_FROM_SOURCE', 'ON'),
+            # Use Spack-installed dependencies instead of vendored dependencies
+            # Numerous issues with using externally installed dependencies:
+            # https://github.com/isl-org/Open3D/issues/4333
+            # https://github.com/isl-org/Open3D/issues/4360
+            self.define("USE_SYSTEM_EIGEN3", True),
+            self.define("USE_SYSTEM_FMT", True),
+            self.define("USE_SYSTEM_GOOGLETEST", True),
+            self.define("USE_SYSTEM_GLEW", True),
+            self.define("USE_SYSTEM_GLFW", True),
+            # self.define('USE_SYSTEM_IMGUI', True),
+            self.define("USE_SYSTEM_JPEG", True),
+            # self.define('USE_SYSTEM_LIBLZF', True),
+            # https://github.com/isl-org/Open3D/issues/4883
+            # self.define("USE_SYSTEM_PNG", True),
+            self.define("USE_SYSTEM_PYBIND11", True),
+            # self.define('USE_SYSTEM_TINYGLTF', True),
+            # self.define('USE_SYSTEM_TINYOBJLOADER', True),
+            self.define("CLANG_LIBDIR", os.path.dirname(libcxx_paths[0])),
+        ]
+        if self.spec.satisfies("@:0.13"):
+            args.append(self.define("USE_SYSTEM_FLANN", True))
+            args.append(self.define("USE_SYSTEM_QHULL", True))
+        if self.spec.satisfies("@0.14:"):
+            args.append(self.define("USE_SYSTEM_QHULLCPP", True))
+        if self.spec.satisfies("@0.15:"):
+            args.append(self.define("USE_SYSTEM_ASSIMP", True))
+            args.append(self.define("USE_SYSTEM_JSONCPP", True))
+            args.append(self.define("USE_SYSTEM_MSGPACK", True))
+            args.append(self.define("USE_SYSTEM_NANOFLANN", True))
+            # args.append(self.define("USE_SYSTEM_TBB", True))
+            args.append(self.define("USE_SYSTEM_ZEROMQ", True))
+        if self.spec.satisfies("@0.17:"):
+            args.append(self.define("USE_SYSTEM_CURL", True))
+            args.append(self.define("USE_SYSTEM_OPENSSL", True))
+            # args.append(self.define("USE_SYSTEM_VTK", True))
+        if self.spec.satisfies("@0.18:"):
+           args.append(self.define("USE_SYSTEM_EMBREE", True))
+        # end EBRAINS
+
+        if "+python" in self.spec:
+            args.append(self.define("PYTHON_EXECUTABLE", self.spec["python"].command.path))
+
+        return args
+
+    def check(self):
+        # begin EBRAINS: modified
+        with working_dir(self.builder.build_directory):
+        # end EBRAINS
+            tests = Executable(os.path.join("bin", "tests"))
+            tests()
+
+    def install(self, spec, prefix):
+        # begin EBRAINS: modified
+        with working_dir(self.builder.build_directory):
+        # end EBRAINS
+            make("install")
+            if "+python" in spec:
+                make("install-pip-package")
+
+    # Tests don't pass unless all optional features are compiled, including PyTorch
+    # @run_after('install')
+    # @on_package_attributes(run_tests=True)
+    # def unit_test(self):
+    #     if '+python' in self.spec:
+    #         pytest = which('pytest')
+    #         pytest(os.path.join('python', 'test'))
+
+    @run_after("install")
+    @on_package_attributes(run_tests=True)
+    def test(self):
+        if "+python" in self.spec:
+            self.run_test(
+                self.spec["python"].command.path,
+                ["-c", "import open3d"],
+                purpose="checking import of open3d",
+                work_dir="spack-test",
+            )
+# end EBRAINS
+
diff --git a/packages/py-dash/package.py b/packages/py-dash/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..ab410d2f142c9f57525588ddc573d7129815e111
--- /dev/null
+++ b/packages/py-dash/package.py
@@ -0,0 +1,29 @@
+# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class PyDash(PythonPackage):
+    """Python framework for building ML & data science web apps"""
+
+    homepage = "https://dash.plotly.com/"
+    pypi = "dash/dash-2.16.1.tar.gz"
+
+    version("2.16.1", sha256="b2871d6b8d4c9dfd0a64f89f22d001c93292910b41d92d9ff2bb424a28283976")
+    version("2.15.0", sha256="d38891337fc855d5673f75e5346354daa063c4ff45a8a6a21f25e858fcae41c2")
+
+    depends_on("python@3.8:", type=("build", "run"))
+    depends_on("py-setuptools", type="build")
+    
+    depends_on("py-flask@1.0.4:3.0", type=("build", "run"))
+    depends_on("py-werkzeug@:3.0", type=("build", "run"))
+    depends_on("py-plotly@5:", type=("build", "run"))
+    depends_on("py-importlib-metadata", type=("build", "run"))
+    depends_on("py-typing-extensions@4.1.1:", type=("build", "run"))
+    depends_on("py-requests", type=("build", "run"))
+    depends_on("py-retrying", type=("build", "run"))
+    depends_on("py-nest-asyncio", type=("build", "run"))
+