Added Nbgrader
This commit is contained in:
161
flake.nix
Normal file
161
flake.nix
Normal file
@@ -0,0 +1,161 @@
|
||||
{
|
||||
description = "Docker JupyterHub development environment";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, ... }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
app = {
|
||||
setup-dev = pkgs.writeShellScriptBin "setup-dev" ''
|
||||
echo "Setting up basic Project Structure"
|
||||
echo "----------------------------------"
|
||||
echo "Setting up logs directory"
|
||||
mkdir -p logs
|
||||
mkdir -p logs/nginx
|
||||
mkdir -p logs/jupyterhub
|
||||
mkdir -p logs/postgres
|
||||
echo "Logs Directory:"
|
||||
tree logs/
|
||||
echo ""
|
||||
echo "Setting up jupyter-data"
|
||||
mkdir -p jupyter-data/nbgrader/courses/example-course/{autograded,feedback,release,source/assigment1,submitted}
|
||||
mkdir -p jupyter-data/nbgrader/{exchange,users}
|
||||
cat > jupyter-data/nbgrader/courses/example-course/source/assigment1/sample.ipynb << 'EOL'
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Sample Notebook\n",
|
||||
"## Created with Bash\n",
|
||||
"\n",
|
||||
"This Jupyter notebook was generated automatically using a bash script."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Python code example\n",
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"x = np.linspace(0, 10, 100)\n",
|
||||
"y = np.sin(x)\n",
|
||||
"\n",
|
||||
"plt.plot(x, y)\n",
|
||||
"plt.title('Sine Wave')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Next Steps\n",
|
||||
"\n",
|
||||
"- Run the code cells\n",
|
||||
"- Add more cells\n",
|
||||
"- Experiment with different Python libraries"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
EOL
|
||||
echo "jupyter-data Directory:"
|
||||
tree jupyter-data
|
||||
'';
|
||||
|
||||
storage = pkgs.writeShellScriptBin "storage" ''
|
||||
echo "Creating storage"
|
||||
mkdir -p storage/{jupyter,postgres}
|
||||
chmod -R 644 storage/
|
||||
'';
|
||||
|
||||
build = pkgs.writeShellScriptBin "build" ''
|
||||
echo "Building all Containers"
|
||||
'';
|
||||
|
||||
clean = pkgs.writeShellScriptBin "clean" ''
|
||||
echo "Cleaning Project"
|
||||
echo "----------------------------------"
|
||||
echo "Removing logs"
|
||||
rm -rf logs/
|
||||
echo "Removing jupyter-data"
|
||||
rm -rf jupyter-data/
|
||||
'';
|
||||
|
||||
reset = pkgs.writeShellScriptBin "reset" ''
|
||||
${app.clean}/bin/clean
|
||||
${app.setup-dev}/bin/setup-dev
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
devShells.default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
# For deployment/testing
|
||||
docker
|
||||
docker-compose
|
||||
|
||||
# Terminal Tools
|
||||
tree
|
||||
] ++ (builtins.attrValues app);
|
||||
|
||||
shellHook = ''
|
||||
echo "JupyterHub dev shell"
|
||||
echo "------------------------------------"
|
||||
echo "$(docker --version)"
|
||||
echo "------------------------------------"
|
||||
echo "Available commands:"
|
||||
echo " setup-dev - Set Up dev environment"
|
||||
echo " clean - Clean the Project"
|
||||
echo " reset - Reset project completly (Use with caution it whipes all generated Data)"
|
||||
'';
|
||||
};
|
||||
|
||||
apps = {
|
||||
setup-dev = {
|
||||
type = "app";
|
||||
program = "${app.setup-dev}/bin/setup-dev";
|
||||
};
|
||||
|
||||
build = {
|
||||
type = "app";
|
||||
program = "${app.build}/bin/build";
|
||||
};
|
||||
|
||||
default = self.apps.${system}.dev;
|
||||
};
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user