diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index fb11170bb61c..04f5f6785c42 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -20026,6 +20026,12 @@ githubId = 6457015; name = "Taha Gharib"; }; + taha-yassine = { + email = "taha.yssne@gmail.com"; + github = "taha-yassine"; + githubId = 40228615; + name = "Taha Yassine"; + }; taikx4 = { email = "taikx4@taikx4szlaj2rsdupcwabg35inbny4jk322ngeb7qwbbhd5i55nf5yyd.onion"; github = "taikx4"; diff --git a/pkgs/by-name/ai/aider-chat/package.nix b/pkgs/by-name/ai/aider-chat/package.nix new file mode 100644 index 000000000000..087d1a056c0a --- /dev/null +++ b/pkgs/by-name/ai/aider-chat/package.nix @@ -0,0 +1,114 @@ +{ + lib, + stdenv, + python311, + fetchFromGitHub, + gitMinimal, + portaudio, +}: + +let + python3 = python311.override { + self = python3; + packageOverrides = _: super: { tree-sitter = super.tree-sitter_0_21; }; + }; + version = "0.50.0"; +in +python3.pkgs.buildPythonApplication { + pname = "aider-chat"; + inherit version; + pyproject = true; + + src = fetchFromGitHub { + owner = "paul-gauthier"; + repo = "aider"; + rev = "v${version}"; + hash = "sha256-hRUxzljtgLGEDwHf6UtQzGQM8CgiRtgNLlVoKa2jU3o="; + }; + + build-system = with python3.pkgs; [ setuptools ]; + + dependencies = + with python3.pkgs; + [ + aiohappyeyeballs + backoff + beautifulsoup4 + configargparse + diff-match-patch + diskcache + flake8 + gitpython + grep-ast + importlib-resources + jsonschema + jiter + litellm + networkx + numpy + packaging + pathspec + pillow + playwright + prompt-toolkit + pypager + pypandoc + pyperclip + pyyaml + rich + scipy + sounddevice + soundfile + streamlit + tokenizers + watchdog + ] + ++ lib.optionals (!tensorflow.meta.broken) [ + llama-index-core + llama-index-embeddings-huggingface + ]; + + buildInputs = [ portaudio ]; + + pythonRelaxDeps = true; + + nativeCheckInputs = (with python3.pkgs; [ pytestCheckHook ]) ++ [ gitMinimal ]; + + disabledTestPaths = [ + # requires network + "tests/scrape/test_scrape.py" + + # Expected 'mock' to have been called once + "tests/help/test_help.py" + ]; + + disabledTests = + [ + # requires network + "test_urls" + "test_get_commit_message_with_custom_prompt" + + # FileNotFoundError + "test_get_commit_message" + + # Expected 'launch_gui' to have been called once + "test_browser_flag_imports_streamlit" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # fails on darwin + "test_dark_mode_sets_code_theme" + "test_default_env_file_sets_automatic_variable" + ]; + + preCheck = '' + export HOME=$(mktemp -d) + ''; + + meta = { + description = "AI pair programming in your terminal"; + homepage = "https://github.com/paul-gauthier/aider"; + license = lib.licenses.asl20; + mainProgram = "aider"; + maintainers = with lib.maintainers; [ taha-yassine ]; + }; +} diff --git a/pkgs/development/python-modules/pypager/default.nix b/pkgs/development/python-modules/pypager/default.nix new file mode 100644 index 000000000000..94ed9f2cc7bd --- /dev/null +++ b/pkgs/development/python-modules/pypager/default.nix @@ -0,0 +1,41 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + prompt-toolkit, + pygments, +}: + +buildPythonPackage { + pname = "pypager"; + version = "3.0.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "prompt-toolkit"; + repo = "pypager"; + rev = "0255d59a14ffba81c3842ef570c96c8dfee91e8e"; + hash = "sha256-uPpVAI12INKFZDiTQdzQ0dhWCBAGeu0488zZDEV22mU="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + prompt-toolkit + pygments + ]; + + pythonImportsCheck = [ "pypager" ]; + + # no tests + doCheck = false; + + meta = { + description = ''Pure Python pager (like "more" and "less")''; + homepage = "https://github.com/prompt-toolkit/pypager"; + license = lib.licenses.bsd3; + mainProgram = "pypager"; + maintainers = with lib.maintainers; [ taha-yassine ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 350a7d4225ba..7b0200329f87 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11982,6 +11982,8 @@ self: super: with self; { pyowm = callPackage ../development/python-modules/pyowm { }; + pypager = callPackage ../development/python-modules/pypager { }; + pypamtest = toPythonModule (pkgs.libpam-wrapper.override { enablePython = true; inherit python;