{ config, pkgs, lib, ... }: { services.jupyterhub = { enable = true; port = 6501; # https://github.com/jupyterhub/systemdspawner # Configuration options defined ^ extraConfig = '' c.SystemdSpawner.mem_limit = '2G' c.SystemdSpawner.cpu_limit = 1.0 ''; kernels = { python3 = let env = (pkgs.python3.withPackages (pythonPackages: with pythonPackages; [ # Necessary for use as a kernel ipykernel # Common Python Libraries numpy scipy scikit-learn pandas matplotlib seaborn # Neural Data Processing Libraries # Temporarily broken?: https://github.com/NixOS/nixpkgs/issues/259812 # mne-python nibabel neo # Neurosimulators neuronpy nest brian2 ])); in { displayName = "Python 3 for Computational Neuroscience"; argv = [ "${env.interpreter}" "-m" "ipykernel_launcher" "-f" "{connection_file}" ]; language = "python"; logo32 = "${env}/${env.sitePackages}/ipykernel/resources/logo-32x32.png"; logo64 = "${env}/${env.sitePackages}/ipykernel/resources/logo-64x64.png"; }; }; }; services.caddy.virtualHosts = { "jupyter.ws.kcnhub.com" = { extraConfig = '' reverse_proxy 127.0.0.1:${toString config.services.jupyterhub.port} ''; }; }; }