JupyterHub: Added MATLAB Kernel & Web App
parent
fca8aacba7
commit
4d186c69bc
|
@ -134,11 +134,17 @@ in {
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
inherit MATLAB_INSTALL_DIR;
|
inherit MATLAB_INSTALL_DIR;
|
||||||
};
|
};
|
||||||
environment.systemPackages = (with nix-matlab.packages.x86_64-linux; [
|
nixpkgs.overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
inherit matlab-update-script;
|
||||||
|
matlab = (matlab-run "matlab");
|
||||||
|
matlab-mex = (matlab-run "mex");
|
||||||
|
})
|
||||||
|
];
|
||||||
|
environment.systemPackages =(with pkgs; [
|
||||||
matlab-update-script
|
matlab-update-script
|
||||||
(matlab-run "matlab")
|
matlab
|
||||||
(matlab-run "mex")
|
matlab-mex
|
||||||
]) ++ (with pkgs; [
|
|
||||||
octaveFull
|
octaveFull
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,161 @@
|
||||||
{ config, pkgs, lib, ... }: {
|
{ config, pkgs, lib, ... }: let
|
||||||
|
aiomcache = pkgs.python3.pkgs.buildPythonPackage rec {
|
||||||
|
pname = "aio-memcache";
|
||||||
|
version = "0.8.1";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "aio-libs";
|
||||||
|
repo = "aiomcache";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-oRMN1seEjFSsq4wjkIXHM7Osq8y/5WFExGCEr6eM9vc=";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
python-memcached
|
||||||
|
];
|
||||||
|
|
||||||
|
# Networking required
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
aiohttp-session = pkgs.python3.pkgs.buildPythonPackage rec {
|
||||||
|
pname = "aiohttp-session";
|
||||||
|
version = "2.12.0";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "aio-libs";
|
||||||
|
repo = "aiohttp-session";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-7MNah4OIQnoxLoZkLOdeu5uCwSyPMhc6Wsht8dFconc=";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
aiohttp
|
||||||
|
aiomcache
|
||||||
|
cryptography
|
||||||
|
multidict
|
||||||
|
pynacl
|
||||||
|
redis
|
||||||
|
yarl
|
||||||
|
];
|
||||||
|
|
||||||
|
# Checks require networking
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
matlab-proxy = pkgs.python3.pkgs.buildPythonPackage rec {
|
||||||
|
pname = "matlab_proxy";
|
||||||
|
version = "0.12.1";
|
||||||
|
format = "wheel";
|
||||||
|
src = pkgs.python3.pkgs.fetchPypi {
|
||||||
|
inherit pname version format;
|
||||||
|
dist = "py3";
|
||||||
|
python = "py3";
|
||||||
|
hash = "sha256-TDZUJEXJYF5Vh2BG5o13H3wdh/WdVdoESXqL89ckc6I=";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
aiohttp
|
||||||
|
aiohttp-session
|
||||||
|
psutil
|
||||||
|
|
||||||
|
# For Xvfb, for plots and graphics
|
||||||
|
pkgs.xorg.xorgserver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
simpervisor = pkgs.python3.pkgs.buildPythonPackage rec {
|
||||||
|
pname = "simpervisor";
|
||||||
|
version = "1.0.0";
|
||||||
|
format = "pyproject";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "jupyterhub";
|
||||||
|
repo = "simpervisor";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-73vkiQtOT0M9Vww1nYZ76JR2koWt/NPIav46k1fHOzc=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
hatchling
|
||||||
|
];
|
||||||
|
};
|
||||||
|
jupyter-server-proxy = pkgs.python3.pkgs.buildPythonPackage rec {
|
||||||
|
pname = "jupyter_server_proxy";
|
||||||
|
version = "4.1.0";
|
||||||
|
format = "pyproject";
|
||||||
|
|
||||||
|
src = pkgs.python3.pkgs.fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
hash = "sha256-LPrDtCMv5xROjmApa0+GFwi08TspJgos8ol2v45hf3A=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
hatchling
|
||||||
|
hatch-jupyter-builder
|
||||||
|
hatch-nodejs-version
|
||||||
|
jupyterlab
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
notebook
|
||||||
|
simpervisor
|
||||||
|
aiohttp
|
||||||
|
];
|
||||||
|
|
||||||
|
# tests require network
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
jupyter-matlab-proxy = pkgs.python3.pkgs.buildPythonPackage rec {
|
||||||
|
pname = "jupyter_matlab_proxy";
|
||||||
|
version = "0.11.0";
|
||||||
|
format = "wheel";
|
||||||
|
|
||||||
|
src = pkgs.python3.pkgs.fetchPypi {
|
||||||
|
inherit pname version format;
|
||||||
|
python = "py3";
|
||||||
|
dist = "py3";
|
||||||
|
hash = "sha256-KzQgs1zXGPjONCnLvCNQkQBkkkn9J29YFi8BHbh+D1I=";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = with pkgs.python3.pkgs; [
|
||||||
|
jupyter-server-proxy
|
||||||
|
simpervisor
|
||||||
|
matlab-proxy
|
||||||
|
psutil
|
||||||
|
requests
|
||||||
|
ipykernel
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in {
|
||||||
services.jupyterhub = {
|
services.jupyterhub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
port = 6501;
|
port = 6501;
|
||||||
# https://github.com/jupyterhub/systemdspawner
|
# https://github.com/jupyterhub/systemdspawner
|
||||||
# Configuration options defined ^
|
# Configuration options defined ^
|
||||||
|
# mem_limit must be higher to allow for MATLAB
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
c.SystemdSpawner.mem_limit = '2G'
|
c.SystemdSpawner.mem_limit = '8G'
|
||||||
c.SystemdSpawner.cpu_limit = 1.0
|
c.SystemdSpawner.cpu_limit = 2.0
|
||||||
c.SystemdSpawner.isolate_devices = False
|
c.SystemdSpawner.isolate_devices = False
|
||||||
c.SystemdSpawner.extra_paths = [
|
c.SystemdSpawner.extra_paths = [
|
||||||
'${pkgs.buildEnv {
|
'${pkgs.buildEnv {
|
||||||
name = "jupyterhub-system-spawner-env";
|
name = "jupyterhub-system-spawner-env";
|
||||||
paths = with pkgs; [
|
paths = with pkgs; [
|
||||||
gcc
|
gcc
|
||||||
|
# For MATLAB Kernel
|
||||||
|
matlab
|
||||||
|
# For matlab-proxy-app
|
||||||
|
(pkgs.python3.withPackages (p: with p; [
|
||||||
|
# For pkg_resources
|
||||||
|
setuptools
|
||||||
|
matlab-proxy
|
||||||
|
jupyter-matlab-proxy
|
||||||
|
]))
|
||||||
];
|
];
|
||||||
}}/bin']
|
}}/bin']
|
||||||
|
c.SystemdSpawner.environment["MATLAB_INSTALL_DIR"] = "${config.environment.sessionVariables.MATLAB_INSTALL_DIR}"
|
||||||
|
c.SystemdSpawner.environment["LM_LICENSE_FILE"] = "${config.environment.sessionVariables.LM_LICENSE_FILE}"
|
||||||
|
c.SystemdSpawner.environment["MLM_LICENSE_FILE"] = "${config.environment.sessionVariables.MLM_LICENSE_FILE}"
|
||||||
|
# c.SystemdSpawner.environment["MWI_JUPYTER_LOG_LEVEL"] = "DEBUG"
|
||||||
'';
|
'';
|
||||||
# Extra Paths used to add gcc et al for packages like Brian2
|
# Extra Paths used to add gcc et al for packages like Brian2
|
||||||
# https://github.com/jupyterhub/systemdspawner#extra_paths
|
# https://github.com/jupyterhub/systemdspawner#extra_paths
|
||||||
|
@ -28,6 +169,8 @@
|
||||||
jupyter-console
|
jupyter-console
|
||||||
jupyterlab-lsp
|
jupyterlab-lsp
|
||||||
python-lsp-server
|
python-lsp-server
|
||||||
|
# MATLAB Proxy Needs to be here in order to modify and add the "launch matlab" etc.
|
||||||
|
jupyter-matlab-proxy # <-- This in effect adds the kernel
|
||||||
]);
|
]);
|
||||||
|
|
||||||
kernels = {
|
kernels = {
|
||||||
|
|
Loading…
Reference in New Issue