# Python runtime with pip and uv.
{
  config,
  lib,
  pkgs,
  ...
}:
with lib; let
  cfg = config.coding.languages.python;
in {
  options.coding.languages.python = {
    enable = mkEnableOption "Python runtime with pip and uv";
    extraPackages = mkOption {
      type = types.listOf types.package;
      default = [];
      example = literalExpression "[ pkgs.python3Packages.numpy ]";
      description = "Additional Python packages to include";
    };
  };

  config = mkIf cfg.enable {
    home.packages = with pkgs; [
      (pkgs.python3.withPackages (ps:
        with ps;
          [
            uv
          ]
          ++ cfg.extraPackages))
      (writeShellScriptBin "pip" "exec uv pip $@")
      (writeShellScriptBin "pip3" "exec uv pip $@")
      pyrefly
      ruff
    ];
  };
}
