diff options
Diffstat (limited to 'pkgs/by-name/fz/fzf/package.nix')
-rw-r--r-- | pkgs/by-name/fz/fzf/package.nix | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/pkgs/by-name/fz/fzf/package.nix b/pkgs/by-name/fz/fzf/package.nix new file mode 100644 index 0000000000000..e243d515fa144 --- /dev/null +++ b/pkgs/by-name/fz/fzf/package.nix @@ -0,0 +1,91 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, runtimeShell +, installShellFiles +, bc +, ncurses +, testers +, fzf +}: + +buildGoModule rec { + pname = "fzf"; + version = "0.51.0"; + + src = fetchFromGitHub { + owner = "junegunn"; + repo = "fzf"; + rev = version; + hash = "sha256-ybg2Zq2J/3lyIFnQpnPbRe6D8iD+hgiiA02EatOQVkI="; + }; + + vendorHash = "sha256-Ho2jVD/U/2BFt3BF5w+KHp5nSVmukx0o2l3ISDGDSt0="; + + CGO_ENABLED = 0; + + outputs = [ "out" "man" ]; + + nativeBuildInputs = [ installShellFiles ]; + + buildInputs = [ ncurses ]; + + ldflags = [ + "-s" "-w" "-X main.version=${version} -X main.revision=${src.rev}" + ]; + + # The vim plugin expects a relative path to the binary; patch it to abspath. + postPatch = '' + 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 + + # fzf-tmux depends on bc + substituteInPlace bin/fzf-tmux \ + --replace "bc" "${bc}/bin/bc" + ''; + + postInstall = '' + install bin/fzf-tmux $out/bin + + installManPage man/man1/fzf.1 man/man1/fzf-tmux.1 + + install -D plugin/* -t $out/share/vim-plugins/${pname}/plugin + mkdir -p $out/share/nvim + ln -s $out/share/vim-plugins/${pname} $out/share/nvim/site + + # Install shell integrations + install -D shell/* -t $out/share/fzf/ + install -D shell/key-bindings.fish $out/share/fish/vendor_functions.d/fzf_key_bindings.fish + mkdir -p $out/share/fish/vendor_conf.d + cat << EOF > $out/share/fish/vendor_conf.d/load-fzf-key-bindings.fish + status is-interactive; or exit 0 + fzf_key_bindings + EOF + + 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 + ''; + + passthru.tests.version = testers.testVersion { + package = fzf; + }; + + meta = { + changelog = "https://github.com/junegunn/fzf/blob/${version}/CHANGELOG.md"; + description = "Command-line fuzzy finder written in Go"; + homepage = "https://github.com/junegunn/fzf"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ Br1ght0ne ma27 zowoq ]; + mainProgram = "fzf"; + platforms = lib.platforms.unix; + }; +} |