70 lines
1.7 KiB
Nix
70 lines
1.7 KiB
Nix
|
{ pkgs, lib, config, ... }: {
|
||
|
|
||
|
services.jupyter = {
|
||
|
enable = true;
|
||
|
ip = "0.0.0.0";
|
||
|
#In [1]: from notebook.auth import passwd
|
||
|
#In [2]: passwd('test')
|
||
|
#Out[2]: 'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'
|
||
|
#NOTE: you need to keep the single quote inside nix string.
|
||
|
password = "'sha1:1b961dc713fb:88483270a63e57d18d43cf337e629539de1436ba'";
|
||
|
kernels = {
|
||
|
python3 = let
|
||
|
env = (pkgs.python3.withPackages (pythonPackages:
|
||
|
with pythonPackages; [
|
||
|
ipykernel
|
||
|
pandas
|
||
|
|
||
|
# database stuff
|
||
|
mysqlclient
|
||
|
databases
|
||
|
asyncpg
|
||
|
psycopg2
|
||
|
aiomysql
|
||
|
pymysql
|
||
|
aiosqlite
|
||
|
#aiopg
|
||
|
sqlalchemy
|
||
|
|
||
|
# pdf export
|
||
|
nbconvert
|
||
|
]));
|
||
|
in {
|
||
|
displayName = "Python 3";
|
||
|
argv = [
|
||
|
"${env.interpreter}"
|
||
|
"-m"
|
||
|
"ipykernel_launcher"
|
||
|
"-f"
|
||
|
"{connection_file}"
|
||
|
];
|
||
|
language = "python";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
# to generate pdfs and such
|
||
|
environment.systemPackages = [ pkgs.pandoc ];
|
||
|
|
||
|
backup.dirs = [ "/var/lib/jupyter" ];
|
||
|
backup.exclude =
|
||
|
[ "/var/lib/jupyter/.local" "/var/lib/jupyter/.ipynb_checkpoints" ];
|
||
|
|
||
|
services.nginx = {
|
||
|
enable = true;
|
||
|
statusPage = true;
|
||
|
virtualHosts = {
|
||
|
"python.${config.networking.hostName}.private" = {
|
||
|
serverAliases = [ "jupyter.${config.networking.hostName}.private" ];
|
||
|
locations."/" = {
|
||
|
proxyWebsockets = true;
|
||
|
proxyPass = "http://${config.networking.hostName}.private:${
|
||
|
toString config.services.jupyter.port
|
||
|
}";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
}
|