1{
2 lib,
3 stdenv,
4 pkgs,
5 buildFishPlugin,
6 fetchFromGitHub,
7 fd,
8 unixtools,
9 procps,
10 clownfish,
11 fishtape_3,
12}:
13let
14 # we want `pkgs.fzf`, not `fishPlugins.fzf`
15 inherit (pkgs) fzf;
16in
17buildFishPlugin rec {
18 pname = "fzf.fish";
19 version = "10.3";
20
21 src = fetchFromGitHub {
22 owner = "PatrickF1";
23 repo = "fzf.fish";
24 rev = "v${version}";
25 hash = "sha256-T8KYLA/r/gOKvAivKRoeqIwE2pINlxFQtZJHpOy9GMM=";
26 };
27
28 nativeCheckInputs = [
29 fzf
30 fd
31 unixtools.script
32 procps
33 ];
34 checkPlugins = [
35 clownfish
36 fishtape_3
37 ];
38 checkFunctionDirs = [ "./functions" ];
39 checkPhase = ''
40 # Disable git tests which inspect the project's git repo, which isn't
41 # possible since we strip the impure .git from our build input
42 rm -r tests/*git*
43 rm -r tests/preview_changed_file/modified_path_with_spaces.fish
44 rm -r tests/preview_changed_file/renamed_path_modifications.fish
45
46 # Disable tests that are failing, probably because of our wrappers
47 rm -r tests/configure_bindings
48 rm -r tests/search_variables
49
50 # Disable tests that are failing, because there is not 'rev' command
51 rm tests/preview_file/custom_file_preview.fish
52 ''
53 + (
54 if stdenv.hostPlatform.isDarwin then
55 ''script /dev/null fish -c "fishtape tests/*/*.fish"''
56 else
57 ''script -c 'fish -c "fishtape tests/*/*.fish"' ''
58 );
59
60 meta = with lib; {
61 description = "Augment your fish command line with fzf key bindings";
62 homepage = "https://github.com/PatrickF1/fzf.fish";
63 changelog = "https://github.com/PatrickF1/fzf.fish/releases/tag/${src.rev}";
64 license = licenses.mit;
65 maintainers = with maintainers; [
66 euxane
67 natsukium
68 ];
69 };
70}