about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/fzf/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/fzf/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/misc/fzf/default.nix74
1 files changed, 55 insertions, 19 deletions
diff --git a/nixpkgs/pkgs/tools/misc/fzf/default.nix b/nixpkgs/pkgs/tools/misc/fzf/default.nix
index 850b4fe920bd..f9cbf8e3542a 100644
--- a/nixpkgs/pkgs/tools/misc/fzf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fzf/default.nix
@@ -1,21 +1,54 @@
-{ lib, buildGoModule, fetchFromGitHub, writeText, runtimeShell, ncurses, perl }:
-
+{ stdenv
+, lib
+, buildGoModule
+, fetchFromGitHub
+, writeShellScriptBin
+, runtimeShell
+, installShellFiles
+, ncurses
+, perl
+, glibcLocales
+, testers
+, fzf
+, fetchpatch
+}:
+
+let
+  # on Linux, wrap perl in the bash completion scripts with the glibc locales,
+  # so that using the shell completion (ctrl+r, etc) doesn't result in ugly
+  # warnings on non-nixos machines
+  ourPerl = if !stdenv.isLinux then perl else (
+    writeShellScriptBin "perl" ''
+      export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive"
+      exec ${perl}/bin/perl "$@"
+    '');
+in
 buildGoModule rec {
   pname = "fzf";
-  version = "0.32.1";
+  version = "0.41.1";
 
   src = fetchFromGitHub {
     owner = "junegunn";
     repo = pname;
     rev = version;
-    sha256 = "sha256-gtRMoUEQEVoQXtA2PnVMLqrENUh5Jv8QiolqmeX5naQ=";
+    hash = "sha256-YnWc+yStyoZoCKxEMhQC6Z4FZ/OVRaVsAJPtAzGiJVk=";
   };
 
-  vendorSha256 = "sha256-3ry93xV3KKtFoFGt2yxzMd4jx3QG2+8TBrEEywj7HPQ=";
+  patches = [
+    (fetchpatch {
+      name = "update-test-case.patch";
+      url = "https://github.com/junegunn/fzf/commit/448d7e0c5a717128d499f6a09a978b7addd1d925.patch";
+      hash = "sha256-54UYW8x78ZcjPwDWmGLVLxw2E910wme2TkBN7YAr1L8=";
+    })
+  ];
+
+  vendorHash = "sha256-O6OjBbrVAxDQd27ar2mmFkU1XyVM2C8SJWJ54rgaf2s=";
+
+  CGO_ENABLED = 0;
 
   outputs = [ "out" "man" ];
 
-  fishHook = writeText "load-fzf-keybindings.fish" "fzf_key_bindings";
+  nativeBuildInputs = [ installShellFiles ];
 
   buildInputs = [ ncurses ];
 
@@ -35,25 +68,24 @@ buildGoModule rec {
     # Has a sneaky dependency on perl
     # Include first args to make sure we're patching the right thing
     substituteInPlace shell/key-bindings.bash \
-      --replace " perl -n " " ${perl}/bin/perl -n "
-  '';
-
-  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
+      --replace " perl -n " " ${ourPerl}/bin/perl -n "
   '';
 
   postInstall = ''
-    cp bin/fzf-tmux $out/bin
+    install bin/fzf-tmux $out/bin
+
+    installManPage man/man1/fzf.1 man/man1/fzf-tmux.1
 
-    mkdir -p $man/share/man
-    cp -r man/man1 $man/share/man
+    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
 
-    mkdir -p $out/share/vim-plugins/${pname}
-    cp -r plugin $out/share/vim-plugins/${pname}
+    # 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
+    echo fzf_key_bindings > $out/share/fish/vendor_conf.d/load-fzf-key-bindings.fish
 
-    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
@@ -63,6 +95,10 @@ buildGoModule rec {
     chmod +x $out/bin/fzf-share
   '';
 
+  passthru.tests.version = testers.testVersion {
+    package = fzf;
+  };
+
   meta = with lib; {
     homepage = "https://github.com/junegunn/fzf";
     description = "A command-line fuzzy finder written in Go";