e85e257ad9
It was previously referencing `$bin`, but this package no longer produces a `bin` output, just `out` and `share`. Updated to make the comparison check a bit more robust. Also updated to avoid direct dependency on the `$src` directory out of the nix store, instead using the processed src setup in the unpackPhase. This provides a cleaner abstraction between the build/install phase and the input src phase, and avoids an unnecessary dependency on whether the source disted tarball comes from `fetchFromGitHub` (in which case it's an unpacked directory) or something like `fetchurl`. In either case, stdenv is responsible for processing the input `src` and setting up a clean build dir for us, so we should use that. This produces an equivalent directory tree, except that the vim plugin is no longer broken.
66 lines
1.8 KiB
Nix
66 lines
1.8 KiB
Nix
{ lib, buildGoModule, fetchFromGitHub, writeText, runtimeShell, ncurses, }:
|
|
|
|
buildGoModule rec {
|
|
pname = "fzf";
|
|
version = "0.20.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "junegunn";
|
|
repo = pname;
|
|
rev = version;
|
|
sha256 = "02zy3c4k84rzqdkaf04idbj10v286hi0ix1xl2qsz1wrblh168w8";
|
|
};
|
|
|
|
modSha256 = "12lnv8b96adpcg9qfizcyd9nxz590nxd82xch6ij719zlqyps143";
|
|
|
|
outputs = [ "out" "man" ];
|
|
|
|
fishHook = writeText "load-fzf-keybindings.fish" "fzf_key_bindings";
|
|
|
|
buildInputs = [ ncurses ];
|
|
|
|
# The vim plugin expects a relative path to the binary; patch it to abspath.
|
|
patchPhase = ''
|
|
sed -i -e "s|expand('<sfile>:h:h')|'$out'|" plugin/fzf.vim
|
|
|
|
if ! grep -q $out plugin/fzf.vim; then
|
|
echo "Failed to replace vim base_dir path with $out"
|
|
exit 1
|
|
fi
|
|
'';
|
|
|
|
doCheck = true;
|
|
|
|
preInstall = ''
|
|
mkdir -p $out/share/fish/{vendor_functions.d,vendor_conf.d}
|
|
cp shell/key-bindings.fish $out/share/fish/vendor_functions.d/fzf_key_bindings.fish
|
|
cp ${fishHook} $out/share/fish/vendor_conf.d/load-fzf-key-bindings.fish
|
|
'';
|
|
|
|
postInstall = ''
|
|
cp bin/fzf-tmux $out/bin
|
|
|
|
mkdir -p $man/share/man
|
|
cp -r man/man1 $man/share/man
|
|
|
|
mkdir -p $out/share/vim-plugins/${pname}
|
|
cp -r plugin $out/share/vim-plugins/${pname}
|
|
|
|
cp -R shell $out/share/fzf
|
|
cat <<SCRIPT > $out/bin/fzf-share
|
|
#!${runtimeShell}
|
|
# Run this script to find the fzf shared folder where all the shell
|
|
# integration scripts are living.
|
|
echo $out/share/fzf
|
|
SCRIPT
|
|
chmod +x $out/bin/fzf-share
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "https://github.com/junegunn/fzf";
|
|
description = "A command-line fuzzy finder written in Go";
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ filalex77 ma27 ];
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|