Files
nixpkgs/shells/python.nix

79 lines
2.0 KiB
Nix
Raw Permalink Normal View History

2025-10-12 16:21:40 +02:00
# Modern Python development environment with marimo and uv — Nushell version
# Usage: nix develop .#python (drops into Nushell)
{pkgs}: let
# Use the latest Python available in nixpkgs
python = pkgs.python314;
in
pkgs.mkShell {
name = "python-marimo-dev";
buildInputs = with pkgs; [
# Python interpreter
python
# Modern package manager
uv
# Essential system dependencies for numpy and scientific packages
stdenv.cc.cc.lib
zlib
gfortran
openblas
lapack
# Nushell itself
nushell
];
# Environment variables for proper library linking
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [
pkgs.stdenv.cc.cc.lib
pkgs.zlib
pkgs.gfortran.cc.lib
]}";
# Bash shellHook that sets up the environment and launches Nushell
shellHook = ''
echo "🐍 Python + Marimo Development Environment"
echo ""
echo "Python version: $(python --version)"
echo "uv version: $(uv --version)"
echo ""
# Create venv if it doesn't exist
if [ ! -d ".venv" ]; then
echo "Creating virtual environment..."
uv venv
fi
# Activate the virtual environment
source .venv/bin/activate
# Install marimo if not present
if ! python -c "import marimo" 2>/dev/null; then
echo "Installing marimo..."
uv pip install marimo
fi
# Install numpy if not present
if ! python -c "import numpy" 2>/dev/null; then
echo "Installing numpy..."
uv pip install numpy
fi
echo ""
echo " Environment ready!"
echo ""
echo "Quick start:"
echo " marimo edit - Start marimo notebook"
echo " uv pip install <package> - Install packages"
echo " python script.py - Run Python scripts"
echo ""
echo "💡 Popular packages: uv pip install pandas matplotlib scipy scikit-learn"
echo ""
# Launch Nushell
exec nu
'';
}