diff options
-rw-r--r-- | custom.nix | 2 | ||||
-rw-r--r-- | module/tasker.nix | 4 | ||||
-rw-r--r-- | tasks/default.nix | 40 |
3 files changed, 39 insertions, 7 deletions
@@ -21,7 +21,7 @@ in { default = "~/"; }; type = mkOption { - type = types.enum [ "launcher" "terminal" "local-shell" "local-editor" "environment" ]; + type = types.enum [ "launcher" "terminal" "local-shell" "local-editor" "environment" "python-console" ]; default = "launcher"; }; command = mkOption { diff --git a/module/tasker.nix b/module/tasker.nix index 4f2e0fe..032027b 100644 --- a/module/tasker.nix +++ b/module/tasker.nix @@ -27,6 +27,10 @@ let environment = launchTerminalInDirectory conf.directory '' nix-shell ${builtins.unsafeDiscardStringContext conf.environment.drvPath} --command fish ''; + + python-console = launchCommandInDirectory "~/" '' + nix-shell ${builtins.unsafeDiscardStringContext conf.environment.drvPath} --command jupyter-qtconsole + ''; }; }; diff --git a/tasks/default.nix b/tasks/default.nix index dc77baf..3521443 100644 --- a/tasks/default.nix +++ b/tasks/default.nix @@ -9,6 +9,24 @@ let ''; }; + mkPythonShellDerivation = n: ps: init: pkgs.stdenvNoCC.mkDerivation rec { + name = n; + buildInputs = [(pkgs.python3.withPackages (python-packages: with python-packages; ps ++ [ + jupyterlab + qtconsole + ]))]; + shellHook = let + startup = pkgs.writeTextFile { + name = "startup.py"; + text = init; + }; + + in '' + export NIX_SHELL_NAME="${name}" + export PYTHONSTARTUP=${startup} + ''; + }; + in { custom.tasks = { bsc_edit = { @@ -65,13 +83,23 @@ in { ]); }; - sympy_shell = { - description = "Python shell with SymPy"; + pymath_shell = { + description = "Python console for mathematics"; directory = "~/"; - type = "environment"; - environment = with pkgs; mkShellDerivation "python-env" [ - (pkgs.python3.withPackages (python-packages: with python-packages; [ sympy ])) - ]; + type = "python-console"; + environment = mkPythonShellDerivation "pymath-env" (with pkgs.python3Packages; [ + sympy + numpy + matplotlib + ]) + '' + import numpy as np + import sympy + import matplotlib + import matplotlib.pyplot as plt + + sympy.init_session() + ''; }; }; } |