chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / fz / fzf / package.nix
blobf133ec7b61582304cc19653c5218da49bc91fab3
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , runtimeShell
5 , installShellFiles
6 , bc
7 , ncurses
8 , testers
9 , fzf
12 buildGoModule rec {
13   pname = "fzf";
14   version = "0.55.0";
16   src = fetchFromGitHub {
17     owner = "junegunn";
18     repo = "fzf";
19     rev = "v${version}";
20     hash = "sha256-4ikNCepLF7odkaEO+tzgrHb4528LetPEeMStJVZyjWg=";
21   };
23   vendorHash = "sha256-b7hCXDJ/EJr1sEvmS2RYaxBMkdWOo2LWe76mamD3BSY=";
25   CGO_ENABLED = 0;
27   outputs = [ "out" "man" ];
29   nativeBuildInputs = [ installShellFiles ];
31   buildInputs = [ ncurses ];
33   ldflags = [
34     "-s" "-w" "-X main.version=${version} -X main.revision=${src.rev}"
35   ];
37   # The vim plugin expects a relative path to the binary; patch it to abspath.
38   postPatch = ''
39     sed -i -e "s|expand('<sfile>:h:h')|'$out'|" plugin/fzf.vim
41     if ! grep -q $out plugin/fzf.vim; then
42         echo "Failed to replace vim base_dir path with $out"
43         exit 1
44     fi
46     # fzf-tmux depends on bc
47     substituteInPlace bin/fzf-tmux \
48       --replace-fail "bc" "${lib.getExe bc}"
49   '';
51   postInstall = ''
52     install bin/fzf-tmux $out/bin
54     installManPage man/man1/fzf.1 man/man1/fzf-tmux.1
56     install -D plugin/* -t $out/share/vim-plugins/fzf/plugin
57     mkdir -p $out/share/nvim
58     ln -s $out/share/vim-plugins/fzf $out/share/nvim/site
60     # Install shell integrations
61     install -D shell/* -t $out/share/fzf/
62     install -D shell/key-bindings.fish $out/share/fish/vendor_functions.d/fzf_key_bindings.fish
63     mkdir -p $out/share/fish/vendor_conf.d
64     cat << EOF > $out/share/fish/vendor_conf.d/load-fzf-key-bindings.fish
65       status is-interactive; or exit 0
66       fzf_key_bindings
67     EOF
69     cat <<SCRIPT > $out/bin/fzf-share
70     #!${runtimeShell}
71     # Run this script to find the fzf shared folder where all the shell
72     # integration scripts are living.
73     echo $out/share/fzf
74     SCRIPT
75     chmod +x $out/bin/fzf-share
76   '';
78   passthru.tests.version = testers.testVersion {
79     package = fzf;
80   };
82   meta = {
83     changelog = "https://github.com/junegunn/fzf/blob/${src.rev}/CHANGELOG.md";
84     description = "Command-line fuzzy finder written in Go";
85     homepage = "https://github.com/junegunn/fzf";
86     license = lib.licenses.mit;
87     maintainers = with lib.maintainers; [ Br1ght0ne ma27 zowoq ];
88     mainProgram = "fzf";
89     platforms = lib.platforms.unix;
90   };