diff options
Diffstat (limited to 'pkgs/development/haskell-modules/lib.nix')
-rw-r--r-- | pkgs/development/haskell-modules/lib.nix | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index f4ebe549c502..942163ea2096 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -354,4 +354,19 @@ rec { in builtins.listToAttrs (map toKeyVal haskellPaths); + + # Modify a Haskell package to add completion scripts for the given executable + # produced by it. These completion scripts will be picked up automatically if + # the resulting derivation is installed, e.g. by `nix-env -i`. + addOptparseApplicativeCompletionScripts = exeName: pkg: overrideCabal pkg (drv: { + postInstall = (drv.postInstall or "") + '' + bashCompDir="$out/share/bash-completion/completions" + zshCompDir="$out/share/zsh/vendor-completions" + fishCompDir="$out/share/fish/vendor_completions.d" + mkdir -p "$bashCompDir" "$zshCompDir" "$fishCompDir" + "$out/bin/${exeName}" --bash-completion-script "$out/bin/${exeName}" >"$bashCompDir/${exeName}" + "$out/bin/${exeName}" --zsh-completion-script "$out/bin/${exeName}" >"$zshCompDir/_${exeName}" + "$out/bin/${exeName}" --fish-completion-script "$out/bin/${exeName}" >"$fishCompDir/${exeName}.fish" + ''; + }); } |