{ config, pkgs, ... }: { home.sessionVariables.PYTHONSTARTUP = "${config.xdg.configHome}/python/pythonrc"; home.packages = with pkgs; [ uv rye ruff ]; xdg.configFile."python/pythonrc".text = '' #!/usr/bin/env python3 # This entire thing is unnecessary post v3.13.0a3 # https://github.com/python/cpython/issues/73965 def is_vanilla() -> bool: """ :return: whether running "vanilla" Python """ import sys return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0] def setup_history(): """ read and write history from state file """ import os import atexit import readline from pathlib import Path # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables if state_home := os.environ.get('XDG_STATE_HOME'): state_home = Path(state_home) else: state_home = Path.home() / '.local' / 'state' if not state_home.is_dir(): print("Error: XDG_SATE_HOME does not exist at", state_home) history: Path = state_home / 'python_history' # https://github.com/python/cpython/issues/105694 if not history.is_file(): with open(history,"w") as f: f.write("_HiStOrY_V2_" + "\ \ ") # breaks on macos + python3 without this. readline.read_history_file(history) atexit.register(readline.write_history_file, history) if is_vanilla(): setup_history() ''; }