{ lib, pkgs, config, osConfig, ... }: let inherit (lib) mkIf; cfg = osConfig.myOptions.home-manager.programs.coding.python; toTOML = name: (pkgs.formats.toml {}).generate "${name}"; in { config = mkIf cfg.enable { home = { packages = with pkgs; [rye]; sessionVariables = { RYE_HOME = "${config.xdg.configHome}/rye"; }; # Add rye python shims to path. # Rye provides python executables that will automatically pick up on the python # from a virtual environment, if we're in a directory (project) with one. If not, # rye will fall back to system python. That is, if behavior.global-python=false, # otherwise, we can actually use a python version from rye as our global python. sessionPath = [ "${config.xdg.configHome}/rye/shims" ]; }; # see: xdg.configFile."rye/config.toml".source = toTOML "config.toml" { default.license = "GPL-3.0-or-later"; behavior.global-python = true; }; }; }