haskell-lib: Factor out shell completion scripts helper
This commit is contained in:
parent
88cd633ea4
commit
c34f5176f1
2 changed files with 18 additions and 7 deletions
|
@ -407,4 +407,19 @@ rec {
|
||||||
|
|
||||||
in
|
in
|
||||||
builtins.listToAttrs (map toKeyVal haskellPaths);
|
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"
|
||||||
|
'';
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1001,10 +1001,10 @@ with pkgs;
|
||||||
|
|
||||||
cue2pops = callPackage ../tools/cd-dvd/cue2pops { };
|
cue2pops = callPackage ../tools/cd-dvd/cue2pops { };
|
||||||
|
|
||||||
cabal2nix = haskell.lib.overrideCabal haskellPackages.cabal2nix (drv: {
|
cabal2nix = haskell.lib.overrideCabal (haskell.lib.addOptparseApplicativeCompletionScripts "cabal2nix" haskellPackages.cabal2nix) (drv: {
|
||||||
isLibrary = false;
|
isLibrary = false;
|
||||||
enableSharedExecutables = false;
|
enableSharedExecutables = false;
|
||||||
executableToolDepends = [ makeWrapper ];
|
executableToolDepends = (drv.executableToolDepends or []) ++ [ makeWrapper ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
exe=$out/libexec/${drv.pname}-${drv.version}/${drv.pname}
|
exe=$out/libexec/${drv.pname}-${drv.version}/${drv.pname}
|
||||||
install -D $out/bin/${drv.pname} $exe
|
install -D $out/bin/${drv.pname} $exe
|
||||||
|
@ -1012,11 +1012,7 @@ with pkgs;
|
||||||
makeWrapper $exe $out/bin/${drv.pname} \
|
makeWrapper $exe $out/bin/${drv.pname} \
|
||||||
--prefix PATH ":" "${nix}/bin" \
|
--prefix PATH ":" "${nix}/bin" \
|
||||||
--prefix PATH ":" "${nix-prefetch-scripts}/bin"
|
--prefix PATH ":" "${nix-prefetch-scripts}/bin"
|
||||||
mkdir -p $out/share/{bash-completion/completions,zsh/vendor-completions,fish/completions}
|
'' + (drv.postInstall or "");
|
||||||
$exe --bash-completion-script $exe >$out/share/bash-completion/completions/${drv.pname}
|
|
||||||
$exe --zsh-completion-script $exe >$out/share/zsh/vendor-completions/_${drv.pname}
|
|
||||||
$exe --fish-completion-script $exe >$out/share/fish/completions/${drv.pname}.fish
|
|
||||||
'';
|
|
||||||
});
|
});
|
||||||
|
|
||||||
stack2nix = with haskell.lib; overrideCabal (justStaticExecutables haskellPackages.stack2nix) (drv: {
|
stack2nix = with haskell.lib; overrideCabal (justStaticExecutables haskellPackages.stack2nix) (drv: {
|
||||||
|
|
Loading…
Reference in a new issue