diff --git a/Golden_Repo/j/JupyterExtension-jupyterai/JupyterExtension-jupyterai-0.9.0-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterExtension-jupyterai/JupyterExtension-jupyterai-0.9.0-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a9a307a38ef19a385bf26877d54ddba87620a649
--- /dev/null
+++ b/Golden_Repo/j/JupyterExtension-jupyterai/JupyterExtension-jupyterai-0.9.0-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,130 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterExtension-jupyterai'
+version = '0.9.0'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://jupyter-ai.readthedocs.io'
+description = """
+A generative AI extension for JupyterLab
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Rust', '1.60.0'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+    ('protobuf-python', '3.19.4'),
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+    'sanity_pip_check':  True,
+    'filter': ('python -c "import %(ext_name)s"', ''),
+}
+
+exts_list = [
+    ('faiss_cpu', '1.7.4', {
+        'modulename': False,
+        'source_tmpl': '%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl',
+        'checksums': ['dca531952a2e3eac56f479ff22951af4715ee44788a3fe991d208d766d3f95f3'],
+    }),
+    ('webcolors', '1.13', {
+        'checksums': ['c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a'],
+    }),
+    ('uri-template', '1.3.0', {
+        'checksums': ['0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7'],
+    }),
+    ('typing_extensions', '4.5.0', {
+        'checksums': ['5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb'],
+    }),
+    ('numexpr', '2.8.4', {
+        'checksums': ['d5432537418d18691b9115d615d6daa17ee8275baef3edf1afbbf8bc69806147'],
+    }),
+    ('jsonpointer', '2.4', {
+        'checksums': ['585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88'],
+    }),
+    ('jsonpath-ng', '1.5.3', {
+        'checksums': ['a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567'],
+    }),
+    ('importlib_metadata', '5.2.0', {
+        'checksums': ['404d48d62bba0b7a77ff9d405efd91501bef2e67ff4ace0bed40a0cf28c3c7cd'],
+    }),
+    ('grpcio', '1.51.3', {
+        'modulename': False,
+        'checksums': ['be7b2265b7527bb12109a7727581e274170766d5b3c9258d4e466f4872522d7a'],
+    }),
+    ('fqdn', '1.5.1', {
+        'checksums': ['105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f'],
+    }),
+    ('typing_inspect', '0.9.0', {
+        'checksums': ['b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78'],
+    }),
+    ('tiktoken', '0.4.0', {
+        'checksums': ['59b20a819969735b48161ced9b92f05dc4519c17be4015cfb73b65270a243620'],
+    }),
+    ('ray', '2.4.0', {
+        'source_tmpl': '%(name)s-%(version)s-cp310-cp310-manylinux2014_x86_64.whl',
+        'checksums': ['5ed5a29795b122e9e2b832d5224ab9b1cc235beab700d2a413b23c63b3d3c80c'],
+    }),
+    ('pydantic', '1.10.10', {
+        'checksums': ['3b8d5bd97886f9eb59260594207c9f57dce14a6f869c6ceea90188715d29921a'],
+    }),
+    ('marshmallow', '3.19.0', {
+        'checksums': ['90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78'],
+    }),
+    ('arrow', '1.2.3', {
+        'checksums': ['3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1'],
+    }),
+    ('openapi-schema-pydantic', '1.2.4', {
+        'checksums': ['3e22cf58b74a69f752cc7e5f1537f6e44164282db2700cbbcd3bb99ddd065196'],
+    }),
+    ('openai', '0.27.8', {
+        'checksums': ['2483095c7db1eee274cebac79e315a986c4e55207bb4fa7b82d185b3a2ed9536'],
+    }),
+    ('marshmallow-enum', '1.5.1', {
+        'checksums': ['38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58'],
+    }),
+    ('isoduration', '20.11.0', {
+        'checksums': ['ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9'],
+    }),
+    ('dataclasses-json', '0.5.9', {
+        'checksums': ['e9ac87b73edc0141aafbce02b44e93553c3123ad574958f0fe52a534b6707e8e'],
+    }),
+    ('langchain', '0.0.159', {
+        'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl',
+        'checksums': ['d9df75405d6f02cc683bef5b3e79fbf9ca3b22c5ff198dd823b5393c568e2ec4'],
+    }),
+    ('jupyter_ai_magics', version, {
+        'checksums': ['53d403df3015796c330b496c04609fac16590937be6670fe725d9349f0522059'],
+    }),
+    ('jupyter_ai', version, {
+        'checksums': ['ce3c37ae69c90dd62340ef1dc1df2e1cc35c7420eba2aba8b88e9ce97c3b336d'],
+    }),
+]
+
+modextrapaths = {
+    'JUPYTER_EXTRA_LABEXTENSIONS_PATH': ['share/jupyter/labextensions'],
+}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': [
+        'share/jupyter/labextensions',
+        'lib/python%(pyshortver)s/site-packages'
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterExtension-nglview/JupyterExtension-nglview-3.0.6-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterExtension-nglview/JupyterExtension-nglview-3.0.6-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..aec36fbabae88b65bb198c22b0eb54c8318a5d88
--- /dev/null
+++ b/Golden_Repo/j/JupyterExtension-nglview/JupyterExtension-nglview-3.0.6-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,57 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterExtension-nglview'
+version = '3.0.6'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'http://nglviewer.org/nglview/'
+description = """
+Jupyter widget to interactively view molecular structures and trajectories
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+    'sanity_pip_check':  True,
+    'filter': ('python -c "import %(ext_name)s"', ''),
+}
+
+exts_list = [
+    ('versioneer', '0.28', {
+        'checksums': ['7175ca8e7bb4dd0e3c9779dd2745e5b4a6036304af3f5e50bd896f10196586d6'],
+    }),
+    ('nglview', '%(version)s', {
+        'checksums': ['2afd95128118953813634472a7ec5eb596bff4b0d8acf5900045ccc2aa783bbb'],
+    }),
+]
+
+modextrapaths = {
+    'JUPYTER_EXTRA_LABEXTENSIONS_PATH': ['share/jupyter/labextensions'],
+}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': [
+        'share/jupyter/labextensions',
+        'lib/python%(pyshortver)s/site-packages'
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterExtension-nvdashboard/JupyterExtension-nvdashboard-0.8.0-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterExtension-nvdashboard/JupyterExtension-nvdashboard-0.8.0-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..2aa4147749a8cb18f227ec0c33ed44082447790b
--- /dev/null
+++ b/Golden_Repo/j/JupyterExtension-nvdashboard/JupyterExtension-nvdashboard-0.8.0-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,58 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterExtension-nvdashboard'
+version = '0.8.0'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/rapidsai/jupyterlab-nvdashboard'
+description = """
+A JupyterLab extension for displaying GPU usage dashboards
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+    # NVIDIA Management Library is on our clusters located at system level
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+    'sanity_pip_check':  True,
+    'filter': ('python -c "import %(ext_name)s"', ''),
+}
+
+exts_list = [
+    ('pynvml', '11.5.0', {
+        'checksums': ['d027b21b95b1088b9fc278117f9f61b7c67f8e33a787e9f83f735f0f71ac32d0'],
+    }),
+    ('jupyterlab_nvdashboard', '0.8.0', {
+        'checksums': ['48e9b535b4139b5d1274844281fd1dd8e244123fb1b2b2ec42442cdbbcd535ab'],
+    }),
+]
+
+modextrapaths = {
+    'JUPYTER_EXTRA_LABEXTENSIONS_PATH': ['share/jupyter/labextensions'],
+}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': [
+        'share/jupyter/labextensions',
+        'lib/python%(pyshortver)s/site-packages'
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterExtension-slurmprovisioner/JupyterExtension-slurmprovisioner-0.6.0-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterExtension-slurmprovisioner/JupyterExtension-slurmprovisioner-0.6.0-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..19be3ea315f5136101454d5cbdc515285ac4e31e
--- /dev/null
+++ b/Golden_Repo/j/JupyterExtension-slurmprovisioner/JupyterExtension-slurmprovisioner-0.6.0-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,63 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterExtension-slurmprovisioner'
+version = '0.6.0'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/FZJ-JSC/jupyter-slurm-provisioner-extension'
+description = """
+A JupyterLab extension for using a slurm kernel provisioner
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+    'sanity_pip_check':  True,
+    'filter': ('python -c "import %(ext_name)s"', ''),
+}
+
+exts_list = [
+    ('jupyter-slurm-provisioner', '0.6.0', {
+        'checksums': ['24141dc4abfb009d424837a5d78159c2b63e0243d63618cacebcf4f23edc101f'],
+    }),
+    ('jupyter_slurm_provisioner_extension', '0.3.0', {
+        'patches': ['jupyter-slurm-provisioner-extension_jserv3.patch'],
+        'checksums': [
+            'fa2cf94d180f08ad47563b9bdcc4c66b2f0831dff85e2203a8cb6bc8d90b8a58',
+            '65d2cb1224c4444cf6bfe6b18ff603b75d0263292afc226f5a912e2905a914e1',
+        ],
+    }),
+]
+
+modextrapaths = {
+    'JUPYTER_EXTRA_LABEXTENSIONS_PATH': ['share/jupyter/labextensions'],
+    'JUPYTER_PATH': ['share/jupyter'],
+    'JUPYTER_CONFIG_PATH': ['etc/jupyter'],
+}
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': [
+        'share/jupyter/labextensions',
+        'lib/python%(pyshortver)s/site-packages'
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterExtension-slurmprovisioner/jupyter-slurm-provisioner-extension_jserv3.patch b/Golden_Repo/j/JupyterExtension-slurmprovisioner/jupyter-slurm-provisioner-extension_jserv3.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6a13402e0195c70b3548efc39a24d19cb54c452d
--- /dev/null
+++ b/Golden_Repo/j/JupyterExtension-slurmprovisioner/jupyter-slurm-provisioner-extension_jserv3.patch
@@ -0,0 +1,12 @@
+diff -Naur jupyter_slurm_provisioner_extension.orig/jupyter_slurm_provisioner_extension-0.3.0/setup.py jupyter_slurm_provisioner_extension/jupyter_slurm_provisioner_extension-0.3.0/setup.py
+--- jupyter_slurm_provisioner_extension.orig/jupyter_slurm_provisioner_extension-0.3.0/setup.py 2022-12-02 16:54:56.000000000 +0100
++++ jupyter_slurm_provisioner_extension/jupyter_slurm_provisioner_extension-0.3.0/setup.py      2023-06-05 21:43:30.684253118 +0200
+@@ -57,7 +57,7 @@
+     long_description_content_type="text/markdown",
+     packages=setuptools.find_packages(),
+     install_requires=[
+-        "jupyter_server>=1.6,<2",
++        "jupyter_server>=1.6,<3",
+         "jupyter-slurm-provisioner>=0.1.8"
+     ],
+     extras_require={
diff --git a/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.9.0-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.9.0-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..db90d81b2b873d293c5ce9671f0b63d65a2bbb21
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.9.0-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,96 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-Bash'
+version = '0.9.0'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/takluyver/bash_kernel'
+description = """
+Native Bash kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'filter': ('python -c "import %(ext_name)s"', ''),
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check':  True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+    ('bash_kernel', '0.9.0', {
+        'checksums': ['0423f0512ef6f83a654e1439a369718899a38f27948fe21b665b2df1dbf3a7c7'],
+    }),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # Jupyter Kernel: Bash - https://github.com/takluyver/bash_kernel
+    # installs bash_kernel in $JUPYTER_DATA_DIR/kernels
+    'source %(builddir)s/env.sh && ${EBROOTPYTHON}/bin/python3 -m bash_kernel.install --user',
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm -f %(installdir)s/pyvenv.cfg',
+    'rm -rf %(installdir)s/bin',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/_distutils_hack',
+    'rm -f %(installdir)s/lib/python%(pyshortver)s/site-packages/distutils-precedence.pth',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip-*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pkg_resources',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools-*',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/bash/kernel.json',
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/bash/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-20230205-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-20230205-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9980ddaaee1994d28e66590977b523446155d33e
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-20230205-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,95 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Cling'
+version = '20230205'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/root-project/cling'
+description = """
+Native C kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+    ('Cling', version),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # Jupyter Kernel: Cling (C++)
+    (
+        'source %(builddir)s/env.sh && '
+        ' pip3 install --upgrade --no-deps --force-reinstall ${EBROOTCLING}/share/cling/Jupyter/kernel && '
+        ' jupyter-kernelspec install --prefix=%(installdir)s ${EBROOTCLING}/share/cling/Jupyter/kernel/cling-cpp17 && '
+        ' install -m 0755 ${EBROOTCLING}/share/cling/Jupyter/kernel/scripts/jupyter-cling-kernel %(installdir)s/bin/ '
+    ),
+
+    # correct shebang to correct python binary
+    (
+        'source %(builddir)s/env.sh && '
+        ' abs2python="#! ${EBROOTPYTHON}/bin/python" && '
+        ' sed "1s@^.*@$abs2python@g" -i %(installdir)s/bin/jupyter-cling-kernel'
+    ),
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm -f %(installdir)s/pyvenv.cfg',
+    'rm -f %(installdir)s/bin/python',
+    'rm -f %(installdir)s/bin/python3',
+    'rm -f %(installdir)s/bin/activate',
+    'rm -f %(installdir)s/bin/activate*',
+    'rm -f %(installdir)s/bin/easy_install*',
+    'rm -f %(installdir)s/bin/pip*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/_distutils_hack',
+    'rm -f %(installdir)s/lib/python%(pyshortver)s/site-packages/distutils-precedence.pth',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip-*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pkg_resources',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools-*',
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/cling-cpp17/kernel.json',
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/cling-cpp17/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.8.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.8.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..116e8204b611caa02ca8cbab50dabcaa08cccf17
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.8.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,129 @@
+easyblock = 'JuliaBundle'
+
+name = 'JupyterKernel-Julia'
+version = '1.8.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/JuliaLang/IJulia.jl'
+description = """
+Native Julia kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('Julia', version, '', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+components = [
+    ('julia', '0.6.1', {
+        'easyblock': 'PythonPackage',
+        'use_pip': True,
+        'sources': ['v%(version)s.tar.gz'],
+        'source_urls': ['https://github.com/JuliaPy/pyjulia/archive/'],
+        'checksums': [('sha256', 'dffe739075d5a3ab68b8127df3481d5152e87698020966d45fa77efd8671b690')],
+        'download_dep_fail': True,
+        'start_dir': 'pyjulia-%(version)s',
+    }),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+exts_defaultclass = 'JuliaPackage'
+exts_list = [
+    ('ZMQ', '1.2.1', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/JuliaInterop/ZMQ.jl/archive/'],
+        'checksums': [('sha256', '8b42555340d0208e5a36cd5e8f29a3f0d44c13c064382d4b1e5d00c1c4a9dd96')],
+    }),
+    ('Interact', '0.10.5', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/JuliaGizmos/Interact.jl/archive/'],
+        'checksums': ['68b347b97fce2f7aeb26e9c03466406f5183fe7d758066bf6111554ca73c3382'],
+    }),
+    ('LanguageServer', '4.4.0', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/julia-vscode/LanguageServer.jl/archive/'],
+        'checksums': ['42fd14603c150311a5c46c27889b89f46663ffaee3e321eccdb6ea908c647a54'],
+    }),
+    ('SymbolServer', '7.2.1', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/julia-vscode/SymbolServer.jl/archive/'],
+        'checksums': ['049a62a61a2a12e837bac208800e102bf36c78672081885e97134c482e645f65'],
+    }),
+    ('IJulia', '1.24.2', {
+        # installs ijulia in JULIA_DEPOT_PATH and kernel in $JUPYTER_DATA_DIR/kernels
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/JuliaLang/IJulia.jl/archive/'],
+        'checksums': ['de215348c7c41e1ca15c0d21f5f9a78bedce77b02ef89d67f38702c4d57ee80d'],
+        'preinstallopts': 'export JUPYTER_DATA_DIR=%%(installdir)s/%s' % local_jupyter_path
+    }),
+]
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': [local_jupyter_path],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    'mkdir -p %%(installdir)s/%s' % local_jupyter_path,
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        ''
+        'export JULIA_DEPOT_PATH=${EBJULIA_STD_DEPOT_PATH}:${EBJULIA_ADMIN_DEPOT_PATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # configure Python<->Julia bridge (of python package julia)
+    'source %(builddir)s/env.sh && python -c "import julia; julia.install()"',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm -f %(installdir)s/pyvenv.cfg',
+    'rm -f %(installdir)s/bin/python',
+    'rm -f %(installdir)s/bin/python3',
+    'rm -f %(installdir)s/bin/activate',
+    'rm -f %(installdir)s/bin/activate*',
+    'rm -f %(installdir)s/bin/easy_install*',
+    'rm -f %(installdir)s/bin/pip*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/_distutils_hack',
+    'rm -f %(installdir)s/lib/python%(pyshortver)s/site-packages/distutils-precedence.pth',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip-*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pkg_resources',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools-*',
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/julia-%(version_major_minor)s/kernel.json',
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/julia-%(version_major_minor)s/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-8.2.0-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-8.2.0-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4ed65fd95881364319bbaf565bfa1ea341725822
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-8.2.0-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,140 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Octave'
+version = '8.2.0'
+local_octavever = version
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/Calysto/octave_kernel'
+description = """
+Native Octave kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('Octave', local_octavever, '', ('gcccoremkl', '11.3.0-2022.1.0')),  # ensure it is available
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+local_jupyter_path = 'share/jupyter'
+local_kernel_dir = 'octave'
+local_kernel_name = 'Octave-%s' % local_octavever
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # Create virtual environment to ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'source %%(installdir)s/bin/activate\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    # enable use of Octave from production stage
+    # '--no-deps' only because we know its installed in module Jupyter
+    'source %(builddir)s/env.sh && pip3 install --upgrade --no-deps --force-reinstall ipykernel ',
+    'rm -rf %(installdir)s/share/jupyter/kernels/',  # remove any kernel installed by ipykernel
+    # 'source %(builddir)s/env.sh && pip3 install --upgrade --no-deps --force-reinstall ipyparallel ',
+
+    # install Python package octave_kernel
+    # we rely on pip for automatic installation of dependencies!
+    'source %(builddir)s/env.sh && pip3 install --upgrade --no-deps --force-reinstall metakernel==0.29.0 ',
+    'source %(builddir)s/env.sh && pip3 install --upgrade --no-deps --force-reinstall octave_kernel==0.34.2 ',
+
+    # write kernel.sh
+    (
+        '{ cat >> %%(builddir)s/env.sh; } << \'EOF\'\n'
+        'export KERNEL_DIR=%s\n'
+        'export KERNEL_NAME=%s\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_name),
+    (
+        '{ source %%(builddir)s/env.sh && '
+        '  cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF\n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCCcore/.11.3.0 \n'
+        '\n'
+        'module load Python/%%(pyver)s \n'
+        'module load JupyterLab/%s \n'
+        'module load Octave/%s \n'
+        '\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:\${PYTHONPATH} \n'
+        '\n'
+        'exec python \$@\n'
+        'EOF'
+    ) % (local_kernel_dir, local_jupyterver, local_octavever),
+    'source %(builddir)s/env.sh && chmod +x %(installdir)s/share/jupyter/kernels/${KERNEL_DIR}/kernel.sh',
+
+    # write kernel.json
+    (
+        '{ source %%(builddir)s/env.sh && '
+        '  cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "octave_kernel", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "mimetype": "text/x-octave", \n'
+        '  "language": "python", \n'
+        '  "name": "%s" \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+
+    # ensure correct permissions
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+
+    # Ensure we remove the virtuel environment to avoid wrong search path for python packages
+    'rm -f %(installdir)s/pyvenv.cfg',
+    'rm -rf %(installdir)s/bin',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/_distutils_hack',
+    'rm -f %(installdir)s/lib/python%(pyshortver)s/site-packages/distutils-precedence.pth',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip-*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pkg_resources',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools-*',
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/octave/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyDeepLearning/JupyterKernel-PyDeepLearning-2023.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-PyDeepLearning/JupyterKernel-PyDeepLearning-2023.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..26c0a8b43fdc7148ba98fc92a800ba8a1c97f20a
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyDeepLearning/JupyterKernel-PyDeepLearning-2023.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,161 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyDeepLearning'
+version = '2023.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://www.fz-juelich.de'
+description = """
+Special DeepLearning kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    # just ensure they exist
+    ('CUDA', '11.7', '', SYSTEM),
+    ('OpenCV', '4.7.0', '-CUDA-%(cudaver)s-contrib', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('TensorFlow', '2.11.0', '-CUDA-%(cudaver)s', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('protobuf-python', '3.19.4'),
+    # ('PyTorch', '1.12', '-CUDA-%(cudaver)s', ''),
+    # ('PyTorch-Geometric', '2.1.0', ''),
+    # ('torchvision', '0.13.1', '-CUDA-11.7'),
+    # ('torchaudio', '0.12.1'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+
+components = [
+    ('logos', '1.0', {
+        'easyblock': 'Binary',
+        'sources': [
+            {'filename': 'logo-32x32.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-32x32.png"},
+            {'filename': 'logo-64x64.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-64x64.png"},
+            {'filename': 'logo-128x128.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-128x128.png"},
+        ],
+        'checksums': [
+            '08651dd90fd0ce20a8f3d62bdbeacf34dfae7a73e61fde912d080222aa00e6b7',
+            'c3230068b407ff172b369208c20a24ed04971ce38e2fdf9116100102e14221a8',
+            'baa78f71dd2bb4e51eab0c653535365e54a717506622bcff4f834d653a17a2bf',
+        ],
+    }),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': False,  # skip as it requires protobuf, TensorFlow
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+    ('lmdb', '1.1.1', {
+        'checksums': ['165cd1669b29b16c2d5cc8902b90fede15a7ee475c54d466f1444877a3f511ac'],
+    }),
+    ('gviz_api', '1.9.0', {
+        'checksums': ['43d13ccc21834d0501b33a291ef3265e933dbb4bbdca3d34b1ed0a048c0ef640'],
+    }),
+    ('tensorboard_plugin_profile', '2.5.0', {
+        'checksums': ['f832698d87a773b9a017fc4dd5cf598a1ff942ccfbf3392c83fe12c949ab9f52'],
+    }),
+    ('tensorflow_hub', '0.12.0', {
+        'source_tmpl': 'tensorflow_hub-0.12.0-py2.py3-none-any.whl',
+        'checksums': ['822fe5f7338c95efcc3a534011c6689e4309ba2459def87194179c4de8a6e1fc'],
+        'unpack_sources': False,
+        'modulename': False,  # skip sanity check as 'import' will fail without TensorFlow
+    }),
+]
+
+local_kernel_dir = 'pydeeplearning'
+local_kernel_name = 'PyDeepLearning-%s' % version
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+    'HOROVOD_MPI_THREADS_DISABLE': ['1'],  # no mpi by default
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # create kernel skeleton
+    (
+        'python -m ipykernel install --name=%s --prefix=%%(installdir)s && '
+        'rm -f %%(installdir)s/share/jupyter/kernels/%s/logo-svg.svg && '
+        'mv %%(installdir)s/logo-32x32.png   %%(installdir)s/share/jupyter/kernels/%s/logo-32x32.png && '
+        'mv %%(installdir)s/logo-64x64.png   %%(installdir)s/share/jupyter/kernels/%s/logo-64x64.png && '
+        'mv %%(installdir)s/logo-128x128.png %%(installdir)s/share/jupyter/kernels/%s/logo-128x128.png'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir),
+
+    # write kernel.sh
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF\n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCC \n'
+        'module load OpenMPI \n'
+        'module load %s/.%s%s \n'
+        '\n'
+        'module load OpenCV/4.7.0-CUDA-11.7-contrib \n'
+        'module load TensorFlow/2.11.0-CUDA-11.7 \n'
+        'module load protobuf-python/.3.19.4 \n'
+        'module load PyTorch/1.12.0-CUDA-11.7 \n'
+        'module load PyTorch-Geometric/2.1.0-PyTorch-1.12.0-CUDA-11.7 \n'
+        'module load torchvision/0.13.1-CUDA-11.7 \n'
+        'module load torchaudio/0.12.1 \n'
+        '\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:\$PYTHONPATH \n'
+        'exec python -m ipykernel \$@\n'
+        '\n'
+        'EOF'
+    ) % (local_kernel_dir, name, version, versionsuffix),
+    'chmod +x %%(installdir)s/share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+
+    # write kernel.json
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "ipykernel_launcher", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "language": "python", \n'
+        '  "name": "%s", \n'
+        '  "metadata": { \n'
+        '    "debugger": true \n'
+        '  } \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'share/jupyter/kernels/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyEarthSystem/JupyterKernel-PyEarthSystem-2023.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-PyEarthSystem/JupyterKernel-PyEarthSystem-2023.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d72ef7b83a06a4335dd03bc99580a0658965ed3e
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyEarthSystem/JupyterKernel-PyEarthSystem-2023.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,174 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyEarthSystem'
+version = '2023.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://www.fz-juelich.de'
+description = """
+Special Earth System Modeling kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+# toolchain = {'name': 'gcccoremkl', 'version': '11.3.0-2022.1.0'}
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    # just ensure they exist (if they can be loaded here)
+    # ('NVHPC', '23.1'),
+    ('netcdf4-python', '1.6.1', '-serial'),
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('xarray', '2022.9.0', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('dask', '2022.12.0', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('TensorFlow', '2.11.0', '-CUDA-11.7', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('Cartopy', '0.21.0'),
+    ('Ninja', '1.10.2'),
+    ('git', '2.36.0', '-nodocs'),
+    ('GSL', '2.7'),
+    ('gnuplot', '5.4.4'),
+    ('ncview', '2.1.8'),
+    ('GPicView', '0.2.5'),
+    ('ImageMagick', '7.1.0-37'),
+    ('GDAL', '3.5.0'),
+    ('numba', '0.56.4', '-CUDA-11.7', ('gcccoremkl', '11.3.0-2022.1.0')),
+    # ('ParaStationMPI', '5.7.0-1'),
+    # ('NCO', '5.1.4'),
+    # req. GCC-toolchain not NVHPC-toolchain),
+    # ('CDO', '2.1.1'),
+    # ('mpi4py', '3.1.4'),
+    # ('PyTorch', '1.12.0', '-CUDA-11.7'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+components = [
+    ('logos', '1.0', {
+        'easyblock': 'Binary',
+        'sources': [
+            {'filename': 'logo-32x32.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-32x32.png"},
+            {'filename': 'logo-64x64.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-64x64.png"},
+            {'filename': 'logo-128x128.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-128x128.png"},
+        ],
+        'checksums': [
+            'f5dc53fd44adf3317014b9b34d40947fbe0f41206a77881c73c30e31a5b14852',
+            '465720735e479f2161bf64c91eaa7673b63d7e67934c6de27843e1eddad2ac8b',
+            '7de45ccf75e9fa58fe98585bfc0d094f2dd91087632db764fea807e410b3b201',
+        ],
+    }),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': False,  # skip as it requires protobuf, TensorFlow
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+]
+
+local_kernel_dir = 'pyearthsystem'
+local_kernel_name = 'PyEarthSystem-%s' % version
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+    'HOROVOD_MPI_THREADS_DISABLE': ['1'],  # no mpi by default
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # create kernel skeleton
+    (
+        'python -m ipykernel install --name=%s --prefix=%%(installdir)s && '
+        'rm -f %%(installdir)s/share/jupyter/kernels/%s/logo-svg.svg && '
+        'mv %%(installdir)s/logo-32x32.png   %%(installdir)s/share/jupyter/kernels/%s/logo-32x32.png && '
+        'mv %%(installdir)s/logo-64x64.png   %%(installdir)s/share/jupyter/kernels/%s/logo-64x64.png && '
+        'mv %%(installdir)s/logo-128x128.png %%(installdir)s/share/jupyter/kernels/%s/logo-128x128.png'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir),
+
+    # write kernel.sh
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF\n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module load Stages/${STAGE} \n'
+        'module load NVHPC/23.1 \n'
+        'module load %s/.%s%s \n'
+        '\n'
+        'module load netcdf4-python/1.6.1-serial \n'
+        'module load SciPy-bundle/2022.05 \n'
+        'module load xarray/2022.9.0 \n'
+        'module load dask/2022.12.0 \n'
+        'module load TensorFlow/2.11.0-CUDA-11.7 \n'
+        'module load Cartopy/0.21.0 \n'
+        'module load Ninja/1.10.2 \n'
+        'module load git/2.36.0-nodocs \n'
+        'module load GSL/2.7 \n'
+        'module load gnuplot/5.4.4 \n'
+        'module load ncview/2.1.8 \n'
+        'module load GPicView/0.2.5 \n'
+        'module load ImageMagick/7.1.0-37 \n'
+        'module load GDAL/3.5.0 \n'
+        'module load numba/0.56.4-CUDA-11.7 \n'
+        '\n'
+        'module load ParaStationMPI/5.7.0-1 \n'
+        'module load NCO/5.1.4 \n'
+        '\n'
+        '# req. GCC-toolchain not NVHPC-toolchain \n'
+        '# module load CDO/2.1.1 \n'
+        '# module load mpi4py/3.1.4 \n'
+        '# module load PyTorch/1.12.0-CUDA-11.7 \n'
+        '\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:\$PYTHONPATH \n'
+        'exec python -m ipykernel \$@\n'
+        '\n'
+        'EOF'
+    ) % (local_kernel_dir, name, version, versionsuffix),
+    'chmod +x %%(installdir)s/share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+
+    # write kernel.json
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "ipykernel_launcher", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "language": "python", \n'
+        '  "name": "%s", \n'
+        '  "metadata": { \n'
+        '    "debugger": true \n'
+        '  } \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'share/jupyter/kernels/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-128x128.png.base64 b/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-128x128.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..c501076be2b42c15267241b3d6b250dca8c9e469
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-128x128.png.base64
@@ -0,0 +1,165 @@
+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
+QmCC
diff --git a/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-32x32.png.base64 b/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-32x32.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..acbf822bc238fe525a40b1bd090ed83e0c105b99
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-32x32.png.base64
@@ -0,0 +1,36 @@
+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
diff --git a/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-64x64.png.base64 b/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-64x64.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..bf3fd58aa6584fb9fd176a8904618ed2a76bcf91
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyEarthSystem/logo-64x64.png.base64
@@ -0,0 +1,78 @@
+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
diff --git a/Golden_Repo/j/JupyterKernel-PyQuantum/JupyterKernel-PyQuantum-2023.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-PyQuantum/JupyterKernel-PyQuantum-2023.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..617a25379d850101a53994704226fa1af08dd647
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyQuantum/JupyterKernel-PyQuantum-2023.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,156 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyQuantum'
+
+# Versioning scheme:
+# major_version: software stage of modules loaded by the kernel
+# minor version: release month
+local_kernel_stage = 2023
+version = f'{local_kernel_stage}.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://www.fz-juelich.de'
+description = """
+Kernel for quantum computing in Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services for interactive computing across
+dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+# Not relevant to check any of these since we will load versions from another stage
+builddependencies = [
+    ('binutils', '2.38'),
+    #    ('Cartopy', '0.21.0'),
+    #    ('Cirq', '1.0.0'),
+    #    ('DWave', '6.3.0', '', ('gcccoremkl', '11.3.0-2022.4.0')),
+    #    ('PyQuil', '3.3.3'),
+    #    ('Qiskit', '0.41.0', '', ('gpsmkl', '2022')),
+    #    ('Qiskit-juqcs', '0.5.0', '', ('gpsmkl', '2022')),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+components = [
+    ('logos', '1.0', {
+        'easyblock': 'Binary',
+        'sources': [
+            {'filename': 'logo-32x32.png.base64',
+                'extract_cmd': "base64 -d %s > %%(builddir)s/logo-32x32.png"},
+            {'filename': 'logo-64x64.png.base64',
+                'extract_cmd': "base64 -d %s > %%(builddir)s/logo-64x64.png"},
+            {'filename': 'logo-128x128.png.base64',
+                'extract_cmd': "base64 -d %s > %%(builddir)s/logo-128x128.png"},
+        ],
+        'checksums': [
+            'd252acdbbd8838aff9ff183ce249b5a4c2ef43a6309680f2a4cb13029813e3e9',
+            'b7c900cab9761d24acb1ff98e42cc61c5a14d7c71ee2c91aa4de35508a927dc9',
+            'c2ed9885240b3fbeabf7f8eeef14152f80cf55dc13d8de26f4d8a7a046a8e015',
+        ],
+
+    }),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+# additional Python packages
+exts_list = [
+]
+
+local_kernel_name = 'PyQuantum-%s' % version
+# ipykernel will lowercase the kernel name
+local_kernel_dir = local_kernel_name.lower()
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+
+postinstallcmds = [
+    # create kernel skeleton
+    (
+        'python -m ipykernel install --name=%s --prefix=%%(installdir)s && '
+        'rm -f %%(installdir)s/share/jupyter/kernels/%s/logo-svg.svg && '
+        'mv %%(installdir)s/logo-32x32.png   %%(installdir)s/share/jupyter/kernels/%s/logo-32x32.png && '
+        'mv %%(installdir)s/logo-64x64.png   %%(installdir)s/share/jupyter/kernels/%s/logo-64x64.png && '
+        'mv %%(installdir)s/logo-128x128.png %%(installdir)s/share/jupyter/kernels/%s/logo-128x128.png'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir),
+
+    # write kernel.sh
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF \n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        f'module load Stages/{local_kernel_stage} \n'
+        'module load GCC/11.3.0 \n'
+        'module load ParaStationMPI \n'
+        'module load Cartopy/0.21.0 \n'
+        'module load Cirq/1.0.0 \n'
+        'module load DWave/6.3.0 \n'
+        'module load PyQuil/3.3.3 \n'
+        'module load Qiskit/0.41.0 \n'
+        # 'module load Qiskit-juqcs/0.5.0 \n' # not yet compatible with current Qiskit
+        'module load pulser/0.12.0 \n'
+        'module load myqlm/1.7.3 \n'
+        'module load %s/.%s%s \n'
+        '\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:\$PYTHONPATH \n'
+        'exec python -m ipykernel \$@\n'
+        '\n'
+        'EOF'
+    ) % (local_kernel_dir, name, version, versionsuffix),
+    'chmod +x %%(installdir)s/share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+
+    # write kernel.json
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "ipykernel_launcher", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "language": "python", \n'
+        '  "name": "%s", \n'
+        '  "metadata": { \n'
+        '    "debugger": true \n'
+        '  } \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'share/jupyter/kernels/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyQuantum/logo-128x128.png.base64 b/Golden_Repo/j/JupyterKernel-PyQuantum/logo-128x128.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..4a8f9967247763e6e53e234ef9c9d37638c72cab
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyQuantum/logo-128x128.png.base64
@@ -0,0 +1,217 @@
+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
+TbOsXhKTl23JTDKkOvT2WJEYCJDeKRShskiVgVdtblPK6/xltVLhce+2fe1Fx/06nS42Nnby5MkL
+FixYtmyZJnxC+lxVVe3UDA0oJhN+mtj4gnFDF0R2u33BggUxMTEZGRmHDh0qKSmuq6uvqG3/63N1
+qqrGRwsJDr09Soy2CNE2wWoRdGIwDKCoXJKox0tb2pV2D3V2qLUNAWcnI4To9fqkpKTExITMzMkL
+FiyYO3duVlZWdHR0KLvEZjYyxrfmF1+1fO4nB4p1Ag41uj2NBhqrc0gppX6/v62traqq6tixY+Vl
+ZdXVVQ0N9c0trW63R5NRrF+z7J6bVwt1GY3GiAhrdJQtxh6Xnp6RlZWVlZU1efLkuLg4k8nUJ7fn
+1oc3PvfRLpNBH5Ckq5cveO5X12H0/5UBoSFJUkdHR2tra1NTU21tbVNTU2trq9Pp7Ozs1LpeDsQA
+7RQ3LY8zLi7O4XAkJyfb7fbIyEij0dhHvGo+l0rZhne/2Hnk+Bm5mbdeeo5eFMYjaniaMQCCp9VR
+SZJ8Pp/X6/V0jVA8JywDtDCvxWKxWCyhsyQ1rAn+dwcav6OQtTszxhhjlFJK6eCnLmgNcAVB0F4M
+0aigLNiDEeHTklFo4o9l/2aMmSP2zRj9+D+DR9d4QOwo3AAAAABJRU5ErkJggg==
diff --git a/Golden_Repo/j/JupyterKernel-PyQuantum/logo-32x32.png.base64 b/Golden_Repo/j/JupyterKernel-PyQuantum/logo-32x32.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..83d4dafe09db57bfbe013f45ae19f261b98dc6ce
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyQuantum/logo-32x32.png.base64
@@ -0,0 +1,35 @@
+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
diff --git a/Golden_Repo/j/JupyterKernel-PyQuantum/logo-64x64.png.base64 b/Golden_Repo/j/JupyterKernel-PyQuantum/logo-64x64.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..cbb1ae369d4c71500d7fad8e5565d6b8d25401d9
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyQuantum/logo-64x64.png.base64
@@ -0,0 +1,87 @@
+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
diff --git a/Golden_Repo/j/JupyterKernel-PyVisualization/JupyterKernel-PyVisualization-2023.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-PyVisualization/JupyterKernel-PyVisualization-2023.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..cc9d7dae2b50a0efb70be35c6e0b3b5a9518407a
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyVisualization/JupyterKernel-PyVisualization-2023.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,131 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyVisualization'
+version = '2023.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://www.fz-juelich.de'
+description = """
+Special Jupyter kernel including visualization tools.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    # check for existance
+    # ('ParaView', '5.11.0', '-EGL', ('gpsmkl', '2022a')),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+components = [
+    ('logos', '1.0', {
+        'easyblock': 'Binary',
+        'sources': [
+            {'filename': 'logo-32x32.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-32x32.png"},
+            {'filename': 'logo-64x64.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-64x64.png"},
+            {'filename': 'logo-128x128.png.base64', 'extract_cmd': "base64 -d %s > %%(builddir)s/logo-128x128.png"},
+        ],
+        'checksums': [
+            ('sha256', '84323b573eabc75b9fae94109186e2978939d09bcc5df3e851a27b9888a2d844'),
+            ('sha256', 'b4e80ac4ad7f3bc319ccde862518c148727474afdb3afd098bd4fcaebb7d7bf3'),
+            ('sha256', '567e6571a1770da70df1bb0a9dbe28b3b83fee2975490a65a09731516b27d8c7'),
+        ],
+    }),
+]
+
+exts_default_options = {
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check': True,
+    'download_dep_fail': True,
+    'use_pip_for_deps': False,
+}
+
+exts_list = [
+]
+
+local_kernel_dir = 'pyvisualization'
+local_kernel_name = 'PyVisualization-%s' % version
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # create kernel skeleton
+    (
+        'python -m ipykernel install --name=%s --prefix=%%(installdir)s && '
+        'rm -f %%(installdir)s/share/jupyter/kernels/%s/logo-svg.svg && '
+        'mv %%(installdir)s/logo-32x32.png   %%(installdir)s/share/jupyter/kernels/%s/logo-32x32.png && '
+        'mv %%(installdir)s/logo-64x64.png   %%(installdir)s/share/jupyter/kernels/%s/logo-64x64.png && '
+        'mv %%(installdir)s/logo-128x128.png %%(installdir)s/share/jupyter/kernels/%s/logo-128x128.png'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir),
+
+    # write kernel.sh
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF\n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCC/11.3.0 \n'
+        'module load ParaStationMPI \n'
+        'module load %s/.%s%s \n'
+        '\n'
+        'module load ParaView/5.11.0-EGL \n'
+        '\n'
+        'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:\$PYTHONPATH \n'
+        'exec python -m ipykernel \$@\n'
+        '\n'
+        'EOF'
+    ) % (local_kernel_dir, name, version, versionsuffix),
+    'chmod +x %%(installdir)s/share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+
+    # write kernel.json
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "-m", \n'
+        '    "ipykernel_launcher", \n'
+        '    "-f", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "language": "python", \n'
+        '  "name": "%s", \n'
+        '  "metadata": { \n'
+        '    "debugger": true \n'
+        '  } \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'share/jupyter/kernels/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyVisualization/logo-128x128.png.base64 b/Golden_Repo/j/JupyterKernel-PyVisualization/logo-128x128.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..eb55970852c1f47ac4e00c4eb99e1062ac942be8
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyVisualization/logo-128x128.png.base64
@@ -0,0 +1,229 @@
+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
+QmCC
diff --git a/Golden_Repo/j/JupyterKernel-PyVisualization/logo-32x32.png.base64 b/Golden_Repo/j/JupyterKernel-PyVisualization/logo-32x32.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..3d6f3a3f2a8931f26edf0d2a36ad63722254eef6
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyVisualization/logo-32x32.png.base64
@@ -0,0 +1,30 @@
+iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+B3RJTUUH5AQCEAg5lXI8DwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUH
+AAAGFklEQVRIx+1We2yVdxl+3u/+nUvb03PoWVs6ymUt6yB0QGIpjMvYHN3YMq3ZBJ0yI9MoWdRk
++8MtJjONidENcbiKToiIbogxE2HOsQkGWaUtXWdpC+1pDwUKpffLufR83/f7vf7RaaCXxMzsDxOf
+P99f8jy/95LnfYmZ8XFCwceM/wt8FIG52v7R4jTr864vfzEfQiTSYtJhlyBFqjD/h6++umfPS/HR
+jqFUMiMcR8JlDnuBgy/v3/uTV87FboyOpdKukFKAcS3edr7uBABtJnvC9Ur7O+83A8meAXfMkY6M
+Mv28fDmAhu6T4UfnjwxODGUySY+dHKOsvhjAWw0dzoIH4omhvslUynUkU3k4OcU2i8Dufft2+CKd
+py+SoQAgonMjA/d/dlvf5RvD0WRDLOZJlQAimuzu+/S6Z9x0omvCirfGPDejAiqBA9HqO/PmbnJv
+12jbNZgEAhPrpvpWYnzzihUH9x/IqVyQ8VQCAeTXMHjq0poH76nduzu0bLOTmdSIiIhUjS+1Plb9
+yJwC/Sf+NDKaJBAYJMkylfyqLQCuupfar/ZpBAIzEDRw78L1AGIDTmdPr67QVGN9honeppLyitkF
+WnuurMq4kgAABMVUQqTgnkoA73afTKQlEQGwiI2QVRm6G8DRuq6x8TEQMSAUJdvyPbyudM4xfe31
+39ybnQeFFSKSMMPmsVj3zqeeavxrY05FVEgFgGCETTVW1/Xkti/EO1rSOSVSCgLA8Ou61OxNd0Xm
+FMjpaD7TeqG5v6e5L94yfNX2KRcNuzgn9OaJY/qSCDED0BWETNO5kCwoLTp8+Ii14G6FBQCPUODz
+XWl8e+dXvvpvwlumqP6908+827Nox48tXxYRuRPDz7XXlxY5AJpH3+/rn1RIkUBYg+kP3Ld4I4Cz
+XRM3Ur0KFIB1TY/Yhh+DgVB09gx2Pv/S8oeeVI6+GDKsgJMOGeZdK9b1Fj/a3tR4dqjJ8xQGFPA8
+005r/InQCgDH6+OumwHBYxRYFnzBxysWzWkVqmEbdhBl6+FlwBLSY+FlR6KHag/M31rGIGbO0jjX
+n3vuWMOubz79t3eOWqUbVBZgKJo6P2APpNKbVy28mfPDEr1Y87wdyL7eWif7hwk82t1cWPGIlZMH
+lrapH/nDYT2T1z3oLX1iadiVWVYwNB6EiePv1CF7GUauC3DEtMNZvtPHDm+vPTJdIFJcdvvndmvC
+KPnaQUgPUoDZnRiUboZZOg698J3cbdtLh2Nj+V9vWvnsfUqWsbFwDYC3P7iRsG8ziDxFKbQNy2fe
+UWBNmxrt5R/UFFR/15AppMYzSQmWkAJSgiWzgJQK8ehABldSuZa6c6EwQnnxwf7PlzwIoCk2aiwT
+kjnbMPKzfZOmf0tZ3nS77rg8EAxHp34NlgoppJqk6lB1UnQjmHv+5JtVlYWQAp6ouNP2yeDZ371X
+/aXHfnvgFWNVFaQUpBT4rGgocCHWWV21dnoGZs48OZkEC7DUTfvML/esXpLRFAIzCImR67/aZRUv
+uB0JFyRVkrYZuMO/CMCpf1zxsEgDfIae77fmhfzdrx/f8Iuj0wUy40NKWBNSKJpRv78m1VJkmToc
+78NCiRBGHCRcSAGwEMILaiuDZQB+fbqDivI8ULFtRUN+02+Wl0RnOptWkG38PZ1UpSTV2Lo2aWWA
+4RSYIQSknGoGpICQ0Plsm9O3vO3ZLTucxMj4ZFAHa4ZeFLBvC/ljKWwti8wUIGam3JIN36oVAvNa
+nv79jxYjJdjzKFeHyv/ScEHc1Ti0/Kce+RLJI5f3fL/mG61LKNGvKGrAUAO22dvZHv/Z9uKl5dMz
+ANDX+pdPVj2cW7jY9klIhhTkU5+rae+5ljZUpB2nLT5/XiRryI1sWpdXohUBGBp3NzhnVE0AgMc8
+QYXqpZns03fy9174zLefSGJSsJSkAuB9b1ze8YD9Rk/t459ae/M2nzLtmVt+ZvwWq3i/OY6wDmaS
+Eo6o+2Bg70FV9/H42Mgtn5qNfc4434T6htaN6+3zfyzjWCV3reGW1acO5VeuLOb/ArOcLYde+3Pb
+xU5d1yXzQ1s2Vawunasm/wnof/66/ifc3TKUs8YffwAAAABJRU5ErkJggg==
diff --git a/Golden_Repo/j/JupyterKernel-PyVisualization/logo-64x64.png.base64 b/Golden_Repo/j/JupyterKernel-PyVisualization/logo-64x64.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..3803d73352011e8d0bad7eaf26d19920a1e09ea7
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyVisualization/logo-64x64.png.base64
@@ -0,0 +1,79 @@
+iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
+B3RJTUUH5AQCEAgk9nRQ1gAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUH
+AAAQ20lEQVRo3u1aaZRV1ZX+9jnn3vumGhhEhgKVqiiTErVUjCiRQcIk4sAoHdeKMZ1eHV1pu81K
+Z+gk2itZbRtjMHa6E5MYFRkNKjYRY0tkViNgCUIV1CBQRY3v1ZvvdHb/uLcGMAnDH81a3HXrrVX3
+7fPO/vb59nD2ucTM+Fu+BP7Gr/MAzgM4D+A8gPMAzgM4D+CTvNSZi27ftu2NHbusSAQkIIiIIEAE
+gPrsofXEqqrpM2YAsG37x4/9xFKWJCkECRCBiELpcIzg4VWj5s2dB4CBx/7jR6YSUgpBRESCQIBA
+OIZBAOc8cd9990Wj0bMGcNeSpb9cPqO9rt5LpnUm72bzft7jgq9dMMBaE2h7qo2ffDIAsPqFNbs/
+/N+qyaOPdXd0ZnMZN1/07ILWtgeXyNVgQsehEz9M3R8AeGPza0+/tGXs5FuPH+/qytrFQjHr6rTr
+ae1DazBD+zAS2PH4Aw88cNYrUHScAbCnVVU0FgpOLOJ1ZrxozM+6usDsae2BmUuFfC7V9tOFC4Mh
+v/n1bx96amltpllmE9F8Km3nc04x72vbR5Hha+iY6thSf/cX7w7kn33m1wvu+0ZnVjqRtJHOZ/KO
+dBxyvKL2Xc+D9gGw694295ZzodCLL7185zXjGrbUZJs73FTWL3jsau2DocFgZiKSQnw0cMDwCy4I
+hhyqe79RTdvRcqS7mMm7btHXLsNl0gzWDIK0VOKYqLhkVCD/xpa3lsz7znv7arKZYrroZHzf9Txf
+a2gtwBogaXpHti381rJzAfDcqtUPV16c2VVXPJHWnq+hiYjBBDBARCTpqFO4ftbsQP5I3ZHhYwbt
+bW48lu5Ie3A0McCaQAwmIopA28n89Ik3BvLdqRTHBtcd72xP5lrzBc/ziLXQDCD0MyKyYmjc9YW5
+T59LFNrz9vZRHtvtOc91NXwQGAyAGWCQJEPIV1qP37N0aSC/bs36q279bGPriU4XeY88hg6XChpQ
+xKYhWrfXL1q6JJDf+PKGMZ+b03C0uSNf8G1bej75zAABxMxgQxkEMapcl5aWnTWAlta2KoOzje2+
+7UKEJgkvAgQJJcqV2FzMz5k+PQSwdu2Q6hGpou36PeEjlCYCRwWMqJHaemzu7fMC+ZXP/3bYFVOS
+6VzRdQUzCEHsCWeS0hTCbW+8ddb0c8kDq1/ccOeEqq7mLs3+KV8xWAoig3wNu3K0ZZrB86Pt9V2U
+y/saoMCGQSxksBJkCsCUQ4sDEmUlgfw7ez7IUmm2YAutGRTYngFmMGAKJZWpD229c8mycwHw/OoX
+bhl2YSFV6BfxQ/UFkzCJpNifTs+9447g8ds736moHtbU1uZoAjOBCNyjD6LEkihzLD37xpmBfEP9
+YXVBVfOJ9qLrUc8vh7mCwFLGpNRGFM17pkybeS4Aju3fW5Z1fM/v/WkOLEMgIciSlhZrWj5afsed
+4YqtXD1m9rhkOufp0O6BPgwyiSISypCNf6hdfs/yQP5369dWXjunvbPT0X5g/BAxg8GWVKYg17Un
+Vg4+l1Jib80HnxsYSzYn2dchKznMqKwhLRKWLNViB/wbrr029MhXXy4dMzDvaVDQ8gjyLzPDEmxJ
+ibiRe7fj8zOnhoBXrS6rrM4WbGKfg6TLvQ4m40qaUmabahYuvONcAKxct/6OS0dnOnIM3eu4we9L
+QRSTIJG2nUHV1/TyqlO3dTlZm4m4l3QMQAnEJBSR62NsYnTvFAcaWrptyns+MQWO0lM9QEgZl8I3
+LBx869bbF54LgA2/W39NosQtuDg59oBBppBRKbXYkey4a/Gi4KtXX361asolrcm0pymgTaASg0zi
+qJSCVNuHrYsW3BXIv/v2rsSoq9o7Ojzfo764DwY0UYlSESldaSFzZMLEK88FgNt0RHYXtK855AN6
+O2EiJshUUZ/WdbQsu21B8HDVs6sunlqZydoaYHCwWgGrYxKmMIQlmzbXzr/rtkB+zarnR1w1I5nN
+aK17qR+AFlKWKmUI5DOpqdWXnUs5/cYf37plWHmuPRsVlBAyLkRMiETwaRnRhBJCWg4fiEY+Mzqk
+xJadb6oRsYIfELl3BdgSiEthkOKY4kOFiVd/NpB/+ZWNsaFjC45H3JO5CAC0oJhSCSVYyu7a3YuW
+LDmXcvr5tWvnjhyxYe9HNemkw5pYh2UtifKoMTEy9PoBQ7tymTFTQ3dMJVPFsnxnPutBoMf8Aemi
+kiPKEFLmcvb1F1/V4xq6ocOzCm5Be6InbYVjhChV0pIyoywc+uPc+d8/awDFov3Mz578jTQTn502
+qKo6UjZUWFESgj3Hy6dz7UdXH9xV3LfjUuDhRx8OHWb1hqoZVal00Q+IgzAjmcRRSSZZJGXTrsZv
+Lb4vkN+86dUBl03uTHXB173aE6CBiKHKDIOUyJOKi+TwipF/Vkn6S83dXD6fiMdHz31g5JSl8Dw7
+08naAxjMYA1mEkJZMRDtXfm9S6P5P+2rATBzyszEV+N1uXze6w0krEFlSl9oWSVWqRPBy9/acHTj
+wRGjKgB8celd+6LT6rN+0bEFM3PAH/akHGrFRiZMUqK2MzXdeX3V7zaenQ888eNHy6+cN/y6+fnm
+uprV34d2wRpaB9qDNfuum0s56Y6r7374vcbk07/8BYD3Dr7rlUpX9265WAMmcUySJS0pTFvqeKsR
+aA9g85vbRNlw2/eJNfcM8kERqcpNaSrpSaOz5s3FS+8+6z3xwf0fDL7sWqHMd566r/rDt/b89ptG
+rAwIte9dCgIVu1svnfXlP+3efuzocVmpUrmAP8wIDWoJigkVMaIkqKslNeuaaT0O05n0S5O5gtZ+
+4LphzSdEQqmEUkopW1o4smvmnLlnDUBKyZ7rO4XBY2/cZhcvHDdZO/lg7xjqxhqMABIJGY1EXnxh
+/egZlZmsxxxqQ4Agikm2lGlJSytqeqtu0dLFwRSvbFg/aNzNqWx3EBvC2hBsSFWmVNSSQiFre5cM
+kdFY4qwBaK0Z7OW7L7vt65d/c0PFpAW+XQi1x0nag5lZl5WVr3tx3YDLhxR9aA6EoMERwTEpo0bM
+koZvom378dnzw03PqhdWlldeW3DtngQDJmgh4kqWGDJiKk2i63jdbfPnnEtbpay0jLUPZjfXzV7R
+K2aZNWt9iu3BTMwAp5LJA+2HsqxtWwtARhUBEhQVsKQZM6JCiDw7Fc7gaDwWTLHtnQ+cSLnWPvdF
+T1ZClSoVM5VpSIdUas/m2xcuOaO2Sk1Nzdf+/t6DtXVmrFQIOnGizS7mGz42YMiEKVVzv+bbuZBI
+YA2ORiIrnvqf6TcOzj/8x1GCtuzrjn2uYsS9V5i+H5ciqiJxZbmCWmpb5k8PdzC1tQft+CXJXIY1
+iyC5EHwSJUqVGiphmSREjk20vD/5pptPD+BXTz/9pXvv/cySf6+aPZm1ZvZHChFSBRx2NcDE7DsF
+v5jtqRiZWQPwPX3dFZFNb81ARx5gKMyZvfX3P9xV/b3rLS1iZtyURkF69Zs/XPFP3w1mfGnd6kET
+piaLOWIdlNDMEEqWKBkzRNRSnqDuZLp67LDTN7aampq+dO+9N/zgD9rOe9mugBuaAw6jf8wJmdNf
++zCNsOMxuvJoKwQO9OrrN1aN3pTd1Vxx02UJIyKlsg2n+522G6aGu/g1a9Za1d9wkp2KwUG1LRBR
+qkzJuGVELCOt/Za6PV9dsuj0rcVv/suDFTO+op2i9v1eZv9F7XuYw6eEo/B5zz6/Ibf211cf+M3B
+eCweVxaTSOUzlw8a09clqGvNkSHCkABmsJBlUsZNFbdMpahIqrDv9dnz7zw9gA0vbbjohju0556x
+9rpPe2gCfDvbbxOlAUDzlVeXIVOQOUTMqCZq+FNDbwm9a8c2Gj4xm8+QDjbNYIKlZJmhYqYRjxok
+KOlC5JrGjZ9wGgAtLc0FjgrDOhvtuZ8kSyt6ombrlZcPRsYJtQ9GuXrSuLilDVOavsmHN+1fsOj2
+YNa1q54bOH6q6xZ0GHvAgkqUETNkPGLEIgYDrSdaZkyacPrutPZ8Y1AFa6+XG6dqDyJBwR8JAgkK
+bkFCGlbJwFTD3uShbQ/dX4Wc16c9GHnvopGRqBElIfLK13X5cVeMD1PYK5t40MXwtQQxwASljDJD
+xkwjZhkRQ7pStBzYtainy/TXnJjZNxPl7Doftz0RjFh5smFftrPN8wBoZoTAwAC5ue5k7Xa3q3HF
+I+Mrh0eRdfqcgRmA7+uoEQFES1vHTVXXBVPadrGuw4t5HjRrQAA+oVzKhFIJU5XEDMOQWQf+/jfn
+3PajM2yvU0/e7K892anWXf+5DMDC2UMuqjC0DptxfUkfGDG19J6F0weWK6SdPvP3YWBLRlzwgS3v
+f3f5P4SbpNc2iYsmecUMoAXAzMowS5WKGTIWNUsiJgRO5L2BZnbIkAtPD4BIePk0CTqZOSyUseeX
+X//Klyp//t+TkHNR9E/SrJdvRQ9FHxkXwKnfai0lGUIlDa9x88E5D4UpbNVzz5SMuznvBV15aCFK
+pCoxVNwy4lEjHjXSvnO0vnberClndELDRHbXcRLqZO3VRzteGl8V/fkvrufGDNqLSNtIO0i7SDt9
+d7eDot87qp/5Ac2w6FiLDRLdnE+0G0OGh+bc9OYOL34BtA6KHwhZZqi4KeMRozRqGqYosjqxd8ui
+xcvOCMCIESNML6M9t58eWgiVPFr74P3j0Zgh9Ivx0OjpsfXdH9c+sIWi7e/ntYmmxmO33jArmK/1
+REuHV+65xWC/rIGYocoMGbeMeMRMRA1H+20OULfzC3PnnxEAInHFhLGpphrofrU+2Pf14MFmn2Yf
+Z8ifv9Fbse7a2RkfOswtkXtffXfx8jCebNywHpfepO2cAFiApIxLaUlpKAFJecdNFp2G1nRVRYSE
+PNNDvge/8a/7n/1BZOAwaL/fTgXs65O17/EBffJ9kvl7BEZF5iyvue7LV9YWjrZtbZw55wth13r1
+mnhlNQUlFAhCFD3d4brHs8X6ZHZ/W/pwR/7wgb0L5s89i0O+xYuXPPnET9579ntXL/22k+8Ga2nG
+QLKvLui1q2ZEBaLiJNrowBl7/pXKTTnjJmy1J4386DNoam6opBFmJOxav/72B9bicu13EBS0hq/T
+vp1yiozgvIQhLbz32p3ffvTsTim37dw9a+aM3//bzPIxkwGQUIVjh4jGnVTnMMMUK37V+LOVRw2j
+X8cELIksk23HkQLJlNfQwhhfMmjSoM63P8onc/84O2Tz3vfe9Ytm/tBOuEX4fr8WSk94JsBI4MTu
+a6+/8ayPWTe99vrjjz/uOkUAplKvbCq1i0f7ypsAgOPPm3bB2PEJ0bcsIOLDx7I/fX7o/Q/eY9s2
+M5uGYkdr2yNQYUhh2Vf+LtymmpGfPPrPEcXoPbv4WL+e2R/49VVnfnb6F9sqTzz5qwvEY0unXXQq
+v7mHLQIYYiDlIOfvru9asXHac8/89FN0Ul9/5IiU8uTg2C9/Ee8+mKFhr3/niXqUSCb4vv50vWpw
+vLlZKdETW3HqIgxQDzyy//4HHnzk50cRJSX693w/HQBmzfz8j588gJFRaP4zRUS7/cp/XbX1tRXr
+HhuDvH+4PqfUJwOA/sp7owMGVtx9O6947Cp0Osh5YcTsq7oZgw0YaHg/NXrW3g8/PDBmzNhP19sq
+ba31+xuuoPKNDz2yb1ttZ7LgwPQRY0R0wXcPteeeefZw9c1bRs+q3bZt2yei/WlWILgOHz7y3Mr1
+//fmzsamI6apiAiA5+mSkrLq6qu/uGzBlCmTP8HXbej8q8fnAZwH8Ld9/T+f4wZfL+hhXAAAAABJ
+RU5ErkJggg==
diff --git a/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.2.1-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.2.1-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..bbe36cca0ce5473e08ca0bfddf61dfc6754120fa
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.2.1-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,110 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-R'
+version = '4.2.1'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/IRkernel/IRkernel'
+description = """
+Native R kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    ('R', version, '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('IRkernel', '1.3.2', '-R-%(version)s', ('gcccoremkl', '11.3.0-2022.1.0')),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+local_kernel_dir = 'ir40'
+local_kernel_name = 'R-%s' % version
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    # create kernel skeleton
+    (
+        'module purge && '
+        'module load Stages/${STAGE} && '
+        'module load GCCcore/.11.3.0 && '
+        'module load JupyterLab/%s && '
+        'module load R/%s && '
+        'module load IRkernel/1.3.2-R-%s && '
+        'R -e \'IRkernel::installspec(name="%s", displayname="%s", prefix="%%(installdir)s")\' && '
+        # force options(bitmapType='cairo') -> https://github.com/IRkernel/IRkernel/issues/388
+        'sed -i "s#IRkernel::main()#options(bitmapType=\'cairo\') ; IRkernel::main()#g" '
+        '       %%(installdir)s/share/jupyter/kernels/%s/kernel.json'
+    ) % (local_jupyterver, version, version,
+         local_kernel_dir, local_kernel_name, local_kernel_dir),
+
+    # write kernel.sh
+    (
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF \n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module load Stages/\${STAGE} \n'
+        'module load GCCcore/.11.3.0 \n'
+        'module load R/%s \n'
+        'module load IRkernel/1.3.2-R-%s \n'
+        '\n'
+        'exec \${EBROOTR}/lib64/R/bin/R "\$@"\n'
+        '\n'
+        'EOF'
+    ) % (local_kernel_dir, version, version),
+    'chmod +x %%(installdir)s/share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+
+    # write kernel.json
+    (
+        'cp %%(installdir)s/share/jupyter/kernels/%s/kernel.json '
+        '   %%(installdir)s/share/jupyter/kernels/%s/kernel.json.orig && '
+        '{ cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
+        '{ \n'
+        '  "argv": [ \n'
+        '    "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
+        '    "--slave", \n'
+        '    "-e", \n'
+        '    "options(bitmapType=\'cairo\') ; IRkernel::main()", \n'
+        '    "--args", \n'
+        '    "{connection_file}" \n'
+        '  ], \n'
+        '  "display_name": "%s", \n'
+        '  "language": "R", \n'
+        '  "name": "%s" \n'
+        '}\n'
+        'EOF'
+    ) % (local_kernel_dir, local_kernel_dir, local_kernel_dir, local_kernel_dir,
+         local_kernel_name, local_kernel_dir),
+]
+
+# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+# full_sanity_check = True
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
+        'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
+    ],
+    'dirs': [
+        'share/jupyter/kernels/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-3.0.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-3.0.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..66ff3a22dd426c66357a2c61d7b21528f2f71b45
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-3.0.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,59 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Ruby'
+version = '3.0.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://github.com/SciRuby/iruby'
+description = """
+Native Ruby kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python',  '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+    ('Ruby', '%(version)s'),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
+modluafooter = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+"""
+
+postinstallcmds = [
+    'echo "#!/bin/bash" > %(builddir)s/env.sh',
+    'echo "export JUPYTER_DATA_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path,
+
+    # install Ruby kernel in $JUPYTHER_PATH
+    'source %(builddir)s/env.sh && iruby register --force ',
+
+    # ensure correct permissions
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+]
+
+sanity_check_paths = {
+    'files': [
+        'share/jupyter/kernels/ruby/kernel.json',
+    ],
+    'dirs': [
+        'share/jupyter/kernels/ruby/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterLab/401html.patch b/Golden_Repo/j/JupyterLab/401html.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c3e71a800541a396377737132022c67a077d7564
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/401html.patch
@@ -0,0 +1,135 @@
+diff -Naur jupyterlab-2.2.9.orig/401.html jupyterlab-2.2.9/401.html
+--- jupyterlab-2.2.9.orig/401.html	1970-01-01 01:00:00.000000000 +0100
++++ jupyterlab-2.2.9/401.html	2020-12-11 23:24:45.301738818 +0100
+@@ -0,0 +1,131 @@
++<!DOCTYPE html>
++<html><head>
++  <meta http-equiv="Refresh" content="0; url=https://jupyter-jsc.fz-juelich.de/hub/logout?stopall=false&alldevices=false" />
++
++  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
++  <meta charset="utf-8">
++
++  <title>jupyter-jsc</title>
++  <meta http-equiv="X-UA-Compatible" content="chrome=1">
++  <meta property="og:image" content="/hub/static/images/mini_website.jpg">
++  <meta property="og:locale" content="en_US">
++  <meta property="og:site_name" content="jupyter-jsc">
++  <meta property="og:title" content="jupyter-jsc">
++  <meta property="og:type" content="website">
++  <meta property="og:url" content="https://jupyter-jsc.fz-juelich.de/">
++
++  <link rel="stylesheet" href="/hub/static/css/style.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_font.min.htm" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_base.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_base_header.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/j4j_base_footer.min.css" type="text/css">
++  <link rel="icon" href="/hub//static/images/favicon.svg" type="jpg/png">
++  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css">  
++  <link rel="stylesheet" href="/hub/static/css/j4j_page_home.min.css" type="text/css">
++  <link rel="stylesheet" href="/hub/static/css/spawn_style.css" type="text/css">
++
++<body>
++
++<div id="container">
++
++  <div id="header-background">
++  <div id="header">
++  <nav class="navbar navbar-default">
++    <div class="container-fluid">
++      <div class="navbar-header">
++        <span id="jupyterhub-logo" class="pull-left"><a href="https://www.fz-juelich.de/jsc" target="_blank"><img src="/hub/static/images/jsc.png" alt="JupyterHub" class="jpy-logo" title="Home"></a></span>
++      </div>
++
++      <div id="thenavbar">
++        <ul class="nav navbar-nav">
++          
++          <li><a href="https://jupyter-jsc.fz-juelich.de/hub/start">Start</a></li>
++          
++          <li id="navbarbtn-links" class="main-menu-btn menu-btn"><a>Links</a>
++            <div id="navbarmenu-links" class="menu-box">
++              <ul>
++                <li id="navbarbtn-links-1" class="menu-btn"><a>jupyter-jsc</a>
++                  <div id="navbarmenu-links-1" class="menu-box menu-sub-box show-sub-header" style="">
++                    <ul>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/nbviewer/github/kreuzert/Jupyter-JSC/blob/master/Extensions.ipynb">Extensions at jupyter-jsc</a></li>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/nbviewer/github/kreuzert/Jupyter-JSC/blob/master/FAQ.ipynb">HDFCloud FAQ</a></li>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/static/files/projects.html">Link Projects to Home</a></li>
++                      <li class=""><a href="https://jupyter-jsc.fz-juelich.de/static/files/kernel.html">Setup your own kernel</a></li>
++                      <li class=""><a target="_blank" href="https://www.unicore.eu/about-unicore/case-studies/jupyter-at-jsc/">jupyter-jsc at unicore.eu</a></li>
++                    </ul>
++                  </div>
++                </li>
++                <li id="navbarbtn-links-2" class="menu-btn"><a>Jupyter</a>
++                  <div id="navbarmenu-links-2" class="menu-box menu-sub-box show-sub-header" style="">
++                    <ul>
++                      <li class=""><a target="_blank" href="https://www-jupyter.org/">Home</a></li>
++                      <li class=""><a target="_blank" href="https://newsletter.jupyter.org/">Newsletter</a></li>
++                      <li class=""><a target="_blank" href="https://www.youtube.com/watch?v=HW29067qVWk">Introduction Video</a></li>
++                      <li class=""><a target="_blank" href="https://blog.jupyter.org/">Blog</a></li>
++                      <li class=""><a target="_blank" href="https://jupyter.org/documentation.html">Documentation</a></li>
++                      <li class=""><a target="_blank" href="https://www.oreilly.com/topics/jupyter">O'Reilly on Jupyter</a></li>
++                      <li class=""><a target="_blank" href="https://twitter.com/projectjupyter">Twitter</a></li>
++                      <li class=""><a target="_blank" href="https://github.com/trending/jupyter-notebook">Jupyter-Notebooks</a></li>
++                    </ul>
++                  </div>
++                </li>
++                <li id="navbarbtn-links-3" class="menu-btn"><a>JSC</a>
++                  <div id="navbarmenu-links-3" class="menu-box menu-sub-box show-sub-header" style="">
++                    <ul>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JUWELS/JUWELS_node.html">JUWELS</a></li>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JURECA/JURECA_node.html">JURECA</a></li>
++                      <li class=""><a target="_blank" href="https://hbp-hpc-platform.fz-juelich.de/?page_id=1073">JURON</a></li>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/News/Newsletter/newsletter_node.html">Newsletter</a></li>
++                      <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/News/Events/events_node.html">Events</a></li>
++                      <li class=""><a target="_blank" href="https://twitter.com/fzj_jsc">Twitter</a></li>
++                    </ul>
++                  </div>
++                </li>
++              </ul>
++            </div>
++          </li>
++          
++        </ul>
++      </div>
++    </div>
++  </nav>
++  </div>
++  </div>
++
++<div id="body">
++<div class="background-wrapper">
++  <div class="content" id="JupyterLabs-div">
++    
++      <!--<center><h2 style="color:red">jupyter-jsc maintenance: 25-02-2020 - 26-02-2020</h2></center>-->
++      <h2>
++      The access token of your browser session to the running JupyterLab has expired.
++      </h2>
++      <p>
++        Unfortunately you have to log out and log in again from the Jupyter-JSC to regain access permission.<br>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/logout?stopall=false&alldevices=false"> Logout now </a>
++      </p>
++    
++  </div>
++</div>
++</div>
++
++<div class="footer">
++  <div class="footer-top-background">
++  </div>
++  <div class="footer-bottom-background">
++    <div class="footer-bottom">
++      <div class="footer-links">
++        <span>© Forschungszentrum Jülich</span>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/imprint">Imprint</a>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/privacy">Privacy Policy</a>
++        <a href="mailto:ds-support@fz-juelich.de?subject=jupyter-jsc Support&amp;body=Please describe your problem here. (english or german)">Support</a>
++        <a href="https://jupyter-jsc.fz-juelich.de/hub/terms">Terms of Service</a>
++      </div>
++      <a href="https://www.helmholtz.de/en/" target="_blank"><img class="helmholtz-logo" src="/hub/static/images/helmholtz.png"></a>
++    </div>
++  </div>
++</div>
++
++</div> <!-- container -->
++
++</body></html>
diff --git a/Golden_Repo/j/JupyterLab/JupyterLab-2023.3.6-GCCcore-11.3.0.eb b/Golden_Repo/j/JupyterLab/JupyterLab-2023.3.6-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..92502da744c167c6701a31d312c152ae20ae3df0
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/JupyterLab-2023.3.6-GCCcore-11.3.0.eb
@@ -0,0 +1,888 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterLab'
+version = '2023.3.6'
+
+local_jlab_version = '3.6.5'
+
+homepage = 'http://www.jupyter.org'
+description = """
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('IPython', '8.14.0'),
+    ('ZeroMQ', '4.3.4'),
+    ('PyYAML', '6.0'),
+    ('nodejs', '16.15.1'),  # '-corepack'),
+    ('git', '2.36.0', '-nodocs'),  # for jupyterlab_git (req. >=2.0)
+    ('SciPy-bundle', '2022.05', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('bokeh', '2.4.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('HDF5', '1.12.2', '-serial'),
+    ('h5py', '3.7.0', '-serial'),
+    ('dask', '2022.12.0', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    # for bokeh exports
+    # https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_linux64.zip
+    # ('ChromeDriver', '114.0.5735.16')
+
+    # Extras
+    ('Pandoc', '2.19.2', '', SYSTEM),  # For doc-generation
+    ('texlive', '20220321'),
+    ('netcdf4-python', '1.6.1', '-serial'),
+    ('FFmpeg', '4.4.2'),  # for pydub
+    ('LLVM', '14.0.3'),  # llvmlite
+    ('Seaborn', '0.12.1', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('sympy', '1.11.1', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('Seaborn', '0.12.1', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('xarray', '2022.9.0', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('scikit-build', '0.15.0'),
+    ('scikit-learn', '1.1.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('scikit-image', '0.19.3', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('numba', '0.56.4', '-CUDA-11.7', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('Shapely', '1.8.5.post1'),
+]
+
+osdependencies = [('openssl')]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'filter': ('python -c "import %(ext_name)s"', ''),
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check':  True,
+    'use_pip_for_deps': False,
+}
+
+# Dependencies can partly tested, created and updated using findPythonDeps.sh:
+# https://gist.github.com/Flamefire/49426e502cd8983757bd01a08a10ae0d
+exts_list = [
+    # general
+    ('hatchling', '1.13.0', {
+        'checksums': ['f8d275a2cc720735286b7c2e2bc35da05761e6d3695c2fa416550395f10c53c7'],
+    }),
+    ('hatch_nodejs_version', '0.3.1', {
+        'checksums': ['0e55fd713d92c5c1ccfee778efecaa780fd8bcd276d4ca7aff9f6791f6f76d9c'],
+    }),
+    ('hatch_jupyter_builder', '0.8.3', {
+        'checksums': ['0dbd14a8aef6636764f88a8fd1fcc9a91921e5c50356e6aab251782f264ae960'],
+    }),
+    ('pyzmq', '24.0.1', {  # overwrite
+        'modulename': 'zmq',
+        'checksums': ['216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77'],
+    }),
+    ('websocket-client', '1.5.1', {
+        'modulename': 'websocket',
+        'checksums': ['3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40'],
+    }),
+    ('traitlets', '5.9.0', {  # overwrite
+        'checksums': ['f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9'],
+    }),
+    ('sniffio', '1.3.0', {
+        'checksums': ['e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101'],
+    }),
+    ('anyio', '3.6.2', {
+        'checksums': ['25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421'],
+    }),
+    # nbclassic #####################################
+    ('overrides', '7.3.1', {
+        'checksums': ['8b97c6c1e1681b78cbc9424b138d880f0803c2254c5ebaabdde57bb6c62093f2'],
+    }),
+    ('jupyter_server', '2.7.0', {
+        'checksums': ['36da0a266d31a41ac335a366c88933c17dfa5bb817a48f5c02c16d303bc9477f'],
+    }),
+    ('jupyter_server_terminals', '0.4.4', {
+        'checksums': ['57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d'],
+    }),
+    ('notebook_shim', '0.2.3', {
+        'checksums': ['f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9'],
+    }),
+    ('jupyter_core', '5.3.1', {  # overwrite
+        'checksums': ['5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba'],
+    }),
+    ('jupyter_client', '8.2.0', {  # overwrite
+        'checksums': ['9fe233834edd0e6c0aa5f05ca2ab4bdea1842bfd2d8a932878212fc5301ddaf0'],
+    }),
+    ('deprecation', '2.1.0', {
+        'checksums': ['72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff'],
+    }),
+    ('rfc3339_validator', '0.1.4', {
+        'checksums': ['138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b'],
+    }),
+    ('rfc3986_validator', '0.1.1', {
+        'checksums': ['3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055'],
+    }),
+    ('jupyter_events', '0.6.3', {
+        'checksums': ['9a6e9995f75d1b7146b436ea24d696ce3a35bfa8bfe45e0c33c334c79464d0b3'],
+    }),
+    ('python-json-logger', '2.0.7', {
+        'modulename': 'pythonjsonlogger',
+        'checksums': ['23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c'],
+    }),
+    ('nbclassic', '1.0.0', {
+        'checksums': ['0ae11eb2319455d805596bf320336cda9554b41d99ab9a3c31bf8180bffa30e3'],
+    }),
+    # jupyterlab-server #############################
+    ('requests', '2.30.0', {
+        'checksums': ['239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4'],
+    }),
+    ('jsonschema', '4.17.3', {
+        'checksums': ['0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d'],
+    }),
+    ('json5', '0.9.11', {
+        'checksums': ['4f1e196acc55b83985a51318489f345963c7ba84aa37607e49073066c562e99b'],
+    }),
+    ('jupyterlab_server', '2.23.0', {
+        'checksums': ['83c01aa4ad9451cd61b383e634d939ff713850f4640c0056b2cdb2b6211a74c7'],
+    }),
+    # jupyter_server_ydoc ###########################
+    ('y_py', '0.5.9', {
+        'sources': ['%(name)s-%(version)s-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'],
+        'checksums': ['bc9052a814e8b7ec756371a191f38de68b956437e0bb429c2dd503e658f298f9'],
+    }),
+    ('jupyter_ydoc', '0.2.4', {
+        'checksums': ['a3f670a69135e90493ffb91d6788efe2632bf42c6cc42a25f25c2e6eddd55a0e'],
+    }),
+    ('jupyter_server_fileid', '0.9.0', {
+        'checksums': ['171538b7c7d08d11dbc57d4e6da196e0c258e4c2cd29249ef1e032bb423677f8'],
+    }),
+    ('jupyter_server_ydoc', '0.8.0', {
+        'checksums': ['a6fe125091792d16c962cc3720c950c2b87fcc8c3ecf0c54c84e9a20b814526c'],
+    }),
+    ('aiosqlite', '0.19.0', {
+        'checksums': ['95ee77b91c8d2808bd08a59fbebf66270e9090c3d92ffbf260dc0db0b979577d'],
+    }),
+    ('aiofiles', '22.1.0', {
+        'checksums': ['9107f1ca0b2a5553987a94a3c9959fe5b491fdf731389aa5b7b1bd0733e32de6'],
+    }),
+    ('ypy_websocket', '0.8.2', {
+        'checksums': ['491b2cc4271df4dde9be83017c15f4532b597dc43148472eb20c5aeb838a5b46'],
+    }),
+    # jupyterlab ####################################
+    ('jupyterlab', local_jlab_version, {
+        'patches': [
+            ('401html.patch', 1),
+            # 'jupyterlab-rendermime_p14618.patch'
+        ],
+        'checksums': [
+            'ac0cb19756be1d1e14b2be1f23c603de46e0f0113960fce9888889ca55ae8923',
+            '094c89560472168c5ca24b3907d4a6a5b090352ef0c7657995d735246cc338f5',  # 401html.patch
+        ],
+    }),
+    # jupyter-server-proxy ##########################
+    ('aiosignal', '1.3.1', {
+        'checksums': ['54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc'],
+    }),
+    ('async-timeout', '4.0.2', {
+        'checksums': ['2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15'],
+    }),
+    ('frozenlist', '1.3.3', {
+        'checksums': ['58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a'],
+    }),
+    ('multidict', '6.0.4', {
+        'checksums': ['3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49'],
+    }),
+    ('yarl', '1.9.2', {
+        'checksums': ['04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571'],
+    }),
+    ('aiohttp', '3.8.4', {
+        'checksums': ['bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c'],
+    }),
+    ('simpervisor', '0.4', {
+        'checksums': ['cec79e13cdbd6edb04a5c98c1ff8d4bd9713e706c069226909a1ef0e89d393c5'],
+    }),
+    ('jupyter_server_proxy', '4.0.0', {
+        'patches': [
+            'jupyter-server-proxy_timeout.patch',  # timeout after 15s instead of 5s
+        ],
+        'checksums': [
+            'f5dc12dd204baca71b013df3522c14403692a2d37cb7adcd77851dbab71533b5',
+            '632f95c305dd5363978399a383a077a738069cc4fc13832276a6c9c6e36714e8',
+        ],
+        #  Regular HTTP requests + Unix sockets works already with Tornado 6.2
+        #  BUT (!)) websocket connection + Unix sockets needs Tornado 6.3,
+        #  https://github.com/jupyterhub/jupyter-server-proxy/pull/337
+    }),
+    # jupyterlab_lsp ################################
+    ('python-lsp-jsonrpc', '1.0.0', {
+        'modulename': 'pylsp_jsonrpc',
+        'checksums': ['7bec170733db628d3506ea3a5288ff76aa33c70215ed223abdb0d95e957660bd'],
+    }),
+    ('docstring-to-markdown', '0.12', {
+        'checksums': ['40004224b412bd6f64c0f3b85bb357a41341afd66c4b4896709efa56827fb2bb'],
+    }),
+    ('python-lsp-server', '1.7.3', {
+        'modulename': 'pylsp',
+        'checksums': ['a31b0525be6ec831c7d2b476b744e5aa5074633e1d1b77ee97f332cde15983ea'],
+    }),
+    ('jupyter-lsp', '2.2.0', {
+        'checksums': ['8ebbcb533adb41e5d635eb8fe82956b0aafbf0fd443b6c4bfa906edeeb8635a1'],
+    }),
+    ('jupyterlab-lsp', '4.2.0', {
+        'checksums': ['3aab01c8cac040a8d3a9ebfa4085223b054b7fbd6219d3c7b560f6a9766ca2f3'],
+    }),
+    # jupyter-matplotlib ############################
+    ('ipympl', '0.9.3', {
+        'checksums': ['49bab75c05673a6881d1aaec5d8ac81d4624f73d292d154c5fb7096f10236a2b'],
+    }),
+    # jupyterlab_iframe #############################
+    ('tornado_proxy_handlers', '0.0.5', {
+        'checksums': ['8250177dbc7567fa2d3cfd22d0a7de71e34cceb8e56c7b7d7c2e5f92ffb5c60a'],
+    }),
+    ('jupyterlab_iframe', '0.4.4', {
+        'patches': [('jupyterlab-iframe.config', '.')],
+        'checksums': [
+            'f381ffef2a866eea0a9e3e56f428064b117a9155f9f7605c4bf0eb74d03dc378',
+            '5bdd4bd545aa66c8cb534975d77a0c4a23c9993f507e479b23a06ae9618f695f',
+        ],
+    }),
+    # ipyleaflet ####################################
+    ('branca', '0.6.0', {
+        'checksums': ['55949855214504c7583b71b9a03a84dce2e96a84027613bb53b42d04844ce24e'],
+    }),
+    ('traittypes', '0.2.1', {
+        'checksums': ['be6fa26294733e7489822ded4ae25da5b4824a8a7a0e0c2dccfde596e3489bd6'],
+    }),
+    ('xyzservices', '2023.2.0', {
+        'checksums': ['3342bba410d7941290eed0e58a2e5aadb0f7b97863ec4283b283c406ee723a28'],
+    }),
+    ('ipyleaflet', '0.17.3', {
+        'checksums': ['adca9ebdf009ad55d3e94976191474bfb85d13aa79854698e9b0922338a6fc66'],
+    }),
+    # ipyvue ########################################
+    ('ipyvue', '1.9.2', {
+        'checksums': ['da3f2a6115d1f27995e7efa0e0e267eb976ade5ca982aa3da3106c70d6f878db'],
+    }),
+    ('ipyvuetify', '1.8.10', {
+        'checksums': ['9ba44279479f33f5cb83af406aa813050ee96201955c2cba087fd23a843d5b4e'],
+    }),
+    # ipywebrtc #####################################
+    ('ipywebrtc', '0.6.0', {
+        'checksums': ['f8ac3cc02b3633b59f388aef67961cff57f90028fd303bb3886c63c3d631da13'],
+    }),
+    # bqplot ########################################
+    ('bqplot', '0.12.39', {
+        'checksums': ['14d8de6f9a4d1945bbea6c1320ea4d1c93256f72683774f6e0020dcc579f3dd2'],
+    }),
+    # ipyvolume #####################################
+    ('ipydatawidgets', '4.3.5', {
+        'checksums': ['394f2489576587cfd755377a09a067f46cad22081965092021fd1abcbe7852a8'],
+    }),
+    ('pythreejs', '2.4.2', {
+        'checksums': ['a568bfdc4c3797c4c2339158928edc7dcf6fa4a267b08e3cec5121e2078b5bd6'],
+    }),
+    ('ipyvolume', '0.6.3', {
+        'checksums': ['823226f90a59ce08b1da2699a9ec505f34f65f01ce43accd80e7d3554082d035'],
+    }),
+    # jupyterlab-system-monitor #####################
+    ('jupyter_resource_usage', '0.7.2', {
+        'patches': [('jupyter-resource-usage.config', '.')],
+        'checksums': [
+            'ab596a1f2f6ced9e5d063f56b772d88527d2539d61831fbfb80a37f940d3e9df',
+            '7634bf6c4d941e20dca4d910441315047147aedec073f620e15048ec6b31b053',
+        ],
+    }),
+    ('jupyterlab-topbar', '0.6.1', {
+        'checksums': ['f1f9144fd09c29b8921f378662f26c65a460967d9c48eeea8018cea49626fb5f'],
+        'modulename': False,
+    }),
+    ('jupyterlab-controlbtn', '0.5.1', {
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/jhgoebbert/jupyterlab-controlbtn/archive/'],
+        'checksums': ['ac4c2165d79dd84f2fea0086cc6c3a851cfb239918bb628163b812abb54a4b46'],
+        'modulename': False,
+    }),
+    ('jupyterlab-system-monitor', '0.8.0', {
+        'checksums': ['f8d03d3ee26c84300c85e570f1a9d5f69bdcfa85e9a298f5716b67e36d0d94df'],
+        'modulename': False,
+    }),
+    # jupyterlab-gitlab #############################
+    # requirement jupyter-server<2,>=1.6
+    ('jupyterlab_gitlab', '3.0.0', {
+        'patches': [
+            'jupyterlab-gitlab_jserv2.patch',
+            ('jupyterlab-gitlab.config', '.'),
+        ],
+        'checksums': [
+            '5b0367b82e3170d8274465285a36be9c331dac5674d9ba7e8e2b5dd4972d64f7',
+            'fe6196f8128169e994519a37bec14171711116fe98c4729a0969750611d2b499',
+            'e3e0b6b294b726e9aecaa4d2b210aa834b7327cba99f97663c2f9297b14eb2a3',
+        ],
+    }),
+    # jupyterlab_git ################################
+    ('smmap', '5.0.0', {
+        'checksums': ['c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936'],
+    }),
+    ('gitdb', '4.0.10', {
+        'checksums': ['6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a'],
+    }),
+    ('GitPython', '3.1.31', {
+        'modulename': 'git',
+        'checksums': ['8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573'],
+    }),
+    ('jupyterlab_git', '0.41.0', {
+        'checksums': ['51767daa002f08a7cf0b372114eb706eff2f34f12d70b5347700464e6887483e'],
+    }),
+    ('jupyter_server_mathjax', '0.2.6', {
+        'checksums': ['bb1e6b6dc0686c1fe386a22b5886163db548893a99c2810c36399e9c4ca23943'],
+    }),
+    # nbdime ########################################
+    ('nbdime', '3.2.1', {
+        'checksums': ['31409a30f848ffc6b32540697e82d5a0a1b84dcc32716ca74e78bcc4b457c453'],
+    }),
+    # jupyterlab-latex ##############################
+    ('jupyterlab_latex', '3.2.0', {
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/jupyterlab/jupyterlab-latex/archive/'],
+        'checksums': ['b396cb1a86ccec019a72f2aad10c47a3680294ff946da3cf8980ed955b7fd5ac'],
+    }),
+    # jupyterlab_plugin_playground ##################
+    ('jupyterlab_plugin_playground', '0.4.0', {  # 0.4.0 on PyPi installs 0.3.0
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/jupyterlab/jupyterlab-plugin-playground/archive/'],
+        'checksums': ['d64f51315692402def435008d2ca8c3168c7e39e23933aeffc46405583b3b81b'],
+    }),
+    # sidecar #######################################
+    ('sidecar', '0.5.2', {
+        'checksums': ['fd4558417ce786fb59b81e44f7d6868e4a5beccbdb2ae29506f2b3d1c4f85c80'],
+    }),
+    # jupyterlab-s3-browser #########################
+    ('jmespath', '1.0.1', {
+        'checksums': ['90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe'],
+    }),
+    ('botocore', '1.29.76', {
+        'checksums': ['c2f67b6b3f8acf2968eafca06526f07b9fb0d27bac4c68a635d51abb675134a7'],
+    }),
+    ('aioitertools', '0.11.0', {
+        'checksums': ['42c68b8dd3a69c2bf7f2233bf7df4bb58b557bca5252ac02ed5187bbc67d6831'],
+    }),
+    ('s3transfer', '0.6.1', {
+        'checksums': ['640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9'],
+    }),
+    ('fsspec', '2023.5.0', {
+        'checksums': ['b3b56e00fb93ea321bc9e5d9cf6f8522a0198b20eb24e02774d329e9c6fb84ce'],
+    }),
+    ('wrapt', '1.15.0', {
+        'checksums': ['d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a'],
+    }),
+    ('aiobotocore', '2.5.0', {
+        'checksums': ['6a5b397cddd4f81026aa91a14c7dd2650727425740a5af8ba75127ff663faf67'],
+    }),
+    ('singleton-decorator', '1.0.0', {
+        'checksums': ['1a90ad8a8a738be591c9c167fdd677c5d4a43d1bc6b1c128227be1c5e03bee07'],
+    }),
+    ('s3fs', '2023.5.0', {
+        'checksums': ['106b5d9a1000e6af413f918156ba4b96789ac832b7e08c99d186eb08164e6981'],
+    }),
+    ('boto3', '1.26.76', {
+        'checksums': ['30c7d967ed1c6b5a05643e42cae9d4d36c3f1cb6782637ddc7007a104cfd9027'],
+    }),
+    ('jupyterlab_s3_browser', 'c8e319b717251cc3265cfaab2fdb5221c3072238', {
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/IBM/jupyterlab-s3-browser/archive/'],
+        'patches': ['jupyterlab-s3-browser_pr86_s3v2.patch'],
+        'checksums': [
+            'e614d3ba4d28af503f6a01f3ac37c626bcf6335c22174643ac1527b681e5b770',
+            '7f35ed49cb705f7f85962e09996516c54be2386d98d28cf0320810b589fba1bf',
+        ],
+    }),
+    # jupyterlab-favorites ##########################
+    ('jsonmerge', '1.9.0', {
+        'checksums': ['a2d1f80021c5c1d70a49e31f862b5f068f9db066080d8561e80654de74a3584d'],
+    }),
+    ('jupyterlab-favorites', '3.1.1', {
+        'patches': [('update_favorites_json', '.')],
+        'checksums': [
+            'ab1bb4e3686d7acf5bef7a34b07869913d48dd609783e671d0edfda13c2b3fb0',
+            '496a9ef8bb7f399907a8923e1386d541528e77e237ea7e3abe5b28d432a9bd11',
+        ],
+    }),
+    # jupyterlab-recents ############################
+    ('jupyterlab_recents', '3.2.0', {
+        'checksums': ['d295fe2506e24fe7a38d8651c265033528df94a9d535b84f88e28e295017dc01'],
+    }),
+    # jupyterlab-spellchecker #######################
+    ('jupyterlab-spellchecker', '0.7.3', {
+        'checksums': ['5b862228479b33b95b9d4eb47482b4a11c6732efb2c8c8123c7f88efc3695e76'],
+    }),
+    ('tenacity', '8.2.2', {
+        'checksums': ['43af037822bd0029025877f3b2d97cc4d7bb0c2991000a3d59d71517c5c969e0'],
+    }),
+    # plotly ########################################
+    ('plotly', '5.15.0', {
+        'checksums': ['822eabe53997d5ebf23c77e1d1fcbf3bb6aa745eb05d532afd4b6f9a2e2ab02f'],
+    }),
+    # jupyter-bokeh #################################
+    ('jupyter_bokeh', '3.0.4', {
+        'checksums': ['ba3b032f52a039d9e5ed8f6c50f3f9a00dcb97005871c24673a3b3a05465aef5'],
+    }),
+    # pyviz #########################################
+    ('param', '1.13.0', {
+        'checksums': ['59d55048d42a85e148a69837df42bd11c3391d47fad15ba57d118e145f001ef2'],
+    }),
+    ('pyct', '0.5.0', {
+        'checksums': ['dd9f4ac5cbd8e37c352c04036062d3c5f67efec76d404761ef16b0cbf26aa6a0'],
+    }),
+    ('pyviz_comms', '2.2.1', {
+        'checksums': ['a26145b8ce43d2d934b3c6826d77b913ce105c528eb2e494c890b3e3525ddf33'],
+    }),
+    # panel #########################################
+    ('tqdm', '4.65.0', {
+        'checksums': ['1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5'],
+    }),
+    ('Markdown', '3.4.3', {
+        'checksums': ['8bf101198e004dc93e84a12a7395e31aac6a9c9942848ae1d99b9d72cf9b3520'],
+        'modulename': 'markdown',
+    }),
+    ('panel', '0.14.4', {
+        'checksums': ['b853d2f53d7738ec6372525360c5bf9427a71ed990685ccac703bc9b442e9951'],
+    }),
+    # holoviews #####################################
+    ('colorcet', '3.0.1', {
+        'checksums': ['51455a20353d12fac91f953772d8409f2474e6a0db1af3fa4f7005f405a2480b'],
+    }),
+    ('holoviews', '1.16.0', {
+        'checksums': ['13416a251858ead03049570d9e7b39cdf1918d39e64530a18e552b6771115a1a'],
+    }),
+    # jupyterlab_code_formatter #####################
+    ('isort', '5.12.0', {
+        'checksums': ['8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504'],
+    }),
+    ('mypy_extensions', '1.0.0', {
+        'checksums': ['75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782'],
+    }),
+    ('black', '22.12.0', {
+        'checksums': ['229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f'],
+    }),
+    ('jupyterlab_code_formatter', '1.6.1', {
+        'checksums': ['ddf084383292ceceddcaae043f4c62b93d27a85850578a280f8fded9a1b93a32'],
+    }),
+    # voila #########################################
+    ('websockets', '11.0.3', {
+        'checksums': ['88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016'],
+    }),
+    #  voila 0.4.0 has requirement jupyter-client<=7.4.1,>=6.1.3 and jupyter-server<2
+    #  voila >= 0.5.0a5 is not compatible with Jlab 3.6.5 (check 'jupyter labextension list')
+    ('voila', '0.5.0a4', {
+        'checksums': ['cd381d13d0513ff663c6a87850be9e575a3f796e561549cba4a5864a9aa0d72f'],
+    }),
+    ('voila-material', '0.4.0', {
+        'checksums': ['0827a27f0f23ca87bd8f565c4c227c754516d2a120ffce0f7ab1ee12fdec959f'],
+        'modulename': False,
+    }),
+    #  voila-gridstack 0.3.1 has requirement voila<0.5.0,>=0.2
+    # ('voila_gridstack', '0.3.1', {
+    #     'checksums': [''],
+    #     'modulename': False,
+    # }),
+    #  voila-vuetify 0.6.0 has requirement voila<0.5,>=0.2.0
+    # ('voila-vuetify', '0.6.0', {
+    #    'checksums': [''],
+    #    'modulename': False,
+    # }),
+    # jupyterlab-tour ###############################
+    ('jupyterlab-tour', '3.1.4', {
+        'checksums': ['f1d80ec906f689134d259203caf281ea53b8c2353c4a265c29947b557e009229'],
+    }),
+    # jupyterlab_hdf ################################
+    ('orjson', '3.8.12', {
+        'source_tmpl': 'orjson-3.8.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl',
+        'unpack_sources': False,
+        'checksums': ['83e8c740a718fa6d511a82e463adc7ab17631c6eea81a716b723e127a9c51d57'],
+    }),
+    ('tifffile', '2023.4.12', {
+        'checksums': ['2fa99f9890caab919d932a0acaa9d0f5843dc2ef3594e212963932e20713badd'],
+    }),
+    ('h5grove', '0.0.14', {
+        'checksums': ['ead42d2d98f28ef363c83bd4ba421f25f02c111c615201093707a670b9978704'],
+    }),
+    ('jupyterlab_hdf', '1.3.0', {
+        'checksums': ['d15c80c25be26bf4f95e9cad58dd28839ef3924b6eddaf336166aac121dd4819'],
+    }),
+    # jupyterhub ####################################
+    ('greenlet', '2.0.2', {
+        'checksums': ['e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0'],
+    }),
+    ('SQLAlchemy', '2.0.13', {
+        'modulename': 'sqlalchemy',
+        'checksums': ['8d97b37b4e60073c38bcf94e289e3be09ef9be870de88d163f16e08f2b9ded1a'],
+    }),
+    ('pamela', '1.0.0', {
+        'checksums': ['65c9389bef7d1bb0b168813b6be21964df32016923aac7515bdf05366acbab6c'],
+    }),
+    ('oauthlib', '3.2.2', {
+        'checksums': ['9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918'],
+    }),
+    ('Mako', '1.2.4', {
+        'modulename': 'mako',
+        'checksums': ['d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34'],
+    }),
+    ('alembic', '1.11.0', {
+        'checksums': ['d8bf706124e96e526889ac9c87a0d50debd9ef325ef32ae5391cf0315bdab4e1'],
+    }),
+    ('pyOpenSSL', '22.0.0', {
+        'modulename': 'OpenSSL',
+        'checksums': ['660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf'],
+    }),
+    ('certipy', '0.1.3', {
+        'checksums': ['695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859'],
+    }),
+    ('ruamel.yaml', '0.17.26', {
+        'checksums': ['baa2d0a5aad2034826c439ce61c142c07082b76f4791d54145e131206e998059'],
+    }),
+    ('ruamel.yaml.clib', '0.2.7', {
+        'checksums': ['1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497'],
+        'modulename': False,
+    }),
+    ('jupyter_telemetry', '0.1.0', {
+        'checksums': ['445c613ae3df70d255fe3de202f936bba8b77b4055c43207edf22468ac875314'],
+    }),
+    ('jupyterhub', '3.1.1', {  # 4.0.1 fails with our backendspawner
+        'checksums': ['bfdbc55d7cd29ed2b2c84d2fc7943ad13efdfc4a77740519c5dad1079ff75953'],
+    }),  # copy 401.html -> <jupyter-install-dir>/share/jupyter/lab/static/
+    # jupyter_kernel_gateway ########################
+    # jupyter-kernel-gateway 2.5.2 has requirement jupyter-client<8.0,>=5.2.0, but you have jupyter-client 8.2.0.
+    # https://github.com/jupyter-server/kernel_gateway/issues/377
+    # ('jupyter_kernel_gateway', '2.5.2', {
+    #    'checksums': [''],
+    # }),
+    # ipyparallel ###################################
+    ('ipyparallel', '8.6.1', {
+        'checksums': ['a39aa5ef9560170bf0e9afedca9ff045e1b9c1832c49303377edcc91cea9fb77'],
+    }),
+    # papermill #####################################
+    ('textwrap3', '0.9.2', {
+        'source_tmpl': 'textwrap3-0.9.2.zip',
+        'checksums': ['5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414'],
+    }),
+    ('ansiwrap', '0.8.4', {
+        'source_tmpl': 'ansiwrap-%(version)s.zip',
+        'checksums': ['ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7'],
+    }),
+    ('papermill', '2.4.0', {
+        'checksums': ['6f8f8a9b06b39677f207c09100c8d386bcf592f0cbbdda9f0f50e81445697627'],
+    }),
+    # dask ##########################################
+    ('dask_labextension', '6.1.0', {
+        'checksums': ['397cf6f2106650954c3f3bf84fe269a4fb72fb6bf56e6089c75cc3bbf9ff12ae'],
+        'preinstallopts': (
+            # https://github.com/jupyterlab/jupyterlab/issues/14335#issuecomment-1611586421
+            'jlpm install && '
+            'jlpm upgrade --caret --scope jupyterlab && '
+            # Minimize dependency versions
+            'jlpm add -D yarn-deduplicate@^5.0.0 && '
+            'jlpm yarn-deduplicate -s fewer && '
+            'jlpm install && '
+        )
+    }),
+    # nbdev #########################################
+    ('watchdog', '3.0.0', {
+        'checksums': ['4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9'],
+    }),
+    ('execnb', '0.1.5', {
+        'checksums': ['9ee029e0e3007c0deedc32723918c5c3bcbb64bb0b08a11fc521485ea361fa4d'],
+    }),
+    ('fastcore', '1.5.29', {
+        'checksums': ['f1a2eb04eb7933f3f9eb4064852817df44dc96e20fab5658c14c035815269a3f'],
+    }),
+    ('astunparse', '1.6.3', {
+        'checksums': ['5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872'],
+    }),
+    ('ghapi', '1.0.3', {
+        'checksums': ['1804443a2c12261b247bea08a930445fcb5b8fac1c65f8e9e6504b5842ce8f00'],
+    }),
+    ('nbdev', '2.3.12', {
+        'checksums': ['01058da82abd20458c2a4906e5bc34a64bd6b6f20c2a405b028b5f4d14533024'],
+    }),
+    # pyunicore #####################################
+    ('PyJWT', '2.7.0', {
+        'modulename': 'jwt',
+        'checksums': ['bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074'],
+    }),
+    ('pyunicore', '0.15.0', {
+        'checksums': ['dc57ef05b1681b20471e8a4a72067671f74b4d41601099fe80324293439175d5'],
+    }),
+    # dash ##########################################
+    # dash-extension `jupyterlab-dash` is part of plotly and does not need to be installed explicitly
+    ('blinker', '1.6.2', {
+        'checksums': ['4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213'],
+    }),
+    ('Werkzeug', '2.2.3', {
+        'checksums': ['2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe'],
+    }),
+    ('itsdangerous', '2.1.2', {
+        'checksums': ['5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a'],
+    }),
+    ('Flask', '2.2.5', {
+        'modulename': 'flask',
+        'checksums': ['edee9b0a7ff26621bd5a8c10ff484ae28737a2410d99b0bb9a6850c7fb977aa0'],
+    }),
+    ('cachelib', '0.9.0', {
+        'checksums': ['38222cc7c1b79a23606de5c2607f4925779e37cdcea1c2ad21b8bae94b5425a5'],
+    }),
+    ('Flask-Caching', '2.0.2', {
+        'modulename': 'flask_caching',
+        'checksums': ['24b60c552d59a9605cc1b6a42c56cdb39a82a28dab4532bbedb9222ae54ecb4e'],
+    }),
+    ('dash', '2.11.1', {
+        'checksums': ['1acc4c634311cb306a1086fff315c1f2aaa3898bac362d93bc8db6b1a6474e5c'],
+    }),
+    ('dash_core_components', '2.0.0', {
+        'checksums': ['c6733874af975e552f95a1398a16c2ee7df14ce43fa60bb3718a3c6e0b63ffee'],
+    }),
+    ('dash_html_components', '2.0.0', {
+        'checksums': ['8703a601080f02619a6390998e0b3da4a5daabe97a1fd7a9cebc09d015f26e50'],
+    }),
+    ('dash_table', '5.0.0', {
+        'checksums': ['18624d693d4c8ef2ddec99a6f167593437a7ea0bf153aa20f318c170c5bc7308'],
+    }),
+    ('dash_renderer', '1.9.1', {
+        'checksums': ['73a69e3d145880e68e42723ad10182251d92b44f3efe92b8763145cfd2158e7e'],
+    }),
+    ('dash-bootstrap-components', '1.4.1', {
+        'checksums': ['05c2e2767a8ab104fc950d15482d09dde59d21f1e9bd5809d30672e61b7f420c'],
+    }),
+    ('dash_daq', '0.5.0', {
+        'checksums': ['a1d85b6799f7b885652fbc44aebdb58c41254616a8d350b943beeb42ade4256a'],
+    }),
+    ('dash_player', '1.1.0', {
+        'checksums': ['d1b38690c922de44e7b56647abc9cafa2c3e75743f52a9b1ff9613095c640524'],
+    }),
+    ('retrying', '1.3.4', {
+        'checksums': ['345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e'],
+    }),
+    ('ansi2html', '1.8.0', {
+        'checksums': ['38b82a298482a1fa2613f0f9c9beb3db72a8f832eeac58eb2e47bf32cd37f6d5'],
+    }),
+]
+
+local_jupyter_config_path = 'etc/jupyter'
+local_jupyter_path = 'share/jupyter'
+local_jupyterlab_dir = 'share/jupyter/lab'
+
+modextrapaths = {
+    #  search path to find installable data files, such as kernelspecs and notebook extensions
+    'JUPYTER_PATH': [local_jupyter_path],
+    #  do NOT set JUPYTER_CONFIG_DIR: if not set, if will be ${HOME}/.jupyter, which is just right
+    'JUPYTER_CONFIG_PATH': [local_jupyter_config_path],   # config dir at install time.
+    #  ATTENTION: not config dir at runtime, because this is fixed to {sys.prefix}/etc/jupyter/
+}
+
+modextravars = {
+    'JUPYTER': '%(installdir)s/bin/jupyter',
+    'JUPYTERLAB_DIR': '%%(installdir)s/%s' % local_jupyterlab_dir,
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH and JUPYTER_DATA_DIR
+# and the JUPYTER_CONFIG_PATH starts with $HOME/.jupyter
+# https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html#envvar-JUPYTER_PATH
+modluafooter = """
+setenv("JUPYTER_DATA_DIR", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+prepend_path("JUPYTER_CONFIG_PATH", pathJoin(os.getenv("HOME"), ".jupyter"))
+"""
+
+postinstallcmds = [
+    #  ensure we install in the correct directory !!!
+    'python3 -m venv %(installdir)s --system-site-packages',
+
+    #  create setup-environment-script
+    'echo "#!/bin/bash" > %(builddir)s/env.sh',
+    'echo "source %(installdir)s/bin/activate" >> %(builddir)s/env.sh',
+    (
+        'echo "export PYTHONPATH='
+        '%(installdir)s/lib/python%(pyshortver)s/site-packages:'
+        '${EBROOTPYTHON}/lib/python%(pyshortver)s/site-packages:'
+        '${PYTHONPATH}" >> %(builddir)s/env.sh'
+    ),
+    'echo "export JUPYTER=%(installdir)s/bin/jupyter" >> %(builddir)s/env.sh',
+    'echo "export JUPYTER_PATH=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path,
+    'echo "export JUPYTERLAB_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyterlab_dir,
+    #  Config dir at install time. ATTENTION: not config dir at runtime. This is picked up by JUPYTER_CONFIG_PATH
+    'echo "export JUPYTER_CONFIG_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_config_path,
+    #  jupyter will use $JUPYTER_CONFIG_DIR with "--user"
+    'echo "export JUPYTER_DATA_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path,
+    'echo "export PATH=%(installdir)s/bin:${PATH}" >> %(builddir)s/env.sh',
+
+    #  build JupyterLab app directory for all previous installed extensions in one go
+    'source %(builddir)s/env.sh && jupyter lab build --dev-build=False',  # --minimize=False
+
+    #  store default in ../share/jupyter/lab/schemas/jupyterlab-favorites/favorites.json
+    #  create dynamic defaults for $HOME, $SCRATCH, $PROJECT with the following script
+    (
+        'install -m 0755 '
+        '        %(builddir)s/jupyterlabfavorites/jupyterlab-favorites-3.1.1/update_favorites_json '
+        '        %(installdir)s/bin/ '
+    ),
+
+    #  language server for jupyter-lsp
+    #  https://jupyterlab-lsp.readthedocs.io/en/latest/Language%20Servers.html
+    #  must be installed _after_ 'jupyter lab build' as this clears the prefix
+    (
+        'source %(builddir)s/env.sh && npm install --prefix %(installdir)s/share/jupyter/lab/staging/ '
+        '        bash-language-server@2.1.0 '
+        '        dockerfile-language-server-nodejs@0.9.0 '
+        '        pyright@1.1.309 '
+        '        sql-language-server@1.5.1 '
+        '        typescript-language-server@0.11.2 typescript@5.0.4 '
+        '        vscode-css-languageserver-bin@1.4.0 '
+        '        vscode-html-languageserver-bin@1.4.0 '
+        '        vscode-json-languageserver-bin@1.0.1 '
+        '        yaml-language-server@1.12.0 '
+    ),
+    # more: javascript-typescript-langserver, jedi-language-server, julia-language-server,
+    #       python-language-server, r-languageserver, texlab, unified-language-server
+
+    #  jupyterlab server extensions
+    # 'source %(builddir)s/env.sh && jupyter serverextension enable --py jupyterlab_sql',
+    'source %(builddir)s/env.sh && jupyter serverextension enable --py jupyterlab_iframe',
+    'source %(builddir)s/env.sh && jupyter serverextension enable --py jupyterlab_s3_browser',
+
+    # STILL NEEDED ???
+    #  dask_labextension
+    # (
+    #    'cp %(builddir)s/dask_labextension/dask_labextension-6.1.0/'
+    #    'dask_labextension/labextension/schemas/dask-labextension/plugin.json '
+    #    '   %(installdir)s/share/jupyter/labextensions/dask-labextension/schemas/dask-labextension/plugin.json'
+    # ),
+
+    #  Send2Trash
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        'c.FileContentsManager.delete_to_trash = False\n'
+        'EOF'
+    ),
+    #  iframe-extension
+    (
+        'cat %(builddir)s/jupyterlab_iframe/jupyterlab_iframe-0.4.4/jupyterlab-iframe.config '
+        '    >>  %(installdir)s/etc/jupyter/jupyter_notebook_config.py'
+    ),
+    #  jupyter-resource-usage (displayed by jupyterlab-system-monitor)
+    (
+        'cat %(builddir)s/jupyter_resource_usage/jupyter_resource_usage-0.7.2/jupyter-resource-usage.config '
+        '    >>  %(installdir)s/etc/jupyter/jupyter_notebook_config.py'
+    ),
+    #  jupyterlab-gitlab
+    (
+        'cat %(builddir)s/jupyterlab_gitlab/jupyterlab_gitlab-3.0.0/jupyterlab-gitlab.config '
+        '    >>  %(installdir)s/etc/jupyter/jupyter_notebook_config.py'
+    ),
+
+    # Add the default_setting_override.json file for modifications of the system-wide default settings
+    'mkdir -p %(installdir)s/etc/jupyter/labconfig/ ',
+    (
+        '{ cat > %(installdir)s/etc/jupyter/labconfig/default_setting_overrides.json; } << \'EOF\'\n'
+        '{\n'
+        '    "jupyterlab-gitlab:drive": {\n'
+        '        "baseUrl": "https://gitlab.jsc.fz-juelich.de",\n'
+        '        "defaultRepo": "jupyter4jsc/j4j_notebooks"\n'
+        '    },\n'
+        '    "@jupyter-lsp/jupyterlab-lsp:plugin": {\n'
+        '        "language_servers": {\n'
+        '            "pyright": {\n'
+        '                "serverSettings": {\n'
+        '                    "python.analysis.useLibraryCodeForTypes": true\n'
+        '                },\n'
+        '                "priority": 75\n'
+        '            }\n'
+        '        },\n'
+        '        "loggingConsole": "browser",\n'
+        '        "loggingLevel": "warn",\n'
+        '        "logAllCommunication": false,\n'
+        '        "setTrace": null\n'
+        '    },\n'
+        '    "@jupyterlab/extensionmanager-extension:plugin": {\n'
+        '        "enabled": false\n'
+        '    }\n'
+        '}\n'
+        'EOF'
+    ),
+    # Disable extensions we do not want to show up, but which we want to have installed
+    (
+        '{ cat > %(installdir)s/etc/jupyter/labconfig/page_config.json; } << \'EOF\'\n'
+        '{\n'
+        '    "disabledExtensions": {\n'
+        '        "ipyparallel-labextension": true\n'
+        '    }\n'
+        '}\n'
+        'EOF'
+    ),
+
+    # add webpage, which leads back to https://jupyter-jsc.fz-juelich.de
+    'cp %%(builddir)s/jupyterlab/jupyterlab-%s/401.html %%(installdir)s/share/jupyter/lab/static/' % local_jlab_version,
+
+    #  ###################################################
+    #  IMPORTANT:
+    #  start JupyterLab once (for 60 seconds) to allow some cleanup at first start
+    #  ###################################################
+    (
+        'source %(builddir)s/env.sh && '
+        '{(jupyter lab --no-browser) & } && JLAB_PID=$! && '
+        'sleep 60 && '
+        'jupyter lab list --json 2>&1 | grep $JLAB_PID | '
+        'awk \'{for(i=1;i<=NF;i++)if($i=="\\"port\\":")print $(i+1)}\' | sed \'s/,*$//g\' | '
+        'xargs -i jupyter lab stop {}'
+    ),
+
+    #  Ensure Jupyter does not want to build anything on startup
+    #  The build_config.json file is used to track the local directories that have been installed
+    #  using jupyter labextension install <directory>, as well as core extensions that have been explicitly uninstalled.
+    # 'if [ -e %(installdir)s/share/jupyter/lab/settings/build_config.json ]; then exit 1; fi ',
+    (
+        '{ cat > %(installdir)s/share/jupyter/lab/settings/build_config.json; } << \'EOF\'\n'
+        '{\n'
+        '    "local_extensions": {}\n'
+        '}\n'
+        'EOF'
+    ),
+
+    # Ensure we remove the virtual environment to avoid wrong search path for python packages
+    'rm -f %(installdir)s/pyvenv.cfg',
+    'rm -f %(installdir)s/bin/python',
+    'rm -f %(installdir)s/bin/python3',
+    'rm -f %(installdir)s/bin/activate',
+    'rm -f %(installdir)s/bin/activate*',
+    'rm -f %(installdir)s/bin/easy_install*',
+    'rm -f %(installdir)s/bin/pip*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/_distutils_hack',
+    'rm -f %(installdir)s/lib/python%(pyshortver)s/site-packages/distutils-precedence.pth',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pip-*',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/pkg_resources',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools',
+    'rm -rf %(installdir)s/lib/python%(pyshortver)s/site-packages/setuptools-*',
+
+    #  Compile Python files to byte-code to speedup execution
+    #  ERROR: returns with exit code 1, because some files cannot be compiled for different reasons
+    #  ###################################################
+    #   Disable possible, because sanity check will    #
+    #   force the compile of all python packages anyway#
+    #  ###################################################
+    #  'source %(builddir)s/env.sh && python -m compileall %(installdir)s',
+
+    #  ###################################################
+    #   IMPORTANT: must be done manual after eb-install: #
+    #  ###################################################
+    #  'chmod -R g-w %(installdir)s ',          # software-group must not modify the installation on accident
+    #  'chmod -R ugo-w %(installdir)s/share ', # Noone should add files/configs to the global share after install
+    #  'chmod -R ug-w ...../2023/software/Python/3.10.6-GCCcore-11.3.0/share ',  # Python module, too
+]
+
+#  specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
+#  full_sanity_check = True # would result in sanity-errors about yaml,ipython_genutils,IPython,traitlets
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterLab/jupyter-resource-usage.config b/Golden_Repo/j/JupyterLab/jupyter-resource-usage.config
new file mode 100644
index 0000000000000000000000000000000000000000..27da2299b6ef51b28f15f4a55c145dd232183b5a
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/jupyter-resource-usage.config
@@ -0,0 +1,62 @@
+import os
+###########################
+# set memory limit for ResourceDisplay
+###########################
+# Get the cgroup path for the current process
+subsystem = 'memory'
+with open('/proc/self/cgroup', 'r') as f:
+    for line in f:
+        parts = line.strip().split(':')
+        subsystems = parts[1].strip().split(',')
+        for ssystem in parts[1].strip().split(','):
+            if subsystem == ssystem:
+                cgroup_path = parts[2]
+
+# Check if there is a memory limit in the cgroup
+memory_cgroup_path = f'/sys/fs/cgroup/{subsystem}/{cgroup_path}'
+if not os.path.isdir(memory_cgroup_path):
+    memory_cgroup_path = f'/sys/fs/cgroup/{subsystem}/'
+
+with open(os.path.join(memory_cgroup_path, 'memory.limit_in_bytes'), 'r') as f:
+    memory_limit_in_bytes = int(f.read().strip())
+
+physical_memory = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
+if memory_limit_in_bytes < 0 or memory_limit_in_bytes > physical_memory:
+    memory_limit = physical_memory
+else:
+    memory_limit = memory_limit_in_bytes
+
+c.ResourceUseDisplay.mem_limit = memory_limit
+c.ResourceUseDisplay.mem_warning_threshold = 0.1
+
+###########################
+# set cpu limit for ResourceDisplay
+###########################
+# Get the cgroup path for the current process
+subsystem = 'cpu'
+with open('/proc/self/cgroup', 'r') as f:
+    for line in f:
+        parts = line.strip().split(':')
+        subsystems = parts[1].strip().split(',')
+        for ssystem in parts[1].strip().split(','):
+            if subsystem == ssystem:
+                cgroup_path = parts[2]
+
+# Check if there is a CPU limit in the cgroup
+cpu_cgroup_path = f'/sys/fs/cgroup/{subsystem}/{cgroup_path}'
+if not os.path.isdir(cpu_cgroup_path):
+    cpu_cgroup_path = f'/sys/fs/cgroup/{subsystem}/'
+
+with open(os.path.join(cpu_cgroup_path, 'cpu.cfs_quota_us'), 'r') as f:
+    cpu_cfs_quota_us = int(f.read().strip())
+with open(os.path.join(cpu_cgroup_path, 'cpu.cfs_period_us'), 'r') as f:
+    cpu_cfs_period_us = int(f.read().strip())
+
+if cpu_cfs_quota_us < 0:
+    cpu_limit = os.cpu_count()
+else:
+    cpu_limit = cpu_cfs_quota_us / cpu_cfs_period_us
+
+c.ResourceUseDisplay.track_cpu_percent = True
+c.ResourceUseDisplay.cpu_limit = cpu_limit
+c.ResourceUseDisplay.cpu_warning_threshold = 0.1
diff --git a/Golden_Repo/j/JupyterLab/jupyter-server-proxy_timeout.patch b/Golden_Repo/j/JupyterLab/jupyter-server-proxy_timeout.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1e7652fbbea883e11d7fab34645c446b2afac676
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/jupyter-server-proxy_timeout.patch
@@ -0,0 +1,25 @@
+diff -Naur jupyter_server_proxy-4.0.0.orig/jupyter_server_proxy/config.py jupyter_server_proxy-4.0.0/jupyter_server_proxy/config.py
+--- jupyter_server_proxy-4.0.0.orig/jupyter_server_proxy/config.py      2020-02-02 01:00:00.000000000 +0100
++++ jupyter_server_proxy-4.0.0/jupyter_server_proxy/config.py   2023-05-18 22:24:29.149273196 +0200
+@@ -138,7 +138,7 @@
+         name=name,
+         command=server_process_config.get("command", list()),
+         environment=server_process_config.get("environment", {}),
+-        timeout=server_process_config.get("timeout", 5),
++        timeout=server_process_config.get("timeout", 20),
+         absolute_url=server_process_config.get("absolute_url", False),
+         port=server_process_config.get("port", 0),
+         unix_socket=server_process_config.get("unix_socket", None),
+diff -Naur jupyter_server_proxy-4.0.0.orig/jupyter_server_proxy/handlers.py jupyter_server_proxy-4.0.0/jupyter_server_proxy/handlers.py
+--- jupyter_server_proxy-4.0.0.orig/jupyter_server_proxy/handlers.py    2023-05-18 22:19:39.559270969 +0200
++++ jupyter_server_proxy-4.0.0/jupyter_server_proxy/handlers.py 2023-05-18 22:22:16.157555535 +0200
+@@ -771,7 +771,7 @@
+         """
+         Return timeout (in s) to wait before giving up on process readiness
+         """
+-        return 5
++        return 20
+
+     async def _http_ready_func(self, p):
+         if self.unix_socket is not None:
+
diff --git a/Golden_Repo/j/JupyterLab/jupyterlab-gitlab.config b/Golden_Repo/j/JupyterLab/jupyterlab-gitlab.config
new file mode 100644
index 0000000000000000000000000000000000000000..495187f5639927304dc94a0389b1882d7548f3c1
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/jupyterlab-gitlab.config
@@ -0,0 +1,5 @@
+# no username+password needed, if repo is public or we have the token for a specific URL
+# c.GitLabConfig.access_token = "<API-TOKEN>"
+# c.GitLabConfig.allow_client_side_access_token = False
+c.GitLabConfig.url = "https://gitlab.version.fz-juelich.de"
+c.GitLabConfig.validate_cert = True
diff --git a/Golden_Repo/j/JupyterLab/jupyterlab-gitlab_jserv2.patch b/Golden_Repo/j/JupyterLab/jupyterlab-gitlab_jserv2.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3192aeb36332cc5043f7a9f7e2686d3c5e68b019
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/jupyterlab-gitlab_jserv2.patch
@@ -0,0 +1,12 @@
+diff -Naur jupyterlab_gitlab-3.0.0.orig/setup.py jupyterlab_gitlab-3.0.0/setup.py
+--- jupyterlab_gitlab-3.0.0.orig/setup.py       2021-08-23 10:22:54.000000000 +0200
++++ jupyterlab_gitlab-3.0.0/setup.py    2023-06-01 22:44:47.114685590 +0200
+@@ -55,7 +55,7 @@
+     long_description=long_description,
+     long_description_content_type="text/markdown",
+     packages=setuptools.find_packages(),
+-    install_requires=["jupyter_server>=1.6,<2"],
++    install_requires=["jupyter_server>=1.6,<3"],
+     zip_safe=False,
+     include_package_data=True,
+     python_requires=">=3.6",
diff --git a/Golden_Repo/j/JupyterLab/jupyterlab-iframe.config b/Golden_Repo/j/JupyterLab/jupyterlab-iframe.config
new file mode 100644
index 0000000000000000000000000000000000000000..bc71b0076b3222090f359964aa81026681d39722
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/jupyterlab-iframe.config
@@ -0,0 +1,2 @@
+# c.JupyterLabIFrame.iframes = ['list', 'of', 'sites']
+c.JupyterLabIFrame.welcome = "http://www.fz-juelich.de/jsc"
diff --git a/Golden_Repo/j/JupyterLab/jupyterlab-s3-browser_pr86_s3v2.patch b/Golden_Repo/j/JupyterLab/jupyterlab-s3-browser_pr86_s3v2.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1b050fb962e41bee0de86185f4afd4ba34fa9c58
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/jupyterlab-s3-browser_pr86_s3v2.patch
@@ -0,0 +1,133 @@
+From ceb148c0e7af29e8b18ae6f6f17d080b4aed7196 Mon Sep 17 00:00:00 2001
+From: Tom Ridley <ridley2@jsfl05.jusuf>
+Date: Fri, 22 Jul 2022 16:57:10 +0200
+Subject: [PATCH 1/2] Added signature version variable and try/except behaviour
+ to account for older S3 interfaces
+
+---
+ jupyterlab_s3_browser/__init__.py |  6 ++++++
+ jupyterlab_s3_browser/handlers.py | 28 +++++++++++++++++++++++++++-
+ 2 files changed, 33 insertions(+), 1 deletion(-)
+
+diff --git a/jupyterlab_s3_browser/__init__.py b/jupyterlab_s3_browser/__init__.py
+index 9d56a88..ebb06ec 100755
+--- a/jupyterlab_s3_browser/__init__.py
++++ b/jupyterlab_s3_browser/__init__.py
+@@ -45,6 +45,12 @@ class JupyterLabS3(Configurable):
+         config=True,
+         help="(Optional) Token if you use STS as auth method",
+     )
++    
++    signature_version = Unicode(
++        default_value="",
++        config=True,
++        help="Signature version variable to support older S3 interfaces",
++    )
+ 
+ 
+ def _load_jupyter_server_extension(server_app):
+diff --git a/jupyterlab_s3_browser/handlers.py b/jupyterlab_s3_browser/handlers.py
+index a611be7..b9494c6 100644
+--- a/jupyterlab_s3_browser/handlers.py
++++ b/jupyterlab_s3_browser/handlers.py
+@@ -8,6 +8,8 @@
+ import boto3
+ import tornado
+ from botocore.exceptions import NoCredentialsError
++from botocore.exceptions import ClientError
++from botocore.client import Config
+ from jupyter_server.base.handlers import APIHandler
+ from jupyter_server.utils import url_path_join
+ from pathlib import Path
+@@ -28,6 +30,7 @@ def create_s3fs(config):
+             secret=config.client_secret,
+             token=config.session_token,
+             client_kwargs={"endpoint_url": config.endpoint_url},
++            config_kwargs={'signature_version': config.signature_version},
+         )
+ 
+     else:
+@@ -43,6 +46,7 @@ def create_s3_resource(config):
+             aws_secret_access_key=config.client_secret,
+             aws_session_token=config.session_token,
+             endpoint_url=config.endpoint_url,
++            config=Config(signature_version=config.signature_version)
+         )
+ 
+     else:
+@@ -107,6 +111,7 @@ def test_s3_credentials(endpoint_url, client_id, client_secret, session_token):
+         aws_secret_access_key=client_secret,
+         endpoint_url=endpoint_url,
+         aws_session_token=session_token,
++        config=Config(signature_version=signature_version),
+     )
+     all_buckets = test.buckets.all()
+     logging.debug(
+@@ -146,6 +151,7 @@ def get(self, path=""):
+                         config.client_id,
+                         config.client_secret,
+                         config.session_token,
++                        config.signature_version
+                     )
+                     logging.debug("...successfully authenticated")
+ 
+@@ -174,14 +180,34 @@ def post(self, path=""):
+             client_id = req["client_id"]
+             client_secret = req["client_secret"]
+             session_token = req["session_token"]
++            signature_version = 's3v4'
+ 
+-            test_s3_credentials(endpoint_url, client_id, client_secret, session_token)
++            test_s3_credentials(endpoint_url, client_id, client_secret, session_token, signature_version)
+ 
+             self.config.endpoint_url = endpoint_url
+             self.config.client_id = client_id
+             self.config.client_secret = client_secret
+             self.config.session_token = session_token
++            self.config.signature_version = signature_version
+ 
++            self.finish(json.dumps({"success": True}))
++        except ClientError as pe:
++            req = json.loads(self.request.body)
++            endpoint_url = req["endpoint_url"]
++            client_id = req["client_id"]
++            client_secret = req["client_secret"]
++            session_token = req["session_token"]
++            signature_version = 's3'
++
++            test_s3_credentials(endpoint_url, client_id, client_secret, session_token,signature_version)
++
++            self.config.endpoint_url = endpoint_url
++            self.config.client_id = client_id
++            self.config.client_secret = client_secret
++            self.config.session_token = session_token
++            self.config.signature_version = signature_version
++            
++            logging.info("authenticated with s3 credentials signature_version")
+             self.finish(json.dumps({"success": True}))
+         except Exception as err:
+             logging.info("unable to authenticate using credentials")
+
+From 73770b0eaf865a52fe100d705796407e4bbd8af9 Mon Sep 17 00:00:00 2001
+From: tktridley <77678086+tktridley@users.noreply.github.com>
+Date: Wed, 27 Jul 2022 10:56:26 +0200
+Subject: [PATCH 2/2] Update handlers.py
+
+Fixed function definition
+---
+ jupyterlab_s3_browser/handlers.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/jupyterlab_s3_browser/handlers.py b/jupyterlab_s3_browser/handlers.py
+index b9494c6..301ff7b 100644
+--- a/jupyterlab_s3_browser/handlers.py
++++ b/jupyterlab_s3_browser/handlers.py
+@@ -100,7 +100,7 @@ def has_aws_s3_role_access():
+         return False
+ 
+ 
+-def test_s3_credentials(endpoint_url, client_id, client_secret, session_token):
++def test_s3_credentials(endpoint_url, client_id, client_secret, session_token, signature_version):
+     """
+     Checks if we're able to list buckets with these credentials.
+     If not, it throws an exception.
diff --git a/Golden_Repo/j/JupyterLab/update_favorites_json b/Golden_Repo/j/JupyterLab/update_favorites_json
new file mode 100755
index 0000000000000000000000000000000000000000..23447ca8a472710f3a32af7f46fb42695ca26750
--- /dev/null
+++ b/Golden_Repo/j/JupyterLab/update_favorites_json
@@ -0,0 +1,157 @@
+#!/usr/bin/env python3
+
+import logging
+import argparse
+import os
+
+import json5
+import jsonschema
+
+from jsonmerge import Merger
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--debug', action='store_true')
+
+logging.basicConfig()
+if parser.parse_args().debug:
+    logging.getLogger().setLevel(logging.DEBUG)
+else:
+    logging.getLogger().setLevel(logging.INFO)
+
+merge_schema = {
+    "jupyter.lab.setting-icon": "jupyterlab-favorites:filledStar",
+    "jupyter.lab.setting-icon-label": "Favorites",
+    "title": "Favorites",
+    "description": "Favorites settings.",
+    "type": "object",
+    "additionalProperties": False,
+    "properties": {
+        "favorites": {
+            "title": "Favorites",
+            "description": "The list of favorites.",
+            "items": {"$ref": "#/definitions/favorite"},
+            "type": "array",
+            "default": [],
+            "mergeStrategy": "arrayMergeById",
+            "mergeOptions": {"idRef": "name"},
+        },
+        "showWidget": {
+            "title": "Show Widget",
+            "description": "Toggles the favorites widget above the filebrowser breadcrumbs.",
+            "type": "boolean",
+            "default": True,
+        },
+    },
+    "definitions": {
+        "favorite": {
+            "properties": {
+                "root": {"type": "string"},
+                "path": {"type": "string"},
+                "contentType": {"type": "string"},
+                "iconLabel": {"type": "string"},
+                "name": {"type": "string"},
+                "default": {"type": "boolean"},
+                "hidden": {"type": "boolean"},
+            },
+            "required": ["root", "path"],
+            "type": "object",
+        }
+    },
+}
+logging.debug(f"JSON schema for merging: {json5.dumps(merge_schema, indent=4)}")
+
+
+def validate(instance, schema):
+    try:
+        jsonschema.validate(instance=instance, schema=schema)
+    except jsonschema.ValidationError as e:
+        logging.error("Exception occurred", exc_info=True)
+        return e.schema["error_msg"]
+
+
+def fav_jsonstr(envvar, jsonstr):
+    path = os.getenv(envvar)
+    hidden = "true" if not path else "false"
+    jsonstr += f"""
+        {{
+            "root": "/",
+            "contentType": "directory",
+            "iconLabel": "ui-components:folder",
+            "path": "{path}",
+            "name": "${envvar}",
+            "hidden": {hidden}
+        }}"""
+    return jsonstr
+
+
+# create favorite-json for $HOME, $SCRATCH, $PROJECT
+sys_fav_jsonstr = """{
+    "favorites": ["""
+sys_fav_jsonstr = fav_jsonstr("HOME", sys_fav_jsonstr) + ","
+sys_fav_jsonstr = fav_jsonstr("PROJECT", sys_fav_jsonstr) + ","
+sys_fav_jsonstr = fav_jsonstr("SCRATCH", sys_fav_jsonstr)
+sys_fav_jsonstr += """
+    ],
+    "showWidget": true
+}"""
+logging.debug(f"JSON for additional favorites: {sys_fav_jsonstr}")
+validate(instance=json5.loads(sys_fav_jsonstr), schema=merge_schema)
+
+# get path to favorites.jupyterlab-settings
+settings_dpath = os.getenv(
+    "JUPYTERLAB_SETTINGS_DIR",
+    os.path.join(os.environ["HOME"], ".jupyter/lab/user-settings"),
+)
+fav_settings_dpath = os.path.join(settings_dpath, "@jlab-enhanced/favorites/")
+fav_settings_fpath = os.path.join(fav_settings_dpath, "favorites.jupyterlab-settings")
+logging.debug(f"settings file path: {fav_settings_fpath}")
+
+# if user settings file exists we need to merge
+if os.path.exists(fav_settings_fpath):
+    logging.debug(f"settings file exists: {fav_settings_fpath}")
+
+    # read user-settings
+    user_fav_json = {}
+    with open(fav_settings_fpath, "r") as fav_file:
+        try:
+            user_fav_json = json5.load(fav_file)
+        except ValueError:  # includes simplejson.decoder.JSONDecodeError
+            logging.error("Decoding JSON has FAILED", exc_info=True)
+
+    # merge JSONs
+    fav_merger = Merger(merge_schema)
+    try:
+        merged_json = fav_merger.merge(user_fav_json, json5.loads(sys_fav_jsonstr))
+    except:
+        logging.error("Merging JSONs has FAILED", exc_info=True)
+
+    # print result
+    logging.debug(f"merged settings file: {json5.dumps(merged_json, indent=4)}")
+
+    # validate result
+    validate(instance=merged_json, schema=merge_schema)
+
+    # write JSON to file
+    jsonstr = json5.dumps(merged_json, indent=4)
+    try:
+        with open(fav_settings_fpath, "w") as fav_file:
+            fav_file.write(jsonstr)
+        logging.info(f"Writing merged settings file SUCCESSFULL")
+    except:
+        logging.error("Writing settings file FAILED", exc_info=True)
+
+# if user settings file does NOT exist - we need to create it
+else:
+    logging.debug(
+        f"settings file {fav_settings_fpath} does not exist - creating a new one"
+    )
+
+    # create file with content
+    try:
+        os.makedirs(fav_settings_dpath, exist_ok=True)
+        with open(fav_settings_fpath, "w") as fav_file:
+            fav_file.write(sys_fav_jsonstr)
+        logging.info(f"Writing new settings file SUCCESSFULL")
+    except:
+        logging.error("Writing settings file FAILED", exc_info=True)
+
diff --git a/Golden_Repo/j/JupyterLabCollection/JupyterLabCollection-2023.3.6-GCCcore-11.3.0.eb b/Golden_Repo/j/JupyterLabCollection/JupyterLabCollection-2023.3.6-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fc7fc951a4d88e1f7f96409a9b47eeeaa59df789
--- /dev/null
+++ b/Golden_Repo/j/JupyterLabCollection/JupyterLabCollection-2023.3.6-GCCcore-11.3.0.eb
@@ -0,0 +1,35 @@
+easyblock = 'Bundle'
+
+name = 'JupyterLabCollection'
+version = '2023.3.6'
+
+homepage = 'http://www.jupyter.org'
+description = """
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+dependencies = [
+    # ('JupyterKernel-XPython',        '0.12.3', '-' + version),
+    ('JupyterProxy-XpraHTML5',        '0.3.5',    '-' + version),
+    # ('JupyterProxy-RStudio',          '1.4',    '-' + version),
+    # ('JupyterProxy-Matlab',           '0.2.0',  '-' + version),
+    ('JupyterKernel-Bash',            '0.9.0',    '-' + version),
+    ('JupyterKernel-Cling',           '20230205', '-' + version),
+    # ('JupyterKernel-JavaScript',      '5.2.1',    '-' + version),
+    ('JupyterKernel-Julia',           '1.8.5',    '-' + version),
+    ('JupyterKernel-Octave',          '8.2.0',    '-' + version),
+    ('JupyterKernel-PyVisualization', '2023.5',   '-' + version),
+    ('JupyterKernel-PyQuantum',       '2023.5',   '-' + version),
+    ('JupyterKernel-PyDeepLearning',  '2023.5',   '-' + version),
+    ('JupyterKernel-PyEarthSystem',   '2023.5',   '-' + version),
+    ('JupyterKernel-R',               '4.2.1',    '-' + version),
+    ('JupyterKernel-Ruby',            '3.0.5',    '-' + version),
+    ('JupyterLab', version),
+]
+
+skipsteps = ['configure', 'build', 'install', 'sanity_check']
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.5-GCCcore-11.3.0-2023.3.6.eb b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.5-GCCcore-11.3.0-2023.3.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d4f1a14ac58f6f655be9eb9b8a931ccaaa15e8bb
--- /dev/null
+++ b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.5-GCCcore-11.3.0-2023.3.6.eb
@@ -0,0 +1,77 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterProxy-XpraHTML5'
+version = '0.3.5'
+local_jupyterver = '2023.3.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = 'https://xpra.org'
+description = """
+Jupyter proxy for Xpra HTML5 sessions.
+Xpra is an open-source multi-platform persistent remote display server and client
+for forwarding applications and desktop screens.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.38'),
+    # check for existance
+    ('xpra', '4.4.6'),
+    ('jsc-xdg-menu', '2023.5'),
+]
+
+dependencies = [
+    ('Python', '3.10.4'),
+    ('JupyterLab', local_jupyterver),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+exts_list = [
+    ('jupyter-xprahtml5-proxy', version, {
+        'checksums': [
+            '71343b98d06d8c36a74a9368c5919414cb77990f01b12c911217391b25935b2b',
+        ],
+    }),
+]
+
+postinstallcmds = [
+    # write xpra
+    (
+        '{ cat > %(installdir)s/lib/python%(pyshortver)s/'
+        'site-packages/jupyter_xprahtml5_proxy/bin/xpra; } << EOF \n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCCcore/.11.3.0 \n'
+        'module load xpra \n'
+        'module load jsc-xdg-menu/.2023.5 \n'
+        '\n'
+        'if ! command -v xterm &> /dev/null \n'
+        'then \n'
+        '    echo "xterm not found - trying to load the xterm-module" \n'
+        '    module load xterm \n'
+        'fi \n'
+        '\n'
+        'xpra "\$@" \n'
+        '\n'
+        'EOF'
+    ),
+    'chmod +x %(installdir)s/lib/python%(pyshortver)s/site-packages/jupyter_xprahtml5_proxy/bin/xpra'
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/jsc-xdg-menu/jsc-xdg-menu-2023.5-GCCcore-11.3.0.eb b/Golden_Repo/j/jsc-xdg-menu/jsc-xdg-menu-2023.5-GCCcore-11.3.0.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a9ba61041fe6fe1ae71a31eb8227bc498c5f3b76
--- /dev/null
+++ b/Golden_Repo/j/jsc-xdg-menu/jsc-xdg-menu-2023.5-GCCcore-11.3.0.eb
@@ -0,0 +1,40 @@
+easyblock = 'Binary'
+
+name = 'jsc-xdg-menu'
+version = '2023.5'
+
+homepage = ''
+description = """setup JSC`s desktop menu"""
+
+toolchain = {'name': 'GCCcore', 'version': '11.3.0'}
+
+source_urls = ['https://gitlab.version.fz-juelich.de/goebbert1/jsc-xdg-menu/-/archive/%(version)s/']
+sources = ['%(name)s-%(version)s.tar.gz']
+checksums = ['75ccb12bd102797f12122d7faa6014ad43d66beb5e4a1b1c5ecc17b5673af724']
+
+builddependencies = [
+    # just ensure they exist
+    ('Blender', '3.4.1', '-binary'),
+    # ('CubeGUI', '4.8.1'),  # not installed on HDFML
+    ('GPicView', '0.2.5'),
+    ('HDFView', '3.1.4'),
+    ('Nsight-Compute', '2023.1.0'),
+    ('Nsight-Systems', '2023.2.1'),
+    # ('ParaView', '5.11.0', '', ('gpsmkl', '2022a')),
+    # ('TotalView', '2022.4.27'),  # not installed on HDFML
+    # ('Vampir', '10.2.0', '', SYSTEM),
+]
+
+extract_sources = True,
+install_cmd = 'cp -a %(builddir)s/%(name)s-%(version)s/* %(installdir)s/'
+
+modextravars = {'XDG_MENU_PREFIX': 'jsc-'}
+modextrapaths = {'XDG_CONFIG_DIRS': 'config',
+                 'XDG_DATA_DIRS': 'data'}
+
+sanity_check_paths = {
+    'files': ['README.md', 'config/menus/jsc-applications.menu'],
+    'dirs': ['bin', 'config/menus', 'data/applications', 'data/desktop-directories'],
+}
+
+moduleclass = 'vis'
diff --git a/acls.yml b/acls.yml
index 36b6b04413af2a74365c8a678a49fcf72938335e..7ffe5ef36a17ec4f23309c90e81df4f84eaaf8cc 100644
--- a/acls.yml
+++ b/acls.yml
@@ -163,10 +163,10 @@ software:
   - name: 'Julia.MPI'
     owner: 'goebbert1'
     mpi: True
-  - name: 'Jupyter'
+  - name: 'JupyterLab'
     owner: 'goebbert1'
     base: True
-  - name: 'JupyterCollection'
+  - name: 'JupyterLabCollection'
     owner: 'goebbert1'
     base: True
   - name: 'JupyterExtension-nvdashboard'
@@ -175,6 +175,15 @@ software:
   - name: 'JupyterExtension-elyra'
     owner: 'goebbert1'
     base: True
+  - name: 'JupyterExtension-jupyterai'
+    owner: 'goebbert1'
+    base: True
+  - name: 'JupyterExtension-nglview'
+    owner: 'goebbert1'
+    base: True
+  - name: 'JupyterExtension-slurmprovisioner'
+    owner: 'goebbert1'
+    base: True
   - name: 'JupyterKernel-Bash'
     owner: 'goebbert1'
     base: True
@@ -190,6 +199,9 @@ software:
   - name: 'JupyterKernel-Octave'
     owner: 'goebbert1'
     base: True
+  - name: 'JupyterKernel-PyEarthSystem'
+    owner: 'goebbert1'
+    base: True
   - name: 'JupyterKernel-PyParaView'
     owner: 'goebbert1'
     base: True