diff --git a/packages/hxtorch/package.py b/packages/hxtorch/package.py
index 0dec8ac99547a5eb4135b56195d07e707aa41568..2b2383ad8444961570b06680a15924374107ef9d 100644
--- a/packages/hxtorch/package.py
+++ b/packages/hxtorch/package.py
@@ -14,10 +14,10 @@ class Hxtorch(WafPackage):
     # This repo provides a waf binary used for the build below
     git      = "https://github.com/electronicvisions/pynn-brainscales.git"
 
-    version('5.0-rc1', branch='waf')
+    version('6.0-a1', branch='waf')
 
     # PPU compiler dependencies
-    depends_on('oppulance@5.0-rc1')
+    depends_on('oppulance@6.0-a1')
 
     # host software dependencies
     depends_on('bitsery', type=('build', 'link', 'run'))
@@ -28,6 +28,7 @@ class Hxtorch(WafPackage):
     depends_on('genpybind@ebrains', type=('build', 'link', 'run'))
     depends_on('gflags', type=('build', 'link', 'run'))
     depends_on('googletest@1.11.0:+gmock', type=('build', 'link', 'run')) # variadic templates needed
+    depends_on('inja', type=('build', 'link', 'run')) # template engine for PPU source jit generation
     depends_on('intel-tbb', type=('build', 'link', 'run'))  # ppu gdbserver
     depends_on('libelf', type=('build', 'link', 'run'))
     depends_on('liblockfile', type=('build', 'link', 'run'))
diff --git a/packages/inja/package.py b/packages/inja/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..235ef31c54eb3a4bc983ca0f197a23741471a956
--- /dev/null
+++ b/packages/inja/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 import *
+
+
+class Inja(CMakePackage):
+    """Inja is a template engine for modern C++, loosely inspired by jinja for
+    python."""
+
+    homepage = "https://github.com/pantor/inja"
+    url      = "https://github.com/pantor/inja/archive/refs/tags/v3.3.0.tar.gz"
+
+    version('3.3.0', sha256='e628d994762dcdaa9a97f63a9b8b73d9af51af0ffa5acea6bdbba0aceaf8ee25')
+
+    depends_on('nlohmann-json@3.8.0:')
+
+    def cmake_args(self):
+        args = [
+            '-DINJA_USE_EMBEDDED_JSON:BOOL=OFF',
+            '-DINJA_BUILD_TESTS:BOOL=OFF',
+            '-DBUILD_BENCHMARK:BOOL=OFF',
+            '-DCOVERALLS:BOOL=OFF',
+        ]
+        return args
diff --git a/packages/oppulance/package.py b/packages/oppulance/package.py
index 9374050ba0943218779ceb43e1ad5010c25fb0cb..cc82f3b6028cf9ad4f734f393a3afba84a6b7bbb 100644
--- a/packages/oppulance/package.py
+++ b/packages/oppulance/package.py
@@ -22,8 +22,8 @@ class Oppulance(Package):
 
     releases = [
         {
-            'version': '5.0-rc1',
-            'tag': 'ebrains-5.0-rc1'
+            'version': '6.0-a1',
+            'tag': 'ebrains-6.0-a1'
         },
     ]
 
diff --git a/packages/pynn-brainscales/package.py b/packages/pynn-brainscales/package.py
index 18edd90e2d18c195ce38e0d76494fd777d25739f..8557135e70673c529de185bf48fb8485a406b534 100644
--- a/packages/pynn-brainscales/package.py
+++ b/packages/pynn-brainscales/package.py
@@ -13,10 +13,10 @@ class PynnBrainscales(WafPackage):
     homepage = "https://github.com/electronicvisions/pynn-brainscales"
     git      = "https://github.com/electronicvisions/pynn-brainscales.git"
 
-    version('5.0-rc1', branch='waf')
+    version('6.0-a1', branch='waf')
 
     # PPU compiler dependencies
-    depends_on('oppulance@5.0-rc1')
+    depends_on('oppulance@6.0-a1')
 
     # host software dependencies
     depends_on('bitsery', type=('build', 'link', 'run'))
@@ -27,6 +27,7 @@ class PynnBrainscales(WafPackage):
     depends_on('genpybind@ebrains', type=('build', 'link', 'run'))
     depends_on('gflags', type=('build', 'link', 'run'))
     depends_on('googletest@1.11.0:+gmock', type=('build', 'link', 'run')) # variadic templates needed
+    depends_on('inja', type=('build', 'link', 'run')) # template engine for PPU source jit generation
     depends_on('intel-tbb', type=('build', 'link', 'run'))  # ppu gdbserver
     depends_on('libelf', type=('build', 'link', 'run'))
     depends_on('liblockfile', type=('build', 'link', 'run'))
diff --git a/spack.yaml b/spack.yaml
index a1ce26b456e5efd66f105ed87b5c07435ddafde4..fdac2634d6eedad8070c8100a006bae0d87535f5 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -21,7 +21,7 @@ spack:
     - biobb-model@4.0.0
     - biobb-structure-checking@3.12.1
     - biobb-structure-utils@4.0.0
-    - hxtorch@5.0-rc1
+    - hxtorch@6.0-a1
     - nest@3.5_rc1 +sonata
     - neuron@8.2.2 +mpi
     - nglview@3.0.4
@@ -63,7 +63,7 @@ spack:
     - py-tvb-library@2.8.1
     - py-tvb-storage@2.8.1
     - py-viziphant@0.3.0
-    - pynn-brainscales@5.0-rc1
+    - pynn-brainscales@6.0-a1
     - r-rgsl@0.1
     - r-sbtabvfgen@0.1
     - r-uqsa@2.2