mirror of
https://github.com/aviallon/nixos-lib.git
synced 2026-04-06 01:38:06 +00:00
[Services] Added modular service configuration + opt-in jupyterhub server
This commit is contained in:
parent
771d557a83
commit
cab07f3d14
3 changed files with 70 additions and 0 deletions
12
services.nix
12
services.nix
|
|
@ -22,6 +22,11 @@ let
|
||||||
settings)
|
settings)
|
||||||
);
|
);
|
||||||
in {
|
in {
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./services
|
||||||
|
];
|
||||||
|
|
||||||
options.aviallon.services = {
|
options.aviallon.services = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
|
@ -119,5 +124,12 @@ in {
|
||||||
services.avahi.nssmdns = true; # .lan/.local resolution
|
services.avahi.nssmdns = true; # .lan/.local resolution
|
||||||
services.avahi.publish.enable = true;
|
services.avahi.publish.enable = true;
|
||||||
services.avahi.publish.hinfo = true; # Whether to register a mDNS HINFO record which contains information about the local operating system and CPU.
|
services.avahi.publish.hinfo = true; # Whether to register a mDNS HINFO record which contains information about the local operating system and CPU.
|
||||||
|
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
recommendedProxySettings = true;
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6
services/default.nix
Normal file
6
services/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{ config, pkgs, ...}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./jupyterhub.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
52
services/jupyterhub.nix
Normal file
52
services/jupyterhub.nix
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
{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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue