68 lines
2.3 KiB
Nix
68 lines
2.3 KiB
Nix
{
|
|
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; # extra packages
|
|
};
|
|
|
|
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"; # we don't have any sources
|
|
|
|
nativeBuildInputs = [ (python.withPackages (ps: with ps; [ jupyter jupyter-core ])) ];
|
|
|
|
# for some reason, ihaskell wants to create $HOME/.ihaskell
|
|
# we set $HOME to $out, and then remove the .ihaskell file
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
HOME=$out ${pkgs.ihaskell}/bin/ihaskell install --prefix=$out
|
|
rm -rf $out/.ihaskell
|
|
'';
|
|
};
|
|
|
|
python-environment = (python.withPackages (ps: with ps; [
|
|
ipympl numpy matplotlib scipy
|
|
|
|
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:${pkgs.pandoc}/bin ${python-environment}/bin/jupyter-notebook
|
|
'';
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
packages = [ python-environment latex ];
|
|
};
|
|
}
|
|
);
|
|
}
|