haskell-lib: Factor out shell completion scripts helper
This commit is contained in:
parent
88cd633ea4
commit
c34f5176f1
@ -407,4 +407,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"
|
||||
'';
|
||||
});
|
||||
}
|
||||
|
@ -1001,10 +1001,10 @@ with pkgs;
|
||||
|
||||
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;
|
||||
enableSharedExecutables = false;
|
||||
executableToolDepends = [ makeWrapper ];
|
||||
executableToolDepends = (drv.executableToolDepends or []) ++ [ makeWrapper ];
|
||||
postInstall = ''
|
||||
exe=$out/libexec/${drv.pname}-${drv.version}/${drv.pname}
|
||||
install -D $out/bin/${drv.pname} $exe
|
||||
@ -1012,11 +1012,7 @@ with pkgs;
|
||||
makeWrapper $exe $out/bin/${drv.pname} \
|
||||
--prefix PATH ":" "${nix}/bin" \
|
||||
--prefix PATH ":" "${nix-prefetch-scripts}/bin"
|
||||
mkdir -p $out/share/{bash-completion/completions,zsh/vendor-completions,fish/completions}
|
||||
$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
|
||||
'';
|
||||
'' + (drv.postInstall or "");
|
||||
});
|
||||
|
||||
stack2nix = with haskell.lib; overrideCabal (justStaticExecutables haskellPackages.stack2nix) (drv: {
|
||||
|
Loading…
Reference in New Issue
Block a user