anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / tools / misc / broot / default.nix
blobc162829b6ec914c7e7cad615509a323c1b66898d
1 { lib
2 , stdenv
3 , rustPlatform
4 , fetchFromGitHub
5 , installShellFiles
6 , makeWrapper
7 , pkg-config
8 , libgit2
9 , oniguruma
10 , libiconv
11 , Foundation
12 , Security
13 , xorg
14 , zlib
15 , buildPackages
16 , withClipboard ? !stdenv.hostPlatform.isDarwin
17 , withTrash ? !stdenv.hostPlatform.isDarwin
20 rustPlatform.buildRustPackage rec {
21   pname = "broot";
22   version = "1.44.1";
24   src = fetchFromGitHub {
25     owner = "Canop";
26     repo = pname;
27     rev = "v${version}";
28     hash = "sha256-Qyc4R5hvSal82/qywriH7agluu6miAC4Y7UUM3VATCo=";
29   };
31   cargoHash = "sha256-fsmwjr7EpzR/KKrGWoTeCOI7jmrlTYtjIksc205kRs8=";
33   nativeBuildInputs = [
34     installShellFiles
35     makeWrapper
36     pkg-config
37   ];
39   buildInputs = [ libgit2 oniguruma xorg.libxcb ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
40     Foundation
41     libiconv
42     Security
43     zlib
44   ];
46   buildFeatures = lib.optionals withTrash [ "trash" ] ++ lib.optionals withClipboard [ "clipboard" ];
48   RUSTONIG_SYSTEM_LIBONIG = true;
50   postPatch = ''
51     # Fill the version stub in the man page. We can't fill the date
52     # stub reproducibly.
53     substitute man/page man/broot.1 \
54       --replace "#version" "${version}"
55   '';
57   postInstall = lib.optionalString (stdenv.hostPlatform.emulatorAvailable buildPackages) ''
58     # Install shell function for bash.
59     ${stdenv.hostPlatform.emulator buildPackages} $out/bin/broot --print-shell-function bash > br.bash
60     install -Dm0444 -t $out/etc/profile.d br.bash
62     # Install shell function for zsh.
63     ${stdenv.hostPlatform.emulator buildPackages} $out/bin/broot --print-shell-function zsh > br.zsh
64     install -Dm0444 br.zsh $out/share/zsh/site-functions/br
66     # Install shell function for fish
67     ${stdenv.hostPlatform.emulator buildPackages} $out/bin/broot --print-shell-function fish > br.fish
68     install -Dm0444 -t $out/share/fish/vendor_functions.d br.fish
70   '' + ''
71     # install shell completion files
72     OUT_DIR=$releaseDir/build/broot-*/out
74     installShellCompletion --bash $OUT_DIR/{br,broot}.bash
75     installShellCompletion --fish $OUT_DIR/{br,broot}.fish
76     installShellCompletion --zsh $OUT_DIR/{_br,_broot}
78     installManPage man/broot.1
80     # Do not nag users about installing shell integration, since
81     # it is impure.
82     wrapProgram $out/bin/broot \
83       --set BR_INSTALL no
84   '';
86   doInstallCheck = true;
87   installCheckPhase = ''
88     $out/bin/broot --version | grep "${version}"
89   '';
91   meta = with lib; {
92     description = "Interactive tree view, a fuzzy search, a balanced BFS descent and customizable commands";
93     homepage = "https://dystroy.org/broot/";
94     changelog = "https://github.com/Canop/broot/releases/tag/v${version}";
95     maintainers = with maintainers; [ dywedir ];
96     license = with licenses; [ mit ];
97     mainProgram = "broot";
98   };