From 56be20aa49031c9d0b618525e9a641d9239965c2 Mon Sep 17 00:00:00 2001 From: Ilya Grigoriev Date: Sat, 30 Mar 2024 16:27:00 -0700 Subject: [PATCH] pipx: add shell completions Install shell completions with `pipx` for `bash`, `zsh` and `fish`. Apart from convenience, this reduces confusion. `pipx completions` is not quite accurate when `pipx` is installed with Nix, since you need to do `nix shell nixpkgs#python311Packages.argcomplete register-python-argcomplete`. It is possible to also put it in the path, as suggested in https://discourse.nixos.org/t/python-how-to-expose-a-dependencys-bin/283, but that would be a separate PR. Fixes https://github.com/NixOS/nixpkgs/issues/299845 Cc: [@natsukium](https://github.com/natsukium), [@mweinelt](https://github.com/mweinelt), [@yshym](https://github.com/yshym) (same people I Cc-ed in the issue) --- pkgs/development/python-modules/pipx/default.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/development/python-modules/pipx/default.nix b/pkgs/development/python-modules/pipx/default.nix index 7a60c22fcf25..39837783976a 100644 --- a/pkgs/development/python-modules/pipx/default.nix +++ b/pkgs/development/python-modules/pipx/default.nix @@ -4,6 +4,7 @@ , fetchFromGitHub , hatchling , hatch-vcs +, installShellFiles , packaging , platformdirs , pytestCheckHook @@ -41,6 +42,10 @@ buildPythonPackage rec { tomli ]; + nativeBuildInputs = [ + installShellFiles + ]; + nativeCheckInputs = [ pytestCheckHook git @@ -79,6 +84,13 @@ buildPythonPackage rec { "test_skip_maintenance" ]; + postInstall = '' + installShellCompletion --cmd pipx \ + --bash <(${argcomplete}/bin/register-python-argcomplete pipx --shell bash) \ + --zsh <(${argcomplete}/bin/register-python-argcomplete pipx --shell zsh) \ + --fish <(${argcomplete}/bin/register-python-argcomplete pipx --shell fish) + ''; + meta = with lib; { description = "Install and run Python applications in isolated environments"; mainProgram = "pipx";