mirror of
https://github.com/aviallon/nixos-lib.git
synced 2026-04-05 17:27:50 +00:00
68 lines
1.5 KiB
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;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|