nixpkgs-suyu/pkgs/tools/misc/fzf/default.nix
Matías Lang b917daaf60 fzf: fix vim plugin patch phase
During patch phase, the path to the fzf binary is overwritten in the vim
plugin source. The sed expression doing this wasn't working because the fzf
code changed in this commit:
02ceae15a2
making the patch useless.

I fixed it and added a check to verify that the plugin was effecively
patched to prevent this to happen in the future.
2018-05-07 00:50:44 -03:00

64 lines
1.8 KiB
Nix

{ stdenv, lib, ncurses, buildGoPackage, fetchFromGitHub, writeText }:
buildGoPackage rec {
name = "fzf-${version}";
version = "0.17.3";
rev = "${version}";
goPackagePath = "github.com/junegunn/fzf";
src = fetchFromGitHub {
inherit rev;
owner = "junegunn";
repo = "fzf";
sha256 = "1wsyykvnss5r0sx344kjbprnb87849462p9rg9xj37cp7qzciwdn";
};
outputs = [ "bin" "out" "man" ];
fishHook = writeText "load-fzf-keybindings.fish" "fzf_key_bindings";
buildInputs = [ ncurses ];
goDeps = ./deps.nix;
patchPhase = ''
sed -i -e "s|expand('<sfile>:h:h')|'$bin'|" plugin/fzf.vim
# Original and output files can't be the same
if cmp -s $src/plugin/fzf.vim plugin/fzf.vim; then
echo "Vim plugin patch not applied properly. Aborting" && \
exit 1
fi
'';
preInstall = ''
mkdir -p $bin/share/fish/vendor_functions.d $bin/share/fish/vendor_conf.d
cp $src/shell/key-bindings.fish $bin/share/fish/vendor_functions.d/fzf_key_bindings.fish
cp ${fishHook} $bin/share/fish/vendor_conf.d/load-fzf-key-bindings.fish
'';
postInstall = ''
cp $src/bin/fzf-tmux $bin/bin
mkdir -p $man/share/man
cp -r $src/man/man1 $man/share/man
mkdir -p $out/share/vim-plugins
ln -s $out/share/go/src/github.com/junegunn/fzf $out/share/vim-plugins/${name}
cp -R $src/shell $bin/share/fzf
cat <<SCRIPT > $bin/bin/fzf-share
#!/bin/sh
# Run this script to find the fzf shared folder where all the shell
# integration scripts are living.
echo $bin/share/fzf
SCRIPT
chmod +x $bin/bin/fzf-share
'';
meta = with stdenv.lib; {
homepage = https://github.com/junegunn/fzf;
description = "A command-line fuzzy finder written in Go";
license = licenses.mit;
platforms = platforms.unix;
};
}