Jupyter flake
This commit is contained in:
parent
95b23c70b1
commit
ae6b9aa1ac
|
@ -17,5 +17,10 @@
|
||||||
description = "Minimal flake for Haskell with nix build system and devshell";
|
description = "Minimal flake for Haskell with nix build system and devshell";
|
||||||
welcomeText = "mjau λλλ";
|
welcomeText = "mjau λλλ";
|
||||||
};
|
};
|
||||||
|
templates.jupyter = {
|
||||||
|
path = ./haskell;
|
||||||
|
description = "A jupyter flake, with a custom haskell kernel and proper pdflatex LaTeX export supoprt";
|
||||||
|
welcomeText = "mjau 🐍🐍🐍";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
1
jupyter/.envrc
Normal file
1
jupyter/.envrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
use flake
|
59
jupyter/flake.lock
Normal file
59
jupyter/flake.lock
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1694529238,
|
||||||
|
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1697009197,
|
||||||
|
"narHash": "sha256-viVRhBTFT8fPJTb1N3brQIpFZnttmwo3JVKNuWRVc3s=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "01441e14af5e29c9d27ace398e6dd0b293e25a54",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
63
jupyter/flake.nix
Normal file
63
jupyter/flake.nix
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
description = "A jupyter flake, with a custom haskell kernel and proper pdflatex LaTeX export supoprt";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (sys:
|
||||||
|
let pkgs = import nixpkgs { system = sys; };
|
||||||
|
python = pkgs.python310;
|
||||||
|
|
||||||
|
latex = pkgs.texlive.combine {
|
||||||
|
inherit (pkgs.texlive)
|
||||||
|
scheme-basic # Base
|
||||||
|
tcolorbox pgf environ etoolbox pdfcol parskip caption float upquote eurosym ucs fancyvrb grffile adjustbox hyperref titling booktabs enumitem ulem soul rsfs jknapltx cm-super # Other packages needed by jupyter.
|
||||||
|
tikz-among-us;
|
||||||
|
};
|
||||||
|
|
||||||
|
jupyter-config = python.pkgs.buildPythonPackage rec {
|
||||||
|
name = "jupyter-config";
|
||||||
|
format = "other";
|
||||||
|
src = ./jupyter-config ;
|
||||||
|
installPhase = ''
|
||||||
|
find . -type f -exec sed -i 's|<pdflatex>|${latex}/bin/pdflatex|g' {} +
|
||||||
|
mkdir -p $out/etc/jupyter/
|
||||||
|
cp -r . $out/etc/jupyter/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
jupyter-ihaskell = python.pkgs.buildPythonPackage rec {
|
||||||
|
name = "jupyter-ihaskell";
|
||||||
|
format = "other";
|
||||||
|
|
||||||
|
unpackPhase = ": 3";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ (python.withPackages (ps: with ps; [ jupyter jupyter-core ])) ];
|
||||||
|
|
||||||
|
# for some reason, ihaskell wants to create $HOME/.ihaskell 3:
|
||||||
|
buildPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
HOME=$out ${pkgs.ihaskell}/bin/ihaskell install --prefix=$out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
python-environment = (pkgs.python310.withPackages (ps: with ps; [
|
||||||
|
jupyter-core jupyter
|
||||||
|
jupyter-config jupyter-ihaskell
|
||||||
|
]));
|
||||||
|
in rec {
|
||||||
|
packages.latex = latex;
|
||||||
|
packages.python-environment = python-environment;
|
||||||
|
|
||||||
|
packages.default = pkgs.writeScriptBin "start-notebook" ''
|
||||||
|
env PATH=$PATH:${latex}/bin ${python-environment}/bin/jupyter-notebook
|
||||||
|
'';
|
||||||
|
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
packages = [ python-environment latex ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
19
jupyter/jupyter-config/custom.css
Normal file
19
jupyter/jupyter-config/custom.css
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/* Modify Jupyter Styles */
|
||||||
|
#top-panel-wrapper,
|
||||||
|
#jp-top-bar {
|
||||||
|
background-color: #aecad4 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu-panel-wrapper,
|
||||||
|
#jp-MainMenu,
|
||||||
|
#menu-panel {
|
||||||
|
background-color: #aecad4 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jp-NotebookPanel-toolbar {
|
||||||
|
background-color: #aecad4 !important;
|
||||||
|
}
|
||||||
|
.lm-MenuBar-content {
|
||||||
|
color: #02484d;
|
||||||
|
}
|
||||||
|
|
1082
jupyter/jupyter-config/jupyter_notebook_config.py
Normal file
1082
jupyter/jupyter-config/jupyter_notebook_config.py
Normal file
File diff suppressed because it is too large
Load Diff
76
jupyter/mjausay.ipynb
Normal file
76
jupyter/mjausay.ipynb
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "482010f0-6af3-4f7b-a34a-3d1319a6f34e",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"data Creature = Cat | Agda | Squid\n",
|
||||||
|
"instance Show Creature where\n",
|
||||||
|
" show Cat = \"🐈\"\n",
|
||||||
|
" show Agda = \"🐓\"\n",
|
||||||
|
" show Squid = \"🐙\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "622a85aa-ba4a-4b33-98da-ecbd8a1864e7",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"(💬) :: Creature -> String -> String\n",
|
||||||
|
"creature 💬 mjau = show creature ++ \" 💬 \" ++ mjau"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"id": "191044ab-6288-4d5e-bdaa-89b31a41c0f7",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"🐈 💬 mjam"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"putStr $ Cat 💬 \"mjam\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "5e447529-f4ea-4e77-a9e4-d18326da2030",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"let 9 + 10 = 21 in print (9 "
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Haskell",
|
||||||
|
"language": "haskell",
|
||||||
|
"name": "haskell"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": "ihaskell",
|
||||||
|
"file_extension": ".hs",
|
||||||
|
"mimetype": "text/x-haskell",
|
||||||
|
"name": "haskell",
|
||||||
|
"pygments_lexer": "Haskell",
|
||||||
|
"version": "9.4.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user