mise: add bash completion to bash integration

The bash integration previously only ran `mise activate bash`, so tab
completion for `mise` was never set up. Source the generated completion
script via `mise completion bash --include-bash-completion-lib`; the
flag self-bundles the bash-completion helpers so it also works on
systems whose bash-completion predates `_comp_initialize`.

Fixes #8539
This commit is contained in:
Austin Horstman
2026-06-17 09:32:24 -05:00
parent 7664e05e24
commit 524d73a903
2 changed files with 19 additions and 5 deletions
+11 -3
View File
@@ -111,9 +111,17 @@ in
};
programs = {
bash.initExtra = mkIf (cfg.enableBashIntegration && cfg.package != null) ''
eval "$(${getExe cfg.package} activate bash)"
'';
bash.initExtra =
let
# TODO: Upstream to nixpkgs
bashCompletion = pkgs.runCommand "mise-bash-completion.bash" { } ''
${getExe cfg.package} completion bash --include-bash-completion-lib > $out
'';
in
mkIf (cfg.enableBashIntegration && cfg.package != null) ''
eval "$(${getExe cfg.package} activate bash)"
source ${bashCompletion}
'';
zsh.initContent = mkIf (cfg.enableZshIntegration && cfg.package != null) ''
eval "$(${getExe cfg.package} activate zsh)"