nixos-lib/services/jupyterhub.nix

68 lines
1.5 KiB
Nix

{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.services.jupyterhub;
in
{
options.aviallon.services.jupyterhub = {
enable = mkEnableOption "Jupyterhub server with Python 3 kernel";
};
config = mkIf cfg.enable {
services.jupyterhub = {
enable = true;
kernels.python3 =
let
env = (
pkgs.python3.withPackages (
pythonPackages: with pythonPackages; [
ipykernel
pandas
scikit-learn
pyspark
matplotlib
numpy
pip
]
)
);
in
{
displayName = "Python 3 for machine learning";
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.nginx = {
enable = true;
};
services.nginx.virtualHosts = {
"jupyterhub.localhost" = {
listen = [
{
addr = "0.0.0.0";
port = 80;
}
];
locations."/" = {
proxyPass = "http://localhost:${toString config.services.jupyterhub.port}";
proxyWebsockets = true;
};
};
};
};
}