diff --git a/Golden_Repo/j/Jupyter/Jupyter-2020.2.6-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/j/Jupyter/Jupyter-2020.2.6-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..a9b2b3497eb671688af31e11fc1a159b91cf6a99
--- /dev/null
+++ b/Golden_Repo/j/Jupyter/Jupyter-2020.2.6-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -0,0 +1,1214 @@
+easyblock = 'Bundle'
+
+name = 'Jupyter'
+version = '2020.2.6'
+versionsuffix = '-Python-%(pyver)s'
+
+local_jlab_version = '2.2.9'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('unzip', '6.0'),
+    ('Autotools', '20200321'),
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('libyaml', '0.2.5'),
+    ('Pandoc', '2.11.0.4', '', SYSTEM),  # For doc-generation
+    ('texlive', '20200406'),
+    ('ITK', '5.1.2', '-nompi' + versionsuffix),
+    ('HDF5', '1.10.6', '-serial'),
+    ('h5py', '2.10.0', '-serial' + versionsuffix),
+    ('netcdf4-python', '1.5.4', '-serial' + versionsuffix),
+    ('FFmpeg', '4.3.1'),  # for pydub
+    ('LLVM', '10.0.1'),  # llvmlite
+    ('git', '2.28.0'),  # for jupyterlab-git (req. >=2.0)
+    ('SciPy-Stack', '2020', versionsuffix),
+    ('scikit', '2020', versionsuffix),
+    ('numba', '0.51.1', versionsuffix),
+    ('Shapely', '1.7.1', versionsuffix),
+]
+
+osdependencies = [('openssl'), ('git')]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+# this is a bundle of Python packages
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'filter': ('python -c "import %(ext_name)s"', ''),
+    'download_dep_fail': True,  # True
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+    'sanity_pip_check':  True,
+    'use_pip_for_deps': False,  # False
+}
+
+components = [
+    ('nodejs', '14.15.3', {
+        'easyblock': 'ConfigureMake',
+        'source_urls': ['http://nodejs.org/dist/v%(version)s/'],
+        'sources': ['node-v%(version)s.tar.gz'],
+        'start_dir': 'node-v%(version)s',
+    }),
+]
+
+exts_list = [
+    ('ptvsd', '4.3.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'ptvsd-4.3.2.zip'),
+        ('checksums', [('sha256', '3b05c06018fdbce5943c50fb0baac695b5c11326f9e21a5266c854306bda28ab')]),
+    ])),
+    ('pyOpenSSL', '19.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507')]),
+        ('modulename', 'OpenSSL'),
+    ])),
+    ('entrypoints', '0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451')]),
+        ('use_pip', False),
+    ])),
+    ('async_generator', '1.10', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144')]),
+    ])),
+    ('nest_asyncio', '1.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'eaa09ef1353ebefae19162ad423eef7a12166bcc63866f8bff8f3635353cd9fa')]),
+    ])),
+    ('absl-py', '0.10.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b20f504a7871a580be5268a18fbad48af4203df5d33dbc9272426cb806245a45')]),
+        ('modulename', 'absl'),
+    ])),
+    ('websockify', '0.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c35b5b79ebc517d3b784dacfb993be413a93cda5222c6f382443ce29c1a6cada')]),
+    ])),
+    ('typing_extensions', '3.7.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c')]),
+    ])),
+    # General Python packages
+    ('tornado', '6.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791')]),
+    ])),
+    ('bokeh', '2.2.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c4a3f97afe5f525019dd58ee8c4e3d43f53fe1b1ac264ccaae9b02c07b2abc17')]),
+    ])),
+    ('nbformat', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1d223e64a18bfa7cdf2db2e9ba8a818312fc2a0701d2e910b58df66809385a56')]),
+    ])),
+    ('param', '1.9.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8370d41616e257b8ed2e242ec531e0340b8c954bea414b791fa0ef6235959981')]),
+    ])),
+    # Jupyter-core and dependencies
+    ('alabaster', '0.7.12', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02')]),
+    ])),
+    ('Babel', '2.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28')]),
+        ('modulename', 'babel'),
+    ])),
+    ('snowballstemmer', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52')]),
+    ])),
+    ('docutils', '0.15.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99')]),
+    ])),
+    ('imagesize', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5')]),
+    ])),
+    ('sphinxcontrib-websupport', '1.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc')]),
+        ('modulename', 'sphinxcontrib'),
+    ])),
+    ('Sphinx', '1.8.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08')]),
+        ('modulename',  'sphinx'),
+    ])),
+    ('ipynb', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8d834c777ca3885289938728cc382f081c86a58e92961e86f0aba60c96938ce5')]),
+    ])),
+    ('jupyter_core', '4.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '79025cb3225efcd36847d0840f3fc672c0abd7afd0de83ba8a1d3837619122b4')]),
+    ])),
+    ('retrying', '1.3.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b')]),
+    ])),
+    ('plotly', '4.14.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7d8aaeed392e82fb8e0e48899f2d3d957b12327f9d38cdd5802bc574a8a39d91')]),
+    ])),
+    ('tikzplotlib', '0.9.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'bf205e74e27e9efefde70d7773675a8432dab600741ac8c0db93daaeb7fc957c')]),
+    ])),
+    #  Jupyter client
+    ('jupyter_client', '6.1.11', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '649ca3aca1e28f27d73ef15868a7c7f10d6e70f761514582accec3ca6bb13085')]),
+    ])),
+    ('pynvml', '8.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c8d4eadc648c7e12a3c9182a9750afd8481b76412f83747bcc01e2aa829cde5d')]),
+    ])),
+    #  Jupyter notebook and dependencies
+    ('singledispatch', '3.4.0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c')]),
+    ])),
+    ('ipyparallel', '6.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0a97b276c62db633e9e97a816282bdd166f9df74e28204f0c8fa54b71944cfdc')]),
+    ])),
+    ('ipykernel', '5.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '697103d218e9a8828025af7986e033c89e0b36e2b6eb84a5bda4739b9a27f3cb')]),
+    ])),
+    ('terminado', '0.9.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '89e6d94b19e4bc9dce0ffd908dfaf55cc78a9bf735934e915a4a96f65ac9704c')]),
+        ('use_pip', False),
+    ])),
+    ('bleach', '3.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433')]),
+    ])),
+    ('mistune', '0.8.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e')]),
+    ])),
+    ('pandocfilters', '1.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb')]),
+    ])),
+    ('testpath', '0.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e')]),
+        ('use_pip', False),
+    ])),
+    ('nbconvert', '6.0.7', dict(list(local_common_opts.items()) + [
+        # !!! nbconvert will try to read from all paths in <jupyter-config-path> the file nbconvert/templates/conf.json
+        #     ensure it has permissions (https://github.com/jupyter/nbconvert/issues/1430)
+        ('checksums', [('sha256', 'cbbc13a86dfbd4d1b5dee106539de0795b4db156c894c2c5dc382062bbc29002')]),
+        # 6.0.7 - patch for jupyter_contrib_nbextensions needed:
+        #               https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532
+    ])),
+    ('Send2Trash', '1.5.0', dict(list(local_common_opts.items()) + [  # req. by widgetsnbextension
+        ('checksums', [('sha256', '60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2')]),
+        ('modulename',  'send2trash'),
+    ])),
+    ('argon2-cffi', '20.1.0', dict(list(local_common_opts.items()) + [  # req. for notebook >= 6.1
+        ('checksums', [('sha256', 'd8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d')]),
+        ('modulename', 'argon2'),
+    ])),
+    ('notebook', '6.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0464b28e18e7a06cec37e6177546c2322739be07962dd13bf712bcb88361f013')]),
+        ('patches', ['notebook-6.0.3_jsc.patch']),  # allow others to read/write in .ipynb_checkpoints
+    ])),
+    ('version_information', '1.0.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '811b9cea4b376aa62a77dc729a937ce8e2844573b8686b5c1840147054fb938d')]),
+    ])),
+    ('lesscpy', '0.14.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7b664f60818a16afa8cc9f1dd6d9b17f944e0ce94e50787d76f81bc7a8648cce')]),
+    ])),
+    ('prometheus_client', '0.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9da7b32f02439d8c04f7777021c304ed51d9ec180604700c1ba72a4d44dceb03')]),
+    ])),
+    ('jupyterthemes', '0.20.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2a8ebc0c84b212ab99b9f1757fc0582a3f53930d3a75b2492d91a7c8b36ab41e')]),
+    ])),
+    #  Jupyter Lab and dependencies
+    ('zipp', '3.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb')]),
+    ])),
+    ('jupyter-packaging', '0.7.12', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b140325771881a7df7b7f2d14997b619063fe75ae756b9025852e4346000bbb8')]),
+    ])),
+    ('importlib_metadata', '3.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d')]),
+    ])),
+    ('jupyterlab_launcher', '0.13.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f880eada0b8b1f524d5951dc6fcae0d13b169897fc8a247d75fb5beadd69c5f0')]),
+    ])),
+    ('sphinx_rtd_theme', '0.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '728607e34d60456d736cc7991fd236afb828b21b82f956c5ea75f94c8414040a')]),
+    ])),
+    ('commonmark', '0.9.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60')]),
+    ])),
+    ('recommonmark', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb')]),
+    ])),
+    ('jupyterlab', local_jlab_version, dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3be8f8edea173753dd838c1b6d3bbcb6f5c801121f824a477025c1b6a1d33dc6')]),
+        ('patches', [('401html.patch', 1)])
+    ])),
+    ('json5', '0.8.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '124b0f0da1ed2ff3bfe3a3e9b8630abd3c650852465cb52c15ef60b8e82a73b0')]),
+    ])),
+    ('jupyterlab_server', '1.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c')]),
+    ])),
+    ('jupyter_kernel_gateway', '2.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6424a9f118e757ef18e9bed7784ca05ad9e633945df328ac4d8810eadc6f6ccd')]),
+        ('modulename', 'kernel_gateway'),
+    ])),
+    ('nbclient', '0.5.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0ed6e5700ad18818030a3a5f0f201408c5972d8e38793840cd9339488fd9f7c4')]),
+    ])),
+    #  Jupyter Widgets and dependencies
+    ('defusedxml', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5')]),
+    ])),
+    ('widgetsnbextension', '3.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7')]),
+    ])),
+    ('ipywidgets', '7.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e945f6e02854a74994c596d9db83444a1850c01648f1574adf144fbbabe05c97')]),
+    ])),
+    # ('ipyscales', '0.6.0', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', 'f2c42776482081b2771a2789623e1744a4e578f5d51644c1450b53738292b069')]),
+    # ])), # fails because of PEP 517
+    ('ipydatawidgets', '4.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd9f94828c11e3b40350fb14a02e027f42670a7c372bcb30db18d552dcfab7c01')]),
+    ])),
+    ('traittypes', '0.2.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'be6fa26294733e7489822ded4ae25da5b4824a8a7a0e0c2dccfde596e3489bd6')]),
+    ])),
+    ('bqplot', '0.12.22', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3f0eee5e2b03866f729ef295f9f46310dcafa832040064f40995a3e876986855')]),
+    ])),
+    ('jupyter_bokeh', '2.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd337306021fb6a8e63556dbe2eaf539a8025aa76d9ba512b18189bfb1f708177')]),
+    ])),
+    ('pythreejs', '2.2.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'acceeac346054bcc280bf93f494557e6f5ab404860cfee584d72a6c3dde16463')]),
+    ])),
+    ('ipywebrtc', '0.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4db2be7d0bfcbd142b2f9f9e8303b926832a632ed4a3bc5681b319a5f226285a')]),
+    ])),
+    ('ipyvolume', '0.6.0a6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1a71c681dd39b514db966c4812bbbd1347ce082ee7a7bcc53f494e0546bf37ff')]),
+    ])),
+    ('branca', '0.3.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3e762c9bdf40725f3d05ea1fda8fae9b470bfada6474e43a1242c8204a7bb15e')]),
+    ])),
+    ('ipyleaflet', '0.13.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c05f138327926bc81f29a629588bd656be5ff76dd8785c1e7eac5445b1d5a432')]),
+    ])),
+    ('ipympl', '0.5.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0e2f2e540a2dfea61524b7993fc8552c9236b1aaa3826e1f382c75cb2fa5c382')]),
+    ])),  # respect version lookup table: https://github.com/matplotlib/ipympl
+    # Jupyter Notebook Extensions
+    ('jupyter_nbextensions_configurator', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e5e86b5d9d898e1ffb30ebb08e4ad8696999f798fef3ff3262d7b999076e4e83')]),
+    ])),
+    ('jupyter_latex_envs', '1.4.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '070a31eb2dc488bba983915879a7c2939247bf5c3b669b398bdb36a9b5343872')]),
+        ('patches', ['jupyter_latex_envs-template_paths.patch']),
+        #  support for nbconvert>=6.x -> https://github.com/jfbercher/jupyter_latex_envs/pull/58
+        ('modulename', 'latex_envs'),
+    ])),
+    ('jupyter_highlight_selected_word', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9fa740424859a807950ca08d2bfd28a35154cd32dd6d50ac4e0950022adc0e7b')]),
+    ])),
+    ('jupyter_contrib_core', '0.3.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e65bc0e932ff31801003cef160a4665f2812efe26a53801925a634735e9a5794')]),
+    ])),
+    ('jupyter_contrib_nbextensions', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'eecd28ecc2fc410226c0a3d4932ed2fac4860ccf8d9e9b1b29548835a35b22ab')]),
+        ('patches', ['jupyter_contrib_nbextensions-template_paths.patch']),
+        #  support for nbconvert>=6.x -> https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532
+    ])),
+    ('rise', '5.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '641db777cb907bf5e6dc053098d7fd213813fa9a946542e52b900eb7095289a6')]),
+    ])),
+    ('idna-ssl', '1.1.0', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', 'a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c')]),
+    ])),
+    ('multidict', '4.7.5', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', 'aee283c49601fa4c13adc64c09c978838a7e812f85377ae130a24d7198c0331e')]),
+    ])),
+    ('yarl', '1.6.3', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', '8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10')]),
+    ])),
+    ('async-timeout', '3.0.1', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', '0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f')]),
+    ])),
+    ('aiohttp', '3.6.2', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', '259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326')]),
+    ])),
+    ('simpervisor', '0.3', dict(list(local_common_opts.items()) + [  # indirect dep of jupyter-server-proxy
+        ('checksums', [('sha256', 'd82e4527ae326747551e4bdfa632ff4ebef275ce721f80886c747adfdbf41c2e')]),
+    ])),
+    ('sniffio', '1.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de')]),
+    ])),
+    ('anyio', '2.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8a56e08623dc55955a06719d4ad62de6009bb3f1dd04936e60b2104dd58da484')]),
+    ])),
+    ('jupyter_server', '1.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b4b1f8f0c38e1faf418f3ff536cdb6d84dfb477d150abee5f0e65c7fd95fa527')]),
+    ])),
+    ('jupyter-server-proxy', '1.5.2', dict(list(local_common_opts.items()) + [
+        ('source_urls', ['https://github.com/jupyterhub/jupyter-server-proxy/archive/']),
+        ('source_tmpl', 'v%(version)s.tar.gz'),
+        ('checksums', [('sha256', '140bd642c511519ddd2acc5f70e0b46a40bbc673c888dcb3b19981005286853b')]),
+        ('patches', ['jupyterserverproxy-urlfile.patch']),
+    ])),
+    # Jupyter Lab Extensions
+    ('jupyterlab_github', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1f560a91711b779d08118161af044caff44159e315cb80ae830d3dfbded7bac9')]),
+        # do not use pypi for download -> we need to patch drive.json
+        ('source_urls', ['https://github.com/jupyterlab/jupyterlab-github/archive']),
+        ('source_tmpl', 'v%(version)s.tar.gz'),
+        ('patches', ['jupyterlab_github-%(version)s_jsc.patch']),
+    ])),
+    ('jupyterlab-gitlab', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '31d3fbd9b139aca7704dd13967ac22c81e372b50c4db730f342ab7800db7a5c6')]),
+        # do not use pypi for download -> we need to patch drive.json
+        ('source_urls', ['https://gitlab.com/beenje/jupyterlab-gitlab/-/archive/%(version)s']),
+        ('source_tmpl', 'jupyterlab-gitlab-%(version)s.tar.gz'),
+        ('patches', ['jupyterlab-gitlab-%(version)s_jsc.patch']),
+    ])),
+    ('jupyterlab-quickopen', '0.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('90cba3a7e6ff8d2b3eaf2594079c25f82e2c158d2ec63ebd951e4042a7445f8e')]),
+    ])),
+    ('zstandard', '0.12.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a110fb3ad1db344fbb563942d314ec5f0f3bdfd6753ec6331dded03ad6c2affb')]),
+    ])),
+    # ('jupyterlab_hdf', '0.5.1', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '9397fed0487e5811d1147851c3d7781fc9a53eb9c7b4471eeebf555f38ddc02e')]),
+    # ])),
+    # ('elyra-server', '1.5.3', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '36dd386862252636bd1ff9af657fbb2c51d59a84c99332be9d749c64eed3410f')]),
+    # ])),  # req. kfp, kfp-notebook, minio, rfc3986-validator
+    # ('elyra-pipeline-editor-extension', '1.5.3', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', 'da134c224e968a1df643f74b99263a6ee21a557bda5615d779474e77a1f7e90c')]),
+    # ])),
+    # https://blog.kitware.com/itk-is-on-pypi-pip-install-itk-is-here/
+    ('itk_core', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_core-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '1f0254f0f134b709e6df3601dc38ccc45c2d5d5576fc10e1a0313d1fe8aefa84')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_filtering', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_filtering-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'f4a1256c8c684329780b9f4326fb571023af1d96fbda7cb7b513b4a395a9cd42')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_segmentation', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_segmentation-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'f81ba4881f7802eb5b911c4e1eac4706220647196ebda68477318630542db226')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_numerics', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_numerics-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '6ac84a6386cd51692ed9605b6daefcc6230ec976f93161c9c5d89cfdfe042eba')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_registration', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_registration-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'd25b578ffb859f07cbad6987d1adb507e357d91f82863faeae337d8645b9d29d')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_io', '5.1.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_io-5.1.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '6ecc528ce4ae42b6d14c972d51055856f130a13474463ba4bf187ed2afdb04b1')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('itk_meshtopolydata', '0.6.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'itk_meshtopolydata-0.6.2-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', '486e418808c27ccc76619737219fa57fcd1de2da5fcd0325ee8c4395965deb39')]),
+        ('unpack_sources', False),
+        ('modulename', 'itk'),
+    ])),
+    ('pyct', '0.4.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'df7b2d29f874cabdbc22e4f8cba2ceb895c48aa33da4e0fe679e89873e0a4c6e')]),
+    ])),
+    ('colorcet', '2.0.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '514813790a74b578c3eaff76b2102274c2ba8b0239c9504586df685223007dee')]),
+    ])),
+    ('itkwidgets', '0.32.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '11ee93007cf354405e01bf9a28fb1eb2fb0a5d139e1cdded1a07b47f7ee76972')]),
+    ])),
+    ('ujson', '3.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4')]),
+    ])),
+    #    ('jupyterlab_iframe', '0.2.2', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '7c26cddc5f29f0b5ac6ba4707ce811f9787282549d22098b691bcdcc6692238c')]),     
+    #        ('use_pip', False),
+    #    ])),
+    ('python-dotenv', '0.10.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f157d71d5fec9d4bd5f51c82746b6344dffa680ee85217c123f4a0c8117c4544')]),
+        ('modulename', 'dotenv'),
+    ])),
+    #    ('ipyauth', '0.2.5', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '189db0e9fd48cf52f333ef8ac1a71b9e3a9eec6561f5085e3d7239ca2588ba87')]),
+    #    ])),
+    ('jupyterlab_latex', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '722558144e6ce71abe4fba0fb01c13c37271fa2497881bfebe9b6422d1fc795b')]),
+    ])),
+    # ('jupyterlab_slurm', '2.0.0', dict(list(local_common_opts.items()) + [
+    #     ('checksums', [('sha256', '87ada82e7746745bcc47d19f3caf54cc18798b058aedcd5d1005e19b784c2d4f')]),
+    # ])),
+    ('jupyterlmod', '2.0.2', dict(list(local_common_opts.items()) + [
+        ('source_urls', ['https://github.com/cmd-ntrf/jupyter-lmod/archive/']),
+        ('source_tmpl', '%(version)s.tar.gz'),
+        ('checksums', [('sha256', 'f547432afb30cb87c8dabf78fd4cc4c35ff4b6d2aafbae19c249b7d596015c6a')]),
+        ('patches', [
+            'jupyterlmod-urlfile.patch',
+            'jupyterlmod-packagejson.patch',
+        ]),
+    ])),
+    ('nbresuse', '0.3.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5ba19dd0b08ff19470aeb34cda2f07276a3fb1cd750bc53f3a3e06322664e98e')]),
+    ])),
+    ('colorama', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d')]),
+    ])),
+    ('nbdime', '2.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4e3efdcfda31c3074cb565cd8e76e2e5421b1c4560c3a00c56f8679dd15590e5')]),
+    ])),
+    ('smmap2', '2.0.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a')]),
+        ('modulename', 'smmap'),
+    ])),
+    ('gitdb2', '2.0.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1b6df1433567a51a4a9c1a5a0de977aa351a405cc56d7d35f3388bad1f630350')]),
+        ('modulename', 'gitdb'),
+    ])),
+    ('GitPython', '3.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3237caca1139d0a7aa072f6735f5fd2520de52195e0fa1d8b83a9b212a2498b2')]),
+        ('modulename', 'git'),
+    ])),
+    ('jupyterlab_git', '0.23.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '20a4954d8d1b1eb6f9111cd15d6a598bd7ff72b08797cf5e86c5a55827c85a1d')]),
+    ])),
+    ('sidecar', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '3e79de269ddd2c0eff1cb26025cb9f434cf9914b777cf03eeab8347f6de7160e')]),
+    ])),
+    ('pycodestyle', '2.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e')]),
+    ])),
+    ('autopep8', '1.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee')]),
+    ])),
+    ('yapf', '0.28.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6f94b6a176a7c114cfa6bad86d40f259bbe0f10cf2fa7f2f4b3596fc5802a41b')]),
+    ])),
+    ('isort', '4.3.21', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1')]),
+    ])),
+    ('pathspec', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e285ccc8b0785beadd4c18e5708b12bb8fcf529a1e61215b3feff1d1e559ea5c')]),
+    ])),
+    ('typed_ast', '1.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a')]),
+    ])),
+    ('regex', '2019.11.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '720e34a539a76a1fedcebe4397290604cc2bdf6f81eca44adb9fb2ea071c0c69')]),
+    ])),
+    ('black', '19.3b0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c')]),
+    ])),
+    ('jupyterlab_code_formatter', '1.3.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7c415caff528e55027e82c96b60dcab0537aa5cda168997f03a4964c51e2b7b5')]),
+    ])),
+    ###############
+    # extras
+    ('mccabe', '0.6.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f')]),
+    ])),
+    ('pyflakes', '2.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8')]),
+    ])),
+    ('flake8', '3.8.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208')]),
+    ])),
+    ('pydocstyle', '5.0.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f4f5d210610c2d153fae39093d44224c17429e2ad7da12a8b419aba5c2f614b5')]),
+    ])),
+    ('rope', '0.16.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd2830142c2e046f5fc26a022fe680675b6f48f81c7fc1f03a950706e746e9dfe')]),
+    ])),
+    # base for python language server
+    ('python-jsonrpc-server', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '62c543e541f101ec5b57dc654efc212d2c2e3ea47ff6f54b2e7dcb36ecf20595')]),
+        ('modulename',  'pyls_jsonrpc'),
+    ])),
+    # test
+    ('versioneer', '0.18', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ead1f78168150011189521b479d3a0dd2f55c94f5b07747b484fd693c3fbf335')]),
+    ])),
+    ('lazy-object-proxy', '1.4.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0')]),
+    ])),
+    ('wrapt', '1.12.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7')]),
+    ])),
+    ('astroid', '2.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2f4078c2a41bf377eea06d71c9d2ba4eb8f6b1af2135bec27bbbb7d8f12bb703')]),
+    ])),
+    ('typed_ast', '1.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a')]),
+    ])),
+    ('pylint', '2.5.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7dd78437f2d8d019717dbf287772d0b2dbdfd13fc016aa7faa08d67bccc46adc')]),
+    ])),
+    ('pytest-cov', '2.10.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e')]),
+    ])),
+    ('pytest-xprocess', '0.13.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '779aeca517cd9c996d1544bdc510cb3cff40c48136d94bbce6148e27f30a93ff')]),
+    ])),
+    # python language server
+    ('python-language-server', '0.36.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9984c84a67ee2c5102c8e703215f407fcfa5e62b0ae86c9572d0ada8c4b417b0')]),
+        ('modulename',  'pyls'),
+    ])),
+    ('jupyter-lsp', '0.9.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '73b5cb47fbe672bee6c02ddc4f2fbe728dc3bff589b5741835ebb80a862163af')]),
+    ])),
+
+    ####################
+    # Jupyter Hub
+    #    ('SQLAlchemy', '1.3.10', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '0f0768b5db594517e1f5e1572c73d14cf295140756431270d89496dc13d5e46c')]),
+    #    ])),  # part of Python module in version 1.3.1
+    #    ('python-oauth2', '1.1.1', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', 'd7a8544927ac18215ba5317edd8f640a5f1f0593921bcf3ce862178312c8c9a4')]),
+    #        ('modulename',  'oauth2'),
+    #    ])), # part of Python module
+    ('pamela', '1.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '65c9389bef7d1bb0b168813b6be21964df32016923aac7515bdf05366acbab6c')]),
+    ])),
+    ('certipy', '0.1.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859')]),
+    ])),
+    ('oauthlib', '3.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889')]),
+    ])),
+    ('ruamel.yaml', '0.16.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '412a6f5cfdc0525dee6a27c08f5415c7fd832a7afcb7a0ed7319628aed23d408')]),
+    ])),
+    ('ruamel.yaml.clib', '0.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'cee86ecc893a6a8ecaa7c6a9c2d06f75f614176210d78a5f155f8e78d6989509')]),
+        ('modulename', 'ruamel.yaml'),
+    ])),
+    ('python-json-logger', '0.1.11', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281')]),
+        ('modulename', 'pythonjsonlogger'),
+    ])),
+    ('jupyter_telemetry', '0.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '445c613ae3df70d255fe3de202f936bba8b77b4055c43207edf22468ac875314')]),
+    ])),
+    ('jupyterhub', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '852a70225a03abd631b36a207f3ffdf69326a0db4cef539825fde39ec1b713d7')]),
+        ('patches', ['jupyterhub-1.1.0_logoutcookie-2.0.patch']),
+        # copy 401.html -> <jupyter-install-dir>/share/jupyter/lab/static/
+    ])),
+    ('appmode', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'deac99adaa95e28fa8a56c072be653603cffa49dc06469701ac9c014b690e7c4')]),
+    ])),
+    ('HeapDict', '1.0.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6')]),
+    ])),
+    ('zict', '2.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8e2969797627c8a663575c2fc6fcb53a05e37cdb83ee65f341fc6e0c3d0ced16')]),
+    ])),
+    ('tblib', '1.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '059bd77306ea7b419d4f76016aef6d7027cc8a0785579b5aad198803435f882c')]),
+    ])),
+    ('sortedcontainers', '2.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1')]),
+    ])),
+    ('msgpack', '1.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9534d5cc480d4aff720233411a1f765be90885750b07df772380b34c10ecb5c0')]),
+    ])),
+    ('dask', '2.30.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a1669022e25de99b227c3d83da4801f032415962dac431099bf0534648e41a54')]),
+    ])),
+    ('cloudpickle', '1.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9bc994f9e9447593bd0a45371f0e7ac7333710fcf64a4eb9834bf149f4ef2f32')]),
+    ])),
+    ('distributed', '2.30.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1421d3b84a0885aeb2c4bdc9e8896729c0f053a9375596c9de8864e055e2ac8e')]),
+    ])),
+    ('dask-jobqueue', '0.7.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1767f4146b2663d9d2eaef62b882a86e1df0bccdb8ae68ae3e5e546aa6796d35')]),
+    ])),
+    ('dask_labextension', '3.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c613f5c76b8fce4fae167eeab3377e0706e5045a27da1200b3b173025a94d94b')]),
+    ])),
+    ('Automat', '0.8.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '269a09dfb063a3b078983f4976d83f0a0d3e6e7aaf8e27d8df1095e09dc4a484')]),
+    ])),
+    ('PyHamcrest', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd')]),
+        ('modulename', 'hamcrest'),
+    ])),
+    ('pyasn1-modules', '0.2.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e')]),
+    ])),
+    ('service_identity', '18.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0858a54aabc5b459d1aafa8a518ed2081a285087f349fe3e55197989232e2e2d')]),
+    ])),
+    ('Twisted', '19.7.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd5db93026568f60cacdc0615fcd21d46f694a6bfad0ef3ff53cde2b4bb85a39d')]),
+        ('source_tmpl', '%(name)s-%(version)s.tar.bz2'),
+    ])),
+    ('autobahn', '19.10.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '734385b00547448b3f30a752cbfd2900d15924d77dc4a1699b8bce1ea8899f39')]),
+    ])),
+    ('constantly', '15.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35')]),
+    ])),
+    ('hyperlink', '19.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '4288e34705da077fada1111a24a0aa08bb1e76699c9ce49876af722441845654')]),
+    ])),
+    ('incremental', '17.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3')]),
+    ])),
+    ('txaio', '18.8.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '67e360ac73b12c52058219bb5f8b3ed4105d2636707a36a7cdafb56fe06db7fe')]),
+    ])),
+    ('zope.interface', '4.7.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'fd1101bd3fcb4f4cf3485bb20d6cb0b56909b94d3bd2a53a6cb9d381c3da3365')]),
+    ])),
+    ('wslink', '0.1.13', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6983114e978717a2681815b1ef4b8a0fa2c80c89c6ed09b9554a36c5869cf935')]),
+    ])),
+    ('jupyterlab_pygments', '0.1.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146')]),
+    ])),
+    #    ('jupyterlab-nvdashboard', '0.4.0', dict(list(local_common_opts.items()) + [
+    #        # throughs too many errors if nvtools or driver are not installed
+    #        ('checksums', [('sha256', 'ff12f20076e8cb52ea3319ccf148458ba6230611b52b835b0eeea10ba37f7fe1')]),
+    #    ])),
+    ('ipyvue', '1.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e8549a7ac7dc45948a5f2735e17f97622313c7fea24ea3c1bd4a5ebf02bf5638')]),
+    ])),
+    ('ipyvuetify', '1.6.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd0cfa23ae5a012b0b4f1772a2b2c472f2cc705e9357e16fbe74bf247d2d979f1')]),
+    ])),
+    ('voila', '0.2.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'e4b20c81e61f35b59958070e26d2843eb0aaaa25855b180e06e85b59f6dec02d')]),
+    ])),
+    ('voila-material', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0827a27f0f23ca87bd8f565c4c227c754516d2a120ffce0f7ab1ee12fdec959f')]),
+        ('modulename', 'voila'),  # fake module name to trick the sanity check
+    ])),
+    ('voila-gridstack', '0.0.12', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '7c73e4373abc953cb16f708eafe6b09b11ecae7f130c2db233e184907894fdae')]),
+        ('modulename', 'voila'),
+    ])),
+    ('voila-vuetify', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '522f4ec91eb3912a21215b6b04ad58070d1675809d7d4289ca8e42b577fde100')]),
+        ('modulename', 'voila'),
+    ])),
+    ('pydicom', '1.4.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9488495a9f3e202d1219f7cb165aee0de31efd512d938c0226d34147ce860391')]),
+    ])),
+    ('dicom_upload', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'd03f309bbae2094d3db75ffaa9753cca5982d2096ec55720a1f54343cc4a6877')]),
+    ])),
+    ('jsfileupload', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '245cd74a3c2ed4356df9a33d0072d8ab295b60b6fdfd69c6795396d455fc8a77')]),
+    ])),
+    ('pvlink', '0.3.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a2d5f2c204e0e779a5b865742019b4646b8592d76de87cac724dc84f64eaf80f')]),
+    ])),
+    ('textwrap3', '0.9.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'textwrap3-0.9.2.zip'),
+        ('checksums', [('sha256', '5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414')]),
+        ('use_pip',  True),
+    ])),
+    ('ansiwrap', '0.8.4', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'ansiwrap-0.8.4.zip'),
+        ('checksums', [('sha256', 'ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7')]),
+    ])),
+    ('backports.weakref', '1.0.post1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'bc4170a29915f8b22c9e7c4939701859650f2eb84184aee80da329ac0b9825c2')]),
+    ])),
+    ('backports.tempfile', '1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1c648c452e8770d759bdc5a5e2431209be70d25484e1be24876cf2168722c762')]),
+    ])),
+    ('tqdm', '4.56.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'fe3d08dd00a526850568d542ff9de9bbc2a09a791da3c334f3213d8d0bbbca65')]),
+    ])),
+    ('tenacity', '6.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '72f397c2bb1887e048726603f3f629ea16f88cb3e61e4ed3c57e98582b8e3571')]),
+    ])),
+    ('papermill', '2.2.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1c452b1c5a9ab52b94c99d8b7705ae7173f6aa88a3d28a5d30cffba48a46f5b6')]),
+    ])),
+    ('pyviz_comms', '0.7.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '712df4cca33dda351de754742b24361eee8e4b7c1cfb0e24f50dcb802fa25624')]),
+    ])),
+    ('Markdown', '3.2.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17')]),
+        ('modulename', 'markdown'),
+    ])),
+    ('panel', '0.9.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '53340615f30f67f3182793695ebe52bf25e7bbb0751aba6f29763244350d0f42')]),
+    ])),
+    ('holoviews', '1.13.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'cf2dd426cdc08bf2ca669268ca0432634574429e5b143314ee06ad88c5382802')]),
+    ])),
+    # PythonPackages for Tutorials
+    ('patsy', '0.5.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f115cec4201e1465cd58b9866b0b0e7b941caafec129869057405bfe5b5e3991')]),
+    ])),
+    ('statsmodels', '0.10.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9cd2194c6642a8754e85f9a6e6912cdf996bebf6ff715d3cc67f65dadfd37cc9')]),
+    ])),
+    ('cftime', '1.2.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ab5d5076f7d3e699758a244ada7c66da96bae36e22b9e351ce0ececc36f0a57f')]),
+    ])),
+    ('vega_datasets', '0.8.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'db8883dab72b6f414e1fafdbf1e8db7543bba6ed77912a4e0c197d74fcfa1c20')]),
+    ])),
+    ('Theano', '1.0.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '35c9bbef56b61ffa299265a42a4e8f8cb5a07b2997dabaef0f8830b397086913')]),
+        ('modulename', 'theano'),
+    ])),
+    ('altair', '3.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '9f7c521239ac5a207c3cffc29c5bdde0854fff0dec0b5f91f086ba8e5f1de8a9')]),
+    ])),
+    ('cssselect', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc')]),
+    ])),
+    ('smopy', '0.0.7', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '578b5bc2502176d210f176ab94e77974f43b32c95cd0768fb817ea2499199592')]),
+    ])),
+    ('memory_profiler', '0.55.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5fa47b274c929dd2cbcd9190afb62fec110701251d2ac2d301caaf545c81afc1')]),
+    ])),
+    ('line_profiler', '3.1.0', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'line_profiler-3.1.0-cp38-cp38-manylinux1_x86_64.whl'),
+        ('checksums', [('sha256', 'a66e089e6d98ab8a70b5f89c0367c6780abad0f0b1d624dbe5edd8f0083986c7')]),
+        ('unpack_sources', False),  # whl package instead of tar.gz because building with skbuild->cmake fails
+    ])),
+    ('xarray', '0.16.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '38e8439d6c91bcd5b7c0fca349daf8e0643ac68850c987262d53526e9d7d01e4')]),
+    ])),
+    ('arviz', '0.10.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dc1f08ce02459989dd4f41fa6012e736cf2ba00ee44b29bebe0a451c58a68e42')]),
+    ])),
+    ('pymc3', '3.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1bb2915e4a29877c681ead13932b0b7d276f7f496e9c3f09ba96b977c99caf00')]),
+    ])),
+    ('numexpr', '2.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b0d239d9827e1bcee08344fd05835823bc60aff97232e35a928214d03ff802b1')]),
+    ])),
+    ('ipythonblocks', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ba923cb7a003bddee755b5a7ac9e046ffc093a04b0bdede8a0a51ef900aed0ba')]),
+    ])),
+    ('pydub', '0.23.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'c362fa02da1eebd1d08bd47aa9b0102582dff7ca2269dbe9e043d228a0c1ea93')]),
+    ])),
+    ('multipledispatch', '0.6.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea')]),
+    ])),
+    ('partd', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '6e258bf0810701407ad1410d63d1a15cfd7b773fd9efe555dac6bb82cc8832b0')]),
+    ])),
+    ('locket', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1fee63c1153db602b50154684f5725564e63a0f6d09366a1cb13dffcec179fb4')]),
+    ])),
+    ('fsspec', '0.6.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'ffd7cd5ac32f36698097c3d78c2c433d4c12f7e4bce3a3a4036fd3491188046d')]),
+    ])),
+    ('datashape', '0.5.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2356ea690c3cf003c1468a243a9063144235de45b080b3652de4f3d44e57d783')]),
+    ])),
+    ('datashader', '0.11.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'b1f80415f72f92ccb660aaea7b2881ddd35d07254f7c44101709d42e819d6be6')]),
+    ])),
+    ('selenium', '3.141.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d')]),
+    ])),
+    ('graphviz', '0.13.2', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'graphviz-0.13.2.zip'),
+        ('checksums', [('sha256', '60acbeee346e8c14555821eab57dbf68a169e6c10bce40e83c1bf44f63a62a01')]),
+    ])),
+    ('vincent', '0.4.4', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '5765bcd360140d2304e52728ad1d4382f3f919ea259a13932828680f2d84fcd3')]),
+    ])),
+    ('tailer', '0.4.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '78d60f23a1b8a2d32f400b3c8c06b01142ac7841b75d8a1efcb33515877ba531')]),
+    ])),
+    # Dash
+    ('Flask-Compress', '1.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '468693f4ddd11ac6a41bca4eb5f94b071b763256d54136f77957cfee635badb3')]),
+    ])),
+    ('hiredis', '1.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '996021ef33e0f50b97ff2d6b5f422a0fe5577de21a8873b58a779a5ddd1c3132')]),
+    ])),
+    ('redis', '3.5.3', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2')]),
+    ])),
+    ('Flask-Caching', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a0356ad868b1d8ec2d0e675a6fe891c41303128f8904d5d79e180d8b3f952aff')]),
+    ])),
+    ('dash', '1.16.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'fdfe2a16c4041c7769e06e4e0eaaeb65cfd8351797ed4b37efe001384637b6c7')]),
+    ])),
+    ('dash_renderer', '1.8.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '736f8e0dcce244699457b54a2ee262a04baf389db1a8f54e98c949bb3e7e487f')]),
+    ])),
+    ('dash_core_components', '1.12.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '803b54d01ca48b90f3fc1652f7be9f818ed2882da8975a51b99fc2d77dd2727e')]),
+    ])),
+    ('dash_html_components', '1.1.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '2c662e640528c890aaa0fa23d48e51c4d13ce69a97841d856ddcaaf2c6a47be3')]),
+    ])),
+    ('dash_table', '4.10.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '1aa02180faef13434364286b60404d26164d1ce2779c765c9c52e6935991a4e9')]),
+    ])),
+    ('dash-bootstrap-components', '0.10.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '40500e692f59648dbc024b9e921a1e1410ee0bc97cfa963990e54e42523679b4')]),
+    ])),
+    ('dash_daq', '0.5.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a1d85b6799f7b885652fbc44aebdb58c41254616a8d350b943beeb42ade4256a')]),
+    ])),
+    ('dash_player', '0.0.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '46114910b497f35f1aa496ed8b9ff1457d07c96171227961b671ba4164c537a0')]),
+    ])),
+    ('dash_canvas', '0.1.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '72fcfb37e1c0f68c08f6fa6cf0b5be67ecc66fcfb5253231ffc450957b640b31')]),
+    ])),
+    ('dash_bio', '0.4.8', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'a6f480b060488ab9be26129562a7bcb491ef40ae0ffae46f499fb7d5997de06c')]),
+    ])),
+    ('dash_cytoscape', '0.2.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '0669c79c197e4b150a5db7a278d1c7acebc947f3f5cbad5274835ebb44f712cd')]),
+    ])),
+    ('ansi2html', '1.5.2', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '96ae85ae7b26b7da674d87de2870ba4d1964bca733ae4614587080b6358c3ba9')]),
+    ])),
+    ('jupyter-dash', '0.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'eb5eb42ec8cb5e3388d41d895b5ef6e66812e3345cb271cc374318a1a589e687')]),
+    ])),
+    # more
+    ('fastcore', '1.3.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '550c201f6a0f7001994898260588e3df310968165c43ecc4fa3062dd6eee5956')]),
+    ])),
+    ('fastscript', '1.0.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '67d2315a508ffd0499af590fffaa63d276ce6eaff73ffbd60eb3315ba38d08fa')]),
+    ])),
+    #   ('nbdev', '1.1.5', dict(list(local_common_opts.items()) + [
+    #       #   nbdev < 2 needs nbconvert < 6, will change with nbdev >= 2
+    #       ('checksums', [('sha256', '0ce349625514e2865bbc023db597d791c45b572a7bbc8a49b320a327b9e7b721')]),
+    #   ])),
+    ('PyJWT', '1.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96')]),
+        ('modulename', 'jwt'),
+    ])),
+    ('pyunicore', '0.9.5', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '10c091812d90e86f1371fe1373dada86be6afac41da44b762f0f5f86f9ddc3ae')]),
+    ])),
+
+    # misc
+    #    ('rpy2', '3.2.4', dict(list(local_common_opts.items()) + [
+    #        ('checksums', [('sha256', '3daf1a4b28c4e354ef989093f03b066908bf6e5082a6f4af72cc3fd928a28dc6')]),
+    #    ])),
+]
+
+local_jupyter_config_path = 'etc/jupyter'
+local_jupyter_path = 'share/jupyter'
+local_jupyterlab_dir = 'share/jupyter/lab'
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    #  search path to find installable data files, such as kernelspecs and notebook extensions
+    'JUPYTER_PATH': [local_jupyter_path],
+    'JUPYTERLAB_DIR': [local_jupyterlab_dir],
+    #  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',
+    'MKL_THREADING_LAYER': 'GNU',  # https://github.com/Theano/Theano/issues/6568
+}
+
+# Ensure that the user-specific $HOME/.local/share/jupyter is fist 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 = """
+prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
+prepend_path("JUPYTER_DATA_DIR", 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',
+
+    'echo "#!/bin/bash" > %(builddir)s/env.sh',
+    'echo "source %(installdir)s/bin/activate" >> %(builddir)s/env.sh',
+    (
+        'echo "export PYTHONPATH='
+        '%(installdir)s/lib/python3.8/site-packages:${EBROOTPYTHON}/lib/python3.8/site-packages:${PYTHONPATH}"'
+        ' >> %(builddir)s/env.sh'
+    ),
+    #  Jupyter Paths - http://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html
+    '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',
+
+    #  NodeJS packages
+    'source %(builddir)s/env.sh && npm install -g phantomjs-prebuilt@2.1.16',  # req. export_png/export_svg of bokeh
+
+    #  Jupyter Notebook Extensions
+    'source %(builddir)s/env.sh && jupyter contrib nbextension install --user',
+    'source %(builddir)s/env.sh && jupyter nbextensions_configurator enable --user',
+    'source %(builddir)s/env.sh && jupyter nbextension enable codefolding/main --user',
+
+    ('source %(builddir)s/env.sh && '
+     '    jupyter nbextension install widgetsnbextension --py --nbextensions=${JUPYTER_PATH}/nbextensions'),
+    'source %(builddir)s/env.sh && jupyter nbextension enable  widgetsnbextension --py --user',
+
+    'source %(builddir)s/env.sh && jupyter nbextension enable ipyvuetify --py --user',
+
+    'source %(builddir)s/env.sh && jupyter nbextension install rise --py --nbextensions=${JUPYTER_PATH}/nbextensions',
+    'source %(builddir)s/env.sh && jupyter nbextension enable  rise --py --user',
+
+    'source %(builddir)s/env.sh && jupyter nbextension     enable appmode --py --user',
+    'source %(builddir)s/env.sh && jupyter serverextension enable appmode --py',
+
+    #  Jupyter Notebook Extensions
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyter-widgets/jupyterlab-manager@2.0.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyter-widgets/jupyterlab-sidecar@0.5.0 --no-build',
+
+    # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/server-proxy@2.1.1 --no-build',
+    ('source %(builddir)s/env.sh && '
+     '  cd %(builddir)s/jupyterserverproxy/jupyter-server-proxy-1.5.2/jupyterlab-server-proxy/ && '
+     '    npm install && '                             # install npm package dependencies incurrent directory
+     '    npm run build && '                           # optional build step if using TypeScript, babel, etc.
+     '    jupyter labextension install --no-build'),   # install the current directory as an extension'
+    # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/github@2.0.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/latex@2.0.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/git@0.23.3 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/toc@4.0.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-datawidgets@6.3.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-plotly@4.14.3 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-gitlab@2.0.0 --no-build',
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab_iframe@0.2.2 --no-build',
+
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-lmod@0.8.1 --no-build',
+    #  this might interfer with Xpra-icon: https://github.com/cmd-ntrf/jupyter-lmod/issues/30
+    ('source %(builddir)s/env.sh && '
+     '  cd %(builddir)s/jupyterlmod/jupyter-lmod-2.0.2/jupyterlab/ && '
+     '    npm install && '                            # install npm package dependencies incurrent directory
+     '    npm run build && '                          # optional build step if using TypeScript, babel, etc.
+     '    jupyter labextension install --no-build'),  # install the current directory as an extension
+
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-nvdashboard@0.4.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-dash@0.4.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-topbar-extension@0.5.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-system-monitor@0.6.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-theme-toggle@0.5.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-control@1.1.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-favorites@2.0.0 --no-build',
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-slurm@2.0.0 --no-build',
+
+    #   store default in ../share/jupyter/lab/schemas/jupyterlab-favorites/favorites.json
+    # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-tour@2.1.1 --no-build',
+    #   tour-state on/off is saved in workspace-file in ~/.jupyter/lab/workspaces/
+
+    # respect the version lookup table at https://github.com/matplotlib/ipympl 
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-matplotlib@0.7.4 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-leaflet@0.13.3 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-threejs@2.2.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jupyter-vuetify@1.6.1 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install nbdime-jupyterlab@2.0.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install dask-labextension@3.0.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install ipyvolume@0.6.0-alpha.5 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install plotlywidget@4.14.3 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install bqplot@0.5.22 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install dicom-upload@0.2.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install jsfileupload@0.2.0 --no-build',
+
+    # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/hdf5@0.5.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @ijmbarr/jupyterlab_spellchecker@0.2.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @pyviz/jupyterlab_pyviz@1.0.4 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @bokeh/jupyter_bokeh@2.0.4 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @jupyter-voila/jupyterlab-preview@1.1.0 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install @parente/jupyterlab-quickopen@0.5.0 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install @ryantam626/jupyterlab_code_formatter@1.3.8 --no-build',
+    ('source %(builddir)s/env.sh && '
+     '    jupyter labextension install @krassowski/jupyterlab_go_to_definition@1.0.0 --no-build'),
+    'source %(builddir)s/env.sh && jupyter labextension install @krassowski/jupyterlab-lsp@2.1.3 --no-build',
+
+    'source %(builddir)s/env.sh && jupyter labextension install pvlink@0.3.1 --no-build',
+    'source %(builddir)s/env.sh && jupyter labextension install itkwidgets@0.32.0 --no-build',
+
+    #  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
+
+    #  jupyterlab server extensions
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyter_server_proxy --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_code_formatter --py',
+    # 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_sql --py',
+    # 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_iframe --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_git --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable jupyter_lsp --py',
+    'source %(builddir)s/env.sh && jupyter serverextension enable dask_labextension --py',
+
+    #  configure jupyterlab extensions
+
+    #  Send2Trash
+    #  disable
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        'c.FileContentsManager.delete_to_trash = False\n'
+        'EOF'
+    ),
+
+    #  GitLab-extension
+    #  for security reasons access-token must be set in the server extension:
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        '# no username+password needed, if repo is public or we have the token for a specific URL\n'
+        '# c.GitLabConfig.access_token = "<API-TOKEN>"\n'
+        '# c.GitLabConfig.allow_client_side_access_token = False\n'
+        'c.GitLabConfig.url = "https://gitlab.version.fz-juelich.de"\n'
+        'c.GitLabConfig.validate_cert = True\n'
+        'EOF'
+    ),
+
+    #  GitHub-extension
+    #  for security reasons access-token must be set in the server extension:
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        '# no username+password needed, if repo is public or we have the token for a specific URL\n'
+        '# c.GitHubConfig.access_token = "<API-TOKEN>"\n'
+        '# c.GitHubConfig.allow_client_side_access_token = False\n'
+        'c.GitHubConfig.url = "https://github.com"\n'
+        'c.GitHubConfig.validate_cert = True\n'
+        'EOF'
+    ),
+
+    #  iframe-extension
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        '# c.JupyterLabIFrame.iframes = [\'list\', \'of\', \'sites\']\n'
+        'c.JupyterLabIFrame.welcome = "http://www.fz-juelich.de/jsc"\n'
+        'EOF'
+    ),
+
+    #  define .ipynb_checkpoints permissions
+    (
+        '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n'
+        'c.FileCheckpoints.checkpoint_permissions = 0o664\n'
+        'c.FileCheckpoints.restore_permissions = 0o644\n'
+        'c.FileCheckpoints.checkpoint_dir_umask = 0o002\n'
+        'EOF'
+    ),
+
+    #  modify the installation files, which would be overwritten if done before (must be last commands to run)
+    (
+        'cp %(builddir)s/jupyterlabgitlab/jupyterlab-gitlab-2.0.0/schema/drive.json'
+        '   %(installdir)s/share/jupyter/lab/schemas/jupyterlab-gitlab/drive.json'
+    ),
+
+    #  Add the overrides file
+    (
+        '{ cat > %(builddir)s/file_jupyter-overrides_jsc.patch; } << \'EOF\'\n'
+        'diff -Naur share.orig/jupyter/lab/settings/overrides.json share/jupyter/lab/settings/overrides.json\n'
+        '--- share.orig/jupyter/lab/settings/overrides.json      1970-01-01 01:00:00.000000000 +0100\n'
+        '+++ share/jupyter/lab/settings/overrides.json   2019-11-26 13:40:46.560731000 +0100\n'
+        '@@ -0,0 +1,8 @@\n'
+        '+{\n'
+        '+    "jupyterlab-gitlab:drive": {\n'
+        '+        "baseUrl": "https://gitlab.version.fz-juelich.de"\n'
+        '+    },\n'
+        '+    "@parente/jupyterlab-quickopen:plugin": {\n'
+        '+        "relativeSearch": true\n'
+        '+    }\n'
+        '+}\n'
+        'EOF'
+    ),
+    'patch -p0 -d %(installdir)s < %(builddir)s/file_jupyter-overrides_jsc.patch',
+
+    # 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 notebook list --json | grep $JLAB_PID | '
+        'awk \'{for(i=1;i<=NF;i++)if($i=="\\"port\\":")print $(i+1)}\' | sed \'s/,*$//g\' | '
+        'xargs -i jupyter notebook 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 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*',
+
+    #  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 ...../2020/software/Python/3.8.5-GCCcore-9.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/JupyterCollection/JupyterCollection-2020.2.6-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.6-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
new file mode 100644
index 0000000000000000000000000000000000000000..7dec1ebab970abd62d23238e23c261f1d4aaa801
--- /dev/null
+++ b/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.6-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb
@@ -0,0 +1,35 @@
+easyblock = 'Bundle'
+
+name = 'JupyterCollection'
+version = '2020.2.6'
+
+local_pysuffix = '-Python-3.8.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.
+"""
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+
+dependencies = [
+    ('JupyterProxy-XpraHTML5',       '0.3.0', '-' + version),
+    #  ('JupyterProxy-Matlab',          '0.1.0', '-' + version),
+    ('JupyterKernel-Bash',           '0.7.1', '-' + version),
+    ('JupyterKernel-Cling',          '0.7',   '-' + version),
+    ('JupyterKernel-JavaScript',     '5.2.0', '-' + version),
+    ('JupyterKernel-Julia',          '1.5.2', '-' + version),
+    ('JupyterKernel-Octave',         '6.1.0', '-' + version),
+    ('JupyterKernel-PyParaView',     '5.8.1', '-' + version),
+    ('JupyterKernel-PyQuantum',      '1.1',   '-' + version),
+    ('JupyterKernel-PyDeepLearning', '1.0',   '-' + version),
+    ('JupyterKernel-R',              '4.0.2', '-' + version),
+    ('JupyterKernel-Ruby',           '2.7.1', '-' + version),
+    ('Jupyter', version, local_pysuffix),
+]
+
+skipsteps = ['configure', 'build', 'install', 'sanity_check']
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..b5b38519821c620b7458952b7791f196a48f98ff
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,98 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Bash'
+version = '0.7.1'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_defaultclass = 'PythonPackage'
+exts_filter = ('python -c "import %(ext_name)s"', '')
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+exts_list = [
+    # 0.7.2 fails with BackendUnavailable. Might be fixable --no-use-pep517
+    ('bash_kernel', '0.7.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '29f895819e076e3f225e37034b70b5265a559e2964e020c942024f51ea6153e8')]),
+        ('use_pip',  True),
+    ])),
+]
+
+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: 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 %(installdir)s/pyvenv.cfg',
+    'rm -r %(installdir)s/bin',
+]
+
+# 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-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..d0fd550e250dc3d550ccb2243e2bbed5cc3e467b
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,93 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Cling'
+version = '0.7'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('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 ${EBROOTCLING}/share/cling/Jupyter/kernel',
+    (
+        'source %(builddir)s/env.sh && '
+        '    jupyter-kernelspec install --prefix=%(installdir)s ${EBROOTCLING}/share/cling/Jupyter/kernel/cling-cpp17'
+    ),
+
+    # 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 %(installdir)s/pyvenv.cfg',
+    'rm %(installdir)s/bin/python',
+    'rm %(installdir)s/bin/python3',
+    'rm %(installdir)s/bin/activate',
+    'rm %(installdir)s/bin/activate*',
+    'rm %(installdir)s/bin/easy_install*',
+    'rm %(installdir)s/bin/pip*',
+]
+
+# 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/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-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..93841d50ef45ff696936b1227f04cc49c4ba1ba1
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,70 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-JavaScript'
+version = '5.2.0'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-3.8.5'
+
+homepage = 'https://www.npmjs.com/package/ijavascript'
+description = """
+Native JavaScript kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_jupyter_path = 'share/jupyter'
+
+modextrapaths = {
+    'NODE_PATH': ['lib/node_modules'],  # npm´s search path to extra modules
+    '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 = [
+    (
+        '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
+        '#!/bin/bash\n'
+        'export PATH=%%(installdir)s/bin:${PATH}\n'
+        'export NODE_PATH=%%(installdir)s/lib/node_modules\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_jupyter_path),
+
+    'source %(builddir)s/env.sh && npm install ijavascript@5.2.0 -g --prefix %(installdir)s',
+    # installs ijavascript in $JUPYTER_DATA_DIR/kernels
+    'source %(builddir)s/env.sh && ijsinstall --install=local',
+    'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
+]
+
+# 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/javascript/kernel.json',
+    ],
+    'dirs': [
+        'lib/node_modules/',
+        'share/jupyter/kernels/javascript/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..e8addb10368bb9ab9dd1dc9f0864ca2755bfbbeb
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,117 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Julia'
+version = '1.5.2'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('Julia', version),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_defaultclass = 'PythonPackage'
+exts_filter = ('python -c "import %(ext_name)s"', '')
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+exts_list = [
+    ('julia', '0.5.6', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '378d0377f75bb0e3bfc4cce19a56d3bf5a9a7be38e370e3a7cf3359bf4cd0378')]),
+        ('use_pip',  True),
+    ])),
+]
+
+local_jupyter_path = 'share/jupyter'
+local_julia_depot_path = "%(installdir)s/share/julia/site/"  # for Julia packages needed for Jupyter
+
+modextrapaths = {
+    'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
+    'JUPYTER_PATH': ['share/jupyter'],  # add search path for kernelspecs
+}
+
+modextravars = {
+    'JULIA_DEPOT_PATH': local_julia_depot_path,
+}
+
+# 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 JULIA_DEPOT_PATH=%s\n'
+        'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
+        'EOF'
+    ) % (local_julia_depot_path, local_jupyter_path),
+
+    # installs ijulia in JULIA_DEPOT_PATH and kernel in $JUPYTER_DATA_DIR/kernels
+    'source %(builddir)s/env.sh && julia -e \'using Pkg; Pkg.add("IJulia"); Pkg.build("IJulia")\'',
+
+    # to trigger the precompilation
+    'source %(builddir)s/env.sh && julia -e \'using IJulia\'',
+
+    # adjust permissions of precompiled files
+    'for i in $(find %s); do chmod +r $i; done' % local_julia_depot_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 %(installdir)s/pyvenv.cfg',
+    'rm %(installdir)s/bin/python',
+    'rm %(installdir)s/bin/python3',
+    'rm %(installdir)s/bin/activate',
+    'rm %(installdir)s/bin/activate*',
+    'rm %(installdir)s/bin/easy_install*',
+    'rm %(installdir)s/bin/pip*',
+]
+
+# 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-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..8604c0b521d5c9fc9c1bd3a0c87a4cc489552b02
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,138 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Octave'
+version = '6.1.0'
+local_octavever = '6.1.0'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Octave', local_octavever, '-nompi'),  # ensure it is available
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    # no dependency to Octave as it is loaded in kernel.sh
+]
+
+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 Stages/2020
+    'source %(builddir)s/env.sh && pip3 install ipykernel ',
+    'rm -rf %(installdir)s/share/jupyter/kernels/',  # remove any kernel installed by ipykernel
+    'source %(builddir)s/env.sh && pip3 install ipyparallel ',
+
+    # install Python package octave_kernel
+    'source %(builddir)s/env.sh && pip3 install octave_kernel==0.32.0 ',
+
+    # 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 use \$OTHERSTAGES \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCC/9.3.0 \n'
+        '\n' \
+        'module load Python/%%(pyver)s \n'
+        'module load Jupyter/%s%s \n'
+        'module load Octave/%s-nompi \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_pysuffix, 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 %(installdir)s/pyvenv.cfg',
+    'rm -r %(installdir)s/bin',
+]
+
+# 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': [
+        'lib/python%(pyshortver)s/site-packages',
+        'share/jupyter/kernels/octave/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterKernel-PyDeepLearning/JupyterKernel-PyDeepLearning-1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-PyDeepLearning/JupyterKernel-PyDeepLearning-1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..c80337c195b12e7c6ff9096758e511af6b17dec2
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyDeepLearning/JupyterKernel-PyDeepLearning-1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,153 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyDeepLearning'
+version = '1.0'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+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.
+"""
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    # just ensure they exist
+    ('FFmpeg', '4.3.1'),
+    ('OpenCV', '4.5.0', local_pysuffix),
+    ('TensorFlow', '2.3.1', local_pysuffix),
+    ('PyTorch', '1.7.0', local_pysuffix),
+    ('OpenAI-Gym', '0.18.0', local_pysuffix),
+    # ('Horovod', '0.20.3', local_pysuffix, ('gomkl', '2020')),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+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"},
+        ],
+    }),
+]
+
+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 = [
+    ('lmdb', '1.1.1', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '165cd1669b29b16c2d5cc8902b90fede15a7ee475c54d466f1444877a3f511ac')]),
+    ])),
+    ('gviz_api', '1.9.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', '43d13ccc21834d0501b33a291ef3265e933dbb4bbdca3d34b1ed0a048c0ef640')]),
+    ])),
+    ('tensorboard_plugin_profile', '2.4.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'dfbf254ee960440e3b2518324f876a6d6704c60b936887d99214fa36988a206a')]),
+    ])),
+    ('tensorflow_hub', '0.11.0', dict(list(local_common_opts.items()) + [
+        ('source_tmpl', 'tensorflow_hub-0.11.0-py2.py3-none-any.whl'),
+        ('checksums', [('sha256', '19399a8abef10682b4f739a5aa78b43da3937df17f5d2afb0547945798787674')]),
+        ('unpack_sources', False),
+        ('modulename', False),  # skip sanity check as it 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 && '
+        '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),
+
+    # 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 use \$OTHERSTAGES \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCC/9.3.0 \n'
+        'module load OpenMPI \n'
+        'module load Horovod/0.20.3-Python-3.8.5 \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'
+        '}\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-PyDeepLearning/logo-128x128.png.base64 b/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-128x128.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..a45503592a47dc32687b032e19bd6f54555db86e
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-128x128.png.base64
@@ -0,0 +1,164 @@
+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
diff --git a/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-32x32.png.base64 b/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-32x32.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..598dc9165fe7f0925294b30f193892219c6f0545
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-32x32.png.base64
@@ -0,0 +1,24 @@
+iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
+WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QIGDS0sz9yJcgAAAB1pVFh0Q29tbWVudAAAAAAAQ3Jl
+YXRlZCB3aXRoIEdJTVBkLmUHAAAEtUlEQVRYw8XXf6ifVR0H8Nd5vrvb6Eort7HOvckoytAFAxM0
+ZNpiWX+I/fpDqp27MaEIwjkVtRQjjWUzGIGlaNh2nyhKaOZCilbzB3OMJmVz0Ia2yrWzldW0/WD3
+7vs9/XEfr997d+/d9DJ24OF5zjmf8/m8z+f3w3TGYO5X55unw6IyvTGEg+cSwH+weToMZpwxZZ0r
+XKpYLHgNO3QcF3we688ugDrPwNexRyhbCb24TuVVnJiA/j1Yit1S3DE9ABsOzMAAfiXFbV07z6vz
+ahwf55hz8GWdzgOq6lp1bktx51vzgcG8RCvchwtHhde5V53f1lD8Fq0xZ4KF2GVF/z6lPIcFb80J
+6/wxwWIprkFP184HsRyU8t9TtVj24RJ1vl0In1Q8q84tdZ6nzq0zM8EPXwq4Roqrm5Vj6twrxaNS
+3KHOfeq8jvIihsceDrfjYZ3Ofiv6X2suczeO4B342liFTXz7KzBfio8186vxAXxfiu0uukvxYTzS
+rCzHS1Lc0uxf35jgT1L8ZcPnuBSfOZ0JzsP/GiafxiK8gLXqfEsX3QH041al3IqhLuEfxWzFo7jI
+j3IPLmxyxxQmGLnVUgw2K0ukeFPzvXWsuRG8LMXvTRC2nzFstVWxrc7bFXfid1LcPbkJ6jwL67ps
+P5mD9igC5gm+gt3YRrlc8bwQvoBNUnzuzSaiT+AnTQguwyEDcdc44TdhvqCDDv5ueOinqllF6BwU
+wrB2e62V7z42eubBHPS6oQnZ9VIsk/nAh5rbMBC3CK5S58u6hH8D26X4VSnegacwbNXCk1qlqKoT
+Qiiq6rg6V036pteNeErxBG6eSgPvdOzfR7rmW7BSnS/CxXhcitu79ndjmTrfhX3YgUua9c+io84j
+fFP8Y3OJL04FYMjsuTNxwsZ/zMQybKL8VerbMIbykYMtpRTBfine37Wzt3nv6tLcUnX+ZuO2m6cC
+8KLKQuxVVVfhSSm+MC499wluUcpDlFcIF6jzCjyNK/AHDOi4x4o4os0Ut6rzM833yakA7GyY7JXi
+byZ02+BGpdxpoO+Y+sBcvCyodRDsRxuPqVyP774RsoWBvpNT14IUf4/Fo2obzB/pUuN7m/brXwb6
+Rjy8hJFLtDuzlFLRaUmxM+ondb68ed8rhNvUeZ37c3W6WvA6yicF31HnDt6Pt+MHY3N/mUuYr6o+
+NZIHwhqsAW0PaFmrzsuwTYqb1flqcyxpomeSWlDne7XdZWUcaqrXl5CluGlMpRxx0FfwqhQfatY/
+jndJcWMzP08p/UL4nNK+T2itxs+l+OepasGzWq5sTNLG+8YJX4xFUrwNGzC7y4S/xgXqvKiZHzHQ
+twc/Flo34Bfdwic2QYqPq/Pd6ny46WQ6p0TKyEMpPUIo4/YfxBp1Poy/SfFnUtyLb515QxLcgyVN
+5mNDntkF8KgUjzaE/af2A03/wMOYNeqIb6ojWh6Hpbhex7fxtJY0CdBrJtBQH/ZL8TD+gnlTAQhn
+2BWvwvlNqj3UNCdX4glcPEE5fr1nWIA7pDg0PQBvtNqXNeG4BzsVcwTXSfHU/4LBAwucDP+0KhZn
+bQzmGeo851z+mp2Pa88lgJ7TOdnZBnCIsnE6DP4PRyPEcw8t2PkAAAAASUVORK5CYII=
diff --git a/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-64x64.png.base64 b/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-64x64.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..769950452970288b5c15603ea996c8f56a9bb58f
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyDeepLearning/logo-64x64.png.base64
@@ -0,0 +1,63 @@
+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
+/cDmGnd36/sAAAAASUVORK5CYII=
diff --git a/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..4c2d4960cf73a2d1b61447270f83976056828b09
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,134 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyParaView'
+version = '5.8.1'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+homepage = 'https://www.paraview.org'
+description = """
+Special ParaView kernel for Jupyter.
+Project Jupyter exists to develop open-source software, open-standards, and services
+for interactive computing across dozens of programming languages.
+"""
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    # ('ParaView', version, '-EGL' + local_pysuffix, ('gpsmkl', '2020')),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+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"},
+        ],
+    }),
+]
+
+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 = 'pyparaview'
+local_kernel_name = 'PyParaView-%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 && '
+        '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),
+
+    # 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 use \$OTHERSTAGES \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCC/9.3.0 \n'
+        'module load ParaStationMPI \n'
+        'module load %s/.%s%s \n'
+        '\n'
+        'module load ParaView/%s-EGL%s \n'
+        'module unload VTK \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,
+         version, local_pysuffix),
+    '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'
+        '}\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-PyParaView/logo-128x128.png.base64 b/Golden_Repo/j/JupyterKernel-PyParaView/logo-128x128.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..eb55970852c1f47ac4e00c4eb99e1062ac942be8
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyParaView/logo-128x128.png.base64
@@ -0,0 +1,229 @@
+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
+QmCC
diff --git a/Golden_Repo/j/JupyterKernel-PyParaView/logo-32x32.png.base64 b/Golden_Repo/j/JupyterKernel-PyParaView/logo-32x32.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..3d6f3a3f2a8931f26edf0d2a36ad63722254eef6
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyParaView/logo-32x32.png.base64
@@ -0,0 +1,30 @@
+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
diff --git a/Golden_Repo/j/JupyterKernel-PyParaView/logo-64x64.png.base64 b/Golden_Repo/j/JupyterKernel-PyParaView/logo-64x64.png.base64
new file mode 100644
index 0000000000000000000000000000000000000000..3803d73352011e8d0bad7eaf26d19920a1e09ea7
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyParaView/logo-64x64.png.base64
@@ -0,0 +1,79 @@
+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
+RU5ErkJggg==
diff --git a/Golden_Repo/j/JupyterKernel-PyQuantum/JupyterKernel-PyQuantum-1.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-PyQuantum/JupyterKernel-PyQuantum-1.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9f1707ccc4011ca047fec9d27b8a2468f2e66d94
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-PyQuantum/JupyterKernel-PyQuantum-1.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,135 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterKernel-PyQuantum'
+version = '1.1'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-%(pyver)s'
+
+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.
+"""
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('Cirq', '0.9.1', local_pysuffix),
+    ('DWave', '3.2.0', local_pysuffix),
+    ('PyQuil', '2.27.0', local_pysuffix),
+    # ('Qiskit', '0.23.5', local_pysuffix, ('gpsmkl', '2020')),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+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"},
+        ],
+    }),
+]
+
+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_dir = 'pyquantum'
+local_kernel_name = 'PyQuantum-%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 && '
+        '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),
+
+    # 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 use \$OTHERSTAGES \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCC/9.3.0 \n'
+        'module load ParaStationMPI \n'
+        'module load Qiskit/0.23.5-Python-3.8.5 \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'
+        '}\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-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..fd59da64e06d6990887caf446fdfbee746cb2d61
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,113 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-R'
+version = '4.0.2'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-3.8.5'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('R', version, '-nompi'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+]
+
+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 use $OTHERSTAGES && '
+        'module load Stages/${STAGE} && '
+        'module load GCCcore/.9.3.0 && '
+        'module load Jupyter/%s%s && '
+        'module load R/%s-nompi && '
+        '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, local_pysuffix, 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 use \$OTHERSTAGES \n'
+        'module load Stages/\${STAGE} \n'
+        'module load GCCcore/.9.3.0 \n'
+        'module load R/%s-nompi \n'
+        '\n'
+        'exec \${EBROOTR}/lib64/R/bin/R "\$@"\n'
+        '\n'
+        'EOF'
+    ) % (local_kernel_dir, 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-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..0bacdd8cc6582a6ef13de9d9f70aa3b88335ec9f
--- /dev/null
+++ b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,65 @@
+easyblock = 'Bundle'
+
+name = 'JupyterKernel-Ruby'
+version = '2.7.1'
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+local_pysuffix = '-Python-3.8.5'
+
+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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python',  '3.8.5'),
+    ('Jupyter', local_jupyterver, local_pysuffix),
+    ('Ruby',    '2.7.1'),
+]
+
+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',
+]
+
+# 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/ruby/kernel.json',
+    ],
+    'dirs': [
+        'share/jupyter/kernels/ruby/',
+    ],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterProxy-Matlab/JupyterProxy-Matlab-0.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterProxy-Matlab/JupyterProxy-Matlab-0.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9ff94876492897b9c64d0d1a12145d11c6339ce3
--- /dev/null
+++ b/Golden_Repo/j/JupyterProxy-Matlab/JupyterProxy-Matlab-0.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,52 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterProxy-Matlab'
+version = '0.1.0'
+
+local_jupyterver = '2020.2.6'
+versionsuffix = '-' + local_jupyterver
+
+homepage = ''
+description = """
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, '-Python-%(pyver)s'),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_list = [
+    ('jupyter-matlab-proxy', '0.1.0', dict(list(local_common_opts.items()) + [
+        ('source_urls', ['https://github.com/mathworks/jupyter-matlab-proxy/archive/']),
+        ('source_tmpl', '%(version)s.tar.gz'),
+        ('checksums', [('sha256', '4be1f317681cb1ec5e24ee0bad82e4c8317026edb2b29c4bb4176173cd7eb623')]),
+    ])),
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'
diff --git a/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
new file mode 100644
index 0000000000000000000000000000000000000000..cdab28fc4b211bff7e0511b2766a9944f7466863
--- /dev/null
+++ b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb
@@ -0,0 +1,86 @@
+easyblock = 'PythonBundle'
+
+name = 'JupyterProxy-XpraHTML5'
+version = '0.3.0'
+
+local_jupyterver = '2020.2.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.
+"""
+
+site_contacts = 'j.goebbert@fz-juelich.de'
+
+toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
+toolchainopts = {'pic': True}
+
+builddependencies = [
+    ('binutils', '2.34'),
+    ('xpra', '4.0.4', '-Python-%(pyver)s'),  # check for existance
+    ('jsc-xdg-menu', '2020.4'),  # check for existance
+]
+
+dependencies = [
+    ('Python', '3.8.5'),
+    ('Jupyter', local_jupyterver, '-Python-%(pyver)s'),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'download_dep_fail': True,
+    'source_urls': [PYPI_SOURCE],
+    'use_pip': True,
+}
+
+local_common_opts = {
+    'req_py_majver': '3',
+    'req_py_minver': '0'
+}
+
+exts_list = [
+    ('jupyter-xprahtml5-proxy', '0.3.0', dict(list(local_common_opts.items()) + [
+        ('checksums', [('sha256', 'db852682e8e366091e6a3984b60ac3d2e6b3197be2ef074440c11cb09e23b80b')]),
+        ('source_urls', ['https://github.com/FZJ-JSC/jupyter-xprahtml5-proxy/archive/']),
+        ('source_tmpl', 'v0.3.0_devel.tar.gz'),
+        ('modulename', 'jupyter_xprahtml5_proxy'),
+    ])),
+]
+
+postinstallcmds = [
+    # write launch_xpra.sh
+    (
+        '{ cat > %(installdir)s/lib/python%(pyshortver)s/'
+        'site-packages/jupyter_xprahtml5_proxy/share/launch_xpra.sh; } << EOF \n'
+        '#!/bin/bash \n'
+        '\n'
+        '# Load required modules \n'
+        'module purge \n'
+        'module use \$OTHERSTAGES \n'
+        'module load Stages/${STAGE} \n'
+        'module load GCCcore/.9.3.0 \n'
+        'module load xpra/4.0.4-Python-3.8.5 \n'
+        'module load jsc-xdg-menu/.2020.4 \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/share/launch_xpra.sh'
+]
+
+sanity_check_paths = {
+    'files': [],
+    'dirs': ['lib/python%(pyshortver)s/site-packages'],
+}
+
+moduleclass = 'tools'